EHR-Spacy / app.py
Shreyas45's picture
Create app.py
83e31a3 verified
import streamlit as st
import medspacy
from medspacy.ner import TargetRule
# Load the MedSpaCy model
nlp = medspacy.load()
target_symptoms=[
TargetRule('Abdominal pain', 'SYMPTOM'),
TargetRule('Abdominal swelling', 'SYMPTOM'),
TargetRule('Loss of appetite', 'SYMPTOM'),
TargetRule('Weight loss', 'SYMPTOM'),
TargetRule('Nausea', 'SYMPTOM'),
TargetRule('Vomiting', 'SYMPTOM'),
TargetRule('Fatigue', 'SYMPTOM'),
TargetRule('Jaundice', 'SYMPTOM'),
TargetRule('Dark urine', 'SYMPTOM'),
TargetRule('Easy bleeding', 'SYMPTOM'),
TargetRule('Easy bruising', 'SYMPTOM'),
TargetRule('Right upper abdominal mass', 'SYMPTOM'),
TargetRule('Pale stools', 'SYMPTOM'),
TargetRule('Itchy skin', 'SYMPTOM'),
TargetRule('Chronic indigestion', 'SYMPTOM'),
TargetRule('Feeling of fullness in upper abdomen', 'SYMPTOM'),
TargetRule('New-onset diabetes', 'SYMPTOM'),
TargetRule('Confusion', 'SYMPTOM'),
TargetRule('Hinching', 'SYMPTOM'),
TargetRule('Bilirubin', 'SYMPTOM')
]
target_condition=[
TargetRule('Hepatic Cancer','CONDITION'),
TargetRule('Hepatocellular Carcinoma','CONDITION'),
TargetRule('HCC','CONDITION'),
TargetRule('Cholangiocarcinoma','CONDITION'),
TargetRule('Metastatic Liver Cancer','CONDITION'),
TargetRule('Liver Metastases','CONDITION'),
TargetRule('Cirrhosis','CONDITION'),
TargetRule('Hepatitis','CONDITION'),
TargetRule('Fibrolamellar Hepatocellular Carcinoma','CONDITION'),
TargetRule('Liver Resection','CONDITION'),
TargetRule('Liver cancer','CONDITION'),
TargetRule('Primary liver cancer','CONDITION'),
TargetRule('Hepatoma','CONDITION'),
TargetRule('Hepatic carcinoma','CONDITION')
]
target_diagnosis=[
TargetRule('Computed Tomography scan','DIAGNOSIS'),
TargetRule('CT scan','DIAGNOSIS'),
TargetRule('Magnetic Resonance Imaging','DIAGNOSIS'),
TargetRule('MRI','DIAGNOSIS'),
TargetRule('Positron Emission Tomography','DIAGNOSIS'),
TargetRule('PET scan','DIAGNOSIS'),
TargetRule('Ultrasound','DIAGNOSIS'),
TargetRule('Sonography','DIAGNOSIS'),
TargetRule('Biopsy','DIAGNOSIS'),
TargetRule('Blood tests','DIAGNOSIS'),
TargetRule('Laboratory tests','DIAGNOSIS'),
TargetRule('Endoscopy','DIAGNOSIS'),
TargetRule('Colonoscopy','DIAGNOSIS'),
TargetRule('Sigmoidoscopy','DIAGNOSIS'),
TargetRule('Liver Function Tests','DIAGNOSIS'),
TargetRule('LFTs','DIAGNOSIS'),
TargetRule('Tumor Marker Tests','DIAGNOSIS'),
TargetRule('Alpha-fetoprotein test','DIAGNOSIS'),
TargetRule('AFP test','DIAGNOSIS'),
TargetRule('Des-gamma-carboxy prothrombin test','DIAGNOSIS'),
TargetRule('DCP test','DIAGNOSIS'),
TargetRule('Liver biopsy blood test markers','DIAGNOSIS'),
TargetRule('Computerized Axial Tomography scan','DIAGNOSIS'),
TargetRule('CAT scan','DIAGNOSIS'),
TargetRule('Magnetic Resonance Imaging','DIAGNOSIS'),
TargetRule('MRI','DIAGNOSIS'),
TargetRule('Electrocardiogram','DIAGNOSIS'),
TargetRule('ECG','DIAGNOSIS'),
TargetRule('EKG','DIAGNOSIS'),
TargetRule('Electroencephalogram','DIAGNOSIS'),
TargetRule('EEG','DIAGNOSIS'),
TargetRule('Complete Blood Count','DIAGNOSIS'),
TargetRule('CBC','DIAGNOSIS'),
TargetRule('Blood Urea Nitrogen','DIAGNOSIS'),
TargetRule('BUN','DIAGNOSIS'),
TargetRule('Creatinine Clearance Test','DIAGNOSIS'),
TargetRule('CCT','DIAGNOSIS'),
TargetRule('Human Chorionic Gonadotropin','DIAGNOSIS'),
TargetRule('','DIAGNOSIS'),
TargetRule('HCG','DIAGNOSIS'),
TargetRule('Prostate-Specific Antigen','DIAGNOSIS'),
TargetRule('PSA','DIAGNOSIS'),
TargetRule('Thyroid Stimulating Hormone','DIAGNOSIS'),
TargetRule('TSH','DIAGNOSIS'),
TargetRule('Serum Glucose Test','DIAGNOSIS'),
TargetRule('SGT','DIAGNOSIS'),
TargetRule('Hemoglobin A1c','DIAGNOSIS'),
TargetRule('HbA1c','DIAGNOSIS'),
TargetRule('International Normalized Ratio','DIAGNOSIS'),
TargetRule('INR','DIAGNOSIS'),
TargetRule('Alanine Aminotransferase','DIAGNOSIS'),
TargetRule('ALT','DIAGNOSIS'),
TargetRule('Aspartate Aminotransferase','DIAGNOSIS'),
TargetRule('AST','DIAGNOSIS'),
TargetRule('C-reactive Protein','DIAGNOSIS'),
TargetRule('CRP','DIAGNOSIS')
]
target_drugs=[
TargetRule('Sorafenib','DRUGS'),
TargetRule('Lenvatinib','DRUGS'),
TargetRule('Regorafenib','DRUGS'),
TargetRule('Cabozantinib','DRUGS'),
TargetRule('Sunitinib','DRUGS'),
TargetRule('Ramucirumab','DRUGS'),
TargetRule('Pembrolizumab','DRUGS'),
TargetRule('Atezolizumab','DRUGS'),
TargetRule('Bevacizumab','DRUGS'),
TargetRule('Nivolumab','DRUGS'),
TargetRule('Ipilimumab','DRUGS'),
TargetRule('Tremelimumab','DRUGS'),
TargetRule('Cisplatin','DRUGS'),
TargetRule('Oxaliplatin','DRUGS'),
TargetRule('Gemcitabine','DRUGS'),
TargetRule('5-Fluorouracil','DRUGS'),
TargetRule('Cetuximab','DRUGS'),
TargetRule('Panitumumab','DRUGS'),
TargetRule('Erlotinib','DRUGS'),
TargetRule('Trametinib','DRUGS'),
TargetRule('Aflibercept','DRUGS'),
TargetRule('Doxorubicin','DRUGS'),
TargetRule('Mitomycin C','DRUGS'),
TargetRule('Tegafur','DRUGS'),
TargetRule('Carboplatin','DRUGS'),
TargetRule('Docetaxel','DRUGS'),
TargetRule('Mitoxantrone','DRUGS'),
TargetRule('Topotecan','DRUGS'),
TargetRule('Irinotecan','DRUGS'),
TargetRule('Everolimus','DRUGS'),
TargetRule('Tas-102','DRUGS'),
TargetRule('Pazopanib','DRUGS'),
TargetRule('Liposomal irinotecan','DRUGS'),
TargetRule('Trifluridine','DRUGS'),
TargetRule('Raltitrexed','DRUGS'),
TargetRule('Olaparib','DRUGS'),
TargetRule('Durvalumab','DRUGS'),
TargetRule('Avelumab','DRUGS')
]
# Add custom target rules to the medspacy_target_matcher component
nlp.get_pipe('medspacy_target_matcher').add(target_symptoms)
nlp.get_pipe('medspacy_target_matcher').add(target_condition)
nlp.get_pipe('medspacy_target_matcher').add(target_diagnosis)
nlp.get_pipe('medspacy_target_matcher').add(target_drugs)
def extract_entities(text):
doc = nlp(text)
entities = {}
for ent in doc.ents:
label = ent.label_
if label not in entities:
entities[label] = []
entities[label].append(ent.text)
return entities
# Streamlit UI
st.title("Medical Entity Extraction")
text_input = st.text_area("Enter medical text here:")
if st.button("Extract Entities"):
entities = extract_entities(text_input)
st.write("Extracted Entities:")
for label, texts in entities.items():
st.write(f"{label}: {', '.join(texts)}")