medicafe 0.250806.14__tar.gz → 0.250810.0__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 (75) hide show
  1. medicafe-0.250810.0/MediBot/MediBot.bat +842 -0
  2. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediBot/MediBot.py +122 -18
  3. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediBot/MediBot_Preprocessor_lib.py +14 -2
  4. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediBot/MediBot_UI.py +7 -3
  5. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediBot/MediBot_docx_decoder.py +19 -6
  6. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediBot/__init__.py +9 -1
  7. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediBot/update_medicafe.py +36 -25
  8. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediCafe/MediLink_ConfigLoader.py +166 -160
  9. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediCafe/__init__.py +3 -3
  10. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediCafe/api_core.py +61 -16
  11. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediCafe/api_core_backup.py +2 -1
  12. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediCafe/logging_config.py +20 -0
  13. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_837p_encoder_library.py +18 -3
  14. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_837p_utilities.py +5 -0
  15. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_DataMgmt.py +15 -9
  16. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_Decoder.py +9 -4
  17. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_Deductible.py +9 -0
  18. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_Gmail.py +16 -1
  19. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_PatientProcessor.py +10 -5
  20. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_UI.py +7 -11
  21. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_Up.py +12 -3
  22. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_main.py +49 -13
  23. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/__init__.py +9 -1
  24. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/insurance_type_integration_test.py +12 -9
  25. {medicafe-0.250806.14 → medicafe-0.250810.0}/PKG-INFO +1 -1
  26. {medicafe-0.250806.14 → medicafe-0.250810.0}/medicafe.egg-info/PKG-INFO +1 -1
  27. {medicafe-0.250806.14 → medicafe-0.250810.0}/setup.py +1 -1
  28. medicafe-0.250806.14/MediBot/MediBot.bat +0 -464
  29. {medicafe-0.250806.14 → medicafe-0.250810.0}/LICENSE +0 -0
  30. {medicafe-0.250806.14 → medicafe-0.250810.0}/MANIFEST.in +0 -0
  31. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediBot/MediBot_Charges.py +0 -0
  32. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediBot/MediBot_Crosswalk_Library.py +0 -0
  33. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediBot/MediBot_Crosswalk_Utils.py +0 -0
  34. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediBot/MediBot_Post.py +0 -0
  35. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediBot/MediBot_Preprocessor.py +0 -0
  36. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediBot/MediBot_dataformat_library.py +0 -0
  37. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediBot/MediBot_smart_import.py +0 -0
  38. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediBot/get_medicafe_version.py +0 -0
  39. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediBot/update_json.py +0 -0
  40. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediCafe/__main__.py +0 -0
  41. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediCafe/api_factory.py +0 -0
  42. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediCafe/api_utils.py +0 -0
  43. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediCafe/core_utils.py +0 -0
  44. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediCafe/graphql_utils.py +0 -0
  45. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediCafe/logging_demo.py +0 -0
  46. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediCafe/migration_helpers.py +0 -0
  47. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediCafe/smart_import.py +0 -0
  48. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_837p_cob_library.py +0 -0
  49. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_837p_encoder.py +0 -0
  50. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_API_Generator.py +0 -0
  51. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_Azure.py +0 -0
  52. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_ClaimStatus.py +0 -0
  53. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_Deductible_Validator.py +0 -0
  54. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_Display_Utils.py +0 -0
  55. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_Down.py +0 -0
  56. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_Mailer.py +0 -0
  57. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_Parser.py +0 -0
  58. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_Scan.py +0 -0
  59. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_Scheduler.py +0 -0
  60. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_insurance_utils.py +0 -0
  61. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/MediLink_smart_import.py +0 -0
  62. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/Soumit_api.py +0 -0
  63. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/openssl.cnf +0 -0
  64. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/test.py +0 -0
  65. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/test_cob_library.py +0 -0
  66. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/test_timing.py +0 -0
  67. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/test_validation.py +0 -0
  68. {medicafe-0.250806.14 → medicafe-0.250810.0}/MediLink/webapp.html +0 -0
  69. {medicafe-0.250806.14 → medicafe-0.250810.0}/medicafe.egg-info/SOURCES.txt +0 -0
  70. {medicafe-0.250806.14 → medicafe-0.250810.0}/medicafe.egg-info/dependency_links.txt +0 -0
  71. {medicafe-0.250806.14 → medicafe-0.250810.0}/medicafe.egg-info/entry_points.txt +0 -0
  72. {medicafe-0.250806.14 → medicafe-0.250810.0}/medicafe.egg-info/not-zip-safe +0 -0
  73. {medicafe-0.250806.14 → medicafe-0.250810.0}/medicafe.egg-info/requires.txt +0 -0
  74. {medicafe-0.250806.14 → medicafe-0.250810.0}/medicafe.egg-info/top_level.txt +0 -0
  75. {medicafe-0.250806.14 → medicafe-0.250810.0}/setup.cfg +0 -0
