medicafe 0.251023.1__tar.gz → 0.251023.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of medicafe might be problematic. Click here for more details.

Files changed (84) hide show
  1. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/__init__.py +1 -1
  2. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediCafe/__init__.py +1 -1
  3. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediCafe/api_core.py +11 -43
  4. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_Deductible.py +24 -23
  5. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/__init__.py +1 -1
  6. {medicafe-0.251023.1/medicafe.egg-info → medicafe-0.251023.2}/PKG-INFO +1 -1
  7. {medicafe-0.251023.1 → medicafe-0.251023.2/medicafe.egg-info}/PKG-INFO +1 -1
  8. {medicafe-0.251023.1 → medicafe-0.251023.2}/setup.py +1 -1
  9. {medicafe-0.251023.1 → medicafe-0.251023.2}/LICENSE +0 -0
  10. {medicafe-0.251023.1 → medicafe-0.251023.2}/MANIFEST.in +0 -0
  11. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/MediBot.bat +0 -0
  12. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/MediBot.py +0 -0
  13. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/MediBot_Charges.py +0 -0
  14. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/MediBot_Crosswalk_Library.py +0 -0
  15. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/MediBot_Crosswalk_Utils.py +0 -0
  16. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/MediBot_Notepad_Utils.py +0 -0
  17. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/MediBot_Post.py +0 -0
  18. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/MediBot_Preprocessor.py +0 -0
  19. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/MediBot_Preprocessor_lib.py +0 -0
  20. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/MediBot_UI.py +0 -0
  21. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/MediBot_dataformat_library.py +0 -0
  22. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/MediBot_debug.bat +0 -0
  23. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/MediBot_docx_decoder.py +0 -0
  24. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/MediBot_smart_import.py +0 -0
  25. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/clear_cache.bat +0 -0
  26. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/crash_diagnostic.bat +0 -0
  27. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/f_drive_diagnostic.bat +0 -0
  28. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/full_debug_suite.bat +0 -0
  29. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/get_medicafe_version.py +0 -0
  30. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/process_csvs.bat +0 -0
  31. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/update_json.py +0 -0
  32. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediBot/update_medicafe.py +0 -0
  33. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediCafe/MediLink_ConfigLoader.py +0 -0
  34. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediCafe/__main__.py +0 -0
  35. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediCafe/api_factory.py +0 -0
  36. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediCafe/api_utils.py +0 -0
  37. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediCafe/core_utils.py +0 -0
  38. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediCafe/deductible_utils.py +0 -0
  39. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediCafe/error_reporter.py +0 -0
  40. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediCafe/graphql_utils.py +0 -0
  41. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediCafe/logging_config.py +0 -0
  42. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediCafe/logging_demo.py +0 -0
  43. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediCafe/migration_helpers.py +0 -0
  44. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediCafe/smart_import.py +0 -0
  45. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediCafe/submission_index.py +0 -0
  46. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/InsuranceTypeService.py +0 -0
  47. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_837p_cob_library.py +0 -0
  48. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_837p_encoder.py +0 -0
  49. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_837p_encoder_library.py +0 -0
  50. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_837p_utilities.py +0 -0
  51. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_API_Generator.py +0 -0
  52. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_Azure.py +0 -0
  53. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_Charges.py +0 -0
  54. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_ClaimStatus.py +0 -0
  55. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_DataMgmt.py +0 -0
  56. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_Decoder.py +0 -0
  57. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_Deductible_Validator.py +0 -0
  58. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_Display_Utils.py +0 -0
  59. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_Down.py +0 -0
  60. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_Gmail.py +0 -0
  61. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_Mailer.py +0 -0
  62. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_Parser.py +0 -0
  63. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_PatientProcessor.py +0 -0
  64. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_Scan.py +0 -0
  65. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_Scheduler.py +0 -0
  66. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_UI.py +0 -0
  67. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_Up.py +0 -0
  68. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_insurance_utils.py +0 -0
  69. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_main.py +0 -0
  70. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/MediLink_smart_import.py +0 -0
  71. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/Soumit_api.py +0 -0
  72. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/gmail_http_utils.py +0 -0
  73. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/gmail_oauth_utils.py +0 -0
  74. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/openssl.cnf +0 -0
  75. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/test.py +0 -0
  76. {medicafe-0.251023.1 → medicafe-0.251023.2}/MediLink/webapp.html +0 -0
  77. {medicafe-0.251023.1 → medicafe-0.251023.2}/README.md +0 -0
  78. {medicafe-0.251023.1 → medicafe-0.251023.2}/medicafe.egg-info/SOURCES.txt +0 -0
  79. {medicafe-0.251023.1 → medicafe-0.251023.2}/medicafe.egg-info/dependency_links.txt +0 -0
  80. {medicafe-0.251023.1 → medicafe-0.251023.2}/medicafe.egg-info/entry_points.txt +0 -0
  81. {medicafe-0.251023.1 → medicafe-0.251023.2}/medicafe.egg-info/not-zip-safe +0 -0
  82. {medicafe-0.251023.1 → medicafe-0.251023.2}/medicafe.egg-info/requires.txt +0 -0
  83. {medicafe-0.251023.1 → medicafe-0.251023.2}/medicafe.egg-info/top_level.txt +0 -0
  84. {medicafe-0.251023.1 → medicafe-0.251023.2}/setup.cfg +0 -0
