medicafe 0.250811.0__tar.gz → 0.250811.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.
Files changed (78) hide show
  1. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediBot/MediBot.bat +41 -55
  2. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediBot/MediBot.py +14 -6
  3. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediBot/MediBot_Preprocessor_lib.py +8 -1
  4. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediBot/MediBot_UI.py +6 -2
  5. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediBot/MediBot_dataformat_library.py +14 -3
  6. medicafe-0.250811.1/PKG-INFO +124 -0
  7. medicafe-0.250811.1/medicafe.egg-info/PKG-INFO +124 -0
  8. {medicafe-0.250811.0 → medicafe-0.250811.1}/setup.py +37 -9
  9. medicafe-0.250811.0/PKG-INFO +0 -48
  10. medicafe-0.250811.0/medicafe.egg-info/PKG-INFO +0 -48
  11. {medicafe-0.250811.0 → medicafe-0.250811.1}/LICENSE +0 -0
  12. {medicafe-0.250811.0 → medicafe-0.250811.1}/MANIFEST.in +0 -0
  13. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediBot/MediBot_Charges.py +0 -0
  14. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediBot/MediBot_Crosswalk_Library.py +0 -0
  15. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediBot/MediBot_Crosswalk_Utils.py +0 -0
  16. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediBot/MediBot_Post.py +0 -0
  17. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediBot/MediBot_Preprocessor.py +0 -0
  18. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediBot/MediBot_docx_decoder.py +0 -0
  19. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediBot/MediBot_smart_import.py +0 -0
  20. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediBot/__init__.py +0 -0
  21. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediBot/get_medicafe_version.py +0 -0
  22. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediBot/update_json.py +0 -0
  23. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediBot/update_medicafe.py +0 -0
  24. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediCafe/MediLink_ConfigLoader.py +0 -0
  25. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediCafe/__init__.py +0 -0
  26. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediCafe/__main__.py +0 -0
  27. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediCafe/api_core.py +0 -0
  28. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediCafe/api_core_backup.py +0 -0
  29. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediCafe/api_factory.py +0 -0
  30. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediCafe/api_utils.py +0 -0
  31. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediCafe/core_utils.py +0 -0
  32. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediCafe/graphql_utils.py +0 -0
  33. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediCafe/logging_config.py +0 -0
  34. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediCafe/logging_demo.py +0 -0
  35. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediCafe/migration_helpers.py +0 -0
  36. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediCafe/smart_import.py +0 -0
  37. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_837p_cob_library.py +0 -0
  38. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_837p_encoder.py +0 -0
  39. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_837p_encoder_library.py +0 -0
  40. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_837p_utilities.py +0 -0
  41. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_API_Generator.py +0 -0
  42. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_Azure.py +0 -0
  43. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_ClaimStatus.py +0 -0
  44. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_DataMgmt.py +0 -0
  45. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_Decoder.py +0 -0
  46. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_Deductible.py +0 -0
  47. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_Deductible_Validator.py +0 -0
  48. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_Display_Utils.py +0 -0
  49. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_Down.py +0 -0
  50. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_Gmail.py +0 -0
  51. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_Mailer.py +0 -0
  52. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_Parser.py +0 -0
  53. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_PatientProcessor.py +0 -0
  54. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_Scan.py +0 -0
  55. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_Scheduler.py +0 -0
  56. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_UI.py +0 -0
  57. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_Up.py +0 -0
  58. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_insurance_utils.py +0 -0
  59. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_main.py +0 -0
  60. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/MediLink_smart_import.py +0 -0
  61. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/Soumit_api.py +0 -0
  62. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/__init__.py +0 -0
  63. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/gmail_http_utils.py +0 -0
  64. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/gmail_oauth_utils.py +0 -0
  65. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/insurance_type_integration_test.py +0 -0
  66. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/openssl.cnf +0 -0
  67. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/test.py +0 -0
  68. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/test_cob_library.py +0 -0
  69. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/test_timing.py +0 -0
  70. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/test_validation.py +0 -0
  71. {medicafe-0.250811.0 → medicafe-0.250811.1}/MediLink/webapp.html +0 -0
  72. {medicafe-0.250811.0 → medicafe-0.250811.1}/medicafe.egg-info/SOURCES.txt +0 -0
  73. {medicafe-0.250811.0 → medicafe-0.250811.1}/medicafe.egg-info/dependency_links.txt +0 -0
  74. {medicafe-0.250811.0 → medicafe-0.250811.1}/medicafe.egg-info/entry_points.txt +0 -0
  75. {medicafe-0.250811.0 → medicafe-0.250811.1}/medicafe.egg-info/not-zip-safe +0 -0
  76. {medicafe-0.250811.0 → medicafe-0.250811.1}/medicafe.egg-info/requires.txt +0 -0
  77. {medicafe-0.250811.0 → medicafe-0.250811.1}/medicafe.egg-info/top_level.txt +0 -0
  78. {medicafe-0.250811.0 → medicafe-0.250811.1}/setup.cfg +0 -0
