medicafe 0.250822.3__py3-none-any.whl → 0.250909.0__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.
@@ -19,6 +19,9 @@ def deep_search_for_value(data, target_value, path="", max_depth=10, current_dep
19
19
  if current_depth > max_depth:
20
20
  return []
21
21
 
22
+ if data is None:
23
+ return []
24
+
22
25
  found_paths = []
23
26
 
24
27
  if isinstance(data, dict):
@@ -54,7 +57,7 @@ def extract_legacy_values_for_comparison(legacy_data):
54
57
  comparison_values = {}
55
58
 
56
59
  if not legacy_data or "memberPolicies" not in legacy_data:
57
- return comparison_values
60
+ return {}
58
61
 
59
62
  for policy in legacy_data.get("memberPolicies", []):
60
63
  # Skip non-medical policies
@@ -341,6 +344,9 @@ def analyze_response_structure(data, max_depth=5):
341
344
  if depth > max_depth:
342
345
  return
343
346
 
347
+ if obj is None:
348
+ return
349
+
344
350
  if isinstance(obj, dict):
345
351
  for key, value in obj.items():
346
352
  current_path = "{}.{}".format(path, key) if path else key
@@ -495,10 +501,10 @@ def run_validation_comparison(legacy_data, super_connector_data, output_file_pat
495
501
  return validation_report
496
502
 
497
503
  # Extract values from legacy response (handles None gracefully)
498
- legacy_values = extract_legacy_values_for_comparison(legacy_data)
504
+ legacy_values = extract_legacy_values_for_comparison(legacy_data or {})
499
505
 
500
506
  # Validate Super Connector response (handles None gracefully)
501
- validation_report = validate_super_connector_response(legacy_values, super_connector_data)
507
+ validation_report = validate_super_connector_response(legacy_values, super_connector_data or {})
502
508
 
503
509
  # Add API status information
504
510
  if not legacy_data:
@@ -211,7 +211,8 @@ def _normalize_post_api_data(eligibility_result):
211
211
  'status': str(eligibility_result.get('status', 'Processed')),
212
212
  'insurance_type': str(eligibility_result.get('insurance_type', '')),
213
213
  'policy_status': str(eligibility_result.get('policy_status', '')),
214
- 'remaining_amount': str(eligibility_result.get('remaining_amount', ''))
214
+ 'remaining_amount': str(eligibility_result.get('remaining_amount', '')),
215
+ 'data_source': str(eligibility_result.get('data_source', ''))
215
216
  }
216
217
  else:
217
218
  MediLink_ConfigLoader.log("Unexpected eligibility result format: {}".format(type(eligibility_result)), level="WARNING")
@@ -317,7 +318,8 @@ def _calculate_column_widths(normalized_data, context):
317
318
  widths.update({
318
319
  'insurance_type': max(15, max(len(str(r.get('insurance_type', ''))) for r in normalized_data) if normalized_data else 15),
319
320
  'policy_status': 12,
320
- 'remaining_amount': 12
321
+ 'remaining_amount': 12,
322
+ 'data_source': 10
321
323
  })
322
324
 
323
325
  return widths
@@ -350,12 +352,21 @@ def _display_table_header(col_widths, context):
350
352
  "Policy Status", col_widths['policy_status'],
351
353
  "Remaining Amt", col_widths['remaining_amount']
352
354
  )
355
+ header_format += " | {:<{}}"
356
+ header += " | {}".format("Data Source", col_widths.get('data_source', 10))
353
357
  print(header)
354
358
  print("-" * len(header))
355
359
 
356
360
  def _display_primary_line(record, line_number, col_widths, context):
357
361
  """Display primary line with line number"""
358
362
  if context == "pre_api":
363
+ # Enhanced status display for pre-API context
364
+ status = record.get('status', '')
365
+ if status == 'Ready':
366
+ status_display = '[READY]'
367
+ else:
368
+ status_display = '[{}]'.format(status.upper())
369
+
359
370
  line_format = "{:03d}: {:<{}} | {:<{}} | {:<{}} | {:<{}} | {:<{}} | {:<{}} | {:<{}}"
360
371
  print(line_format.format(
361
372
  line_number,
@@ -365,9 +376,18 @@ def _display_primary_line(record, line_number, col_widths, context):
365
376
  str(record.get('member_id', ''))[:col_widths['member_id']], col_widths['member_id'],
366
377
  str(record.get('payer_id', ''))[:col_widths['payer_id']], col_widths['payer_id'],
367
378
  str(record.get('service_date_display', ''))[:col_widths['service_date']], col_widths['service_date'],
368
- str(record.get('status', ''))[:col_widths['status']], col_widths['status']
379
+ status_display[:col_widths['status']], col_widths['status']
369
380
  ))
