medicafe 0.251023.0__tar.gz → 0.251023.1__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.0 → medicafe-0.251023.1}/MediBot/__init__.py +1 -1
  2. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediCafe/__init__.py +1 -1
  3. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_Up.py +31 -25
  4. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/__init__.py +1 -1
  5. {medicafe-0.251023.0/medicafe.egg-info → medicafe-0.251023.1}/PKG-INFO +1 -1
  6. {medicafe-0.251023.0 → medicafe-0.251023.1/medicafe.egg-info}/PKG-INFO +1 -1
  7. {medicafe-0.251023.0 → medicafe-0.251023.1}/setup.py +1 -1
  8. {medicafe-0.251023.0 → medicafe-0.251023.1}/LICENSE +0 -0
  9. {medicafe-0.251023.0 → medicafe-0.251023.1}/MANIFEST.in +0 -0
  10. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/MediBot.bat +0 -0
  11. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/MediBot.py +0 -0
  12. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/MediBot_Charges.py +0 -0
  13. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/MediBot_Crosswalk_Library.py +0 -0
  14. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/MediBot_Crosswalk_Utils.py +0 -0
  15. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/MediBot_Notepad_Utils.py +0 -0
  16. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/MediBot_Post.py +0 -0
  17. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/MediBot_Preprocessor.py +0 -0
  18. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/MediBot_Preprocessor_lib.py +0 -0
  19. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/MediBot_UI.py +0 -0
  20. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/MediBot_dataformat_library.py +0 -0
  21. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/MediBot_debug.bat +0 -0
  22. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/MediBot_docx_decoder.py +0 -0
  23. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/MediBot_smart_import.py +0 -0
  24. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/clear_cache.bat +0 -0
  25. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/crash_diagnostic.bat +0 -0
  26. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/f_drive_diagnostic.bat +0 -0
  27. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/full_debug_suite.bat +0 -0
  28. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/get_medicafe_version.py +0 -0
  29. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/process_csvs.bat +0 -0
  30. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/update_json.py +0 -0
  31. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediBot/update_medicafe.py +0 -0
  32. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediCafe/MediLink_ConfigLoader.py +0 -0
  33. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediCafe/__main__.py +0 -0
  34. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediCafe/api_core.py +0 -0
  35. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediCafe/api_factory.py +0 -0
  36. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediCafe/api_utils.py +0 -0
  37. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediCafe/core_utils.py +0 -0
  38. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediCafe/deductible_utils.py +0 -0
  39. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediCafe/error_reporter.py +0 -0
  40. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediCafe/graphql_utils.py +0 -0
  41. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediCafe/logging_config.py +0 -0
  42. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediCafe/logging_demo.py +0 -0
  43. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediCafe/migration_helpers.py +0 -0
  44. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediCafe/smart_import.py +0 -0
  45. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediCafe/submission_index.py +0 -0
  46. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/InsuranceTypeService.py +0 -0
  47. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_837p_cob_library.py +0 -0
  48. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_837p_encoder.py +0 -0
  49. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_837p_encoder_library.py +0 -0
  50. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_837p_utilities.py +0 -0
  51. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_API_Generator.py +0 -0
  52. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_Azure.py +0 -0
  53. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_Charges.py +0 -0
  54. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_ClaimStatus.py +0 -0
  55. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_DataMgmt.py +0 -0
  56. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_Decoder.py +0 -0
  57. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_Deductible.py +0 -0
  58. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_Deductible_Validator.py +0 -0
  59. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_Display_Utils.py +0 -0
  60. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_Down.py +0 -0
  61. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_Gmail.py +0 -0
  62. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_Mailer.py +0 -0
  63. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_Parser.py +0 -0
  64. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_PatientProcessor.py +0 -0
  65. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_Scan.py +0 -0
  66. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_Scheduler.py +0 -0
  67. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_UI.py +0 -0
  68. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_insurance_utils.py +0 -0
  69. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_main.py +0 -0
  70. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/MediLink_smart_import.py +0 -0
  71. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/Soumit_api.py +0 -0
  72. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/gmail_http_utils.py +0 -0
  73. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/gmail_oauth_utils.py +0 -0
  74. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/openssl.cnf +0 -0
  75. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/test.py +0 -0
  76. {medicafe-0.251023.0 → medicafe-0.251023.1}/MediLink/webapp.html +0 -0
  77. {medicafe-0.251023.0 → medicafe-0.251023.1}/README.md +0 -0
  78. {medicafe-0.251023.0 → medicafe-0.251023.1}/medicafe.egg-info/SOURCES.txt +0 -0
  79. {medicafe-0.251023.0 → medicafe-0.251023.1}/medicafe.egg-info/dependency_links.txt +0 -0
  80. {medicafe-0.251023.0 → medicafe-0.251023.1}/medicafe.egg-info/entry_points.txt +0 -0
  81. {medicafe-0.251023.0 → medicafe-0.251023.1}/medicafe.egg-info/not-zip-safe +0 -0
  82. {medicafe-0.251023.0 → medicafe-0.251023.1}/medicafe.egg-info/requires.txt +0 -0
  83. {medicafe-0.251023.0 → medicafe-0.251023.1}/medicafe.egg-info/top_level.txt +0 -0
  84. {medicafe-0.251023.0 → medicafe-0.251023.1}/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.0"
22
+ __version__ = "0.251023.1"
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.0"
30
+ __version__ = "0.251023.1"
31
31
  __author__ = "Daniel Vidaud"
32
32
  __email__ = "daniel@personalizedtransformation.com"
33
33
 
