medicafe 0.240925.9__tar.gz → 0.241015.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.

Potentially problematic release.


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

Files changed (51) hide show
  1. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediBot/MediBot.bat +17 -0
  2. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink_837p_encoder_library.py +1 -1
  3. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink_API_v3.py +4 -3
  4. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink_Gmail.py +5 -5
  5. {medicafe-0.240925.9/medicafe.egg-info → medicafe-0.241015.0}/PKG-INFO +1 -1
  6. medicafe-0.241015.0/README.md +58 -0
  7. {medicafe-0.240925.9 → medicafe-0.241015.0/medicafe.egg-info}/PKG-INFO +1 -1
  8. {medicafe-0.240925.9 → medicafe-0.241015.0}/setup.py +1 -1
  9. medicafe-0.240925.9/README.md +0 -42
  10. {medicafe-0.240925.9 → medicafe-0.241015.0}/LICENSE +0 -0
  11. {medicafe-0.240925.9 → medicafe-0.241015.0}/MANIFEST.in +0 -0
  12. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediBot/MediBot.py +0 -0
  13. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediBot/MediBot_Charges.py +0 -0
  14. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediBot/MediBot_Crosswalk_Library.py +0 -0
  15. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediBot/MediBot_Post.py +0 -0
  16. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediBot/MediBot_Preprocessor.py +0 -0
  17. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediBot/MediBot_Preprocessor_lib.py +0 -0
  18. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediBot/MediBot_UI.py +0 -0
  19. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediBot/MediBot_dataformat_library.py +0 -0
  20. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediBot/MediBot_docx_decoder.py +0 -0
  21. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediBot/PDF_to_CSV_Cleaner.py +0 -0
  22. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediBot/__init__.py +0 -0
  23. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediBot/update_json.py +0 -0
  24. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediBot/update_medicafe.py +0 -0
  25. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink.py +0 -0
  26. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink_837p_encoder.py +0 -0
  27. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink_API_Generator.py +0 -0
  28. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink_API_v2.py +0 -0
  29. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink_APIs.py +0 -0
  30. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink_ClaimStatus.py +0 -0
  31. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink_ConfigLoader.py +0 -0
  32. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink_DataMgmt.py +0 -0
  33. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink_Decoder.py +0 -0
  34. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink_Deductible.py +0 -0
  35. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink_Down.py +0 -0
  36. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink_Mailer.py +0 -0
  37. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink_Parser.py +0 -0
  38. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink_Scan.py +0 -0
  39. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink_Scheduler.py +0 -0
  40. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink_UI.py +0 -0
  41. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink_Up.py +0 -0
  42. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/MediLink_batch.bat +0 -0
  43. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/Soumit_api.py +0 -0
  44. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/__init__.py +0 -0
  45. {medicafe-0.240925.9 → medicafe-0.241015.0}/MediLink/test.py +0 -0
  46. {medicafe-0.240925.9 → medicafe-0.241015.0}/medicafe.egg-info/SOURCES.txt +0 -0
  47. {medicafe-0.240925.9 → medicafe-0.241015.0}/medicafe.egg-info/dependency_links.txt +0 -0
  48. {medicafe-0.240925.9 → medicafe-0.241015.0}/medicafe.egg-info/not-zip-safe +0 -0
  49. {medicafe-0.240925.9 → medicafe-0.241015.0}/medicafe.egg-info/requires.txt +0 -0
  50. {medicafe-0.240925.9 → medicafe-0.241015.0}/medicafe.egg-info/top_level.txt +0 -0
  51. {medicafe-0.240925.9 → medicafe-0.241015.0}/setup.cfg +0 -0
@@ -4,6 +4,7 @@ setlocal enabledelayedexpansion
4
4
 
5
5
  :: Define paths
6
6
  set "source_folder=C:\MEDIANSI\MediCare"
7
+ set "local_storage_path=F:\Medibot\DOWNLOADS"
7
8
  set "target_folder=C:\MEDIANSI\MediCare\CSV"
8
9
  set "config_file=F:\Medibot\json\config.json"
9
10
  set "python_script=C:\Python34\Lib\site-packages\MediBot\update_json.py"
@@ -216,6 +217,21 @@ goto main_menu
216
217
 
217
218
  :: Process CSV Files and Validate Against Config
