medicafe 0.250811.0__py3-none-any.whl → 0.250811.1__py3-none-any.whl
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.
- MediBot/MediBot.bat +41 -55
- MediBot/MediBot.py +14 -6
- MediBot/MediBot_Preprocessor_lib.py +8 -1
- MediBot/MediBot_UI.py +6 -2
- MediBot/MediBot_dataformat_library.py +14 -3
- medicafe-0.250811.1.dist-info/METADATA +138 -0
- {medicafe-0.250811.0.dist-info → medicafe-0.250811.1.dist-info}/RECORD +11 -11
- medicafe-0.250811.0.dist-info/METADATA +0 -62
- {medicafe-0.250811.0.dist-info → medicafe-0.250811.1.dist-info}/LICENSE +0 -0
- {medicafe-0.250811.0.dist-info → medicafe-0.250811.1.dist-info}/WHEEL +0 -0
- {medicafe-0.250811.0.dist-info → medicafe-0.250811.1.dist-info}/entry_points.txt +0 -0
- {medicafe-0.250811.0.dist-info → medicafe-0.250811.1.dist-info}/top_level.txt +0 -0
MediBot/MediBot.bat
CHANGED
@@ -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]
|
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
|
476
|
+
echo UPDATE PREPARATION
|
477
477
|
echo ========================================
|
478
|
-
echo The
|
479
|
-
echo
|
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
|
-
::
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
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
|
MediBot/MediBot.py
CHANGED
@@ -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
|
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
|
-
|
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
|
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,
|
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(
|
614
|
-
|
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
|
-
|
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
|
MediBot/MediBot_UI.py
CHANGED
@@ -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
|
-
|
320
|
+
ac.load_paths_from_config(medicare=True)
|
317
321
|
break
|
318
322
|
elif response in ['no', 'n']:
|
319
|
-
|
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
|
-
|
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
|
-
|
201
|
-
|
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,138 @@
|
|
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
|
+
Requires-Dist: requests ==2.21.0
|
20
|
+
Requires-Dist: argparse ==1.4.0
|
21
|
+
Requires-Dist: tqdm ==4.14.0
|
22
|
+
Requires-Dist: python-docx ==0.8.11
|
23
|
+
Requires-Dist: PyYAML ==5.2
|
24
|
+
Requires-Dist: chardet ==3.0.4
|
25
|
+
Requires-Dist: cffi ==1.8.2
|
26
|
+
Requires-Dist: msal ==1.26.0
|
27
|
+
Requires-Dist: numpy ==1.11.3 ; platform_python_implementation != "CPython" or sys_platform != "win32" or python_version > "3.5"
|
28
|
+
Requires-Dist: pandas ==0.20.0 ; platform_python_implementation != "CPython" or sys_platform != "win32" or python_version > "3.5"
|
29
|
+
Requires-Dist: lxml ==4.2.0 ; platform_python_implementation != "CPython" or sys_platform != "win32" or python_version > "3.5"
|
30
|
+
Requires-Dist: numpy ==1.11.3 ; platform_python_implementation == "CPython" and sys_platform == "win32" and python_version <= "3.5" and extra == "binary"
|
31
|
+
Requires-Dist: pandas ==0.20.0 ; platform_python_implementation == "CPython" and sys_platform == "win32" and python_version <= "3.5" and extra == "binary"
|
32
|
+
Requires-Dist: lxml ==4.2.0 ; platform_python_implementation == "CPython" and sys_platform == "win32" and python_version <= "3.5" and extra == "binary"
|
33
|
+
|
34
|
+
# Documentation Consolidation Summary
|
35
|
+
|
36
|
+
## ✅ COMPLETED: Markdown File Cleanup
|
37
|
+
|
38
|
+
### Before: 200+ Markdown Files Scattered Everywhere
|
39
|
+
- **25+ files** in root directory
|
40
|
+
- **50+ files** in Obsidian_MediCafe directory
|
41
|
+
- **200+ files** in generated_clients directories
|
42
|
+
- **Total**: 275+ markdown files creating clutter
|
43
|
+
|
44
|
+
### After: Clean, Organized Structure
|
45
|
+
|
46
|
+
#### Root Directory (2 files remaining)
|
47
|
+
- `DOCUMENTATION_CONSOLIDATION_SUMMARY.md` - This summary
|
48
|
+
- `MARKDOWN_CONSOLIDATION_PLAN.md` - The original plan
|
49
|
+
|
50
|
+
#### Organized Documentation Structure
|
51
|
+
```
|
52
|
+
docs/
|
53
|
+
├── implementation/ (9 files)
|
54
|
+
│ ├── README.md
|
55
|
+
│ ├── API_CLIENT_FACTORY_IMPLEMENTATION_PLAN.md
|
56
|
+
│ ├── API_CLIENT_FACTORY_IMPLEMENTATION_SUMMARY.md
|
57
|
+
│ ├── API_FACTORY_INSTALLATION_COMPLETE.md
|
58
|
+
│ ├── CORE_UTILS_OPTIMIZATION_PLAN.md
|
59
|
+
│ ├── CORE_UTILS_OPTIMIZATION_STATUS.md
|
60
|
+
│ ├── IMPORT_IMPROVEMENTS_SUMMARY.md
|
61
|
+
│ ├── IMPLEMENTATION_READY_SUMMARY.md
|
62
|
+
│ ├── SMART_IMPORT_AUDIT_AND_MIGRATION_COMPLETE.md
|
63
|
+
│ └── SMART_IMPORT_IMPLEMENTATION_SUMMARY.md
|
64
|
+
├── fixes/ (6 files)
|
65
|
+
│ ├── README.md
|
66
|
+
│ ├── ADVANCED_PYTHON34_FIXES.md
|
67
|
+
│ ├── PATH_RESOLUTION_IMPROVEMENTS.md
|
68
|
+
│ ├── PYTHON34_COMPATIBILITY_FIXES.md
|
69
|
+
│ ├── PYTHON34_ADVANCED_COMPATIBILITY_FIXES.md
|
70
|
+
│ ├── XP_COMPATIBILITY_FIXES.md
|
71
|
+
│ └── XP_ERROR_HANDLING_SUMMARY.md
|
72
|
+
├── reports/ (4 files)
|
73
|
+
│ ├── README.md
|
74
|
+
│ ├── 400_ERROR_INVESTIGATION_REPORT.md
|
75
|
+
│ ├── F_DRIVE_DIAGNOSTICS_SUMMARY.md
|
76
|
+
│ ├── INTEGRATION_TESTING_SUMMARY.md
|
77
|
+
│ └── MEDIBOT_INTEGRATION_TEST_REPORT.md
|
78
|
+
└── architecture/ (3 files)
|
79
|
+
├── README.md
|
80
|
+
├── CACHE_CLEARING_SOLUTION.md
|
81
|
+
├── MEDICAFE_ENTRY_POINT_GUIDE.md
|
82
|
+
└── SWAGGER_CONSISTENCY_ANALYSIS.md
|
83
|
+
```
|
84
|
+
|
85
|
+
#### Archived Auto-Generated Content
|
86
|
+
```
|
87
|
+
archive/
|
88
|
+
├── obsidian_docs/ (50+ auto-generated code docs)
|
89
|
+
└── generated_api_docs/ (200+ auto-generated Swagger docs)
|
90
|
+
```
|
91
|
+
|
92
|
+
## 🎯 Results Achieved
|
93
|
+
|
94
|
+
### ✅ **Reduced Root Directory Clutter**
|
95
|
+
- **Before**: 25+ markdown files scattered in root
|
96
|
+
- **After**: Only 2 essential files remain
|
97
|
+
|
98
|
+
### ✅ **Organized Documentation**
|
99
|
+
- **22 files** properly categorized and indexed
|
100
|
+
- **4 categories** with clear purposes and README files
|
101
|
+
- **Easy navigation** with descriptive file names
|
102
|
+
|
103
|
+
### ✅ **Archived Auto-Generated Content**
|
104
|
+
- **250+ auto-generated files** moved to archive
|
105
|
+
- **Preserved for reference** but out of main codebase
|
106
|
+
- **Can be regenerated** if needed
|
107
|
+
|
108
|
+
### ✅ **Improved Developer Experience**
|
109
|
+
- **Cleaner project structure**
|
110
|
+
- **Better findability** of documentation
|
111
|
+
- **Reduced cognitive load** when browsing codebase
|
112
|
+
- **Maintained historical context** in organized format
|
113
|
+
|
114
|
+
## 📊 Statistics
|
115
|
+
|
116
|
+
| Metric | Before | After | Improvement |
|
117
|
+
|--------|--------|-------|-------------|
|
118
|
+
| Root directory files | 25+ | 2 | 92% reduction |
|
119
|
+
| Total markdown files | 275+ | 22 | 92% reduction |
|
120
|
+
| Organized categories | 0 | 4 | New structure |
|
121
|
+
| Index files | 0 | 4 | New navigation |
|
122
|
+
|
123
|
+
## 🚀 Next Steps
|
124
|
+
|
125
|
+
1. **Update any code references** to moved documentation files
|
126
|
+
2. **Consider adding to .gitignore** for auto-generated content
|
127
|
+
3. **Establish documentation standards** for future development
|
128
|
+
4. **Regular cleanup schedule** to prevent future clutter
|
129
|
+
|
130
|
+
## 📝 Notes
|
131
|
+
|
132
|
+
- All original content preserved
|
133
|
+
- Auto-generated files archived but not deleted
|
134
|
+
- Clear categorization makes finding documentation easier
|
135
|
+
- Index files provide navigation context
|
136
|
+
- Archive can be restored if needed
|
137
|
+
|
138
|
+
**Status**: ✅ **COMPLETE** - Major documentation cleanup successful!
|
@@ -1,13 +1,13 @@
|
|
1
|
-
MediBot/MediBot.bat,sha256=
|
2
|
-
MediBot/MediBot.py,sha256=
|
1
|
+
MediBot/MediBot.bat,sha256=qUMffDJvsiWWcuyPY43xpqLeFApgznspriWDnMuBXD0,24365
|
2
|
+
MediBot/MediBot.py,sha256=nKjYyBpQUR5ENrKsX5n30VJrUS84DdpLRhgCGZGJQy4,34671
|
3
3
|
MediBot/MediBot_Charges.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
4
|
MediBot/MediBot_Crosswalk_Library.py,sha256=HZHbjKHhjLW2jERmLS6pEZOl-MUxUu1YwA6oUltfdkE,24693
|
5
5
|
MediBot/MediBot_Crosswalk_Utils.py,sha256=HQXZUWDZF_LvOMLsdjlsDQ79Yi_IiqNVRKX2Cd0A6x8,38762
|
6
6
|
MediBot/MediBot_Post.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
7
|
MediBot/MediBot_Preprocessor.py,sha256=zAcfyuE8wl9JRzLGsUnnXiHxAr-hbCCIB2M-Jb3LUqI,16203
|
8
|
-
MediBot/MediBot_Preprocessor_lib.py,sha256=
|
9
|
-
MediBot/MediBot_UI.py,sha256=
|
10
|
-
MediBot/MediBot_dataformat_library.py,sha256=
|
8
|
+
MediBot/MediBot_Preprocessor_lib.py,sha256=CWl0urrEYvbrqWeJ64U8npGcjxVvj6hgUZCBdekGAs4,72734
|
9
|
+
MediBot/MediBot_UI.py,sha256=h-vcf5zMPgbK2uiwOFaqUDHqgZ-sKZJ5VvaoTdpjMtE,14305
|
10
|
+
MediBot/MediBot_dataformat_library.py,sha256=dxh_SQQMEd9nCEeuBr-6E_Uu6enjLXeoyLpd45nUcZk,10771
|
11
11
|
MediBot/MediBot_docx_decoder.py,sha256=gn7I7Ng5khVIzU0HTTOqi31YSSn1yW8Pyk-i_P9r1oA,32472
|
12
12
|
MediBot/MediBot_smart_import.py,sha256=_ggP0I9djNwMGck04U6fNahrH7frVkoM8OzjtHbLUc0,6727
|
13
13
|
MediBot/MediPost.py,sha256=C1hZJFr65rN6F_dckjdBxFC0vL2CoqY9W3YFqU5HXtE,336
|
@@ -75,9 +75,9 @@ MediLink/test_cob_library.py,sha256=wUMv0-Y6fNsKcAs8Z9LwfmEBRO7oBzBAfWmmzwoNd1g,
|
|
75
75
|
MediLink/test_timing.py,sha256=yH2b8QPLDlp1Zy5AhgtjzjnDHNGhAD16ZtXtZzzESZw,2042
|
76
76
|
MediLink/test_validation.py,sha256=FJrfdUFK--xRScIzrHCg1JeGdm0uJEoRnq6CgkP2lwM,4154
|
77
77
|
MediLink/webapp.html,sha256=JPKT559aFVBi1r42Hz7C77Jj0teZZRumPhBev8eSOLk,19806
|
78
|
-
medicafe-0.250811.
|
79
|
-
medicafe-0.250811.
|
80
|
-
medicafe-0.250811.
|
81
|
-
medicafe-0.250811.
|
82
|
-
medicafe-0.250811.
|
83
|
-
medicafe-0.250811.
|
78
|
+
medicafe-0.250811.1.dist-info/LICENSE,sha256=65lb-vVujdQK7uMH3RRJSMwUW-WMrMEsc5sOaUn2xUk,1096
|
79
|
+
medicafe-0.250811.1.dist-info/METADATA,sha256=Mn330D_dskRP8TxT0gsVMoiuAIzuVh5K_0jOkIQI0QY,5663
|
80
|
+
medicafe-0.250811.1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
81
|
+
medicafe-0.250811.1.dist-info/entry_points.txt,sha256=m3RBUBjr-xRwEkKJ5W4a7NlqHZP_1rllGtjZnrRqKe8,52
|
82
|
+
medicafe-0.250811.1.dist-info/top_level.txt,sha256=U6-WBJ9RCEjyIs0BlzbQq_PwedCp_IV9n1616NNV5zA,26
|
83
|
+
medicafe-0.250811.1.dist-info/RECORD,,
|
@@ -1,62 +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
|
-
Requires-Dist: requests ==2.21.0
|
13
|
-
Requires-Dist: argparse ==1.4.0
|
14
|
-
Requires-Dist: tqdm ==4.14.0
|
15
|
-
Requires-Dist: python-docx ==0.8.11
|
16
|
-
Requires-Dist: PyYAML ==5.2
|
17
|
-
Requires-Dist: chardet ==3.0.4
|
18
|
-
Requires-Dist: cffi ==1.8.2
|
19
|
-
Requires-Dist: msal ==1.26.0
|
20
|
-
Requires-Dist: numpy ==1.11.3 ; platform_python_implementation != "CPython" or sys_platform != "win32" or python_version > "3.5"
|
21
|
-
Requires-Dist: pandas ==0.20.0 ; platform_python_implementation != "CPython" or sys_platform != "win32" or python_version > "3.5"
|
22
|
-
Requires-Dist: lxml ==4.2.0 ; platform_python_implementation != "CPython" or sys_platform != "win32" or python_version > "3.5"
|
23
|
-
Requires-Dist: numpy ==1.11.3 ; platform_python_implementation == "CPython" and sys_platform == "win32" and python_version <= "3.5" and extra == "binary"
|
24
|
-
Requires-Dist: pandas ==0.20.0 ; platform_python_implementation == "CPython" and sys_platform == "win32" and python_version <= "3.5" and extra == "binary"
|
25
|
-
Requires-Dist: lxml ==4.2.0 ; platform_python_implementation == "CPython" and sys_platform == "win32" and python_version <= "3.5" and extra == "binary"
|
26
|
-
|
27
|
-
|
28
|
-
# Project Overview: MediCafe
|
29
|
-
|
30
|
-
## Project Description
|
31
|
-
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.
|
32
|
-
|
33
|
-
## MediBot Module
|
34
|
-
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:
|
35
|
-
|
36
|
-
- **Error Handling and Logging:** MediBot aims to implement a robust error handling mechanism that can log issues and provide feedback for troubleshooting.
|
37
|
-
- **Insurance Mode Adjustments:** The system can adjust data inputs based on specific requirements from various insurance providers, including Medicare.
|
38
|
-
- **Diagnosis Entry Automation:** MediBot automates the extraction and entry of diagnosis codes from surgical schedules into Medisoft.
|
39
|
-
- **Script Efficiency:** The module enhances the efficiency of scripts handling Medisoft's quirks, such as fields that are skipped or require special navigation.
|
40
|
-
- **User Interface (UI) Enhancements:** Plans to develop a graphical user interface to help non-technical users manage and execute scripts more easily.
|
41
|
-
- **Documentation and Support:** Comprehensive documentation and support channels are being established to assist users in setup, configuration, and troubleshooting.
|
42
|
-
|
43
|
-
## MediLink Module
|
44
|
-
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:
|
45
|
-
|
46
|
-
- **Dynamic Configurations:** Supports multiple endpoints with environmental settings to ensure flexibility in claims submission.
|
47
|
-
- **File Detection and Integrity Checks:** Enhances the detection of new claim files with detailed logging and integrity checks for preprocessing validation.
|
48
|
-
- **Automated Response Handling:** Automates the process of receiving and integrating response files from endpoints into Medisoft, alerting users to exceptions.
|
49
|
-
- **Endpoint Management:** Allows dynamic updating of endpoints based on insurance provider changes, ensuring accurate and efficient claims processing.
|
50
|
-
- **User Interface (UI) Interactions:** Provides a user interface for managing claims submission, including confirming or adjusting suggested endpoints.
|
51
|
-
|
52
|
-
## Integration and Workflow
|
53
|
-
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.
|
54
|
-
|
55
|
-
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.
|
56
|
-
|
57
|
-
## Target Users
|
58
|
-
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.
|
59
|
-
|
60
|
-
## Future Directions
|
61
|
-
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.
|
62
|
-
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|