File size: 6,660 Bytes
83e31a3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 |
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)}")
|