|
import streamlit as st |
|
import medspacy |
|
from medspacy.ner import TargetRule |
|
|
|
|
|
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') |
|
|
|
] |
|
|
|
|
|
|
|
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 |
|
|
|
|
|
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)}") |
|
|