@@ -0,0 +1,842 @@
1
+ ::MediBot.bat - Streamlined version with coordinated debug system
2
+ @echo off
3
+ setlocal enabledelayedexpansion
4
+
5
+ :: Debug mode selection
6
+ echo ========================================
7
+ echo MediCafe Launcher
8
+ echo ========================================
9
+ echo.
10
+ echo Choose your mode:
11
+ echo 1. Normal Mode - Production
12
+ echo 2. Debug Mode - Full diagnostics (Interactive)
13
+ echo 3. Debug Mode - Full diagnostics (Non-Interactive)
14
+ echo.
15
+ set /p debug_choice="Enter your choice (1-3): "
16
+
17
+ if "!debug_choice!"=="1" goto start_normal_mode
18
+ if "!debug_choice!"=="2" goto start_debug_interactive
19
+ if "!debug_choice!"=="3" goto start_debug_noninteractive
20
+ goto start_normal_mode
21
+
22
+ :start_debug_interactive
23
+ echo.
24
+ echo ========================================
25
+ echo DEBUG MODE (INTERACTIVE)
26
+ echo ========================================
27
+ echo Running full diagnostic suite...
28
+ echo.
29
+ set "SKIP_CLS_AFTER_DEBUG=1"
30
+ call "%~dp0full_debug_suite.bat" /interactive
31
+ echo.
32
+ goto normal_mode
33
+
34
+ :start_debug_noninteractive
35
+ echo.
36
+ echo ========================================
37
+ echo DEBUG MODE (NON-INTERACTIVE)
38
+ echo ========================================
39
+ echo Running full diagnostic suite...
40
+ echo.
41
+ set "SKIP_CLS_AFTER_DEBUG=1"
42
+ call "%~dp0full_debug_suite.bat"
43
+ echo.
44
+ goto normal_mode
45
+
46
+ :start_normal_mode
47
+ echo Starting Normal Mode...
48
+ goto normal_mode
49
+
50
+ :normal_mode
51
+ :: Normal production mode - streamlined without excessive debug output
52
+ if not defined SKIP_CLS_AFTER_DEBUG cls
53
+ set "SKIP_CLS_AFTER_DEBUG="
54
+ echo ========================================
55
+ echo MediBot Starting
56
+ echo ========================================
57
+ echo.
58
+
59
+ :: Define paths with local fallbacks for F: drive dependencies
60
+ set "source_folder=C:\MEDIANSI\MediCare"
61
+ set "target_folder=C:\MEDIANSI\MediCare\CSV"
62
+ set "python_script=C:\Python34\Lib\site-packages\MediBot\update_json.py"
63
+ set "python_script2=C:\Python34\Lib\site-packages\MediBot\Medibot.py"
64
+ set "medicafe_package=medicafe"
65
+
66
+ :: Priority order: 1) Local relative path, 2) F: drive path (legacy)
67
+ set "upgrade_medicafe_local=MediBot\update_medicafe.py"
68
+ set "upgrade_medicafe_legacy=F:\Medibot\update_medicafe.py"
69
+
70
+ :: Storage and config paths with local fallbacks
71
+ set "local_storage_legacy=F:\Medibot\DOWNLOADS"
72
+ set "local_storage_local=MediBot\DOWNLOADS"
73
+ set "config_file_legacy=F:\Medibot\json\config.json"
74
+ set "config_file_local=MediBot\json\config.json"
75
+ set "temp_file_legacy=F:\Medibot\last_update_timestamp.txt"
76
+ set "temp_file_local=MediBot\last_update_timestamp.txt"
77
+
78
+ :: FIXED: Always prioritize local file if it exists
79
+ if exist "%upgrade_medicafe_local%" (
80
+ set "upgrade_medicafe=%upgrade_medicafe_local%"
81
+ set "use_local_update=1"
82
+ ) else (
83
+ set "use_local_update=0"
84
+ )
85
+
86
+ :: Determine which paths to use based on availability
87
+ if exist "F:\Medibot" (
88
+ set "local_storage_path=%local_storage_legacy%"
89
+ set "config_file=%config_file_legacy%"
90
+ set "temp_file=%temp_file_legacy%"
91
+
92
+ :: Only use F: drive update script if local doesn't exist
93
+ if "!use_local_update!"=="0" (
94
+ if exist "%upgrade_medicafe_legacy%" (
95
+ set "upgrade_medicafe=%upgrade_medicafe_legacy%"
96
+ )
97
+ )
98
+ ) else (
99
+ set "local_storage_path=%local_storage_local%"
100
+ set "config_file=%config_file_local%"
101
+ set "temp_file=%temp_file_local%"
102
+ :: Ensure local directories exist
103
+ if not exist "MediBot\json" mkdir "MediBot\json" 2>nul
104
+ if not exist "MediBot\DOWNLOADS" mkdir "MediBot\DOWNLOADS" 2>nul
105
+ )
106
+
107
+ set "firefox_path=C:\Program Files\Mozilla Firefox\firefox.exe"
108
+ set "claims_status_script=..\MediLink\MediLink_ClaimStatus.py"
109
+ set "deductible_script=..\MediLink\MediLink_Deductible.py"
110
+ set "package_version="
111
+ set PYTHONWARNINGS=ignore
112
+
113
+ :: Check if Python is installed
114
+ python --version >nul 2>&1
115
+ if %errorlevel% neq 0 (
116
+ echo [ERROR] Python is not installed or not added to PATH.
117
+ echo Please run in Debug Mode to diagnose Python issues.
118
+ pause
119
+ exit /b 1
120
+ )
121
+
122
+ :: Check if critical directories exist
123
+ if not exist "%source_folder%" (
124
+ echo [WARNING] Source folder not found at: %source_folder%
125
+ set /p provide_alt_source="Enter 'Y' to provide alternate path, or any other key to continue: "
126
+ if /i "!provide_alt_source!"=="Y" (
127
+ set /p alt_source_folder="Enter the alternate source folder path: "
128
+ if not "!alt_source_folder!"=="" set "source_folder=!alt_source_folder!"
129
+ )
130
+ )
131
+
132
+ if not exist "%target_folder%" (
133
+ mkdir "%target_folder%" 2>nul
134
+ )
135
+
136
+ :: Check if the MediCafe package is installed
137
+ python -c "import pkg_resources; print('MediCafe=='+pkg_resources.get_distribution('medicafe').version)" 2>nul
138
+ if errorlevel 1 (
139
+ echo [WARNING] MediCafe package not found. Attempting to install...
140
+ python -m pip install medicafe --upgrade
141
+ if errorlevel 1 (
142
+ echo [ERROR] Failed to install MediCafe package.
143
+ echo Please run in Debug Mode to diagnose package issues.
144
+ pause
145
+ exit /b 1
146
+ )
147
+ )
148
+
149
+ :: Determine installed MediCafe version
150
+ set "package_version="
151
+ set "medicafe_version="
152
+ python -c "import pkg_resources; print('MediCafe=='+pkg_resources.get_distribution('medicafe').version)" > temp.txt 2>nul
153
+ set /p package_version=<temp.txt
154
+ if exist temp.txt del temp.txt
155
+ if not defined package_version (
156
+ rem Fallback: try importing MediCafe and reading __version__
157
+ python -c "import sys;\ntry:\n import MediCafe;\n print('MediCafe=='+getattr(MediCafe, '__version__','unknown'))\nexcept Exception as e:\n print('')" > temp.txt 2>nul
158
+ set /p package_version=<temp.txt
159
+ if exist temp.txt del temp.txt
160
+ )
161
+ if defined package_version (
162
+ for /f "tokens=2 delims==" %%a in ("%package_version%") do set "medicafe_version=%%a"
163
+ ) else (
164
+ set "medicafe_version=unknown"
165
+ )
166
+
167
+ :: Check for internet connectivity
168
+ ping -n 1 google.com >nul 2>&1
169
+ if errorlevel 1 (
170
+ set "internet_available=0"
171
+ ) else (
172
+ set "internet_available=1"
173
+ echo Internet connection detected.
174
+ )
175
+
176
+ :: Common pre-menu setup
177
+ echo Setting up the environment...
178
+ if not exist "%config_file%" (
179
+ echo Configuration file missing.
180
+ echo.
181
+ echo Expected configuration file path: %config_file%
182
+ echo.
183
+ echo Would you like to provide an alternate path for the configuration file?
184
+ set /p provide_alt="Enter 'Y' to provide alternate path, or any other key to exit: "
185
+ if /i "!provide_alt!"=="Y" (
186
+ echo.
187
+ echo Please enter the full path to your configuration file.
188
+ echo Example: C:\MediBot\config\config.json
189
+ echo Example with spaces: "G:\My Drive\MediBot\config\config.json"
190
+ echo.
191
+ echo Note: If your path contains spaces, please include quotes around the entire path.
192
+ echo.
193
+ set /p alt_config_path="Enter configuration file path: "
194
+ :: Remove any surrounding quotes from user input and re-add them for consistency
195
+ set "alt_config_path=!alt_config_path:"=!"
196
+ if exist "!alt_config_path!" (
197
+ echo Configuration file found at: !alt_config_path!
198
+ set "config_file=!alt_config_path!"
199
+ goto config_check_complete
200
+ ) else (
201
+ echo Configuration file not found at: !alt_config_path!
202
+ echo.
203
+ set /p retry="Would you like to try another path? (Y/N): "
204
+ if /i "!retry!"=="Y" (
205
+ goto retry_config_path
206
+ ) else (
207
+ goto end_script
208
+ )
209
+ )
210
+ ) else (
211
+ goto end_script
212
+ )
213
+ ) else (
214
+ goto config_check_complete
215
+ )
216
+
217
+ :retry_config_path
218
+ echo.
219
+ echo Please enter the full path to your configuration file.
220
+ echo Example: C:\MediBot\config\config.json
221
+ echo Example with spaces: "G:\My Drive\MediBot\config\config.json"
222
+ echo.
223
+ echo Note: If your path contains spaces, please include quotes around the entire path.
224
+ echo.
225
+ set /p alt_config_path="Enter configuration file path: "
226
+ :: Remove any surrounding quotes from user input and re-add them for consistency
227
+ set "alt_config_path=!alt_config_path:"=!"
228
+ if exist "!alt_config_path!" (
229
+ echo Configuration file found at: !alt_config_path!
230
+ set "config_file=!alt_config_path!"
231
+ ) else (
232
+ echo Configuration file not found at: !alt_config_path!
233
+ echo.
234
+ set /p retry="Would you like to try another path? (Y/N): "
235
+ if /i "!retry!"=="Y" (
236
+ goto retry_config_path
237
+ ) else (
238
+ goto end_script
239
+ )
240
+ )
241
+
242
+ :config_check_complete
243
+
244
+ :: Check if the file exists and attempt to copy it to the local directory
245
+ echo Checking for the update script...
246
+ ping -n 2 127.0.0.1 >nul
247
+
248
+ :: Continue with existing logic but with enhanced error reporting
249
+ :: First check if we already have it locally
250
+ if exist "%upgrade_medicafe_local%" (
251
+ echo Found update_medicafe.py in local directory. No action needed.
252
+ ping -n 2 127.0.0.1 >nul
253
+ ) else (
254
+ if exist "C:\Python34\Lib\site-packages\MediBot\update_medicafe.py" (
255
+ echo Found update_medicafe.py in site-packages. Copying to local directory...
256
+ ping -n 2 127.0.0.1 >nul
257
+ :: Ensure MediBot directory exists
258
+ if not exist "MediBot" mkdir "MediBot"
259
+ copy "C:\Python34\Lib\site-packages\MediBot\update_medicafe.py" "%upgrade_medicafe_local%" >nul 2>&1
260
+ if %errorlevel% neq 0 (
261
+ echo Copy to local directory failed. Error code: %errorlevel%
262
+ echo [DIAGNOSTIC] Attempting copy to F: drive - detailed error reporting
263
+ ping -n 2 127.0.0.1 >nul
264
+ :: Ensure F:\Medibot directory exists (only if F: drive is accessible)
265
+ if exist "F:\" (
266
+ if not exist "F:\Medibot" (
267
+ echo [DIAGNOSTIC] Creating F:\Medibot directory...
268
+ mkdir "F:\Medibot" 2>nul
269
+ if not exist "F:\Medibot" (
270
+ echo [ERROR] Failed to create F:\Medibot - Permission denied or read-only drive
271
+ )
272
+ )
273
+ if exist "F:\Medibot" (
274
+ echo [DIAGNOSTIC] Attempting file copy to F:\Medibot...
275
+ copy "C:\Python34\Lib\site-packages\MediBot\update_medicafe.py" "%upgrade_medicafe_legacy%" 2>nul
276
+ if %errorlevel% neq 0 (
277
+ echo [ERROR] Copy to F:\Medibot failed with error code: %errorlevel%
278
+ echo [ERROR] Possible causes:
279
+ echo - Permission denied [insufficient write access]
280
+ echo - Disk full
281
+ echo - File locked by another process
282
+ echo - Antivirus blocking the operation
283
+ ) else (
284
+ echo [SUCCESS] File copied to F:\Medibot successfully
285
+ )
286
+ )
287
+ ) else (
288
+ echo [ERROR] F: drive not accessible - skipping F: drive copy attempt
289
+ )
290
+ ) else (
291
+ echo File copied to local directory successfully.
292
+ ping -n 2 127.0.0.1 >nul
293
+ )
294
+ ) else (
295
+ if exist "%upgrade_medicafe_legacy%" (
296
+ echo Found update_medicafe.py in legacy F: drive location.
297
+ echo [DIAGNOSTIC] Verifying F: drive file accessibility...
298
+ type "%upgrade_medicafe_legacy%" | find "#update_medicafe.py" >nul 2>&1
299
+ if %errorlevel% equ 0 (
300
+ echo [OK] F: drive file is accessible and readable
301
+ ) else (
302
+ echo [ERROR] F: drive file exists but cannot be read [permission/lock issue]
303
+ )
304
+ ping -n 2 127.0.0.1 >nul
305
+ ) else (
306
+ echo update_medicafe.py not detected in any known location.
307
+ echo.
308
+ echo Checked locations:
309
+ echo - Site-packages: C:\Python34\Lib\site-packages\MediBot\update_medicafe.py
310
+ echo - Local: %upgrade_medicafe_local%
311
+ echo - Legacy: %upgrade_medicafe_legacy%
312
+ echo.
313
+ echo [DIAGNOSTIC] Current working directory:
314
+ cd
315
+ echo [DIAGNOSTIC] Current directory contents:
316
+ dir /b
317
+ echo.
318
+ echo [DIAGNOSTIC] MediBot directory contents:
319
+ dir /b MediBot\ 2>nul || echo MediBot directory not found
320
+ echo.
321
+ echo Continuing without update script...
322
+ ping -n 2 127.0.0.1 >nul
323
+ )
324
+ )
325
+ )
326
+
327
+ :: Main menu
328
+ :main_menu
329
+ cls
330
+ echo Version: %medicafe_version%
331
+ echo --------------------------------------------------------------
332
+ echo .//* Welcome to MediBot *\\.
333
+ echo --------------------------------------------------------------
334
+ echo.
335
+
336
+ if "!internet_available!"=="0" (
337
+ echo NOTE: No internet detected. Options 1-5 require internet.
338
+ echo.
339
+ )
340
+ echo Please select an option:
341
+ echo.
342
+ echo 1. Update MediCafe
343
+ echo.
344
+ echo 2. Download Email de Carol
345
+ echo.
346
+ echo 3. MediLink Claims
347
+ echo.
348
+ echo 4. ^[United^] Claims Status
349
+ echo.
350
+ echo 5. ^[United^] Deductible
351
+ echo.
352
+ echo 6. Run MediBot
353
+ echo.
354
+ echo 7. Troubleshooting
355
+ echo.
356
+ echo 9. Toggle Performance Logging (session)
357
+ echo.
358
+ echo 8. Exit
359
+ echo.
360
+ set /p choice=Enter your choice:
361
+
362
+ :: Update option numbers
363
+ if "!choice!"=="8" goto end_script
364
+ if "!choice!"=="7" goto troubleshooting_menu
365
+ if "!choice!"=="6" goto medibot_flow
366
+ if "!choice!"=="5" goto united_deductible
367
+ if "!choice!"=="4" goto united_claims_status
368
+ if "!choice!"=="3" goto medilink_flow
369
+ if "!choice!"=="2" goto download_emails
370
+ if "!choice!"=="1" goto check_updates
371
+ if "!choice!"=="9" goto toggle_perf_logging
372
+ if "!choice!"=="0" goto end_script
373
+
374
+ echo Invalid choice. Please try again.
375
+ pause
376
+ goto main_menu
377
+
378
+ :: Medicafe Update
379
+ :check_updates
380
+ if "!internet_available!"=="0" (
381
+ echo [WARNING] No internet connection available.
382
+ goto main_menu
383
+ )
384
+
385
+ echo ========================================
386
+ echo Starting MediCafe Update Process
387
+ echo ========================================
388
+ echo.
389
+
390
+ :: Step 1: Check if update_medicafe.py exists in expected location
391
+ echo.
392
+ echo ========================================
393
+ echo DEBUG STEP 1: Checking for update script
394
+ echo ========================================
395
+ echo.
396
+ echo Checking for update script - priority: local first, then legacy path
397
+ if exist "%upgrade_medicafe_local%" (
398
+ echo [SUCCESS] Found update script at: %upgrade_medicafe_local%
399
+ echo File size:
400
+ dir "%upgrade_medicafe_local%" | find "update_medicafe.py"
401
+ set "upgrade_medicafe=%upgrade_medicafe_local%"
402
+ ) else (
403
+ if exist "%upgrade_medicafe_legacy%" (
404
+ echo [SUCCESS] Found update script at legacy location: %upgrade_medicafe_legacy%
405
+ echo File size:
406
+ dir "%upgrade_medicafe_legacy%" | find "update_medicafe.py"
407
+ set "upgrade_medicafe=%upgrade_medicafe_legacy%"
408
+ ) else (
409
+ echo [FAILED] Update script not found in either location:
410
+ echo - Local: %upgrade_medicafe_local%
411
+ echo - Legacy: %upgrade_medicafe_legacy%
412
+ echo.
413
+ echo Available files in current directory:
414
+ dir /b
415
+ echo.
416
+ echo Available files in MediBot directory:
417
+ dir /b MediBot\ 2>nul || echo MediBot directory not found
418
+ )
419
+ )
420
+ echo.
421
+ echo Press Enter to continue to step 2...
422
+ pause >nul
423
+
424
+ :: Step 2: Verify Python installation and path
425
+ echo.
426
+ echo ========================================
427
+ echo DEBUG STEP 2: Python Environment Check
428
+ echo ========================================
429
+ echo.
430
+ echo Checking Python installation...
431
+ python --version
432
+ if %errorlevel% neq 0 (
433
+ echo [ERROR] Python not found in PATH
434
+ echo Current PATH: %PATH%
435
+ ) else (
436
+ echo [SUCCESS] Python found
437
+ echo Python executable:
438
+ python -c "import sys; print(sys.executable)"
439
+ echo Python version:
440
+ python --version
441
+ )
442
+ echo.
443
+ echo Checking pip installation...
444
+ python -m pip --version
445
+ if %errorlevel% neq 0 (
446
+ echo [ERROR] pip not found
447
+ ) else (
448
+ echo [SUCCESS] pip found
449
+ echo pip version:
450
+ python -m pip --version
451
+ )
452
+ echo.
453
+ echo Press Enter to continue to step 3...
454
+ pause >nul
455
+
456
+ :: Step 3: Check MediCafe package installation
457
+ echo.
458
+ echo ========================================
459
+ echo DEBUG STEP 3: MediCafe Package Check
460
+ echo ========================================
461
+ echo.
462
+ echo Checking MediCafe package installation...
463
+ python -c "import pkg_resources; print('MediCafe=='+pkg_resources.get_distribution('medicafe').version)" 2>nul
464
+ if %errorlevel% neq 0 (
465
+ echo [ERROR] MediCafe package not found or error accessing
466
+ echo.
467
+ echo Checking if MediCafe is importable...
468
+ python -c "import MediCafe; print('MediCafe module found')" 2>nul
469
+ if %errorlevel% neq 0 (
470
+ echo [ERROR] MediCafe module not importable
471
+ ) else (
472
+ echo [SUCCESS] MediCafe module is importable
473
+ )
474
+ ) else (
475
+ echo [SUCCESS] MediCafe package found
476
+ echo Package version: %package_version%
477
+ )
478
+ echo.
479
+ echo Press Enter to continue to step 4...
480
+ pause >nul
481
+
482
+ :: Step 4: Check internet connectivity
483
+ echo.
484
+ echo ========================================
485
+ echo DEBUG STEP 4: Internet Connectivity
486
+ echo ========================================
487
+ echo.
488
+ echo Testing internet connectivity...
489
+ ping -n 1 google.com >nul 2>&1
490
+ if %errorlevel% neq 0 (
491
+ echo [ERROR] No internet connection detected
492
+ echo Cannot proceed with update without internet
493
+ echo.
494
+ echo Press Enter to return to main menu...
495
+ pause >nul
496
+ goto main_menu
497
+ )
498
+
499
+ echo Starting update process...
500
+ echo Update script: %upgrade_medicafe%
501
+ echo.
502
+
503
+ :: Check if update_medicafe.py exists using the new priority system
504
+ if exist "%upgrade_medicafe_local%" (
505
+ echo [INFO] Using local update script at: %upgrade_medicafe_local%
506
+ echo Command: python "%upgrade_medicafe_local%" %package_version%
507
+
508
+ :: Pre-execution diagnostics
509
+ echo.
510
+ echo [DIAGNOSTIC] Pre-execution checks for local script:
511
+ echo [DIAGNOSTIC] File size and permissions:
512
+ dir "%upgrade_medicafe_local%" 2>nul || echo [!] Cannot read file details
513
+ echo [DIAGNOSTIC] Testing Python access to file:
514
+ python -c "import os; print('[OK] Python can access file') if os.path.exists('%upgrade_medicafe_local%') else print('[ERROR] Python cannot access file')" 2>nul || echo [!] Python test failed
515
+
516
+ echo.
517
+ echo Press Enter to execute update command...
518
+ pause >nul
519
+ echo.
520
+ echo Executing update command...
521
+ echo.
522
+ echo The update window will open and show detailed progress.
523
+ echo All output will be displayed on screen.
524
+ echo.
525
+ start "Medicafe Update" cmd /v:on /c "echo [DIAGNOSTIC] About to execute: python \"%upgrade_medicafe_local%\" %package_version% & echo. & python \"%upgrade_medicafe_local%\" %package_version% & echo. & echo [DIAGNOSTIC] Python exit code: !ERRORLEVEL! & echo Update process completed. Press any key to close... & pause >nul" && (
526
+ echo %DATE% %TIME% Upgrade initiated successfully - local. >> "%temp_file%"
527
+ echo [SUCCESS] Update process started successfully
528
+ echo All output will be displayed in the update window.
529
+ ) || (
530
+ echo %DATE% %TIME% Update failed - local. >> "%temp_file%"
531
+ echo [ERROR] Upgrade failed. Check the update window for details.
532
+ echo [DIAGNOSTIC] Possible causes for local script failure:
533
+ echo - Python not in PATH
534
+ echo - Script syntax error
535
+ echo - Missing Python dependencies
536
+ echo - File corruption
537
+ )
538
+ ) else (
539
+ if exist "%upgrade_medicafe_legacy%" (
540
+ echo [INFO] Using legacy update script at: %upgrade_medicafe_legacy%
541
+ echo Command: python "%upgrade_medicafe_legacy%" %package_version%
542
+
543
+ :: Pre-execution diagnostics for F: drive
544
+ echo.
545
+ echo [DIAGNOSTIC] Pre-execution checks for F: drive script:
546
+ echo [DIAGNOSTIC] File size and permissions:
547
+ dir "%upgrade_medicafe_legacy%" 2>nul || echo [!] Cannot read file details
548
+ echo [DIAGNOSTIC] Testing Python access to F: drive file:
549
+ python -c "import os; print('[OK] Python can access F: drive file') if os.path.exists('%upgrade_medicafe_legacy%') else print('[ERROR] Python cannot access F: drive file')" 2>nul || echo [!] Python F: drive test failed
550
+ echo [DIAGNOSTIC] Testing file read permissions:
551
+ type "%upgrade_medicafe_legacy%" | find "#update_medicafe.py" >nul 2>&1 && echo [OK] File content readable || echo [ERROR] Cannot read file content
552
+
553
+ echo.
554
+ echo Press Enter to execute update command...
555
+ pause >nul
556
+ echo.
557
+ echo Executing update command...
558
+ start "Medicafe Update" cmd /v:on /c "echo [DIAGNOSTIC] About to execute: python \"%upgrade_medicafe_legacy%\" %package_version% & echo [DIAGNOSTIC] F: drive accessibility test... & dir F:\ ^| find \"Directory of\" ^>nul 2^>^&1 ^&^& echo [OK] F: drive accessible ^|^| echo [ERROR] F: drive access lost & echo. & python \"%upgrade_medicafe_legacy%\" %package_version% & echo. & echo [DIAGNOSTIC] Python exit code: !ERRORLEVEL! & echo Update process completed. Press any key to close... & pause >nul" && (
559
+ echo %DATE% %TIME% Upgrade initiated successfully - legacy. >> "%temp_file%"
560
+ echo [SUCCESS] Update process started successfully
561
+ echo All output will be displayed in the update window.
562
+ ) || (
563
+ echo %DATE% %TIME% Update failed - legacy. >> "%temp_file%"
564
+ echo [ERROR] Upgrade failed. Check the update window for details.
565
+ echo [DIAGNOSTIC] Possible causes for F: drive script failure:
566
+ echo - F: drive disconnected during execution
567
+ echo - Permission denied accessing F: drive
568
+ echo - F: drive file locked by antivirus
569
+ echo - Network drive timeout
570
+ echo - Python cannot access network paths
571
+ )
572
+ ) else (
573
+ echo [ERROR] update_medicafe.py not found in either location
574
+ echo Expected locations:
575
+ echo - Local: %upgrade_medicafe_local%
576
+ echo - Legacy: %upgrade_medicafe_legacy%
577
+ echo.
578
+ echo Current directory contents:
579
+ dir /b
580
+ echo.
581
+ echo MediBot directory contents:
582
+ dir /b MediBot\ 2>nul || echo MediBot directory not found
583
+ echo.
584
+ echo %DATE% %TIME% Update failed - script not found. >> "%temp_file%"
585
+ echo.
586
+ echo Press Enter to return to main menu...
587
+ pause >nul
588
+ goto main_menu
589
+ )
590
+
591
+ echo.
592
+ echo Update process has been initiated.
593
+ echo All output will be displayed in the update window.
594
+ echo.
595
+ pause
596
+ goto main_menu
597
+
598
+ :: Download Carol's Emails
599
+ :download_emails
600
+ if "!internet_available!"=="0" (
601
+ echo [WARNING] No internet connection available.
602
+ goto main_menu
603
+ )
604
+
605
+ call "%~dp0process_csvs.bat"
606
+ cls
607
+ echo Starting email download via MediCafe...
608
+ cd /d "%~dp0.."
609
+ python -m MediCafe download_emails
610
+ if errorlevel 1 (
611
+ echo [ERROR] Failed to download emails.
612
+ pause
613
+ )
614
+
615
+ pause
616
+ goto main_menu
617
+
618
+ :: MediBot Flow
619
+ :medibot_flow
620
+ cls
621
+ echo Starting MediBot flow...
622
+ cd /d "%~dp0.."
623
+ python -m MediCafe medibot
624
+ if errorlevel 1 (
625
+ echo [ERROR] Failed to start MediBot flow.
626
+ pause
627
+ )
628
+
629
+ pause
630
+ goto main_menu
631
+
632
+ :: MediLink Flow
633
+ :medilink_flow
634
+ cls
635
+ echo Starting MediLink flow...
636
+ cd /d "%~dp0.."
637
+ python -m MediCafe medilink
638
+ if errorlevel 1 (
639
+ echo [ERROR] Failed to start MediLink flow.
640
+ pause
641
+ )
642
+
643
+ pause
644
+ goto main_menu
645
+
646
+ :toggle_perf_logging
647
+ cls
648
+ echo ========================================
649
+ echo Performance Logging (session toggle)
650
+ echo ========================================
651
+ echo.
652
+ if /I "%MEDICAFE_PERFORMANCE_LOGGING%"=="1" (
653
+ set "MEDICAFE_PERFORMANCE_LOGGING=0"
654
+ echo Turned OFF performance logging for this session.
655
+ ) else (
656
+ set "MEDICAFE_PERFORMANCE_LOGGING=1"
657
+ echo Turned ON performance logging for this session.
658
+ )
659
+ echo.
660
+ echo Note: This affects current session only. To persist, set in config.json.
661
+ pause
662
+ goto main_menu
663
+
664
+ :: United Claims Status
665
+ :united_claims_status
666
+ cls
667
+ echo Starting United Claims Status...
668
+ cd /d "%~dp0.."
669
+ python -m MediCafe claims_status
670
+ if errorlevel 1 (
671
+ echo [ERROR] Failed to start United Claims Status.
672
+ pause
673
+ )
674
+
675
+ pause
676
+ goto main_menu
677
+
678
+ :: United Deductible
679
+ :united_deductible
680
+ cls
681
+ echo Starting United Deductible...
682
+ cd /d "%~dp0.."
683
+ python -m MediCafe deductible
684
+ if errorlevel 1 (
685
+ echo [ERROR] Failed to start United Deductible.
686
+ pause
687
+ )
688
+
689
+ pause
690
+ goto main_menu
691
+
692
+ :: Process CSV Files moved to external script
693
+ :process_csvs
694
+ call "%~dp0process_csvs.bat"
695
+ goto :eof
696
+
697
+ REM [removed legacy :clear_cache block in favor of :clear_cache_menu]
698
+
699
+ REM [removed duplicate :clear_cache quick block; use :clear_cache_menu instead]
700
+
701
+ :: Clear Cache submenu (Quick vs Deep)
702
+ :clear_cache_menu
703
+ cls
704
+ echo ========================================
705
+ echo Clear Python Cache
706
+ echo ========================================
707
+ echo.
708
+ echo 1. Quick clear - compileall + delete __pycache__
709
+ echo 2. Deep clear via update_medicafe.py
710
+ echo 3. Back
711
+ echo.
712
+ set /p cc_choice=Enter your choice:
713
+ if "%cc_choice%"=="1" goto clear_cache_quick
714
+ if "%cc_choice%"=="2" goto clear_cache_deep
715
+ if "%cc_choice%"=="3" goto troubleshooting_menu
716
+ echo Invalid choice. Press any key to continue...
717
+ pause >nul
718
+ goto clear_cache_menu
719
+
720
+ :clear_cache_quick
721
+ echo Running quick cache clear...
722
+ call "%~dp0clear_cache.bat" --quick
723
+ pause
724
+ goto troubleshooting_menu
725
+
726
+ :clear_cache_deep
727
+ cls
728
+ echo Deep cache clear using update_medicafe.py...
729
+ echo.
730
+ call "%~dp0clear_cache.bat" --deep
731
+ pause
732
+ goto troubleshooting_menu
733
+
734
+ :: Troubleshooting Submenu
735
+ :troubleshooting_menu
736
+ cls
737
+ echo Troubleshooting Options:
738
+ echo.
739
+ echo 1. Open Latest Log File
740
+ echo 2. Clear Python Cache
741
+ echo 3. Forced MediCafe version rollback - no dependencies
742
+ echo 4. Back to Main Menu
743
+ echo.
744
+ set /p tchoice=Enter your choice:
745
+ if "%tchoice%"=="1" goto open_latest_log
746
+ if "%tchoice%"=="2" goto clear_cache_menu
747
+ if "%tchoice%"=="3" goto forced_version_rollback
748
+ if "%tchoice%"=="4" goto main_menu
749
+ echo Invalid choice. Please try again.
750
+ pause
751
+ goto troubleshooting_menu
752
+
753
+ :: Open Latest Log (streamlined)
754
+ :open_latest_log
755
+ echo Opening the latest log file...
756
+ set "latest_log="
757
+ for /f "delims=" %%a in ('dir /b /a-d /o-d "%local_storage_path%\*.log" 2^>nul') do (
758
+ set "latest_log=%%a"
759
+ goto open_log_found
760
+ )
761
+
762
+ echo No log files found in %local_storage_path%.
763
+ pause
764
+ goto troubleshooting_menu
765
+
766
+ :: End Script
767
+ :end_script
768
+ echo Exiting MediBot
769
+ exit /b 0
770
+
771
+ :: Full Debug Mode moved to external script full_debug_suite.bat
772
+
773
+ :: Opened log file handling and helpers
774
+ :open_log_found
775
+ echo Found log file: %latest_log%
776
+ start notepad "%local_storage_path%\%latest_log%" >nul 2>&1
777
+ if %errorlevel% neq 0 (
778
+ start write "%local_storage_path%\%latest_log%" >nul 2>&1
779
+ )
780
+ if %errorlevel% neq 0 (
781
+ call :tail "%local_storage_path%\%latest_log%" 50
782
+ )
783
+ pause
784
+ goto troubleshooting_menu
785
+
786
+ :: Forced version rollback for MediCafe (hardcoded version placeholder)
787
+ :forced_version_rollback
788
+ cls
789
+ echo ========================================
790
+ echo Forced MediCafe Version Rollback
791
+ echo ========================================
792
+ echo.
793
+ if "!internet_available!"=="0" (
794
+ echo No internet connection available.
795
+ echo Cannot proceed with rollback without internet.
796
+ pause >nul
797
+ goto troubleshooting_menu
798
+ )
799
+ set "rollback_version=0.250529.2"
800
+ echo Forcing reinstall of %medicafe_package%==%rollback_version% with no dependencies...
801
+ python -m pip install --no-deps --force-reinstall %medicafe_package%==%rollback_version%
802
+ if errorlevel 1 (
803
+ echo.
804
+ echo [ERROR] Forced rollback failed.
805
+ pause >nul
806
+ goto troubleshooting_menu
807
+ )
808
+
809
+ :: Refresh displayed MediCafe version
810
+ set "package_version="
811
+ python -c "import pkg_resources; print('MediCafe=='+pkg_resources.get_distribution('medicafe').version)" > temp.txt 2>nul
812
+ set /p package_version=<temp.txt
813
+ if exist temp.txt del temp.txt
814
+ if defined package_version (
815
+ for /f "tokens=2 delims==" %%a in ("%package_version%") do (
816
+ set "medicafe_version=%%a"
817
+ )
818
+ )
819
+ echo.
820
+ echo Rollback complete. Current MediCafe version: %medicafe_version%
821
+ pause >nul
822
+ goto troubleshooting_menu
823
+
824
+ :: Subroutine to display the last N lines of a file
825
+ :tail
826
+ :: Usage: call :tail filename number_of_lines
827
+ setlocal
828
+ set "file=%~1"
829
+ set /a lines=%~2
830
+
831
+ :: Get total line count robustly (avoid prefixed output)
832
+ set "count=0"
833
+ for /f %%a in ('type "%file%" ^| find /v /c ""') do set count=%%a
834
+
835
+ :: Compute starting line; clamp to 1
836
+ set /a start=count-lines+1
837
+ if !start! lss 1 set start=1
838
+
839
+ for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%file%"') do (
840
+ if %%a geq !start! echo %%b
841
+ )
842
+ endlocal & goto :eof