medicafe 0.250812.5__py3-none-any.whl → 0.250812.6__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 CHANGED
@@ -405,8 +405,6 @@ echo 6. Run MediBot
405
405
  echo.
406
406
  echo 7. Troubleshooting
407
407
  echo.
408
- echo 9. Toggle Performance Logging (session)
409
- echo.
410
408
  echo 8. Exit
411
409
  echo.
412
410
  set /p choice=Enter your choice:
@@ -420,7 +418,6 @@ if "!choice!"=="4" goto united_claims_status
420
418
  if "!choice!"=="3" goto medilink_flow
421
419
  if "!choice!"=="2" goto download_emails
422
420
  if "!choice!"=="1" goto check_updates
423
- if "!choice!"=="9" goto toggle_perf_logging
424
421
  if "!choice!"=="0" goto end_script
425
422
 
426
423
  echo Invalid choice. Please try again.
@@ -572,7 +569,7 @@ if not exist "%_UPD_RUNNER%" (
572
569
  echo.
573
570
  echo Launching updater and closing this window...
574
571
  start "MediCafe Update" "%_UPD_RUNNER%"
575
- exit /b 0
572
+ exit 0
576
573
 
577
574
  :: Download Carol's Emails
578
575
  :download_emails
@@ -636,7 +633,7 @@ if /I "%MEDICAFE_PERFORMANCE_LOGGING%"=="1" (
636
633
  echo.
637
634
  echo Note: This affects current session only. To persist, set in config.json.
638
635
  pause
639
- goto main_menu
636
+ goto troubleshooting_menu
640
637
 
641
638
  :: United Claims Status
642
639
  :united_claims_status
@@ -715,14 +712,16 @@ echo Troubleshooting Options:
715
712
  echo.
716
713
  echo 1. Open Latest Log File
717
714
  echo 2. Clear Python Cache
718
- echo 3. Forced MediCafe version rollback - no dependencies
719
- echo 4. Back to Main Menu
715
+ echo 3. Toggle Performance Logging ^(session^)
716
+ echo 4. Forced MediCafe version rollback
717
+ echo 5. Back to Main Menu
720
718
  echo.
721
719
  set /p tchoice=Enter your choice:
722
720
  if "%tchoice%"=="1" goto open_latest_log
723
721
  if "%tchoice%"=="2" goto clear_cache_menu
724
- if "%tchoice%"=="3" goto forced_version_rollback
725
- if "%tchoice%"=="4" goto main_menu
722
+ if "%tchoice%"=="3" goto toggle_perf_logging
723
+ if "%tchoice%"=="4" goto forced_version_rollback
724
+ if "%tchoice%"=="5" goto main_menu
726
725
  echo Invalid choice. Please try again.
727
726
  pause
728
727
  goto troubleshooting_menu
@@ -743,7 +742,7 @@ goto troubleshooting_menu
743
742
  :: End Script
744
743
  :end_script
745
744
  echo Exiting MediBot
746
- exit /b 0
745
+ exit 0
747
746
 
748
747
  :: Full Debug Mode moved to external script full_debug_suite.bat
749
748
 
@@ -376,6 +376,8 @@ def crosswalk_update(client, config, crosswalk): # Upstream of this is only Medi
376
376
  'medisoft_medicare_id': [] # PERFORMANCE FIX: Use list instead of set to avoid conversions
377
377
  }
378
378
  MediLink_ConfigLoader.log("Initialized payer ID {} in crosswalk with endpoint '{}'.".format(payer_id, selected_endpoint), config, level="DEBUG")
379
+ # TODO (MEDICARE ENDPOINTS): If payer_id is Medicare (e.g., in config['MediLink_Config']['cob_settings']['medicare_payer_ids']),
380
+ # set endpoint to 'MEDICARE_PRIMARY' and optionally store 'crossover_endpoint' for later automation.
379
381
 
380
382
  # Add the insurance ID to the payer ID entry (PERFORMANCE FIX: Use list operations)
381
383
  insurance_id_str = str(insurance_id) # Ensure ID is string
@@ -370,10 +370,12 @@ def save_crosswalk(client, config, crosswalk, skip_api_operations=False, api_cac
370
370
  crosswalk['payer_id'][payer_id]['endpoint'] = select_endpoint(config) # Use the helper function to set the endpoint
371
371
  MediLink_ConfigLoader.log("Initialized 'endpoint' for payer ID {}.".format(payer_id), config, level="DEBUG")
372
372
 
373
- # Initialize medisoft_id and medisoft_medicare_id as empty lists if they do not exist
374
- crosswalk['payer_id'][payer_id].setdefault('medisoft_id', [])
375
- crosswalk['payer_id'][payer_id].setdefault('medisoft_medicare_id', []) # does this work in 3.4.4?
376
- MediLink_ConfigLoader.log("Ensured 'medisoft_id' and 'medisoft_medicare_id' for payer ID {} are initialized.".format(payer_id), config, level="DEBUG")
373
+ # Initialize medisoft_id and medisoft_medicare_id as empty lists if they do not exist
374
+ crosswalk['payer_id'][payer_id].setdefault('medisoft_id', [])
375
+ crosswalk['payer_id'][payer_id].setdefault('medisoft_medicare_id', []) # does this work in 3.4.4?
376
+ MediLink_ConfigLoader.log("Ensured 'medisoft_id' and 'medisoft_medicare_id' for payer ID {} are initialized.".format(payer_id), config, level="DEBUG")
377
+ # TODO (CROSSWALK VALIDATION): Enforce distinctness between 'medisoft_id' and 'medisoft_medicare_id' and support optional
378
+ # 'crossover_endpoint' per payer. Use config['MediLink_Config']['cob_settings']['medicare_payer_ids'] to detect Medicare payers.
377
379
 
378
380
  # Convert sets to sorted lists for JSON serialization
379
381
  for payer_id, details in crosswalk.get('payer_id', {}).items():
@@ -816,6 +816,11 @@ def update_insurance_ids(csv_data, config, crosswalk):
816
816
 
817
817
  # Assign the resolved insurance ID to the row
818
818
  row['Ins1 Insurance ID'] = insurance_id
819
+ # TODO (SECONDARY QUEUE): When building a secondary-claims queue after Medicare crossover,
820
+ # set claim_type='secondary' and attach prior payer fields here from the Medicare primary outcome:
821
+ # - row['prior_payer_name'] = 'MEDICARE'
822
+ # - row['prior_payer_id'] = best Medicare ID from config/crosswalk
823
+ # - optionally row['primary_paid_amount'], row['cas_adjustments'] extracted from 835
819
824
  processed_count += 1
820
825
  # LOGGING STRATEGY: Remove success logging - DEBUG is typically silent anyway
821
826
  # if processed_count <= 10 or processed_count % 100 == 0: # Log first 10 and every 100th
@@ -1,5 +1,5 @@
1
1
  #update_medicafe.py
2
- import subprocess, sys, time, platform, os, shutil
2
+ import subprocess, sys, time, platform, os, shutil, random
3
3
 
4
4
  # Safe import for pkg_resources with fallback
5
5
  try:
@@ -162,6 +162,8 @@ def get_latest_version(package, retries=3, delay=1):
162
162
  time.sleep(delay)
163
163
  return None
164
164
 
165
+
166
+
165
167
  def check_internet_connection():
166
168
  try:
167
169
  requests.get("http://www.google.com", timeout=5)
@@ -288,7 +290,7 @@ def compare_versions(version1, version2):
288
290
  v2_parts = list(map(int, version2.split(".")))
289
291
  return (v1_parts > v2_parts) - (v1_parts < v2_parts)
290
292
 
291
- def upgrade_package(package, retries=3, delay=2): # Updated retries to 3
293
+ def upgrade_package(package, retries=4, delay=2, target_version=None): # Updated retries to 4
292
294
  """
293
295
  Attempts to upgrade the package multiple times with delays in between.
294
296
  """
@@ -296,23 +298,33 @@ def upgrade_package(package, retries=3, delay=2): # Updated retries to 3
296
298
  print_status("No internet connection detected. Please check your internet connection and try again.", "ERROR")
297
299
  print_final_result(False, "No internet connection available")
298
300
 
301
+ # Light verbosity: show pinned target once
302
+ if target_version:
303
+ print("Pinned target version: {}".format(target_version))
304
+
299
305
  for attempt in range(1, retries + 1):
300
- print("Attempt {} to upgrade {}...".format(attempt, package))
306
+ print("Attempt {}/{} to upgrade {}...".format(attempt, retries, package))
301
307
 
302
308
  # Use a more compatible approach for Python 3.4
303
309
  # Try with --no-deps first to avoid dependency resolution issues
310
+ pkg_spec = package
311
+ if target_version:
312
+ pkg_spec = "{}=={}".format(package, target_version)
313
+
304
314
  cmd = [
305
315
  sys.executable, '-m', 'pip', 'install', '--upgrade',
306
- '--no-deps', '--no-cache-dir', '--disable-pip-version-check', '-q', package
316
+ '--no-deps', '--no-cache-dir', '--disable-pip-version-check', '-q', pkg_spec
307
317
  ]
308
318
 
319
+ print("Using pip upgrade with --no-deps and --no-cache-dir")
309
320
  process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
310
321
  stdout, stderr = process.communicate()
311
322
 
312
323
  if process.returncode == 0:
313
324
  print(stdout.decode().strip())
314
325
  new_version = get_installed_version(package) # Get new version after upgrade
315
- if compare_versions(new_version, get_latest_version(package)) >= 0: # Compare versions
326
+ expected_version = target_version or get_latest_version(package)
327
+ if expected_version and compare_versions(new_version, expected_version) >= 0: # Compare versions
316
328
  if attempt == 1:
317
329
  print_status("Upgrade succeeded!", "SUCCESS")
318
330
  else:
@@ -320,20 +332,27 @@ def upgrade_package(package, retries=3, delay=2): # Updated retries to 3
320
332
  time.sleep(delay)
321
333
  return True
322
334
  else:
323
- print_status("Upgrade failed. Current version remains: {}".format(new_version), "WARNING")
335
+ print_status("Upgrade incomplete. Current version: {} Expected at least: {}".format(new_version, expected_version), "WARNING")
324
336
  if attempt < retries:
325
337
  print("Retrying in {} seconds...".format(delay))
326
- time.sleep(delay)
338
+ try:
339
+ time.sleep(delay + (random.random() * 0.5))
340
+ except Exception:
341
+ time.sleep(delay)
327
342
  else:
328
343
  print(stderr.decode().strip())
329
344
  print_status("Attempt {}: Upgrade failed with --no-deps.".format(attempt), "WARNING")
330
345
 
331
346
  # If --no-deps failed, try with --force-reinstall to bypass dependency issues
332
347
  if attempt < retries:
333
- print("Retrying with --force-reinstall...")
348
+ print("Fallback this attempt: retrying with --force-reinstall...")
349
+ pkg_spec = package
350
+ if target_version:
351
+ pkg_spec = "{}=={}".format(package, target_version)
352
+
334
353
  cmd = [
335
354
  sys.executable, '-m', 'pip', 'install', '--upgrade',
336
- '--force-reinstall', '--no-cache-dir', '--disable-pip-version-check', '-q', package
355
+ '--force-reinstall', '--no-cache-dir', '--disable-pip-version-check', '-q', pkg_spec
337
356
  ]
338
357
 
339
358
  process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
@@ -342,19 +361,23 @@ def upgrade_package(package, retries=3, delay=2): # Updated retries to 3
342
361
  if process.returncode == 0:
343
362
  print(stdout.decode().strip())
344
363
  new_version = get_installed_version(package)
345
- if compare_versions(new_version, get_latest_version(package)) >= 0:
364
+ expected_version = target_version or get_latest_version(package)
365
+ if expected_version and compare_versions(new_version, expected_version) >= 0:
346
366
  print_status("Attempt {}: Upgrade succeeded with --force-reinstall!".format(attempt), "SUCCESS")
347
367
  time.sleep(delay)
348
368
  return True
349
369
  else:
350
- print_status("Upgrade failed. Current version remains: {}".format(new_version), "WARNING")
370
+ print_status("Upgrade incomplete. Current version: {} Expected at least: {}".format(new_version, expected_version), "WARNING")
351
371
  else:
352
372
  print(stderr.decode().strip())
353
373
  print_status("Attempt {}: Upgrade failed with --force-reinstall.".format(attempt), "WARNING")
354
374
 
355
375
  if attempt < retries:
356
376
  print("Retrying in {} seconds...".format(delay))
357
- time.sleep(delay)
377
+ try:
378
+ time.sleep(delay + (random.random() * 0.5))
379
+ except Exception:
380
+ time.sleep(delay)
358
381
 
359
382
  print_status("All upgrade attempts failed.", "ERROR")
360
383
  return False
@@ -566,7 +589,7 @@ def main():
566
589
  print("Current version: {}".format(current_version))
567
590
  print("Target version: {}".format(latest_version))
568
591
 
569
- if upgrade_package(package):
592
+ if upgrade_package(package, target_version=latest_version):
570
593
  # STEP 8: Verify upgrade
571
594
  debug_step(8, "Upgrade Verification")
572
595
  new_version = get_installed_version(package)
@@ -101,6 +101,10 @@ def create_2320_other_subscriber_segments(patient_data, config, crosswalk):
101
101
  is_secondary = patient_data.get('claim_type', 'primary') == 'secondary'
102
102
 
103
103
  if is_secondary:
104
+ # TODO (DATA CONTRACT): If 835-derived fields are present on patient_data, prefer them:
105
+ # - total_paid -> AMT*D
106
+ # - cas_adjustments -> CAS
107
+ # Otherwise accept 'primary_paid_amount' and 'cas_adjustments' provided by upstream workflow.
104
108
  # SBR segment for secondary payer
105
109
  responsibility_code = "S" # Secondary
106
110
  insurance_type = determine_medicare_payer_type(patient_data, config)
@@ -111,7 +115,9 @@ def create_2320_other_subscriber_segments(patient_data, config, crosswalk):
111
115
  segments.append(sbr_segment)
112
116
 
113
117
  # AMT*D segment for total amount paid by primary
114
- total_paid = patient_data.get('primary_paid_amount', '0.00')
118
+ # TODO (STRICT MODE): When config['MediLink_Config']['cob_settings']['validation_level'] >= 2,
119
+ # require presence of a numeric total (from 'total_paid' or 'primary_paid_amount').
120
+ total_paid = patient_data.get('total_paid', patient_data.get('primary_paid_amount', '0.00'))
115
121
  amt_segment = "AMT*D*{}~".format(total_paid)
116
122
  segments.append(amt_segment)
117
123
 
@@ -152,6 +158,7 @@ def create_2330B_prior_payer_segments(patient_data, config, crosswalk):
152
158
  segments = []
153
159
 
154
160
  # Get prior payer information
161
+ # TODO (CONFIG): Resolve Medicare payer ID from config['MediLink_Config']['cob_settings']['medicare_payer_ids'] if prior_payer_id not provided.
155
162
  prior_payer_name = patient_data.get('prior_payer_name', 'MEDICARE')
156
163
  prior_payer_id = patient_data.get('prior_payer_id', '00850')
157
164
 
@@ -613,6 +613,12 @@ def process_claim(config, endpoint, patient_data_list, crosswalk, client, suffix
613
613
  document_segments = []
614
614
 
615
615
  for patient_data in patient_data_list:
616
+ # TODO (SECONDARY PREP): Upstream should mark secondary claims and provide Medicare prior payer info when applicable.
617
+ # Expected minimal keys for Medicare-secondary:
618
+ # - claim_type='secondary'
619
+ # - prior_payer_name='MEDICARE'
620
+ # - prior_payer_id from config cob_settings.medicare_payer_ids (default '00850')
621
+ # - optional: primary_paid_amount, cas_adjustments
616
622
  # Validate each patient's data before processing
617
623
  is_valid, validation_errors = validate_claim_data(patient_data, medi)
618
624
  if is_valid:
@@ -980,6 +980,43 @@ def create_clm_and_related_segments(parsed_data, config, crosswalk):
980
980
  # - create_2330B_prior_payer_segments() for Medicare prior payer
981
981
  # - create_2430_service_line_cob_segments() for service-level adjudication
982
982
  # - create_2330C_other_subscriber_name_segments() when patient != subscriber
983
+ #
984
+ # Minimal, safe integration (guarded by feature flag):
985
+ if COB is not None:
986
+ cob_enabled = False
987
+ try:
988
+ # Read feature flag from configuration (expects medi['cob_settings']['enabled'])
989
+ from MediCafe.core_utils import extract_medilink_config
990
+ medi_cfg = extract_medilink_config(config)
991
+ cob_enabled = bool(medi_cfg.get('cob_settings', {}).get('enabled', False))
992
+ except Exception:
993
+ cob_enabled = False
994
+
995
+ # Only add COB loops when explicitly enabled and claim is secondary
996
+ # TODO (COB VALIDATION): When COB is enabled and claim is secondary, validate required fields:
997
+ # - prior_payer_id/prior_payer_name present
998
+ # - primary_paid_amount present when sending AMT*D (or skip AMT if not available)
999
+ # - cas_adjustments schema if provided (list of {group, reason, amount})
1000
+ # If critical fields are missing, log and proceed with best-effort unless config enforces strict mode.
1001
+ if cob_enabled and validated_data.get('claim_type') == 'secondary':
1002
+ try:
1003
+ # 2320 - Other Subscriber Information (OI, AMT, CAS, etc.)
1004
+ segments.extend(COB.create_2320_other_subscriber_segments(validated_data, config, crosswalk))
1005
+ except Exception as _e1:
1006
+ try:
1007
+ MediLink_ConfigLoader.log("COB 2320 insertion failed: {}".format(str(_e1)), config, level="WARNING")
1008
+ except Exception:
1009
+ pass
1010
+
1011
+ try:
1012
+ # 2330B - Prior Payer (Medicare prior payer info, e.g., 00850)
1013
+ segments.extend(COB.create_2330B_prior_payer_segments(validated_data, config, crosswalk))
1014
+ except Exception as _e2:
1015
+ try:
1016
+ MediLink_ConfigLoader.log("COB 2330B insertion failed: {}".format(str(_e2)), config, level="WARNING")
1017
+ except Exception:
1018
+ pass
1019
+
983
1020
  # TODO (COB ENHANCEMENT): Optional attachment references (PWK) for non-electronic EOB handling
984
1021
  # See MediLink_837p_cob_library.create_pwk_attachment_segment() for implementation
985
1022
  # Example: PWK*EB*FX*123456~ for attachment control number
@@ -1002,6 +1039,7 @@ def create_clm_and_related_segments(parsed_data, config, crosswalk):
1002
1039
  segments.append("DTP*472*D8*{}~".format(convert_date_format(validated_data['DATE'])))
1003
1040
 
1004
1041
  # Is there REF - Line Item Control Number missing here? Private insurance doesn't need it, but Medicare does?
1042
+ # TODO (MEDICARE REF): Add conditional REF*6R (line item control number) when payer is Medicare or when crosswalk/config requires it.
1005
1043
  # segments.append("REF*6R*1~") # REF01, Reference Identification Qualifier; REF02, Line Item Control Number.
1006
1044
  # 6R - Provider Control Number (Number assigned by information provider company for tracking and billing purposes)
1007
1045
  # 1 - Reference information as defined for a particular Transaction Set or as specified by the Reference Identification Qualifier
MediLink/MediLink_UI.py CHANGED
@@ -201,6 +201,8 @@ def select_and_adjust_files(detailed_patient_data, config, crosswalk):
201
201
  )
202
202
  if updated_crosswalk:
203
203
  crosswalk = updated_crosswalk
204
+ # TODO (MEDICARE ROUTING): If original primary was Medicare and crossover failed, prompt to create secondary claim
205
+ # and set claim_type='secondary' with prior_payer fields for the selected patient.
204
206
  else:
205
207
  print("Invalid selection. Keeping the current endpoint.")
206
208
  data['confirmed_endpoint'] = current_effective_endpoint
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: medicafe
3
- Version: 0.250812.5
3
+ Version: 0.250812.6
4
4
  Summary: MediCafe
5
5
  Home-page: https://github.com/katanada2/MediCafe
6
6
  Author: Daniel Vidaud
@@ -1,11 +1,11 @@
1
- MediBot/MediBot.bat,sha256=-Iz8EJDWkSsfSTyZfUjYWuyq47JAZmxM8inuNrt6KUU,26704
1
+ MediBot/MediBot.bat,sha256=el_8wWuikLkL-cmMX63L3VC0EqcuulkIFaT4xv7suzY,26687
2
2
  MediBot/MediBot.py,sha256=sHE2vqaXvjiISKuvTvymhur3Ho9smVKuvvPvHbgnluc,36019
3
3
  MediBot/MediBot_Charges.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- MediBot/MediBot_Crosswalk_Library.py,sha256=HZHbjKHhjLW2jERmLS6pEZOl-MUxUu1YwA6oUltfdkE,24693
5
- MediBot/MediBot_Crosswalk_Utils.py,sha256=HQXZUWDZF_LvOMLsdjlsDQ79Yi_IiqNVRKX2Cd0A6x8,38762
4
+ MediBot/MediBot_Crosswalk_Library.py,sha256=K_cz2o1e86qKKRRDcjb6eu5T6rtBgOK-R1nA8t8Z8QA,24957
5
+ MediBot/MediBot_Crosswalk_Utils.py,sha256=KVq2budurwdHB7dglOuPZEQGup-hjD1SeSPyySLpy9M,39015
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=CWl0urrEYvbrqWeJ64U8npGcjxVvj6hgUZCBdekGAs4,72734
8
+ MediBot/MediBot_Preprocessor_lib.py,sha256=oHQ6_3RUR-X6tikKPpVjOMwHjIRgZ9IKARgje8tj8l0,73162
9
9
  MediBot/MediBot_UI.py,sha256=h-vcf5zMPgbK2uiwOFaqUDHqgZ-sKZJ5VvaoTdpjMtE,14305
10
10
  MediBot/MediBot_dataformat_library.py,sha256=dxh_SQQMEd9nCEeuBr-6E_Uu6enjLXeoyLpd45nUcZk,10771
11
11
  MediBot/MediBot_docx_decoder.py,sha256=gn7I7Ng5khVIzU0HTTOqi31YSSn1yW8Pyk-i_P9r1oA,32472
@@ -15,7 +15,7 @@ MediBot/PDF_to_CSV_Cleaner.py,sha256=ZZphmq-5K04DkrZNlcwNAIoZPOD_ROWvS3PMkKFxeiM
15
15
  MediBot/__init__.py,sha256=6IdVLXaWxV5ZdpefonWrC1R8RsJn4V26K0PmUEZ_vU8,3192
16
16
  MediBot/get_medicafe_version.py,sha256=uyL_UIE42MyFuJ3SRYxJp8sZx8xjTqlYZ3FdQuxLduY,728
17
17
  MediBot/update_json.py,sha256=vvUF4mKCuaVly8MmoadDO59M231fCIInc0KI1EtDtPA,3704
18
- MediBot/update_medicafe.py,sha256=siOd8s_9jYvSZ-Z5h2enc8Wu6jY7g-G7MLYSMV0IIcY,27445
18
+ MediBot/update_medicafe.py,sha256=KuoGOsSvnNis9EgpAZe_j0Ny6ExVav3fnRQCAu4evnk,28560
19
19
  MediCafe/MediLink_ConfigLoader.py,sha256=Ia79dZQBvgbc6CtOaNZVlFHaN-fvUmJRpmmVHz_MFv8,8205
20
20
  MediCafe/__init__.py,sha256=DF0XUu3G43AejXvEmd5aCyy0GDQahQD0pMwexmxem-E,5477
21
21
  MediCafe/__main__.py,sha256=mRNyk3D9Ilnu2XhgVI_rut7r5Ro7UIKtwV871giAHI8,12992
@@ -33,9 +33,9 @@ MediCafe/submission_index.py,sha256=PPKpNSBuWZQ7hgekIU7sRSB_yLXUlGOBKutaurbHfPA,
33
33
  MediLink/InsuranceTypeService.py,sha256=FKWC1nRfKV_OtCDUtZustauXNhmCYDFiY9jsAGHPPUM,2178
34
34
  MediLink/MediLink.py,sha256=p91MYghOCbNf3ikTzm5P9V1Luj035yd83EDbQ-Ov6oM,33258
35
35
  MediLink/MediLink_277_decoder.py,sha256=Z3hQK2j-YzdXjov6aDlDRc7M_auFBnl3se4OF5q6_04,4358
36
- MediLink/MediLink_837p_cob_library.py,sha256=Q1hc1f_JQZT_QUMuL9sbIiWM6WtYFB_T4q1vQIcuurM,30003
37
- MediLink/MediLink_837p_encoder.py,sha256=kIcsO8im-sMtKnx0wN1IDXD4Lz0juSjiO33z0pncB-4,31780
38
- MediLink/MediLink_837p_encoder_library.py,sha256=0ruNcdts0n1tjBFK7VZNAMRCfjN2dmJfeEdkbW3YN-c,67821
36
+ MediLink/MediLink_837p_cob_library.py,sha256=glc7SJBDx0taCGmwmCs81GFJJcvA_D7nycIkTfmIuwE,30650
37
+ MediLink/MediLink_837p_encoder.py,sha256=9rMYpvfQ-KwS1Xjo1fKtg1emxdYZBMkr9QAQPP7myeg,32191
38
+ MediLink/MediLink_837p_encoder_library.py,sha256=6NnB5yPt46dmn75DTSsMCIw284FrHR7Vf-3Wr9aVBzM,69985
39
39
  MediLink/MediLink_837p_utilities.py,sha256=28H4F6HNXgNHpdnardKWeTPuXgVSzuvu5QEPmkCGp8Q,16285
40
40
  MediLink/MediLink_API_Generator.py,sha256=UUml-PBU3BQduun8RzFH4zfUuo6-p5Ufg7b6Vic-VrY,11171
41
41
  MediLink/MediLink_API_v2.py,sha256=mcIgLnXPS_NaUBrkKJ8mxCUaQ0AuQUeU1vG6DoplbVY,7733
@@ -59,7 +59,7 @@ MediLink/MediLink_PatientProcessor.py,sha256=9r2w4p45d30Tn0kbXL3j5574MYOehP83tDi
59
59
  MediLink/MediLink_Scan.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
60
  MediLink/MediLink_Scheduler.py,sha256=UJvxhDvHraqra2_TlQVlGeh5jRFrrfK6nCVUHnKOEMY,38
61
61
  MediLink/MediLink_StatusCheck.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
- MediLink/MediLink_UI.py,sha256=hpImDIeDHTMZITOMH99vbVc2vLi-219OkWyPJoVBjZ4,9047
62
+ MediLink/MediLink_UI.py,sha256=6OR2obKUuBO12l3k6B53MXu1a3fCiV3FVBE2QrIYRqk,9279
63
63
  MediLink/MediLink_Up.py,sha256=QFdUtpEySc7ceZfFJ2q9XWClnhYJssG-UywFFedlv9w,34899
64
64
  MediLink/MediLink_api_utils.py,sha256=dsGLRPRvSwfXPLrrfgnkIKGDIF00wE93TrDB6HMDPQU,11857
65
65
  MediLink/MediLink_batch.bat,sha256=nqL5QwCLyRQFSPdv6kgtcV_cpky7FXSOWVl6OxjRXb4,118
@@ -77,9 +77,9 @@ MediLink/test_cob_library.py,sha256=wUMv0-Y6fNsKcAs8Z9LwfmEBRO7oBzBAfWmmzwoNd1g,
77
77
  MediLink/test_timing.py,sha256=yH2b8QPLDlp1Zy5AhgtjzjnDHNGhAD16ZtXtZzzESZw,2042
78
78
  MediLink/test_validation.py,sha256=FJrfdUFK--xRScIzrHCg1JeGdm0uJEoRnq6CgkP2lwM,4154
79
79
  MediLink/webapp.html,sha256=JPKT559aFVBi1r42Hz7C77Jj0teZZRumPhBev8eSOLk,19806
80
- medicafe-0.250812.5.dist-info/LICENSE,sha256=65lb-vVujdQK7uMH3RRJSMwUW-WMrMEsc5sOaUn2xUk,1096
81
- medicafe-0.250812.5.dist-info/METADATA,sha256=UMzdPicc3mzjDsoRTP3ZsH5NbBKJPqflV0H7PkDEpKE,3384
82
- medicafe-0.250812.5.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
83
- medicafe-0.250812.5.dist-info/entry_points.txt,sha256=m3RBUBjr-xRwEkKJ5W4a7NlqHZP_1rllGtjZnrRqKe8,52
84
- medicafe-0.250812.5.dist-info/top_level.txt,sha256=U6-WBJ9RCEjyIs0BlzbQq_PwedCp_IV9n1616NNV5zA,26
85
- medicafe-0.250812.5.dist-info/RECORD,,
80
+ medicafe-0.250812.6.dist-info/LICENSE,sha256=65lb-vVujdQK7uMH3RRJSMwUW-WMrMEsc5sOaUn2xUk,1096
81
+ medicafe-0.250812.6.dist-info/METADATA,sha256=Yj5TFAW1DhsTAh-WrLFvHJCGeF1Hvx4ywj_qTnVkTag,3384
82
+ medicafe-0.250812.6.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
83
+ medicafe-0.250812.6.dist-info/entry_points.txt,sha256=m3RBUBjr-xRwEkKJ5W4a7NlqHZP_1rllGtjZnrRqKe8,52
84
+ medicafe-0.250812.6.dist-info/top_level.txt,sha256=U6-WBJ9RCEjyIs0BlzbQq_PwedCp_IV9n1616NNV5zA,26
85
+ medicafe-0.250812.6.dist-info/RECORD,,