@@ -19,7 +19,7 @@ Smart Import Integration:
19
19
  medibot_main = get_components('medibot_main')
20
20
  """
21
21
 
22
- __version__ = "0.251023.1"
22
+ __version__ = "0.251023.2"
23
23
  __author__ = "Daniel Vidaud"
24
24
  __email__ = "daniel@personalizedtransformation.com"
25
25
 
@@ -27,7 +27,7 @@ Smart Import System:
27
27
  api_suite = get_api_access()
28
28
  """
29
29
 
30
- __version__ = "0.251023.1"
30
+ __version__ = "0.251023.2"
31
31
  __author__ = "Daniel Vidaud"
32
32
  __email__ = "daniel@personalizedtransformation.com"
33
33
 
@@ -1212,14 +1212,14 @@ def get_eligibility_super_connector(client, payer_id, provider_last_name, search
1212
1212
  corporate_tax_owner_id=None, corporate_tax_owner_name=None, organization_name=None,
1213
1213
  organization_id=None, identify_service_level_deductible=True):
1214
1214
  """
1215
- GraphQL Super Connector version of eligibility check that maps to the same interface as get_eligibility_v3.
1216
- This function provides a drop-in replacement for the REST API with identical input/output behavior.
1215
+ OPTUMAI eligibility (GraphQL) that maps to the same interface as get_eligibility_v3.
1216
+ This function does not perform legacy fallback; callers should invoke legacy v3 separately if desired.
1217
1217
  """
1218
1218
  # Ensure all required parameters have values
1219
1219
  if not all([client, payer_id, provider_last_name, search_option, date_of_birth, member_id, npi]):
1220
1220
  raise ValueError("All required parameters must have values: client, payer_id, provider_last_name, search_option, date_of_birth, member_id, npi")
1221
1221
 
1222
- # Prefer OPTUMAI endpoint if configured, otherwise fall back to legacy UHCAPI super connector
1222
+ # Prefer OPTUMAI endpoint if configured, otherwise fall back to legacy UHCAPI v3 (REST)
1223
1223
  try:
1224
1224
  endpoints_cfg = client.config['MediLink_Config']['endpoints']
1225
1225
  except Exception:
