maseiler commited on
Commit
ec6a815
1 Parent(s): 4021316

Extend trial details

Browse files
Files changed (2) hide show
  1. app.py +3 -25
  2. utils.py +46 -0
app.py CHANGED
@@ -12,7 +12,8 @@ from utils import (
12
  get_similarities_among_diseases_uris,
13
  augment_the_set_of_diseaces,
14
  get_clinical_trials_related_to_diseases,
15
- get_clinical_records_by_ids
 
16
  )
17
  from llm_res import get_short_summary_out_of_json_files
18
  import json
@@ -165,31 +166,8 @@ with st.container():
165
 
166
  tab_titles = [f"{trial['protocolSection']['identificationModule']['nctId']}" for trial in trials]
167
 
168
- def render_tab(trial: dict) -> None:
169
- official_title = trial["protocolSection"]["identificationModule"]["officialTitle"]
170
- st.write(f"##### {official_title}")
171
-
172
- brief_summary = trial["protocolSection"]["descriptionModule"]["briefSummary"]
173
- st.write(brief_summary)
174
-
175
- status_module = {
176
- "Status": trial["protocolSection"]["statusModule"]["overallStatus"],
177
- "Status Date": trial["protocolSection"]["statusModule"]["statusVerifiedDate"],
178
- }
179
- st.write("###### Status")
180
- st.table(status_module)
181
-
182
- design_module = {
183
- "Study Type": trial["protocolSection"]["designModule"]["studyType"],
184
- # "Phases": trial["protocolSection"]["designModule"]["phases"], # breaks formatting because it is an array
185
- "Allocation": trial["protocolSection"]["designModule"]["designInfo"]["allocation"],
186
- "Participants": trial["protocolSection"]["designModule"]["enrollmentInfo"]["count"],
187
- }
188
- st.write("###### Design")
189
- st.table(design_module)
190
-
191
  tabs = st.tabs(tab_titles)
192
 
193
  for i in range(0, len(tabs)):
194
  with tabs[i]:
195
- render_tab(trials[i])
 
12
  get_similarities_among_diseases_uris,
13
  augment_the_set_of_diseaces,
14
  get_clinical_trials_related_to_diseases,
15
+ get_clinical_records_by_ids,
16
+ render_trial_details
17
  )
18
  from llm_res import get_short_summary_out_of_json_files
19
  import json
 
166
 
167
  tab_titles = [f"{trial['protocolSection']['identificationModule']['nctId']}" for trial in trials]
168
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
169
  tabs = st.tabs(tab_titles)
170
 
171
  for i in range(0, len(tabs)):
172
  with tabs[i]:
173
+ render_trial_details(trials[i])
utils.py CHANGED
@@ -4,6 +4,7 @@ import os
4
  from sqlalchemy import create_engine, text
5
  import requests
6
  from sentence_transformers import SentenceTransformer
 
7
 
8
  username = "demo"
9
  password = "demo"
@@ -190,6 +191,51 @@ def get_clinical_trials_related_to_diseases(
190
 
191
  return [{"nct_id": row[0], "distance": row[1]} for row in data]
192
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
193
 
194
  if __name__ == "__main__":
195
  username = "demo"
 
4
  from sqlalchemy import create_engine, text
5
  import requests
6
  from sentence_transformers import SentenceTransformer
7
+ import streamlit as st
8
 
9
  username = "demo"
10
  password = "demo"
 
191
 
192
  return [{"nct_id": row[0], "distance": row[1]} for row in data]
193
 
194
+ def to_capitalized_case(string: str) -> str:
195
+ string = string.replace("_", " ")
196
+ if string.isupper():
197
+ return string[0] + string[1:].lower()
198
+
199
+ def list_to_capitalized_case(strings: List[str]) -> str:
200
+ strings = [to_capitalized_case(s) for s in strings]
201
+ return ", ".join(strings)
202
+
203
+ def render_trial_details(trial: dict) -> None:
204
+ # TODO: handle key errors for all cases (→ do not render)
205
+
206
+ official_title = trial["protocolSection"]["identificationModule"]["officialTitle"]
207
+ st.write(f"##### {official_title}")
208
+
209
+ brief_summary = trial["protocolSection"]["descriptionModule"]["briefSummary"]
210
+ st.write(brief_summary)
211
+
212
+ status_module = {
213
+ "Status": to_capitalized_case(trial["protocolSection"]["statusModule"]["overallStatus"]),
214
+ "Status Date": trial["protocolSection"]["statusModule"]["statusVerifiedDate"],
215
+ "Has Results": trial["hasResults"]
216
+ }
217
+ st.write("###### Status")
218
+ st.table(status_module)
219
+
220
+ design_module = {
221
+ "Study Type": to_capitalized_case(trial["protocolSection"]["designModule"]["studyType"]),
222
+ "Phases": list_to_capitalized_case(trial["protocolSection"]["designModule"]["phases"]),
223
+ "Allocation": to_capitalized_case(trial["protocolSection"]["designModule"]["designInfo"]["allocation"]),
224
+ "Primary Purpose": to_capitalized_case(trial["protocolSection"]["designModule"]["designInfo"]["primaryPurpose"]),
225
+ "Participants": trial["protocolSection"]["designModule"]["enrollmentInfo"]["count"],
226
+ "Masking": to_capitalized_case(trial["protocolSection"]["designModule"]["designInfo"]["maskingInfo"]["masking"]),
227
+ "Who Masked": list_to_capitalized_case(trial["protocolSection"]["designModule"]["designInfo"]["maskingInfo"]["whoMasked"])
228
+ }
229
+ st.write("###### Design")
230
+ st.table(design_module)
231
+
232
+ interventions_module = {}
233
+ for intervention in trial["protocolSection"]["armsInterventionsModule"]["interventions"]:
234
+ name = intervention["name"]
235
+ desc = intervention["description"]
236
+ interventions_module[name] = desc
237
+ st.write("###### Interventions")
238
+ st.table(interventions_module)
239
 
240
  if __name__ == "__main__":
241
  username = "demo"