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 %* Assessments *% 14 case_evidence(nyha_class_4), 15 case_evidence(accf_stage_c), 16 17 %* Contraindications *% 18 case_contraindication(continuous_positive_airway_pressure), 19 20 %* Diagnoses *% 21 case_diagnosis(ischemic_heart_disease), 22 case_diagnosis(hypertension), 23 case_diagnosis(diabetes), 24 case_diagnosis(atrial_fibrillation), 25 26 %* Dosages *% 27 28 %* Evidence *% 29 case_evidence(sleepApnea), 30 case_evidence(angina), 31 32 %* Illness History *% 33 case_history(stroke), 34 case_history(ischemic_attack), 35 36 %* Measurements *% 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 %* Medication History *% 44 case_history(ace_inhibitors), 45 case_history(beta_blockers) 46 ]). 47 48load_case(Case) :- 49 case(Case, Data), 50 patient_data(Data).
Examples
?- solve(chose(ace_inhibitors), 1).
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).
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)).recommendation(anticoagulation).
?- chose(anticoagulation).recommendation(beta_blockers).
% %---------- Beta_blockers concomitants the choice of diuretics
?- chose(beta_blockers).recommendation(aldosterone_antagonist), recommendation(ace_inhibitors).
% %---------- We can not choose both of them at the same time
?- chose(aldosterone_antagonist), chose(ace_inhibitors). % NO MODELS
% %---------- E.g., Ace_inhibitors can be chosen:
% % if Aldosterone_antagonist is discarded
% % if arbs is also discarded
% % and if diuretics is chosen (it is concomitant)
?- chose(ace_inhibitors).chose(arbs). % NO MODELScontraindication(ace_inhibitors). % UNCOMMENT THIS FACT
?- chose(arbs).chose(hydralazine).