@@ -469,68 +469,54 @@ if %errorlevel% neq 0 (
469
469
  echo [OK] Internet connection available
470
470
  echo.
471
471
 
472
- :: Step 5: Start update process
473
- echo [5/5] Starting update process...
472
+ :: Step 5: Start update process (self-update orchestrator)
473
+ echo [5/5] Preparing self-update...
474
474
  echo.
475
475
  echo ========================================
476
- echo UPDATE WINDOW
476
+ echo UPDATE PREPARATION
477
477
  echo ========================================
478
- echo The update process will open in a new window.
479
- echo Please wait for it to complete.
478
+ echo The application will close to allow safe replacement of files.
479
+ echo A separate updater will run and reopen MediBot when finished.
480
480
  echo.
481
481
  echo Update script: %upgrade_medicafe%
482
482
  echo.
483
483
 
484
- :: Execute the update script with better error handling
485
- if exist "%upgrade_medicafe_local%" (
486
- echo Starting local update script...
487
- start "MediCafe Update" cmd /v:on /c "python %upgrade_medicafe_local% %package_version% & echo. & echo Update process completed. Press any key to close... & pause >nul"
488
- if %errorlevel% equ 0 (
489
- echo %DATE% %TIME% Upgrade initiated successfully - local. >> "%temp_file%"
490
- echo [SUCCESS] Update process started successfully
491
- ) else (
492
- echo %DATE% %TIME% Update failed - local. >> "%temp_file%"
493
- echo [ERROR] Failed to start update process
494
- echo Please check the update window for error details.
495
- )
496
- ) else (
497
- if exist "%upgrade_medicafe_legacy%" (
498
- echo Starting legacy update script...
499
- start "MediCafe Update" cmd /v:on /c "python %upgrade_medicafe_legacy% %package_version% & echo. & echo Update process completed. Press any key to close... & pause >nul"
500
- if %errorlevel% equ 0 (
501
- echo %DATE% %TIME% Upgrade initiated successfully - legacy. >> "%temp_file%"
502
- echo [SUCCESS] Update process started successfully
503
- ) else (
504
- echo %DATE% %TIME% Update failed - legacy. >> "%temp_file%"
505
- echo [ERROR] Failed to start update process
506
- echo Please check the update window for error details.
507
- )
508
- ) else (
509
- echo [ERROR] Update script not found
510
- echo Expected locations:
511
- echo - Local: %upgrade_medicafe_local%
512
- echo - Legacy: %upgrade_medicafe_legacy%
513
- echo.
514
- echo Press Enter to return to main menu...
515
- pause >nul
516
- goto main_menu
517
- )
518
- )
519
-
520
- echo.
521
- echo ========================================
522
- echo UPDATE STATUS
523
- echo ========================================
524
- echo.
525
- echo The update process has been initiated in a new window.
526
- echo Please wait for it to complete before continuing.
527
- echo.
528
- echo If the update window closes quickly, there may be an error.
529
- echo Check the update window output for details.
530
- echo.
531
- echo Press Enter to return to main menu...
532
- pause >nul
533
- goto main_menu
484
+ :: Build a temporary updater to run after this window exits
485
+ set "_MEDIBOT_PATH=%~f0"
486
+ set "_UPD_RUNNER=%TEMP%\medicafe_update_runner.cmd"
487
+
488
+ (
489
+ echo @echo off
490
+ echo setlocal enabledelayedexpansion
491
+ echo set "UPD_PY=%upgrade_medicafe%"
492
+ echo set "MEDIBOT_PATH=%_MEDIBOT_PATH%"
493
+ echo rem Wait briefly to ensure the main window has exited and released file locks
494
+ echo ping 127.0.0.1 -n 3 ^>nul
495
+ echo echo Starting MediCafe updater...
496
+ echo where python ^>nul 2^>^&1
497
+ echo if errorlevel 1 (
498
+ echo echo [ERROR] Python not found in PATH. Aborting update.
499
+ echo goto :eof
500
+ echo )
501
+ echo python "%%UPD_PY%%"
502
+ echo set "RET=%%ERRORLEVEL%%"
503
+ echo echo Update process exited with code %%RET%%
504
+ echo rem Relaunch MediBot if available
505
+ echo if exist "%%MEDIBOT_PATH%%" start "MediBot" "%%MEDIBOT_PATH%%"
506
+ echo exit /b %%RET%%
507
+ ) > "%_UPD_RUNNER%"
508
+
509
+ if not exist "%_UPD_RUNNER%" (
510
+ echo [ERROR] Failed to create updater script at %_UPD_RUNNER%
511
+ echo Press Enter to return to main menu...
512
+ pause >nul
513
+ goto main_menu
514
+ )
515
+
516
+ echo.
517
+ echo Launching updater and closing this window...
518
+ start "MediCafe Update" "%_UPD_RUNNER%"
519
+ exit /b 0
534
520
 
535
521
  :: Download Carol's Emails
536
522
  :download_emails
@@ -33,6 +33,12 @@ if MediBot_UI:
33
33
  app_control = getattr(MediBot_UI, 'app_control', None)
34
34
  manage_script_pause = getattr(MediBot_UI, 'manage_script_pause', None)
35
35
  user_interaction = getattr(MediBot_UI, 'user_interaction', None)
36
+ get_app_control = getattr(MediBot_UI, '_get_app_control', None)
37
+ def _ac():
38
+ try:
39
+ return get_app_control() if get_app_control else getattr(MediBot_UI, 'app_control', None)
40
+ except Exception:
41
+ return getattr(MediBot_UI, 'app_control', None)
36
42
  else:
37
43
  app_control = None
38
44
  manage_script_pause = None
@@ -345,7 +351,7 @@ def data_entry_loop(csv_data, field_mapping, reverse_mapping, fixed_values):
345
351
  manage_script_pause(csv_data, error_message, reverse_mapping)
346
352
  error_message = '' # Clear error message for the next iteration
347
353
 
348
- if app_control.get_pause_status():
354
+ if _ac() and _ac().get_pause_status():
349
355
  continue # Skip processing this row if the script is paused
350
356
 
351
357
  # I feel like this is overwriting what would have already been idenfitied in the mapping.
@@ -374,7 +380,8 @@ def data_entry_loop(csv_data, field_mapping, reverse_mapping, fixed_values):
374
380
 
375
381
  # Code to handle the end of a patient record
376
382
  # TODO One day this can just not pause...
377
- app_control.set_pause_status(True) # Pause at the end of processing each patient record
383
+ if _ac():
384
+ _ac().set_pause_status(True) # Pause at the end of processing each patient record
378
385
 
379
386
  # PERFORMANCE FIX: Explicit cleanup at end of patient processing
380
387
  # Clear global state to prevent accumulation over processing sessions
@@ -548,11 +555,11 @@ if __name__ == "__main__":
548
555
  csv_data = [row for index, row in enumerate(csv_data) if index in selected_indices]
549
556
 
550
557
  # Check if MAPAT_MED_PATH is missing or invalid
551
- if not app_control.get_mapat_med_path() or not os.path.exists(app_control.get_mapat_med_path()):
558
+ if (not _ac()) or (not _ac().get_mapat_med_path()) or (not os.path.exists(_ac().get_mapat_med_path())):
552
559
  print("Warning: MAPAT.MED PATH is missing or invalid. Please check the path configuration.")
553
560
 
554
561
  # Perform the existing patients check
555
- existing_patients, patients_to_process = MediBot_Preprocessor.check_existing_patients(selected_patient_ids, app_control.get_mapat_med_path())
562
+ existing_patients, patients_to_process = MediBot_Preprocessor.check_existing_patients(selected_patient_ids, _ac().get_mapat_med_path() if _ac() else '')
556
563
 
557
564
  if existing_patients:
558
565
  print("\nNOTE: The following patient(s) already EXIST in the system and \n will be excluded from processing:")
@@ -610,8 +617,9 @@ if __name__ == "__main__":
610
617
  print("\n*** Press [Enter] when ready to begin! ***")
611
618
  input()
612
619
  MediLink_ConfigLoader.log("Opening Medisoft...")
613
- open_medisoft(app_control.get_medisoft_shortcut())
614
- app_control.set_pause_status(True)
620
+ open_medisoft(_ac().get_medisoft_shortcut() if _ac() else '')
621
+ if _ac():
622
+ _ac().set_pause_status(True)
615
623
  _ = manage_script_pause(csv_data, error_message, reverse_mapping)
616
624
  data_entry_loop(csv_data, MediBot_Preprocessor_lib.field_mapping, reverse_mapping, fixed_values)
617
625
  cleanup()
@@ -31,6 +31,12 @@ MediLink_DataMgmt = import_medilink_module('MediLink_DataMgmt')
31
31
  MediBot_UI = import_medibot_module('MediBot_UI')
32
32
  if MediBot_UI:
33
33
  app_control = getattr(MediBot_UI, 'app_control', None)
34
+ get_app_control = getattr(MediBot_UI, '_get_app_control', None)
35
+ def _ac():
36
+ try:
37
+ return get_app_control() if get_app_control else getattr(MediBot_UI, 'app_control', None)
38
+ except Exception:
39
+ return getattr(MediBot_UI, 'app_control', None)
34
40
  else:
35
41
  app_control = None
36
42
 
@@ -1299,7 +1305,8 @@ def load_insurance_data_from_mapat(config, crosswalk):
1299
1305
  dict: A dictionary mapping patient IDs to insurance IDs.
1300
1306
  """
1301
1307
  # Retrieve MAPAT path and slicing information from the configuration
1302
- mapat_path = app_control.get_mapat_med_path()
1308
+ ac = _ac()
1309
+ mapat_path = ac.get_mapat_med_path() if ac else ''
1303
1310
  mapat_slices = crosswalk['mapat_mapping']['slices']
1304
1311
 
1305
1312
  # Initialize the dictionary to hold the patient ID to insurance ID mappings
@@ -304,6 +304,10 @@ def user_interaction(csv_data, interaction_mode, error_message, reverse_mapping)
304
304
  if interaction_mode == 'triage':
305
305
  display_menu_header(" =(^.^)= Welcome to MediBot! =(^.^)=")
306
306
 
307
+ # Ensure app_control is initialized before using it in triage
308
+ ac = _get_app_control()
309
+ app_control = ac
310
+
307
311
  while True:
308
312
  try:
309
313
  response = input("\nAm I processing Medicare patients? (yes/no): ").lower().strip()
@@ -313,10 +317,10 @@ def user_interaction(csv_data, interaction_mode, error_message, reverse_mapping)
313
317
  continue
314
318
 
315
319
  if response in ['yes', 'y']:
316
- app_control.load_paths_from_config(medicare=True)
320
+ ac.load_paths_from_config(medicare=True)
317
321
  break
318
322
  elif response in ['no', 'n']:
319
- app_control.load_paths_from_config(medicare=False)
323
+ ac.load_paths_from_config(medicare=False)
320
324
  break
321
325
  else:
322
326
  print("Invalid entry. Please enter 'yes' or 'no'.")
@@ -42,6 +42,12 @@ MediBot_UI = import_medibot_module('MediBot_UI')
42
42
  if MediBot_UI:
43
43
  manage_script_pause = getattr(MediBot_UI, 'manage_script_pause', None)
44
44
  app_control = getattr(MediBot_UI, 'app_control', None)
45
+ get_app_control = getattr(MediBot_UI, '_get_app_control', None)
46
+ def _ac():
47
+ try:
48
+ return get_app_control() if get_app_control else getattr(MediBot_UI, 'app_control', None)
49
+ except Exception:
50
+ return getattr(MediBot_UI, 'app_control', None)
45
51
  else:
46
52
  manage_script_pause = None
47
53
  app_control = None
@@ -146,7 +152,8 @@ def enforce_significant_length(output):
146
152
  def format_street(value, csv_data, reverse_mapping, parsed_address_components):
147
153
  _ensure_initialized()
148
154
  # Temporarily disable script pause status
149
- app_control.set_pause_status(False)
155
+ if _ac():
156
+ _ac().set_pause_status(False)
150
157
 
151
158
  # Remove period characters.
152
159
  value = value.replace('.', '')
@@ -197,8 +204,12 @@ def format_street(value, csv_data, reverse_mapping, parsed_address_components):
197
204
  except Exception as e:
198
205
  # Handle exceptions by logging and offering to correct data manually
199
206
  print("Address format error: Unable to parse address '{}'. Error: {}".format(value, e))
200
- app_control.set_pause_status(True)
201
- open_csv_for_editing(CSV_FILE_PATH)
207
+ if _ac():
208
+ _ac().set_pause_status(True)
209
+ if MediBot_Preprocessor_lib and hasattr(MediBot_Preprocessor_lib, 'CSV_FILE_PATH'):
210
+ open_csv_for_editing(MediBot_Preprocessor_lib.CSV_FILE_PATH)
211
+ else:
212
+ open_csv_for_editing('')
202
213
  manage_script_pause(csv_data, e, reverse_mapping)
203
214
  # Return original value with spaces formatted, enforcing significant length
204
215
  return enforce_significant_length(value.replace(' ', '{Space}'))
@@ -0,0 +1,124 @@
1
+ Metadata-Version: 2.1
2
+ Name: medicafe
3
+ Version: 0.250811.1
4
+ Summary: MediCafe
5
+ Home-page: https://github.com/katanada2/MediCafe
6
+ Author: Daniel Vidaud
7
+ Author-email: daniel@personalizedtransformation.com
8
+ License: MIT
9
+ Project-URL: Source, https://github.com/katanada2/MediCafe
10
+ Project-URL: Bug Tracker, https://github.com/katanada2/MediCafe/issues
11
+ Keywords: medicafe medibot medilink medisoft automation healthcare claims
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.4
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Operating System :: OS Independent
16
+ Requires-Python: >=3.4, <3.5
17
+ Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+
20
+ # Documentation Consolidation Summary
21
+
22
+ ## ✅ COMPLETED: Markdown File Cleanup
23
+
24
+ ### Before: 200+ Markdown Files Scattered Everywhere
25
+ - **25+ files** in root directory
26
+ - **50+ files** in Obsidian_MediCafe directory
27
+ - **200+ files** in generated_clients directories
28
+ - **Total**: 275+ markdown files creating clutter
29
+
30
+ ### After: Clean, Organized Structure
31
+
32
+ #### Root Directory (2 files remaining)
33
+ - `DOCUMENTATION_CONSOLIDATION_SUMMARY.md` - This summary
34
+ - `MARKDOWN_CONSOLIDATION_PLAN.md` - The original plan
35
+
36
+ #### Organized Documentation Structure
37
+ ```
38
+ docs/
39
+ ├── implementation/ (9 files)
40
+ │ ├── README.md
41
+ │ ├── API_CLIENT_FACTORY_IMPLEMENTATION_PLAN.md
42
+ │ ├── API_CLIENT_FACTORY_IMPLEMENTATION_SUMMARY.md
43
+ │ ├── API_FACTORY_INSTALLATION_COMPLETE.md
44
+ │ ├── CORE_UTILS_OPTIMIZATION_PLAN.md
45
+ │ ├── CORE_UTILS_OPTIMIZATION_STATUS.md
46
+ │ ├── IMPORT_IMPROVEMENTS_SUMMARY.md
47
+ │ ├── IMPLEMENTATION_READY_SUMMARY.md
48
+ │ ├── SMART_IMPORT_AUDIT_AND_MIGRATION_COMPLETE.md
49
+ │ └── SMART_IMPORT_IMPLEMENTATION_SUMMARY.md
50
+ ├── fixes/ (6 files)
51
+ │ ├── README.md
52
+ │ ├── ADVANCED_PYTHON34_FIXES.md
53
+ │ ├── PATH_RESOLUTION_IMPROVEMENTS.md
54
+ │ ├── PYTHON34_COMPATIBILITY_FIXES.md
55
+ │ ├── PYTHON34_ADVANCED_COMPATIBILITY_FIXES.md
56
+ │ ├── XP_COMPATIBILITY_FIXES.md
57
+ │ └── XP_ERROR_HANDLING_SUMMARY.md
58
+ ├── reports/ (4 files)
59
+ │ ├── README.md
60
+ │ ├── 400_ERROR_INVESTIGATION_REPORT.md
61
+ │ ├── F_DRIVE_DIAGNOSTICS_SUMMARY.md
62
+ │ ├── INTEGRATION_TESTING_SUMMARY.md
63
+ │ └── MEDIBOT_INTEGRATION_TEST_REPORT.md
64
+ └── architecture/ (3 files)
65
+ ├── README.md
66
+ ├── CACHE_CLEARING_SOLUTION.md
67
+ ├── MEDICAFE_ENTRY_POINT_GUIDE.md
68
+ └── SWAGGER_CONSISTENCY_ANALYSIS.md
69
+ ```
70
+
71
+ #### Archived Auto-Generated Content
72
+ ```
73
+ archive/
74
+ ├── obsidian_docs/ (50+ auto-generated code docs)
75
+ └── generated_api_docs/ (200+ auto-generated Swagger docs)
76
+ ```
77
+
78
+ ## 🎯 Results Achieved
79
+
80
+ ### ✅ **Reduced Root Directory Clutter**
81
+ - **Before**: 25+ markdown files scattered in root
82
+ - **After**: Only 2 essential files remain
83
+
84
+ ### ✅ **Organized Documentation**
85
+ - **22 files** properly categorized and indexed
86
+ - **4 categories** with clear purposes and README files
87
+ - **Easy navigation** with descriptive file names
88
+
89
+ ### ✅ **Archived Auto-Generated Content**
90
+ - **250+ auto-generated files** moved to archive
91
+ - **Preserved for reference** but out of main codebase
92
+ - **Can be regenerated** if needed
93
+
94
+ ### ✅ **Improved Developer Experience**
95
+ - **Cleaner project structure**
96
+ - **Better findability** of documentation
97
+ - **Reduced cognitive load** when browsing codebase
98
+ - **Maintained historical context** in organized format
99
+
100
+ ## 📊 Statistics
101
+
102
+ | Metric | Before | After | Improvement |
103
+ |--------|--------|-------|-------------|
104
+ | Root directory files | 25+ | 2 | 92% reduction |
105
+ | Total markdown files | 275+ | 22 | 92% reduction |
106
+ | Organized categories | 0 | 4 | New structure |
107
+ | Index files | 0 | 4 | New navigation |
108
+
109
+ ## 🚀 Next Steps
110
+
111
+ 1. **Update any code references** to moved documentation files
112
+ 2. **Consider adding to .gitignore** for auto-generated content
113
+ 3. **Establish documentation standards** for future development
114
+ 4. **Regular cleanup schedule** to prevent future clutter
115
+
116
+ ## 📝 Notes
117
+
118
+ - All original content preserved
119
+ - Auto-generated files archived but not deleted
120
+ - Clear categorization makes finding documentation easier
121
+ - Index files provide navigation context
122
+ - Archive can be restored if needed
123
+
124
+ **Status**: ✅ **COMPLETE** - Major documentation cleanup successful!
@@ -0,0 +1,124 @@
1
+ Metadata-Version: 2.1
2
+ Name: medicafe
3
+ Version: 0.250811.1
4
+ Summary: MediCafe
5
+ Home-page: https://github.com/katanada2/MediCafe
6
+ Author: Daniel Vidaud
7
+ Author-email: daniel@personalizedtransformation.com
8
+ License: MIT
9
+ Project-URL: Source, https://github.com/katanada2/MediCafe
10
+ Project-URL: Bug Tracker, https://github.com/katanada2/MediCafe/issues
11
+ Keywords: medicafe medibot medilink medisoft automation healthcare claims
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.4
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Operating System :: OS Independent
16
+ Requires-Python: >=3.4, <3.5
17
+ Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+
20
+ # Documentation Consolidation Summary
21
+
22
+ ## ✅ COMPLETED: Markdown File Cleanup
23
+
24
+ ### Before: 200+ Markdown Files Scattered Everywhere
25
+ - **25+ files** in root directory
26
+ - **50+ files** in Obsidian_MediCafe directory
27
+ - **200+ files** in generated_clients directories
28
+ - **Total**: 275+ markdown files creating clutter
29
+
30
+ ### After: Clean, Organized Structure
31
+
32
+ #### Root Directory (2 files remaining)
33
+ - `DOCUMENTATION_CONSOLIDATION_SUMMARY.md` - This summary
34
+ - `MARKDOWN_CONSOLIDATION_PLAN.md` - The original plan
35
+
36
+ #### Organized Documentation Structure
37
+ ```
38
+ docs/
39
+ ├── implementation/ (9 files)
40
+ │ ├── README.md
41
+ │ ├── API_CLIENT_FACTORY_IMPLEMENTATION_PLAN.md
42
+ │ ├── API_CLIENT_FACTORY_IMPLEMENTATION_SUMMARY.md
43
+ │ ├── API_FACTORY_INSTALLATION_COMPLETE.md
44
+ │ ├── CORE_UTILS_OPTIMIZATION_PLAN.md
45
+ │ ├── CORE_UTILS_OPTIMIZATION_STATUS.md
46
+ │ ├── IMPORT_IMPROVEMENTS_SUMMARY.md
47
+ │ ├── IMPLEMENTATION_READY_SUMMARY.md
48
+ │ ├── SMART_IMPORT_AUDIT_AND_MIGRATION_COMPLETE.md
49
+ │ └── SMART_IMPORT_IMPLEMENTATION_SUMMARY.md
50
+ ├── fixes/ (6 files)
51
+ │ ├── README.md
52
+ │ ├── ADVANCED_PYTHON34_FIXES.md
53
+ │ ├── PATH_RESOLUTION_IMPROVEMENTS.md
54
+ │ ├── PYTHON34_COMPATIBILITY_FIXES.md
55
+ │ ├── PYTHON34_ADVANCED_COMPATIBILITY_FIXES.md
56
+ │ ├── XP_COMPATIBILITY_FIXES.md
57
+ │ └── XP_ERROR_HANDLING_SUMMARY.md
58
+ ├── reports/ (4 files)
59
+ │ ├── README.md
60
+ │ ├── 400_ERROR_INVESTIGATION_REPORT.md
61
+ │ ├── F_DRIVE_DIAGNOSTICS_SUMMARY.md
62
+ │ ├── INTEGRATION_TESTING_SUMMARY.md
63
+ │ └── MEDIBOT_INTEGRATION_TEST_REPORT.md
64
+ └── architecture/ (3 files)
65
+ ├── README.md
66
+ ├── CACHE_CLEARING_SOLUTION.md
67
+ ├── MEDICAFE_ENTRY_POINT_GUIDE.md
68
+ └── SWAGGER_CONSISTENCY_ANALYSIS.md
69
+ ```
70
+
71
+ #### Archived Auto-Generated Content
72
+ ```
73
+ archive/
74
+ ├── obsidian_docs/ (50+ auto-generated code docs)
75
+ └── generated_api_docs/ (200+ auto-generated Swagger docs)
76
+ ```
77
+
78
+ ## 🎯 Results Achieved
79
+
80
+ ### ✅ **Reduced Root Directory Clutter**
81
+ - **Before**: 25+ markdown files scattered in root
82
+ - **After**: Only 2 essential files remain
83
+
84
+ ### ✅ **Organized Documentation**
85
+ - **22 files** properly categorized and indexed
86
+ - **4 categories** with clear purposes and README files
87
+ - **Easy navigation** with descriptive file names
88
+
89
+ ### ✅ **Archived Auto-Generated Content**
90
+ - **250+ auto-generated files** moved to archive
91
+ - **Preserved for reference** but out of main codebase
92
+ - **Can be regenerated** if needed
93
+
94
+ ### ✅ **Improved Developer Experience**
95
+ - **Cleaner project structure**
96
+ - **Better findability** of documentation
97
+ - **Reduced cognitive load** when browsing codebase
98
+ - **Maintained historical context** in organized format
99
+
100
+ ## 📊 Statistics
101
+
102
+ | Metric | Before | After | Improvement |
103
+ |--------|--------|-------|-------------|
104
+ | Root directory files | 25+ | 2 | 92% reduction |
105
+ | Total markdown files | 275+ | 22 | 92% reduction |
106
+ | Organized categories | 0 | 4 | New structure |
107
+ | Index files | 0 | 4 | New navigation |
108
+
109
+ ## 🚀 Next Steps
110
+
111
+ 1. **Update any code references** to moved documentation files
112
+ 2. **Consider adding to .gitignore** for auto-generated content
113
+ 3. **Establish documentation standards** for future development
114
+ 4. **Regular cleanup schedule** to prevent future clutter
115
+
116
+ ## 📝 Notes
117
+
118
+ - All original content preserved
119
+ - Auto-generated files archived but not deleted
120
+ - Clear categorization makes finding documentation easier
121
+ - Index files provide navigation context
122
+ - Archive can be restored if needed
123
+
124
+ **Status**: ✅ **COMPLETE** - Major documentation cleanup successful!
@@ -1,10 +1,21 @@
1
1
  from setuptools import setup, find_packages
2
+ from pathlib import Path
2
3
 
3
- setup(
4
- name='medicafe',
5
- version="0.250811.0",
6
- description='MediCafe',
7
- long_description="""
4
+ # Determine long_description from available README files (prefer Markdown)
5
+ this_directory = Path(__file__).parent
6
+ long_description_text = None
7
+ for candidate_name in [
8
+ "README.md",
9
+ "DOCUMENTATION_CONSOLIDATION_SUMMARY.md",
10
+ "MARKDOWN_CONSOLIDATION_PLAN.md",
11
+ ]:
12
+ candidate_path = this_directory / candidate_name
13
+ if candidate_path.exists():
14
+ long_description_text = candidate_path.read_text(encoding="utf-8")
15
+ break
16
+
17
+ if long_description_text is None:
18
+ long_description_text = """
8
19
  # Project Overview: MediCafe
9
20
 
10
21
  ## Project Description
@@ -39,19 +50,36 @@ setup(
39
50
 
40
51
  ## Future Directions
41
52
  Future enhancements may include the development of additional modules for other aspects of medical practice management, further integrations with healthcare systems, and continuous improvements in user interface design to accommodate an even broader range of users.
42
- """,
53
+ """
54
+
55
+ setup(
56
+ name='medicafe',
57
+ version="0.250811.1",
58
+ description='MediCafe',
59
+ long_description=long_description_text,
43
60
  long_description_content_type='text/markdown',
44
- keywords = 'medicafe python34 medibot medilink',
45
- url='https://github.com/katanada2',
61
+ keywords='medicafe medibot medilink medisoft automation healthcare claims',
62
+ url='https://github.com/katanada2/MediCafe',
63
+ project_urls={
64
+ 'Source': 'https://github.com/katanada2/MediCafe',
65
+ 'Bug Tracker': 'https://github.com/katanada2/MediCafe/issues',
66
+ },
46
67
  author='Daniel Vidaud',
47
68
  author_email='daniel@personalizedtransformation.com',
48
69
  license='MIT',
70
+ classifiers=[
71
+ 'Programming Language :: Python :: 3',
72
+ 'Programming Language :: Python :: 3.4',
73
+ 'License :: OSI Approved :: MIT License',
74
+ 'Operating System :: OS Independent',
75
+ ],
49
76
  packages=find_packages(include=['MediCafe', 'MediCafe.*', 'MediBot', 'MediBot.*', 'MediLink', 'MediLink.*']),
50
77
  include_package_data=True,
51
78
  package_data={
52
79
  'MediBot': ['MediBot.bat'],
53
- 'MediLink': ['openssl.cn', '*.html']
80
+ 'MediLink': ['openssl.cnf', '*.html']
54
81
  },
82
+ python_requires='>=3.4, <3.5',
55
83
  install_requires=[
56
84
  'requests==2.21.0',
57
85
  'argparse==1.4.0',
@@ -1,48 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: medicafe
3
- Version: 0.250811.0
4
- Summary: MediCafe
5
- Home-page: https://github.com/katanada2
6
- Author: Daniel Vidaud
7
- Author-email: daniel@personalizedtransformation.com
8
- License: MIT
9
- Keywords: medicafe python34 medibot medilink
10
- Description-Content-Type: text/markdown
11
- License-File: LICENSE
12
-
13
-
14
- # Project Overview: MediCafe
15
-
16
- ## Project Description
17
- MediCafe is a comprehensive suite designed to automate and streamline several aspects of medical administrative tasks within Medisoft, a popular medical practice management software. The system consists of two main components: MediBot and MediLink, each serving distinct functions but integrated to enhance the workflow of medical practices.
18
-
19
- ## MediBot Module
20
- MediBot is primarily focused on automating data entry processes in Medisoft. It utilizes AutoHotkey scripting to control and automate the GUI interactions required for inputting patient data into Medisoft. Key features and functionalities include:
21
-
22
- - **Error Handling and Logging:** MediBot aims to implement a robust error handling mechanism that can log issues and provide feedback for troubleshooting.
23
- - **Insurance Mode Adjustments:** The system can adjust data inputs based on specific requirements from various insurance providers, including Medicare.
24
- - **Diagnosis Entry Automation:** MediBot automates the extraction and entry of diagnosis codes from surgical schedules into Medisoft.
25
- - **Script Efficiency:** The module enhances the efficiency of scripts handling Medisoft's quirks, such as fields that are skipped or require special navigation.
26
- - **User Interface (UI) Enhancements:** Plans to develop a graphical user interface to help non-technical users manage and execute scripts more easily.
27
- - **Documentation and Support:** Comprehensive documentation and support channels are being established to assist users in setup, configuration, and troubleshooting.
28
-
29
- ## MediLink Module
30
- MediLink focuses on the backend processes related to medical claims submission, particularly handling communications with multiple endpoints like Availity, Optum, and PNT Data. Its main features include:
31
-
32
- - **Dynamic Configurations:** Supports multiple endpoints with environmental settings to ensure flexibility in claims submission.
33
- - **File Detection and Integrity Checks:** Enhances the detection of new claim files with detailed logging and integrity checks for preprocessing validation.
34
- - **Automated Response Handling:** Automates the process of receiving and integrating response files from endpoints into Medisoft, alerting users to exceptions.
35
- - **Endpoint Management:** Allows dynamic updating of endpoints based on insurance provider changes, ensuring accurate and efficient claims processing.
36
- - **User Interface (UI) Interactions:** Provides a user interface for managing claims submission, including confirming or adjusting suggested endpoints.
37
-
38
- ## Integration and Workflow
39
- The two modules work in tandem to provide a seamless experience. MediBot handles the initial data entry into Medisoft, preparing the system with up-to-date patient and treatment information. This data is then utilized by MediLink for preparing and submitting medical claims to various insurance providers. Errors and feedback from MediLink can prompt adjustments in MediBot's data entry processes, creating a feedback loop that enhances accuracy and efficiency.
40
-
41
- The integration aims to reduce the administrative burden on medical practices, decrease the incidence of data entry errors, and ensure timely submission of medical claims, thereby improving the revenue cycle management of healthcare providers.
42
-
43
- ## Target Users
44
- The system is intended for use by administrative staff in medical practices who are responsible for patient data management and claims processing. By automating these tasks, the system not only saves time but also reduces the potential for human error, leading to more accurate billing and improved operational efficiency.
45
-
46
- ## Future Directions
47
- Future enhancements may include the development of additional modules for other aspects of medical practice management, further integrations with healthcare systems, and continuous improvements in user interface design to accommodate an even broader range of users.
48
-
@@ -1,48 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: medicafe
3
- Version: 0.250811.0
4
- Summary: MediCafe
5
- Home-page: https://github.com/katanada2
6
- Author: Daniel Vidaud
7
- Author-email: daniel@personalizedtransformation.com
8
- License: MIT
9
- Keywords: medicafe python34 medibot medilink
10
- Description-Content-Type: text/markdown
11
- License-File: LICENSE
12
-
13
-
14
- # Project Overview: MediCafe
15
-
16
- ## Project Description
17
- MediCafe is a comprehensive suite designed to automate and streamline several aspects of medical administrative tasks within Medisoft, a popular medical practice management software. The system consists of two main components: MediBot and MediLink, each serving distinct functions but integrated to enhance the workflow of medical practices.
18
-
19
- ## MediBot Module
20
- MediBot is primarily focused on automating data entry processes in Medisoft. It utilizes AutoHotkey scripting to control and automate the GUI interactions required for inputting patient data into Medisoft. Key features and functionalities include:
21
-
22
- - **Error Handling and Logging:** MediBot aims to implement a robust error handling mechanism that can log issues and provide feedback for troubleshooting.
23
- - **Insurance Mode Adjustments:** The system can adjust data inputs based on specific requirements from various insurance providers, including Medicare.
24
- - **Diagnosis Entry Automation:** MediBot automates the extraction and entry of diagnosis codes from surgical schedules into Medisoft.
25
- - **Script Efficiency:** The module enhances the efficiency of scripts handling Medisoft's quirks, such as fields that are skipped or require special navigation.
26
- - **User Interface (UI) Enhancements:** Plans to develop a graphical user interface to help non-technical users manage and execute scripts more easily.
27
- - **Documentation and Support:** Comprehensive documentation and support channels are being established to assist users in setup, configuration, and troubleshooting.
28
-
29
- ## MediLink Module
30
- MediLink focuses on the backend processes related to medical claims submission, particularly handling communications with multiple endpoints like Availity, Optum, and PNT Data. Its main features include:
31
-
32
- - **Dynamic Configurations:** Supports multiple endpoints with environmental settings to ensure flexibility in claims submission.
33
- - **File Detection and Integrity Checks:** Enhances the detection of new claim files with detailed logging and integrity checks for preprocessing validation.
34
- - **Automated Response Handling:** Automates the process of receiving and integrating response files from endpoints into Medisoft, alerting users to exceptions.
35
- - **Endpoint Management:** Allows dynamic updating of endpoints based on insurance provider changes, ensuring accurate and efficient claims processing.
36
- - **User Interface (UI) Interactions:** Provides a user interface for managing claims submission, including confirming or adjusting suggested endpoints.
37
-
38
- ## Integration and Workflow
39
- The two modules work in tandem to provide a seamless experience. MediBot handles the initial data entry into Medisoft, preparing the system with up-to-date patient and treatment information. This data is then utilized by MediLink for preparing and submitting medical claims to various insurance providers. Errors and feedback from MediLink can prompt adjustments in MediBot's data entry processes, creating a feedback loop that enhances accuracy and efficiency.
40
-
41
- The integration aims to reduce the administrative burden on medical practices, decrease the incidence of data entry errors, and ensure timely submission of medical claims, thereby improving the revenue cycle management of healthcare providers.
42
-
43
- ## Target Users
44
- The system is intended for use by administrative staff in medical practices who are responsible for patient data management and claims processing. By automating these tasks, the system not only saves time but also reduces the potential for human error, leading to more accurate billing and improved operational efficiency.
45
-
46
- ## Future Directions
47
- Future enhancements may include the development of additional modules for other aspects of medical practice management, further integrations with healthcare systems, and continuous improvements in user interface design to accommodate an even broader range of users.
48
-
File without changes
File without changes
File without changes