Merged in bugfix/cpt-codes (pull request #812)

Bugfix/cpt codes

* formatting fix for revenue_cd

* format fix for procedure_codes

* bugfix for revenue_codes

* working version from code main

* code formatting from main and code main

* removed dubug prints

* removed local file paths

* standardize state fields

* updated test scenerios

* minor fix

* Merge branch 'main' into bugfix/cpt-codes
merging main into cpt code fix

* checks for all fields

* reused is_empty functionality

* moved normalize_to_json_list to utils

* Merge branch 'main' into bugfix/cpt-codes
merging upto date main

* minor touches

* pytest fix


Approved-by: Katon Minhas
This commit is contained in:
Karan Desai
2025-12-17 19:05:09 +00:00
committed by Katon Minhas
parent f31c02517a
commit ca53ff8395
6 changed files with 197 additions and 64 deletions
+13 -13
View File
@@ -108,9 +108,9 @@ class TestCodeFuncs(unittest.TestCase):
"J CODES", proc_category, hcpcs_mapping, "test.pdf"
)
# Verify the results
self.assertEqual(result["PROCEDURE_CD"], "['J0001', 'J0002']")
self.assertEqual(result["PROCEDURE_CD_DESC"], "['Drug A', 'Drug B']")
# Verify the results - code_category returns lists (JSON conversion happens in extract_codes_from_service)
self.assertEqual(result["PROCEDURE_CD"], ["J0001", "J0002"])
self.assertEqual(result["PROCEDURE_CD_DESC"], ["Drug A", "Drug B"])
self.assertIn("J0001", result["PROCEDURE_CD"])
self.assertIn("J0002", result["PROCEDURE_CD"])
self.assertIn("Drug A", result["PROCEDURE_CD_DESC"])
@@ -124,9 +124,9 @@ class TestCodeFuncs(unittest.TestCase):
mock_invoke_claude.return_value = "mock_response"
mock_extract.return_value = "Drugs"
# Test drug category
# Test drug category - returns a list
result = code_funcs.code_implicit_special("DRUG SERVICE", "test.pdf")
self.assertEqual(result["PROCEDURE_CD"], "J0000-J9999")
self.assertEqual(result["PROCEDURE_CD"], ["J0000-J9999"])
self.assertEqual(result["PROCEDURE_CD_DESC"], "Drugs")
# Test no match
@@ -221,9 +221,9 @@ class TestCodeFuncs(unittest.TestCase):
"TEST SERVICE", implicit_run_dict, "test.pdf", self.constants
)
# Verify results
self.assertEqual(result["PROCEDURE_CD"], "12345")
self.assertEqual(result["PROCEDURE_CD_DESC"], "Test Procedure")
# Verify results - code_implicit_rag returns lists
self.assertEqual(result["PROCEDURE_CD"], ["12345"])
self.assertEqual(result["PROCEDURE_CD_DESC"], ["Test Procedure"])
self.assertEqual(result["CODE_METHODOLOGY"], "Implicit - Level 1")
# Test exception handling
@@ -333,12 +333,12 @@ class TestCodeFuncs(unittest.TestCase):
}
mock_implicit_runs.return_value = {"PROCEDURE_CD": True, "REVENUE_CD": True}
# Test explicit code match
# Test explicit code match - extract_codes_from_service normalizes to JSON list format
mock_explicit.return_value = {"PROCEDURE_CD": "12345"}
result = code_funcs.extract_codes_from_service(
{"SERVICE_TERM": "TEST SERVICE"}, self.constants
)
self.assertEqual(result["PROCEDURE_CD"], "12345")
self.assertEqual(result["PROCEDURE_CD"], '["12345"]')
self.assertEqual(result["CODE_METHODOLOGY"], "Explicit")
# Test unlisted service
@@ -437,11 +437,11 @@ class TestCodeFuncs(unittest.TestCase):
# Test function
result_df = code_funcs.code_breakout(test_df, self.constants)
# Verify results
# Verify results - code_breakout normalizes to JSON list format
self.assertIsInstance(result_df, pd.DataFrame)
self.assertEqual(len(result_df), 2)
self.assertEqual(result_df.iloc[0]["PROCEDURE_CD"], "12345")
self.assertEqual(result_df.iloc[1]["PROCEDURE_CD"], "67890")
self.assertEqual(result_df.iloc[0]["PROCEDURE_CD"], '["12345"]')
self.assertEqual(result_df.iloc[1]["PROCEDURE_CD"], '["67890"]')
# Verify mock calls
mock_fill_claim_type.assert_called_once()