View source with raw comments or as raw
    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).
 solve(+Query, +Case)
Solves Query and display the result in human format. The latter is a hack for now, suppressing the normal output.

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).
 save_tree(+Tree, +File)
Write the justification tree to File. Used for comparison with the original version.
   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 MODELS
contraindication(ace_inhibitors). % UNCOMMENT THIS FACT ?- chose(arbs).
?- chose(hydralazine).