370
381
  else:
382
+ # Enhanced status display for post-API context
383
+ status = record.get('status', '')
384
+ if status == 'Processed':
385
+ status_display = '[DONE]'
386
+ elif status == 'Error':
387
+ status_display = '[ERROR]'
388
+ else:
389
+ status_display = '[{}]'.format(status.upper())
390
+
371
391
  line_format = "{:03d}: {:<{}} | {:<{}} | {:<{}} | {:<{}} | {:<{}} | {:<{}} | {:<{}} | {:<{}} | {:<{}}"
372
392
  print(line_format.format(
373
393
  line_number,
@@ -379,7 +399,8 @@ def _display_primary_line(record, line_number, col_widths, context):
379
399
  str(record.get('service_date_display', ''))[:col_widths['service_date']], col_widths['service_date'],
380
400
  str(record.get('insurance_type', ''))[:col_widths['insurance_type']], col_widths['insurance_type'],
381
401
  str(record.get('policy_status', ''))[:col_widths['policy_status']], col_widths['policy_status'],
382
- str(record.get('remaining_amount', ''))[:col_widths['remaining_amount']], col_widths['remaining_amount']
402
+ str(record.get('remaining_amount', ''))[:col_widths['remaining_amount']], col_widths['remaining_amount'],
403
+ str(record.get('data_source', ''))[:col_widths['data_source']], col_widths['data_source']
383
404
  ))
384
405
 
385
406
  def _display_secondary_line(record, col_widths, context):
@@ -391,6 +412,13 @@ def _display_secondary_line(record, col_widths, context):
391
412
  payer_id_dashes = '-' * min(len(str(record.get('payer_id', ''))), col_widths['payer_id'])
392
413
 
393
414
  if context == "pre_api":
415
+ # Enhanced status display for pre-API context
416
+ status = record.get('status', '')
417
+ if status == 'Ready':
418
+ status_display = '[READY]'
419
+ else:
420
+ status_display = '[{}]'.format(status.upper())
421
+
394
422
  line_format = " {:<{}} | {:<{}} | {:<{}} | {:<{}} | {:<{}} | {:<{}} | {:<{}}"
395
423
  print(line_format.format(
396
424
  patient_id_dashes, col_widths['patient_id'],
@@ -399,12 +427,21 @@ def _display_secondary_line(record, col_widths, context):
399
427
  member_id_dashes, col_widths['member_id'],
400
428
  payer_id_dashes, col_widths['payer_id'],
401
429
  str(record.get('service_date_display', ''))[:col_widths['service_date']], col_widths['service_date'],
402
- str(record.get('status', ''))[:col_widths['status']], col_widths['status']
430
+ status_display[:col_widths['status']], col_widths['status']
403
431
  ))
404
432
  else:
405
433
  insurance_type_dashes = '-' * min(len(str(record.get('insurance_type', ''))), col_widths['insurance_type'])
406
434
  policy_status_dashes = '-' * min(len(str(record.get('policy_status', ''))), col_widths['policy_status'])
407
435
 
436
+ # Enhanced status display for post-API context
437
+ status = record.get('status', '')
438
+ if status == 'Processed':
439
+ status_display = '[DONE]'
440
+ elif status == 'Error':
441
+ status_display = '[ERROR]'
442
+ else:
443
+ status_display = '[{}]'.format(status.upper())
444
+
408
445
  line_format = " {:<{}} | {:<{}} | {:<{}} | {:<{}} | {:<{}} | {:<{}} | {:<{}} | {:<{}} | {:<{}}"
409
446
  print(line_format.format(
410
447
  patient_id_dashes, col_widths['patient_id'],
@@ -415,5 +452,6 @@ def _display_secondary_line(record, col_widths, context):
415
452
  str(record.get('service_date_display', ''))[:col_widths['service_date']], col_widths['service_date'],
416
453
  insurance_type_dashes, col_widths['insurance_type'],
417
454
  policy_status_dashes, col_widths['policy_status'],
418
- str(record.get('remaining_amount', ''))[:col_widths['remaining_amount']], col_widths['remaining_amount']
455
+ str(record.get('remaining_amount', ''))[:col_widths['remaining_amount']], col_widths['remaining_amount'],
456
+ str(record.get('data_source', ''))[:col_widths['data_source']], col_widths['data_source']
419
457
  ))
