Merged in feature/selective-reimb-prov-info (pull request #558)

Update reimb tin-npi-name passing to reimbursement primary

* Update reimb tin-npi-name passing to reimbursement primary

* Refactor reimbursement_tin_npi to streamline provider value extraction and improve handling of empty values


Approved-by: Alex Galarce
This commit is contained in:
Katon Minhas
2025-06-05 18:37:25 +00:00
committed by Alex Galarce
parent 3be2f44cb1
commit e5d5c71781
+23 -19
View File
@@ -179,6 +179,11 @@ def reimbursement_tin_npi(exhibit_chunk: str, reimbursement_level_fields: FieldS
REIMB_PROV_TIN,
REIMB_PROV_NPI
"""
def get_list(field_name, filtered_providers):
# Get all values and filter out invalid ones
all_values = [provider.get(field_name, "N/A") for provider in filtered_providers]
valid_values = [val for val in all_values if not string_utils.is_empty(val) and val != "UNKNOWN"]
return list(set(valid_values)) # Remove duplicates
answer_dict = {}
@@ -187,28 +192,27 @@ def reimbursement_tin_npi(exhibit_chunk: str, reimbursement_level_fields: FieldS
# Clean, standardize, and deduplicate extracted providers
filtered_providers = deduplicate_providers(clean_provider_info(providers))
field_configs = [
("REIMB_PROV_TIN", "TIN"),
("REIMB_PROV_NPI", "NPI"),
("REIMB_PROV_NAME", "NAME")
]
# Always add providers to reimbursement_level fields for proper term attribution
if len(filtered_providers) > 0:
tin_field = Field.load_from_file(config.FIELD_JSON_PATH, "REIMB_PROV_TIN")
tin_list = list(set([provider.get("TIN", "N/A") for provider in filtered_providers])) # Remove duplicates
tin_field.update_valid_values(tin_list)
reimbursement_level_fields.add_field(tin_field)
for field_name, provider_key in field_configs:
if len(filtered_providers) > 0:
field = Field.load_from_file(config.FIELD_JSON_PATH, field_name)
value_list = get_list(provider_key, filtered_providers)
npi_field = Field.load_from_file(config.FIELD_JSON_PATH, "REIMB_PROV_NPI")
npi_list = list(set([provider.get("NPI", "N/A") for provider in filtered_providers])) # Remove duplicates
npi_field.update_valid_values(npi_list)
reimbursement_level_fields.add_field(npi_field)
name_field = Field.load_from_file(config.FIELD_JSON_PATH, "REIMB_PROV_NAME")
name_list = list(set([provider.get("NAME", "N/A") for provider in filtered_providers])) # Remove duplicates
name_field.update_valid_values(name_list)
reimbursement_level_fields.add_field(name_field)
# If no providers are found, set default values
else:
answer_dict['REIMB_PROV_TIN'] = "N/A"
answer_dict['REIMB_PROV_NPI'] = "N/A"
answer_dict['REIMB_PROV_NAME'] = "N/A"
if len(value_list) == 0:
answer_dict[field_name] = "N/A"
else:
field.update_valid_values(value_list)
reimbursement_level_fields.add_field(field)
else:
# If no providers are found, set default values
answer_dict[field_name] = "N/A"
return answer_dict, reimbursement_level_fields