Files
doczyai-pipelines/src/test.py
T
2024-09-30 15:20:14 +01:00

87 lines
2.6 KiB
Python

import pandas as pd
import numpy as np
import re
import json
import csv
from io import StringIO
import config
import ast
import os
import utils
import postprocess
import postprocessingfuncs
import preprocess
import table_funcs
import prompts
import prompt_funcs
import claude_funcs
# all_dfs = []
# for file in os.listdir('output'):
# if 'combined_results_post_processed.csv' in os.listdir(os.path.join('output', file)):
# try:
# df = pd.read_csv(f'output/{file}/combined_results_post_processed.csv')
# all_dfs.append(df)
# except:
# continue
# final_df = pd.concat(all_dfs, ignore_index=True)
# final_df.to_excel('output_consolidated/test_20240610_batch1.xlsx')
input_dict = utils.read_input()
(filename, contract_text) = list(input_dict.items())[0]
def clean_billed_charges(contract_text):
substrings = [
"Physician's Billed Charges",
"Provider's Billed Charges",
"Allowable Billed Charges",
"Hospital's Billed Charges",
"Physician's Charges",
"Provider's Charges",
"Allowable Charges",
"Hospital's Charges",
"Billed Charges"
]
max_substring_length = np.max([len(s) for s in substrings])
def find_substring_indices(contract_text, s):
indices = []
lower_contract_text = contract_text.lower()
lower_s = s.lower()
index = lower_contract_text.find(lower_s)
while index != -1:
indices.append(index)
index = lower_contract_text.find(lower_s, index + 1)
return indices
for s in substrings:
indices = find_substring_indices(contract_text, s)
index_adder = 0
if indices:
for i in indices:
index = i+index_adder
end_index = index + max_substring_length
match_part = contract_text[index:end_index]
previous = contract_text[max(0, index-30):index]
if '%' not in previous:
contract_text = contract_text[0:index] + f" 100% of {match_part}" + contract_text[end_index:]
index_adder += 9
return contract_text.replace(' ', ' ')
contract_text = preprocess.clean_newlines(contract_text)
contract_text = clean_billed_charges(contract_text)
contract_text = preprocess.highlight_rates(contract_text)
text_dict = preprocess.split_text(contract_text)
# text_dict = table_funcs.align_and_format_tables(text_dict)
print(text_dict['23'])
bu_results = prompt_funcs.run_bottom_up_primary({'23' : text_dict['23']}, 4000) # Returns list of dictionaries
print(bu_results)