MediLink/MediLink_UI.py CHANGED
@@ -201,8 +201,26 @@ 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
+ # STRATEGIC NOTE (Medicare Crossover UI): High-risk implementation requiring strategic decisions
205
+ #
206
+ # CRITICAL QUESTIONS FOR IMPLEMENTATION:
207
+ # 1. **Crossover Detection**: How to detect Medicare crossover failures?
208
+ # - Automatic from claim status API responses?
209
+ # - Manual user indication?
210
+ # - Time-based detection (no crossover after X days)?
211
+ #
212
+ # 2. **Secondary Claim Workflow**: How should secondary claim creation be integrated?
213
+ # - Automatic prompt when crossover failure detected?
214
+ # - Manual option in patient management interface?
215
+ # - Batch processing for multiple failed crossovers?
216
+ #
217
+ # 3. **Data Requirements**: What data is needed for secondary claims?
218
+ # - Medicare payment amount (required vs optional)?
219
+ # - Denial/adjustment reasons from Medicare?
220
+ # - Secondary payer eligibility verification?
221
+ #
222
+ # To implement: Add crossover failure detection and secondary claim creation UI
223
+ # with proper validation and error handling for Medicare -> Secondary workflow
206
224
  else:
207
225
  print("Invalid selection. Keeping the current endpoint.")
208
226
  data['confirmed_endpoint'] = current_effective_endpoint
MediLink/__init__.py CHANGED
@@ -22,7 +22,7 @@ Smart Import Integration:
22
22
  datamgmt = get_components('medilink_datamgmt')
