1:- use_module(library(scasp)). 2:- use_module(library(scasp/human)). 3
4:- use_module('PAS_rules'). 5:- use_module('PAS_guide'). 6:- use_module('PAS_patient'). 7
8case(1,
9 [ case_measurement(age, 76),
10 case_evidence(african_american),
11 case_evidence(male),
12
13 14 case_evidence(nyha_class_4),
15 case_evidence(accf_stage_c),
16
17 18 case_contraindication(continuous_positive_airway_pressure),
19
20 21 case_diagnosis(ischemic_heart_disease),
22 case_diagnosis(hypertension),
23 case_diagnosis(diabetes),
24 case_diagnosis(atrial_fibrillation),
25
26 27
28 29 case_evidence(sleepApnea),
30 case_evidence(angina),
31
32 33 case_history(stroke),
34 case_history(ischemic_attack),
35
36 37 case_measurement(lvef, 0.35),
38 case_measurement(heart_rate, 72),
39 case_measurement(creatinine, 1.9),
40 case_measurement(glomerular_filtration_rate, 55),
41 case_measurement(potassium, 4.2),
42
43 44 case_history(ace_inhibitors),
45 case_history(beta_blockers)
46 ]).
47
48load_case(Case) :-
49 case(Case, Data),
50 patient_data(Data).
51
60
61solve(Query, Case) :-
62 load_case(Case),
63 setup_call_cleanup(
64 set_output(false, false, State),
65 ( scasp(Query),
66 scasp_justification(Tree, []),
67 human_justification_tree(Tree),
68 save_tree(Tree, us)
69 ),
70 restore_output(State)).
71
72set_output(Model, Justification, s(OldModel, OldJustification)) :-
73 current_prolog_flag(scasp_show_justification, OldJustification),
74 current_prolog_flag(scasp_show_model, OldModel),
75 set_prolog_flag(scasp_show_justification, Justification),
76 set_prolog_flag(scasp_show_model, Model).
77
78restore_output(s(OldModel, OldJustification)) :-
79 set_prolog_flag(scasp_show_justification, OldJustification),
80 set_prolog_flag(scasp_show_model, OldModel).
81
86
87save_tree(Tree, File) :-
88 message_to_string(scasp_justification(Tree,
89 [ depth(1)
90 ]),
91 String),
92 setup_call_cleanup(open(File, write, Out),
93 write(Out, String),
94 close(Out)).
95
99
104
115
116
120
124