@@ -1240,12 +1240,8 @@ def get_eligibility_super_connector(client, payer_id, provider_last_name, search
1240
1240
  pass
1241
1241
 
1242
1242
  if not endpoint_name:
1243
- # Fallback to legacy UHCAPI super connector path for backward compatibility
1244
- endpoint_name = 'UHCAPI'
1245
- try:
1246
- url_extension = endpoints_cfg.get(endpoint_name, {}).get('additional_endpoints', {}).get('eligibility_super_connector')
1247
- except Exception:
1248
- url_extension = None
1243
+ # No fallback from this function; surface configuration error
1244
+ raise ValueError("OPTUMAI eligibility endpoint not configured")
1249
1245
 
1250
1246
  # Validate payer_id against the selected endpoint's list
1251
1247
  # - If OPTUMAI is used, allow the augmented list (includes LIFE1, WELM2, etc.).
@@ -1258,17 +1254,17 @@ def get_eligibility_super_connector(client, payer_id, provider_last_name, search
1258
1254
  if not url_extension:
1259
1255
  raise ValueError("Eligibility endpoint not configured for {}".format(endpoint_name))
1260
1256
 
1261
- # Debug/trace: indicate which endpoint/path is being used for the Super Connector call
1257
+ # Debug/trace: indicate that OPTUMAI eligibility path is active
1262
1258
  try:
1263
1259
  MediLink_ConfigLoader.log(
1264
- "Super Connector eligibility using endpoint '{}' with path '{}'".format(endpoint_name, url_extension),
1260
+ "Eligibility using OPTUMAI endpoint with path '{}'".format(url_extension),
1265
1261
  level="INFO",
1266
1262
  console_output=CONSOLE_LOGGING
1267
1263
  )
1268
1264
  except Exception:
1269
1265
  pass
1270
1266
  try:
1271
- print("[Eligibility] Using endpoint: {} (path: {})".format(endpoint_name, url_extension))
1267
+ print("[Eligibility] Using OPTUMAI (path: {})".format(url_extension))
1272
1268
  except Exception:
1273
1269
  pass
1274
1270
 
@@ -1405,36 +1401,8 @@ def get_eligibility_super_connector(client, payer_id, provider_last_name, search
1405
1401
  except Exception:
1406
1402
  pass
1407
1403
 
1408
- # Progressive hardening: allow disabling fallback to UHC via config
1409
- try:
1410
- disable_fallback = False
1411
- try:
1412
- disable_fallback = bool(medi.get('optumai_disable_fallback', False))
1413
- except Exception:
1414
- disable_fallback = False
1415
- if not disable_fallback and endpoint_name == 'OPTUMAI':
1416
- fallback_url = endpoints_cfg.get('UHCAPI', {}).get('additional_endpoints', {}).get('eligibility_super_connector')
1417
- if fallback_url:
1418
- try:
1419
- MediLink_ConfigLoader.log(
1420
- "OPTUMAI call failed. Falling back to UHCAPI path '{}'".format(fallback_url),
1421
- level="WARNING",
1422
- console_output=CONSOLE_LOGGING
1423
- )
1424
- except Exception:
1425
- pass
1426
- try:
1427
- print("[Eligibility] Fallback to UHCAPI (path: {})".format(fallback_url))
1428
- except Exception:
1429
- pass
1430
- response = client.make_api_call('UHCAPI', 'POST', fallback_url, params=None, data=graphql_body, headers=headers)
1431
- else:
1432
- raise
1433
- else:
1434
- raise
1435
- except Exception:
1436
- # Propagate original error if fallback not possible or also fails
1437
- raise
1404
+ # No fallback from this function; re-raise so callers can handle or try legacy explicitly
1405
+ raise
1438
1406
 
1439
1407
  # Transform GraphQL response to match REST API format
1440
1408
  # This ensures the calling code doesn't know the difference
@@ -1446,7 +1414,7 @@ def get_eligibility_super_connector(client, payer_id, provider_last_name, search
1446
1414
  if sc_status and sc_status != '200':
1447
1415
  msg = transformed_response.get('message')
1448
1416
  MediLink_ConfigLoader.log(
1449
- "Super Connector transformed response status: {} msg: {}".format(sc_status, msg),
1417
+ "OPTUMAI eligibility transformed response status: {} msg: {}".format(sc_status, msg),
1450
1418
  level="INFO",
1451
1419
  console_output=CONSOLE_LOGGING
1452
1420
  )
@@ -549,6 +549,7 @@ def get_eligibility_info(client, payer_id, provider_last_name, date_of_birth, me
549
549
  # Enable verbose diagnostics in debug mode without config changes
550
550
  diagnostics_verbose = True
551
551
  sc_preflight_failed = False
552
+ # NOTE: No config flag mutation needed; OPTUMAI call now never auto-falls back
552
553
 
553
554
  # Get legacy response
554
555
  MediLink_ConfigLoader.log("Getting legacy get_eligibility_v3 API response", level="INFO")
@@ -569,8 +570,8 @@ def get_eligibility_info(client, payer_id, provider_last_name, date_of_birth, me
569
570
  else:
570
571
  MediLink_ConfigLoader.log("API client does not support token authentication for Legacy API.", level="WARNING")
571
572
 
572
- # Get Super Connector response for comparison
573
- MediLink_ConfigLoader.log("Getting new get_eligibility_super_connector API response", level="INFO")
573
+ # Get OPTUMAI eligibility response for comparison (formerly Super Connector)
574
+ MediLink_ConfigLoader.log("Getting OPTUMAI eligibility API response", level="INFO")
574
575
  super_connector_eligibility = None
575
576
  try:
576
577
  if not sc_preflight_failed:
@@ -580,32 +581,32 @@ def get_eligibility_info(client, payer_id, provider_last_name, date_of_birth, me
580
581
  else:
581
582
  super_connector_eligibility = None
582
583
  except Exception as e:
583
- MediLink_ConfigLoader.log("Super Connector API failed: {}".format(e), level="ERROR")
584
+ MediLink_ConfigLoader.log("OPTUMAI eligibility API failed: {}".format(e), level="ERROR")
584
585
  # Best-effort triage classification for clearer downstream messaging
585
586
  try:
586
587
  # Use centralized classifier when available
587
588
  from MediCafe.deductible_utils import classify_api_failure
588
- code, message = classify_api_failure(e, 'Super Connector API')
589
+ code, message = classify_api_failure(e, 'OPTUMAI eligibility API')
589
590
  # Sticky preflight failure for subsequent patients in this run
590
591
  if code in ['TIMEOUT', 'CONN_ERR', 'AUTH_FAIL', 'MISCONFIG']:
591
592
  sc_preflight_failed = True
592
593
  except Exception:
593
594
  try:
594
- failure_reason = "Super Connector API connection failed"
595
+ failure_reason = "OPTUMAI eligibility API connection failed"
595
596
  detail = str(e)
596
597
  if requests and hasattr(requests, 'exceptions') and isinstance(e, requests.exceptions.Timeout):
597
- failure_reason = "Super Connector API timeout"
598
+ failure_reason = "OPTUMAI eligibility API timeout"
598
599
  elif requests and hasattr(requests, 'exceptions') and isinstance(e, requests.exceptions.ConnectionError):
599
- failure_reason = "Super Connector API connection error"
600
+ failure_reason = "OPTUMAI eligibility API connection error"
600
601
  elif "Invalid payer_id" in detail:
601
- failure_reason = "Super Connector API rejected payer_id"
602
+ failure_reason = "OPTUMAI eligibility API rejected payer_id"
602
603
  elif ("No access token" in detail) or ("token" in detail.lower()):
603
- failure_reason = "Super Connector API authentication failed"
604
+ failure_reason = "OPTUMAI eligibility API authentication failed"
604
605
  elif ("Eligibility endpoint not configured" in detail) or ("endpoint" in detail.lower() and "configured" in detail.lower()):
605
- failure_reason = "Super Connector API endpoint misconfigured"
606
+ failure_reason = "OPTUMAI eligibility API endpoint misconfigured"
606
607
  message = "{}: {}".format(failure_reason, detail)
607
608
  except Exception:
608
- message = "Super Connector API failed: {}".format(str(e))
609
+ message = "OPTUMAI eligibility API failed: {}".format(str(e))
609
610
  sc_failure_info = {"message": message}
610
611
  try:
611
612
  error_messages_for_row.append(message)
@@ -629,22 +630,22 @@ def get_eligibility_info(client, payer_id, provider_last_name, date_of_birth, me
629
630
  )
630
631
  print("\nValidation report generated (legacy only): {}".format(validation_file_path))
631
632
  elif super_connector_eligibility:
632
- # Only Super Connector API returned data
633
+ # Only OPTUMAI eligibility API returned data
633
634
  validation_report = MediLink_Deductible_Validator.run_validation_comparison(
634
635
  None, super_connector_eligibility, validation_file_path
635
636
  )
636
- print("\nValidation report generated (Super Connector only): {}".format(validation_file_path))
637
+ print("\nValidation report generated (OPTUMAI only): {}".format(validation_file_path))
637
638
  else:
638
639
  # Neither API returned data
639
640
  print("\nNo validation report generated - both APIs failed")
640
641
  validation_file_path = None
641
642
 
642
- # Log any Super Connector API errors if we have that data
643
+ # Log any OPTUMAI eligibility API errors if we have that data
643
644
  if super_connector_eligibility and "rawGraphQLResponse" in super_connector_eligibility:
644
645
  raw_response = super_connector_eligibility.get('rawGraphQLResponse', {})
645
646
  errors = raw_response.get('errors', [])
646
647
  if errors:
647
- error_msg = "Super Connector API returned {} error(s):".format(len(errors))
648
+ error_msg = "OPTUMAI eligibility API returned {} error(s):".format(len(errors))
648
649
  if error_msg not in printed_messages:
649
650
  print(error_msg)
650
651
  printed_messages.add(error_msg)
@@ -703,15 +704,15 @@ def get_eligibility_info(client, payer_id, provider_last_name, date_of_birth, me
703
704
  status_code = super_connector_eligibility.get('statuscode')
704
705
  from MediCafe.deductible_utils import is_ok_200
705
706
  if status_code is not None and not is_ok_200(status_code):
706
- print("Super Connector API status code: {} (non-200 indicates errors)".format(status_code))
707
+ print("OPTUMAI eligibility API status code: {} (non-200 indicates errors)".format(status_code))
707
708
  # Record status code for the row diagnostics
708
- error_messages_for_row.append("Status code {} from Super Connector".format(status_code))
709
+ error_messages_for_row.append("Status code {} from OPTUMAI eligibility".format(status_code))
709
710
  # If Super Connector failed entirely, append a triage note to the validation report (if created)
710
711
  try:
711
712
  if sc_failure_info and validation_file_path and os.path.exists(validation_file_path):
712
713
  with open(validation_file_path, 'a') as vf:
713
714
  vf.write("\n" + "-" * 80 + "\n")
714
- vf.write("SUPER CONNECTOR CONNECTION FAILURE NOTE\n")
715
+ vf.write("OPTUMAI ELIGIBILITY CONNECTION FAILURE NOTE\n")
715
716
  vf.write("-" * 80 + "\n")
716
717
  vf.write(sc_failure_info['message'] + "\n")
717
718
  vf.write("Recommendation: Verify network connectivity, credentials, payer ID validity, and endpoint configuration.\n")
@@ -741,7 +742,7 @@ def get_eligibility_info(client, payer_id, provider_last_name, date_of_birth, me
741
742
  merged_data['error_messages'] = error_messages_for_row
742
743
  except Exception:
743
744
  pass
744
- # Surface Super Connector failure prominently in user-facing diagnostics
745
+ # Surface OPTUMAI eligibility failure prominently in user-facing diagnostics
745
746
  try:
746
747
  if sc_failure_info and isinstance(merged_data, dict):
747
748
  merged_data['super_connector_failed'] = True
@@ -943,7 +944,7 @@ if __name__ == "__main__":
943
944
  print("- Crosswalk-based payer ID resolution (O(N) complexity)")
944
945
  elif DEBUG_MODE:
945
946
  print("\nRunning in DEBUG MODE")
946
- print("- Dual API calls (Legacy + Super Connector)")
947
+ print("- Dual API calls (Legacy + OPTUMAI eligibility)")
947
948
  print("- Validation reports and comparisons")
948
949
  print("- Detailed logging and error reporting")
949
950
  print("- Crosswalk-based payer ID resolution (O(N) complexity)")
@@ -1193,11 +1194,11 @@ if __name__ == "__main__":
1193
1194
  output_file.write(table_header + "\n")
1194
1195
  output_file.write("-" * len(table_header) + "\n")
1195
1196
 
1196
- # Global notice when Super Connector connection failed for any patients
1197
+ # Global notice when OPTUMAI eligibility connection failed for any patients
1197
1198
  try:
1198
1199
  sc_failed_count = sum(1 for r in eligibility_results if isinstance(r, dict) and r.get('super_connector_failed'))
1199
1200
  if sc_failed_count:
1200
- output_file.write("NOTICE: Super Connector API connection failed for {} patient(s). Fallback data used when available.\n".format(sc_failed_count))
1201
+ output_file.write("NOTICE: OPTUMAI eligibility API connection failed for {} patient(s). Fallback data used when available.\n".format(sc_failed_count))
1201
1202
  except Exception:
1202
1203
  pass
1203
1204
 
@@ -1260,7 +1261,7 @@ if __name__ == "__main__":
1260
1261
  else:
1261
1262
  print("No validation reports were generated.")
1262
1263
  print("This may be because:")
1263
- print(" - Super Connector API calls failed")
1264
+ print(" - OPTUMAI eligibility API calls failed")
1264
1265
  print(" - Both APIs didn't return data for the same patients")
1265
1266
  print(" - Validation report generation encountered errors")
1266
1267
  print("=" * 80)
@@ -22,7 +22,7 @@ Smart Import Integration:
22
22
  datamgmt = get_components('medilink_datamgmt')
23
23
  """
24
24
 
25
- __version__ = "0.251023.1"
25
+ __version__ = "0.251023.2"
26
26
  __author__ = "Daniel Vidaud"
27
27
  __email__ = "daniel@personalizedtransformation.com"
28
28
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: medicafe
3
- Version: 0.251023.1
3
+ Version: 0.251023.2
4
4
  Summary: MediCafe
5
5
  Home-page: https://github.com/katanada2/MediCafe
6
6
  Author: Daniel Vidaud
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: medicafe
3
- Version: 0.251023.1
3
+ Version: 0.251023.2
4
4
  Summary: MediCafe
5
5
  Home-page: https://github.com/katanada2/MediCafe
6
6
  Author: Daniel Vidaud
@@ -54,7 +54,7 @@ if long_description_text is None:
54
54
 
55
55
  setup(
56
56
  name='medicafe',
57
- version="0.251023.1",
57
+ version="0.251023.2",
58
58
  description='MediCafe',
59
59
  long_description=long_description_text,
60
60
  long_description_content_type='text/markdown',
File without changes
File without changes
File without changes
File without changes