23
23
  """
24
24
 
25
- __version__ = "0.250822.3"
25
+ __version__ = "0.250909.0"
26
26
  __author__ = "Daniel Vidaud"
27
27
  __email__ = "daniel@personalizedtransformation.com"
28
28
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: medicafe
3
- Version: 0.250822.3
3
+ Version: 0.250909.0
4
4
  Summary: MediCafe
5
5
  Home-page: https://github.com/katanada2/MediCafe
6
6
  Author: Daniel Vidaud
@@ -1,18 +1,18 @@
1
1
  MediBot/MediBot.bat,sha256=dWBZ2__t1uPvEuN76ETOD_mDo7368rP3tDrJd4MHCFY,26306
2
- MediBot/MediBot.py,sha256=sx6nZYUhFMnr4UcBR07BcrSo-IgmL1xaYRF_C-bwDAU,48243
2
+ MediBot/MediBot.py,sha256=9kpNZdNg3awxj0Oa5AszSZrcmyqhPZ0FHeYRHOeumBw,48750
3
3
  MediBot/MediBot_Charges.py,sha256=a28if_f_IoazIHiqlaFosFnfEgEoCwb9LQ6aOyk5-D0,10704
4
- MediBot/MediBot_Crosswalk_Library.py,sha256=ZmWfsBf5AYvCNGpa165mxYNIXj4QPyOxaogWVj0mT7M,25130
5
- MediBot/MediBot_Crosswalk_Utils.py,sha256=hTLPioU9A5XfdTZ7LqeOiYXdsi8Bwf9fuMJGxofyTmg,38983
4
+ MediBot/MediBot_Crosswalk_Library.py,sha256=6LrpRx2UKVeH3TspS9LpR93iw5M7nTqN6IYpC-6PPGE,26060
5
+ MediBot/MediBot_Crosswalk_Utils.py,sha256=dFJRB_8q0iiAxZ2GY-2HsMl5Z7FvkXezzwx6LZoAglI,39589
6
6
  MediBot/MediBot_Notepad_Utils.py,sha256=fOsjyfoSpgmQyc8TcnLm53faLMOUUL18cspo5PZqJK4,8719
7
7
  MediBot/MediBot_Post.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  MediBot/MediBot_Preprocessor.py,sha256=gQRVAWbRHx_PMK6a7q93tp7Z-Dhjn5r0lJz3d0wAzeU,19067
9
- MediBot/MediBot_Preprocessor_lib.py,sha256=lyl2Q5V1MQHiZ54kmTYPxor3pm2gf8mAq-IwYu7FX2c,87236
9
+ MediBot/MediBot_Preprocessor_lib.py,sha256=ELG0x8DSbByGbnoLOgiztzkYRBekiPb0BmxGw3cic1c,89210
10
10
  MediBot/MediBot_UI.py,sha256=tQISM2gULmQVc4JbeVsn4pjgOYsQZiJpx1_IU407rO8,25870
11
11
  MediBot/MediBot_dataformat_library.py,sha256=D46fdPtxcgfWTzaLBtSvjtozzZBNqNiODgu4vKMZrBg,10746
12
12
  MediBot/MediBot_debug.bat,sha256=F5Lfi3nFEEo4Ddx9EbX94u3fNAMgzMp3wsn-ULyASTM,6017
13
- MediBot/MediBot_docx_decoder.py,sha256=gn7I7Ng5khVIzU0HTTOqi31YSSn1yW8Pyk-i_P9r1oA,32472
13
+ MediBot/MediBot_docx_decoder.py,sha256=9BSjV-kB90VHnqfL_5iX4zl5u0HcHvHuL7YNfx3gXpQ,33143
14
14
  MediBot/MediBot_smart_import.py,sha256=Emvz7NwemHGCHvG5kZcUyXMcCheidbGKaPfOTg-YCEs,6684
15
- MediBot/__init__.py,sha256=qePTmvNpBGAjWSFrPUYdjGkpQNNAzvLznd3ZtYP67eg,3192
15
+ MediBot/__init__.py,sha256=S5Y80QAjAxFKJn6Uz9KNzNHXEHjCU0boj0joB8JcPlc,3192
16
16
  MediBot/clear_cache.bat,sha256=F6-VhETWw6xDdGWG2wUqvtXjCl3lY4sSUFqF90bM8-8,1860
17
17
  MediBot/crash_diagnostic.bat,sha256=j8kUtyBg6NOWbXpeFuEqIRHOkVzgUrLOqO3FBMfNxTo,9268
18
18
  MediBot/f_drive_diagnostic.bat,sha256=4572hZaiwZ5wVAarPcZJQxkOSTwAdDuT_X914noARak,6878
@@ -21,13 +21,14 @@ MediBot/get_medicafe_version.py,sha256=uyL_UIE42MyFuJ3SRYxJp8sZx8xjTqlYZ3FdQuxLd
21
21
  MediBot/process_csvs.bat,sha256=3tI7h1z9eRj8rUUL4wJ7dy-Qrak20lRmpAPtGbUMbVQ,3489
22
22
  MediBot/update_json.py,sha256=vvUF4mKCuaVly8MmoadDO59M231fCIInc0KI1EtDtPA,3704
23
23
  MediBot/update_medicafe.py,sha256=G1lyvVOHYuho1d-TJQNN6qaB4HBWaJ2PpXqemBoPlRQ,17937
24
- MediCafe/MediLink_ConfigLoader.py,sha256=fNBFnPbh1YRVCs9WvZp6tPsKTUFzK3f38ePeUQ00QrQ,10161
25
- MediCafe/__init__.py,sha256=CamfFgQyYDH-vuQQVMk_XyOHLp20PaVIre_0Ie5FgnE,5721
24
+ MediCafe/MediLink_ConfigLoader.py,sha256=zzI3cFe2_TdwgIW_UAVmY_LFFlLLdlmpCokouUqx6u0,10898
25
+ MediCafe/__init__.py,sha256=U8Vg_cQIvjHI-ynz8513QPOIAUsTvWRlj0aYnbvSAWQ,5721
26
26
  MediCafe/__main__.py,sha256=mRNyk3D9Ilnu2XhgVI_rut7r5Ro7UIKtwV871giAHI8,12992
27
27
  MediCafe/api_core.py,sha256=yNFfLO70bF91NNBLSUADYWZFkR5yh8NctxnT98fkAxk,78515
28
28
  MediCafe/api_factory.py,sha256=I5AeJoyu6m7oCrjc2OvVvO_4KSBRutTsR1riiWhTZV0,12086
29
29
  MediCafe/api_utils.py,sha256=KWQB0q1k5E6frOFFlKWcFpHNcqfrS7KJ_82672wbupw,14041
30
- MediCafe/core_utils.py,sha256=-laTm-Ylx-4coByrHl_Lua_Xu9YGamtOYAiS_OH_tFI,27008
30
+ MediCafe/core_utils.py,sha256=XKUpyv7yKjIQ8iNrhD76PIURyt6GZxb98v0daiI7aaw,27303
31
+ MediCafe/deductible_utils.py,sha256=bsI5YRO8QzaEU-sxi2F5zIx6k4D53rYUt0mlg-6-Jc8,57644
31
32
  MediCafe/graphql_utils.py,sha256=xrREl0mqktEBkV6SZeAImuuDc8Sp2Q80rWxKIh-zD7Q,44499
32
33
  MediCafe/logging_config.py,sha256=auT65LN5oDEXVhkMeLke63kJHTWxYf2o8YihAfQFgzU,5493
33
34
  MediCafe/logging_demo.py,sha256=TwUhzafna5pMdN3zSKGrpUWRqX96F1JGGsSUtr3dygs,1975
@@ -37,7 +38,7 @@ MediCafe/submission_index.py,sha256=35gz8Anx1dIqG1I14GvuLY0nTO4dSBr2YsZwof9aIQg,
37
38
  MediLink/InsuranceTypeService.py,sha256=FKWC1nRfKV_OtCDUtZustauXNhmCYDFiY9jsAGHPPUM,2178
38
39
  MediLink/MediLink_837p_cob_library.py,sha256=glc7SJBDx0taCGmwmCs81GFJJcvA_D7nycIkTfmIuwE,30650
39
40
  MediLink/MediLink_837p_encoder.py,sha256=lJnly96LsSBnzEgF8Ne-nQTL7cmRhoFL2fJajtpvOcU,32209
40
- MediLink/MediLink_837p_encoder_library.py,sha256=VzOpzbYF3i133vdqqxYB6JVMd9N5QzfKaWNVeQKIRZM,87774
41
+ MediLink/MediLink_837p_encoder_library.py,sha256=E0jCyiyANZLpmWUW0GKT3-04FnX9yTBLnz7RukaGs5Q,91892
41
42
  MediLink/MediLink_837p_utilities.py,sha256=AJ0F22LoF8du20zPBH4TZXgsdXCD-1qYKBnHJM-mXl0,16260
42
43
  MediLink/MediLink_API_Generator.py,sha256=VZBL9W8yFTMJ4ikSwbUI8ANtaJCLnUyqoF8xQEJQn_E,11176
43
44
  MediLink/MediLink_Azure.py,sha256=Ow70jctiHFIylskBExN7WUoRgrKOvBR6jNTnQMk6lJA,210
@@ -45,9 +46,9 @@ MediLink/MediLink_Charges.py,sha256=82fnqHGvT7tfdfjucnFHiLdUE0WhHDXrcS0k_Ln3c8U,
45
46
  MediLink/MediLink_ClaimStatus.py,sha256=75LzWfYaxrLWelId-8rHHN_lchHXxAe34pRgvKPdP2o,22118
46
47
  MediLink/MediLink_DataMgmt.py,sha256=9hc5jyWU65nYT66afDybOyYAcW-DvEYuHpWTun96U50,52407
47
48
  MediLink/MediLink_Decoder.py,sha256=1gzdybNg4Vv69s5PNbX8bPNrXT_N_kPpFpt2HpkauWA,16430
48
- MediLink/MediLink_Deductible.py,sha256=PqyK0ojeq5OUPoC7dxf97vFODTSRBjs8UMtj4bAi3Q4,57606
49
- MediLink/MediLink_Deductible_Validator.py,sha256=Hl15LKim1BuJS7Qv9Iulg-L8dNfZRoLbvAxqO7CF2E0,24756
50
- MediLink/MediLink_Display_Utils.py,sha256=lce5SmZwhLSzcOCagEl7Pg8F_-cT1gK7dPMjlDWiQmI,19631
49
+ MediLink/MediLink_Deductible.py,sha256=e_Oi5c55g4fTcPf-2hLnIRJ_Q_pBAyyXnTKiciQULd8,55208
50
+ MediLink/MediLink_Deductible_Validator.py,sha256=1h5GJ9jbcVarxd6a-lKPEOhJYz4QkeeBlHw0Zdd9vUU,24855
51
+ MediLink/MediLink_Display_Utils.py,sha256=a0t1VU9Mm_vhsXVTEA1EpUlElrnyie4XaCeif7GwRgw,21213
51
52
  MediLink/MediLink_Down.py,sha256=s4_z-RaqHYanjwbQCl-OSkg4XIpcIQ2Q6jXa8-q_QXw,28111
52
53
  MediLink/MediLink_Gmail.py,sha256=8iQjqcJMSa_Zfr5azR0dShKAQeXqt-9C-s8seYB9pic,23961
53
54
  MediLink/MediLink_Mailer.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -55,21 +56,21 @@ MediLink/MediLink_Parser.py,sha256=eRVZ4ckZ5gDOrcvtCUZP3DOd3Djly66rCIk0aYXLz14,1
55
56
  MediLink/MediLink_PatientProcessor.py,sha256=9r2w4p45d30Tn0kbXL3j5574MYOehP83tDirNOw_Aek,19977
56
57
  MediLink/MediLink_Scan.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
58
  MediLink/MediLink_Scheduler.py,sha256=UJvxhDvHraqra2_TlQVlGeh5jRFrrfK6nCVUHnKOEMY,38
58
- MediLink/MediLink_UI.py,sha256=6OR2obKUuBO12l3k6B53MXu1a3fCiV3FVBE2QrIYRqk,9279
59
+ MediLink/MediLink_UI.py,sha256=ZEJ14EGh7pDu1XjAdORDFiay4UtTsLNWwNSJ0prHFWg,10381
59
60
  MediLink/MediLink_Up.py,sha256=uB6J63hWOn8Ot8iGtc2_OgcejNWVgnX7Se_e_UWBNho,38082
60
61
  MediLink/MediLink_insurance_utils.py,sha256=g741Fj2K26cMy0JX5d_XavMw9LgkK6hjaUJYfysT7t8,9301
61
62
  MediLink/MediLink_main.py,sha256=ZVK2UsgSxC9UqgIYfgVu95ugULcH6-11l67jsf4vdJc,22132
62
63
  MediLink/MediLink_smart_import.py,sha256=B5SfBn_4bYEWJJDolXbjnwKx_-MaqGZ76LyXQwWDV80,9838
63
64
  MediLink/Soumit_api.py,sha256=5JfOecK98ZC6NpZklZW2AkOzkjvrbYxpJpZNH3rFxDw,497
64
- MediLink/__init__.py,sha256=ejz3E0Nu6GGrPBGnbxy6W5kD2MtGLPZqNKd2XRoIqhg,3888
65
+ MediLink/__init__.py,sha256=Lr3cT-xyO8eyyoxqaKxcjR2CHxNL340JEdIHe_l1rd4,3888
65
66
  MediLink/gmail_http_utils.py,sha256=gtqCCrzJC7e8JFQzMNrf7EbK8na2h4sfTu-NMaZ_UHc,4006
66
67
  MediLink/gmail_oauth_utils.py,sha256=Ugr-DEqs4_RddRMSCJ_dbgA3TVeaxpbAor-dktcTIgY,3713
67
68
  MediLink/openssl.cnf,sha256=76VdcGCykf0Typyiv8Wd1mMVKixrQ5RraG6HnfKFqTo,887
68
69
  MediLink/test.py,sha256=DM_E8gEbhbVfTAm3wTMiNnK2GCD1e5eH6gwTk89QIc4,3116
69
70
  MediLink/webapp.html,sha256=JPKT559aFVBi1r42Hz7C77Jj0teZZRumPhBev8eSOLk,19806
70
- medicafe-0.250822.3.dist-info/LICENSE,sha256=65lb-vVujdQK7uMH3RRJSMwUW-WMrMEsc5sOaUn2xUk,1096
71
- medicafe-0.250822.3.dist-info/METADATA,sha256=Evt1XOBV0JDICQgnI0e453auGyZDOMa1IyaWYP7K_iA,3414
72
- medicafe-0.250822.3.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
73
- medicafe-0.250822.3.dist-info/entry_points.txt,sha256=m3RBUBjr-xRwEkKJ5W4a7NlqHZP_1rllGtjZnrRqKe8,52
74
- medicafe-0.250822.3.dist-info/top_level.txt,sha256=U6-WBJ9RCEjyIs0BlzbQq_PwedCp_IV9n1616NNV5zA,26
75
- medicafe-0.250822.3.dist-info/RECORD,,
71
+ medicafe-0.250909.0.dist-info/LICENSE,sha256=65lb-vVujdQK7uMH3RRJSMwUW-WMrMEsc5sOaUn2xUk,1096
72
+ medicafe-0.250909.0.dist-info/METADATA,sha256=cWgYebKSTCUb2V3c-2TnjmCtUiG0lX8KxVY8g6OlY1g,3414
73
+ medicafe-0.250909.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
74
+ medicafe-0.250909.0.dist-info/entry_points.txt,sha256=m3RBUBjr-xRwEkKJ5W4a7NlqHZP_1rllGtjZnrRqKe8,52
75
+ medicafe-0.250909.0.dist-info/top_level.txt,sha256=U6-WBJ9RCEjyIs0BlzbQq_PwedCp_IV9n1616NNV5zA,26
76
+ medicafe-0.250909.0.dist-info/RECORD,,