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)}")