|
17 | 17 | # under the License. |
18 | 18 | # |
19 | 19 |
|
20 | | -import copy |
21 | 20 | import inspect |
22 | 21 | import time |
23 | 22 |
|
@@ -224,50 +223,58 @@ def get_query_handles(example_id): |
224 | 223 | .add_role_edge(r, p, 'person-at-risk', PREEXISTS) |
225 | 224 | .add_role_edge(r, d, 'risked-disease', PREEXISTS)) |
226 | 225 |
|
227 | | - # === Diagnosis === |
228 | | - diagnosis_query = inspect.cleandoc(f'''match |
| 226 | + # === Symptom === |
| 227 | + vars = p, s, sn, d, dn, sp, sev, c = 'p', 's', 'sn', 'd', 'dn', 'sp', 'sev', 'c' |
| 228 | + |
| 229 | + symptom_query = inspect.cleandoc(f'''match |
229 | 230 | $p isa person, has example-id {example_id}; |
230 | 231 | $s isa symptom, has name $sn; |
231 | 232 | $d isa disease, has name $dn; |
232 | 233 | $sp(presented-symptom: $s, symptomatic-patient: $p) isa symptom-presentation, has severity $sev; |
233 | 234 | $c(cause: $d, effect: $s) isa causality; |
| 235 | + get;''') |
| 236 | + |
| 237 | + symptom_query_graph = (QueryGraph() |
| 238 | + .add_vars(vars, PREEXISTS) |
| 239 | + .add_has_edge(s, sn, PREEXISTS) |
| 240 | + .add_has_edge(d, dn, PREEXISTS) |
| 241 | + .add_role_edge(sp, s, 'presented-symptom', PREEXISTS) |
| 242 | + .add_has_edge(sp, sev, PREEXISTS) |
| 243 | + .add_role_edge(sp, p, 'symptomatic-patient', PREEXISTS) |
| 244 | + .add_role_edge(c, s, 'effect', PREEXISTS) |
| 245 | + .add_role_edge(c, d, 'cause', PREEXISTS)) |
| 246 | + |
| 247 | + # === Diagnosis === |
| 248 | + |
| 249 | + diag, d, p, dn = 'diag', 'd', 'p', 'dn' |
| 250 | + |
| 251 | + diagnosis_query = inspect.cleandoc(f'''match |
| 252 | + $p isa person, has example-id {example_id}; |
| 253 | + $d isa disease, has name $dn; |
234 | 254 | $diag(patient: $p, diagnosed-disease: $d) isa diagnosis; |
235 | 255 | get;''') |
236 | 256 |
|
237 | | - vars = p, s, sn, d, dn, sp, sev, c = 'p', 's', 'sn', 'd', 'dn', 'sp', 'sev', 'c' |
238 | | - base_query_graph = (QueryGraph() |
239 | | - .add_vars(vars, PREEXISTS) |
240 | | - .add_has_edge(s, sn, PREEXISTS) |
241 | | - .add_has_edge(d, dn, PREEXISTS) |
242 | | - .add_role_edge(sp, s, 'presented-symptom', PREEXISTS) |
243 | | - .add_has_edge(sp, sev, PREEXISTS) |
244 | | - .add_role_edge(sp, p, 'symptomatic-patient', PREEXISTS) |
245 | | - .add_role_edge(c, s, 'effect', PREEXISTS) |
246 | | - .add_role_edge(c, d, 'cause', PREEXISTS)) |
247 | | - |
248 | | - diag, d, p = 'diag', 'd', 'p' |
249 | | - |
250 | | - diagnosis_query_graph = (copy.copy(base_query_graph) |
| 257 | + diagnosis_query_graph = (QueryGraph() |
251 | 258 | .add_vars([diag], TO_INFER) |
| 259 | + .add_vars([d, p, dn], PREEXISTS) |
252 | 260 | .add_role_edge(diag, d, 'diagnosed-disease', TO_INFER) |
253 | 261 | .add_role_edge(diag, p, 'patient', TO_INFER)) |
254 | 262 |
|
255 | 263 | # === Candidate Diagnosis === |
256 | 264 | candidate_diagnosis_query = inspect.cleandoc(f'''match |
257 | 265 | $p isa person, has example-id {example_id}; |
258 | | - $s isa symptom, has name $sn; |
259 | 266 | $d isa disease, has name $dn; |
260 | | - $sp(presented-symptom: $s, symptomatic-patient: $p) isa symptom-presentation, has severity $sev; |
261 | | - $c(cause: $d, effect: $s) isa causality; |
262 | 267 | $diag(candidate-patient: $p, candidate-diagnosed-disease: $d) isa candidate-diagnosis; |
263 | 268 | get;''') |
264 | 269 |
|
265 | | - candidate_diagnosis_query_graph = (copy.copy(base_query_graph) |
| 270 | + candidate_diagnosis_query_graph = (QueryGraph() |
266 | 271 | .add_vars([diag], CANDIDATE) |
| 272 | + .add_vars([d, p, dn], PREEXISTS) |
267 | 273 | .add_role_edge(diag, d, 'candidate-diagnosed-disease', CANDIDATE) |
268 | 274 | .add_role_edge(diag, p, 'candidate-patient', CANDIDATE)) |
269 | 275 |
|
270 | 276 | return [ |
| 277 | + (symptom_query, lambda x: x, symptom_query_graph), |
271 | 278 | (diagnosis_query, lambda x: x, diagnosis_query_graph), |
272 | 279 | (candidate_diagnosis_query, lambda x: x, candidate_diagnosis_query_graph), |
273 | 280 | (risk_factor_query, lambda x: x, risk_factor_query_graph), |
|
0 commit comments