218
219
  :process_csvs
220
+
221
+ :: Move CSV files from local_storage_path to source_folder in case AK sends it unencrypted by accident.
222
+ echo Checking for new CSV files in local storage...
223
+ for %%f in ("%local_storage_path%\*.csv") do (
224
+ echo WARNING: Found unencrypted CSV files!
225
+ echo Moving %%f to %source_folder%...
226
+ move "%%f" "%source_folder%" >nul 2>&1
227
+ if errorlevel 1 (
228
+ echo Failed to move %%f. Check permissions or path.
229
+ ) else (
230
+ echo Moved %%f successfully.
231
+ )
232
+ )
233
+
234
+ :: Retrieve the current time and date to create a timestamp
219
235
  for /f "tokens=1-5 delims=/: " %%a in ('echo %time%') do (
220
236
  set "hour=%%a"
221
237
  set "minute=%%b"
@@ -228,6 +244,7 @@ for /f "tokens=2-4 delims=/ " %%a in ('echo %date%') do (
228
244
  )
229
245
  set "timestamp=!year!!month!!day!_!hour!!minute!"
230
246
 
247
+ :: Search for the most recent CSV file in source folder
231
248
  set "latest_csv="
232
249
  for /f "delims=" %%a in ('dir /b /a-d /o-d "%source_folder%\*.csv" 2^>nul') do (
233
250
  set "latest_csv=%%a"
@@ -361,7 +361,7 @@ def handle_missing_payer_id(insurance_name, config, crosswalk, client):
361
361
  if get_user_confirmation(confirmation_prompt):
362
362
  # Step 7: Update the crosswalk with the new payer ID and insurance name mapping
363
363
  try:
364
- MediBot_Crosswalk_Library.update_crosswalk_with_new_payer_id(insurance_name, payer_id, config)
364
+ MediBot_Crosswalk_Library.update_crosswalk_with_new_payer_id(client, insurance_name, payer_id, config)
365
365
  return payer_id
366
366
  except Exception as e:
367
367
  print("Failed to update crosswalk with new Payer ID: {}".format(e))
@@ -297,12 +297,13 @@ def fetch_payer_name_from_api(client, payer_id, config, primary_endpoint='AVAILI
297
297
  try:
298
298
  endpoints = config['MediLink_Config']['endpoints']
299
299
  except KeyError as e:
300
- error_message = "Configuration loading error: Missing key {0}".format(e)
301
- print(error_message)
302
- MediLink_ConfigLoader.log(error_message, level="CRITICAL")
300
+ error_message = "Configuration loading error in fetch_payer_name_from_api: Missing key {0}... Attempting to reload configuration.".format(e)
301
+ # print(error_message)
302
+ MediLink_ConfigLoader.log(error_message, level="ERROR")
303
303
  # Attempt to reload configuration if key is missing
304
304
  config, _ = MediLink_ConfigLoader.load_configuration()
305
305
  endpoints = config['MediLink_Config']['endpoints'] # Re-attempt to access endpoints
306
+ MediLink_ConfigLoader.log("Re-loaded configuration successfully.", level="INFO")
306
307
 
307
308
  # Define endpoint rotation logic
308
309
  endpoint_order = ([primary_endpoint] +
@@ -209,7 +209,7 @@ class RequestHandler(BaseHTTPRequestHandler):
209
209
  self.send_header('Content-type', 'text/html')
210
210
  self.end_headers()
211
211
  self.wfile.write("Authentication successful. You can close this window now.".encode())
212
- initiate_link_retrieval() # Proceed with link retrieval
212
+ initiate_link_retrieval(config) # Pass config here
213
213
  else:
214
214
  log("Authentication failed with response: {}".format(token_response)) # Add this line
215
215
  self.send_response(400)
@@ -344,13 +344,13 @@ def open_browser_with_executable(url, browser_path=None):
344
344
  except Exception as e:
345
345
  log("Failed to open browser: {}".format(e))
346
346
 
347
- def initiate_link_retrieval():
347
+ def initiate_link_retrieval(config):
348
348
  log("Initiating browser via implicit GET.")
349
- url_get = "https://script.google.com/macros/s/AKfycbzlq8d32mDlLdtFxgL_zvLJernlGPB64ftyxyH8F1nNlr3P-VBH6Yd0NGa1pbBc5AozvQ/exec?action=get_link"
349
+ url_get = "https://script.google.com/macros/s/{}/exec?action=get_link".format(config['MediLink_Config']['webapp_deployment_id']) # Use config here
350
350
  open_browser_with_executable(url_get)
351
351
 
352
352
  log("Preparing POST call.")
353
- url = "https://script.google.com/macros/s/AKfycbzlq8d32mDlLdtFxgL_zvLJernlGPB64ftyxyH8F1nNlr3P-VBH6Yd0NGa1pbBc5AozvQ/exec"
353
+ url = "https://script.google.com/macros/s/{}/exec".format(config['MediLink_Config']['webapp_deployment_id']) # Use config here
354
354
  downloaded_emails = list(load_downloaded_emails())
355
355
  payload = {
356
356
  "downloadedEmails": downloaded_emails
@@ -437,7 +437,7 @@ def auth_and_retrieval():
437
437
  shutdown_event.wait() # Wait for the shutdown event to be set after authentication
438
438
  else:
439
439
  log("Access token found. Proceeding.")
440
- initiate_link_retrieval()
440
+ initiate_link_retrieval(config) # Pass config here
441
441
  shutdown_event.wait() # Wait for the shutdown event to be set
442
442
 
443
443
  if __name__ == "__main__":
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: medicafe
3
- Version: 0.240925.9
3
+ Version: 0.241015.0
4
4
  Summary: MediCafe
5
5
  Home-page: https://github.com/katanada2
6
6
  Author: Daniel Vidaud
@@ -0,0 +1,58 @@
1
+ # MediCafe
2
+
3
+ MediCafe is a specialized Python package designed to automate and enhance administrative tasks in medical practices using Medisoft. It features two primary components: **MediBot** and **MediLink**, which work together to streamline patient data entry and claims submission processes. This package is particularly tailored for environments running Windows XP with Python 3.4.4.
4
+
5
+ ## Features
6
+
7
+ ### Automated Data Entry
8
+ MediCafe utilizes **AutoHotkey scripting** to automate the entry of patient information into Medisoft. This feature significantly reduces the time and effort required for manual data entry, minimizing human error and improving operational efficiency.
9
+
10
+ ### Claims Submission Automation
11
+ The MediLink component automates the submission of 837p medical claims to various insurance providers via **APIs** and also using **WinSCP** for secure file transfers. It supports dynamic configurations for multiple endpoints, allowing for seamless integration with different payer systems with easy setup and management of custom 837p headers and trailers. This automation ensures timely and accurate claims processing, enhancing revenue cycle management for healthcare providers.
12
+
13
+ ### Crosswalk Setup Tooling
14
+ MediCafe includes internal tooling to assist in setting up a **crosswalk** with referential data for payer IDs, diagnostic codes, and other essential mappings. This feature simplifies the process of aligning data formats and identifiers across different systems, ensuring consistency and accuracy in data handling.
15
+
16
+ ## Installation
17
+
18
+ MediCafe can be easily installed via pip:
19
+ ```bash
20
+ pip install medicafe
21
+ ```
22
+
23
+ ### Configuration
24
+ A custom configuration file is required for each environment and provider. This file must be set up to define paths, mappings, and other necessary parameters specific to the user's setup.
25
+
26
+ ## Entry Point
27
+ The primary entry point for running MediCafe is through the **MediBot** batch file:
28
+ ```bash
29
+ MediBot.bat
30
+ ```
31
+
32
+ ## Known Bugs
33
+ - **Endpoint Persistence**: Issues with endpoint update persistence when user adjustments are made.
34
+ - **Insurance Mode Glitches**: Certain insurance modes may not adjust data correctly, requiring manual intervention.
35
+ - **Manual Entry Requirements**: Some processes may require manual entries to handle off-nominal conditions, as indicated by comments in the codebase.
36
+
37
+ ## Future Work
38
+ Future enhancements and features can be identified through TODO comments and other annotations in the codebase. These may include:
39
+ - Improvements to the crosswalk setup process.
40
+ - Additional automation features for data entry and claims processing.
41
+ - Enhancements to user interaction and error handling mechanisms.
42
+
43
+ ### Developer Info:
44
+ - Name: Daniel Vidaud
45
+ - GitHub: [\[Your GitHub Profile\]](https://github.com/katanada2)
46
+ - Email: daniel@personalizedtransformations.com
47
+ - LinkedIn: [\[Your LinkedIn Profile\]](https://www.linkedin.com/in/dvidaud/)
48
+
49
+ ### Contribution Guideline:
50
+ Contributions are welcome! If you'd like to contribute, please follow the steps below:
51
+ 1. Fork the repository.
52
+ 2. Create your feature branch (`git checkout -b feature/AmazingFeature`).
53
+ 3. Commit your changes (`git commit -m 'Add some AmazingFeature'`).
54
+ 4. Push to the branch (`git push origin feature/AmazingFeature`).
55
+ 5. Open a pull request.
56
+
57
+ ### Disclaimer:
58
+ MediCafe is developed as an open-source project. While we strive to provide a reliable and effective system, the developers are not responsible for any discrepancies or issues that may arise from its use. Always ensure data confidentiality and compliance with healthcare regulations.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: medicafe
3
- Version: 0.240925.9
3
+ Version: 0.241015.0
4
4
  Summary: MediCafe
5
5
  Home-page: https://github.com/katanada2
6
6
  Author: Daniel Vidaud
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name='medicafe',
5
- version="0.240925.9",
5
+ version="0.241015.0",
6
6
  description='MediCafe',
7
7
  long_description="""
8
8
  # Project Overview: MediCafe
@@ -1,42 +0,0 @@
1
- ## MediCafe
2
-
3
- MediCafe is an integrated system designed to automate and enhance administrative tasks in medical practices using Medisoft. The system features two main components: MediBot and MediLink, which together streamline patient data entry and claims processing. This solution aims to improve efficiency, reduce errors, and support better revenue cycle management for healthcare providers.
4
-
5
- ### Developer Info:
6
- - Name: Daniel Vidaud
7
- - GitHub: [\[Your GitHub Profile\]](https://github.com/katanada2)
8
- - Email: daniel@personalizedtransformations.com
9
- - LinkedIn: [\[Your LinkedIn Profile\]](https://www.linkedin.com/in/dvidaud/)
10
-
11
- ### Features:
12
- - **Automated Data Entry**: Uses AutoHotkey scripts to automate the entry of patient information into Medisoft.
13
- - **Insurance Mode Adjustments**: Automatically adjusts data entries based on specific insurance provider requirements.
14
- - **Enhanced Error Handling**: Robust error logging and handling mechanisms for streamlined troubleshooting.
15
- - **Dynamic Endpoint Configuration**: Supports multiple claim submission endpoints with easy configuration options.
16
- - **Automated Claim Submissions**: Streamlines the process of medical claims submission to various insurance providers.
17
- - **Interactive User Interfaces**: Provides GUIs for easier management of scripts and claims submissions, suitable for users with varying technical skills.
18
-
19
- ### Missing Features:
20
- - **Diagnosis Code Automation**: Extracts and inputs diagnosis codes directly from surgical schedules.
21
- - **Graphical User Interface for MediBot**: Planned for future development to assist non-technical users.
22
- - **Advanced Reporting Tools**: To provide insights into data entry and claims processing metrics.
23
-
24
- ### Known Bugs:
25
- - **Endpoint Persistence in MediLink**: Issues with endpoint update persistence when user adjustments are made.
26
- - **Insurance Mode Glitches**: Occasionally, specific insurance modes may not adjust data correctly, requiring manual intervention.
27
-
28
- ### Usage Documentation:
29
- Detailed documentation on how to set up and use MediCafe can be found at the following links:
30
- - [MediBot Setup and Usage](https://yourdocumentationlink.com/medibot)
31
- - [MediLink Configuration and Operations](https://yourdocumentationlink.com/medilink)
32
-
33
- ### Contribution Guideline:
34
- Contributions are welcome! If you'd like to contribute, please follow the steps below:
35
- 1. Fork the repository.
36
- 2. Create your feature branch (`git checkout -b feature/AmazingFeature`).
37
- 3. Commit your changes (`git commit -m 'Add some AmazingFeature'`).
38
- 4. Push to the branch (`git push origin feature/AmazingFeature`).
39
- 5. Open a pull request.
40
-
41
- ### Disclaimer:
42
- MediCafe is developed as an open-source project. While we strive to provide a reliable and effective system, the developers are not responsible for any discrepancies or issues that may arise from its use. Always ensure data confidentiality and compliance with healthcare regulations.
File without changes
File without changes
File without changes