@@ -258,16 +258,22 @@ def submit_claims(detailed_patient_data_grouped_by_endpoint, config, crosswalk):
258
258
  local_claims_path = cfg.get('local_claims_path', '.')
259
259
  transmission_result = operate_winscp(operation_type, filtered_files, endpoint_cfg, local_claims_path, config)
260
260
  success_dict = handle_transmission_result(transmission_result, config, operation_type, method)
261
+ # If we attempted uploads but could not derive any status, emit explicit failures per file
262
+ if (not success_dict) and filtered_files:
263
+ success_dict = {fp: (False, "No transfer status found in WinSCP log") for fp in filtered_files}
261
264
  submission_results[endpoint] = success_dict
262
265
  except FileNotFoundError as e:
263
- print("Failed to transmit files to {}. Error: Log file not found - {}".format(endpoint, str(e)))
264
- submission_results[endpoint] = {"status": False, "error": "Log file not found - " + str(e)}
266
+ msg = "Log file not found - {}".format(str(e))
267
+ print("Failed to transmit files to {}. Error: {}".format(endpoint, msg))
268
+ submission_results[endpoint] = {fp: (False, msg) for fp in (filtered_files or [])}
265
269
  except IOError as e:
266
- print("Failed to transmit files to {}. Error: Input/output error - {}".format(endpoint, str(e)))
267
- submission_results[endpoint] = {"status": False, "error": "Input/output error - " + str(e)}
270
+ msg = "Input/output error - {}".format(str(e))
271
+ print("Failed to transmit files to {}. Error: {}".format(endpoint, msg))
272
+ submission_results[endpoint] = {fp: (False, msg) for fp in (filtered_files or [])}
268
273
  except Exception as e:
269
- print("Failed to transmit files to {}. Error: {}".format(endpoint, str(e)))
270
- submission_results[endpoint] = {"status": False, "error": str(e)}
274
+ msg = str(e)
275
+ print("Failed to transmit files to {}. Error: {}".format(endpoint, msg))
276
+ submission_results[endpoint] = {fp: (False, msg) for fp in (filtered_files or [])}
271
277
  elif method == 'api':
272
278
  # Transmit files via API
273
279
  try:
@@ -284,10 +290,14 @@ def submit_claims(detailed_patient_data_grouped_by_endpoint, config, crosswalk):
284
290
  response = {"error": "API module not available"}
285
291
  api_responses.append((file_path, response))
286
292
  success_dict = handle_transmission_result(api_responses, config, "api", method)
293
+ # If API call path yielded no status, emit explicit failures per file attempted
294
+ if (not success_dict) and filtered_files:
295
+ success_dict = {fp: (False, "No API response parsed") for fp in filtered_files}
287
296
  submission_results[endpoint] = success_dict
288
297
  except Exception as e:
289
- print("Failed to transmit files via API to {}. Error: {}".format(endpoint, str(e)))
290
- submission_results[endpoint] = {"status": False, "error": str(e)}
298
+ msg = str(e)
299
+ print("Failed to transmit files via API to {}. Error: {}".format(endpoint, msg))
300
+ submission_results[endpoint] = {fp: (False, msg) for fp in (filtered_files or [])}
291
301
  else:
292
302
  print("No files were converted for transmission to {}.".format(endpoint))
293
303
  else:
@@ -495,29 +505,25 @@ def prepare_receipt_data(submission_results):
495
505
  log("File path: {}".format(file_path), level="DEBUG")
496
506
  log("File result: {}".format(file_result), level="DEBUG")
497
507
 
498
- try:
499
- # Unpack the tuple to get status and message
500
- status, message = file_result
501
- except ValueError as e:
502
- file_result_length = len(file_result) if hasattr(file_result, '__len__') else 'Unknown'
503
- error_msg = 'Too many values to unpack.' if 'too many values to unpack' in str(e) else \
504
- 'Not enough values to unpack.' if 'not enough values to unpack' in str(e) else \
505
- 'Value unpacking error.'
506
- log("ValueError: {} for file_result: {} (Length: {})".format(error_msg, file_result, file_result_length), level="ERROR")
507
- continue
508
- except Exception as e:
509
- tb = traceback.format_exc()
510
- log("Unexpected error: {}. Traceback: {}".format(e, tb), level="ERROR")
511
- continue
512
-
513
- log("Status: {}, Message: {}".format(status, message), level="DEBUG")
514
-
508
+ # Ensure endpoint bucket exists even if result shape is unexpected
515
509
  if endpoint not in receipt_data:
516
510
  receipt_data[endpoint] = {
517
511
  "patients": [],
518
512
  "date_of_submission": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
519
513
  }
520
514
 
515
+ # Normalize result tuple shape; on unexpected shape, degrade to (False, stringified)
516
+ try:
517
+ status, message = file_result
518
+ except Exception:
519
+ status = False
520
+ try:
521
+ message = str(file_result)
522
+ except Exception:
523
+ message = "Unknown result"
524
+
525
+ log("Status: {}, Message: {}".format(status, message), level="DEBUG")
526
+
521
527
  # Parse patient details and add the result status and message
522
528
  patient_data, _ = parse_837p_file(file_path)
523
529
  for patient in patient_data:
@@ -22,7 +22,7 @@ Smart Import Integration:
22
22
  datamgmt = get_components('medilink_datamgmt')
23
23
  """
24
24
 
25
- __version__ = "0.251023.0"
25
+ __version__ = "0.251023.1"
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.0
3
+ Version: 0.251023.1
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.0
3
+ Version: 0.251023.1
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.0",
57
+ version="0.251023.1",
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