The second query you posted is also expected not to use the index as the field (visitCharges.chargeCode) doesn’t appear in the query.
As I mentioned, if you would like the index (idx_charges) to be used, you need to specify both fields that appear in the index in the query. For example:
FROM ChargeCat.charges_postDate c
WHERE c.tenantName = 'client1'
AND c.visitCharges.chargeCode = 'some_code'
The Analytics engine decides if an index can be used during query compilation/optimization time. It uses the information in the system catalog to identify the indexes available, and there is no such thing as unhealthy index during that stage of the query evaluation. If you believe that using the pattern you provided makes an index used, please share with us the DDLs for the dataset/indexes and the query used and we will investigate it.