diff --git a/asd.pl b/asd.pl index d20e764..d038f41 100644 --- a/asd.pl +++ b/asd.pl @@ -144,4 +144,31 @@ suggest(Symptoms, Answer) :- suggest(Symptoms, Answer) :- checkForDiseaseWeak(Symptoms, 'atrial fibrillation'), - Answer = "The patients disease might be atrial fibrillation.". \ No newline at end of file + Answer = "The patients disease might be atrial fibrillation.". + +% interprete input + +interpret(Input, Symptoms) :- +split_string(Input, ".", " ", Splited), +iterate(Splited,A), +flatten(A, Symptoms). + + envelop([X], [Z]):- +Z=(X). + +envelop([X|Xs], [Z|Zs]) :- +Z=(X), +envelop(Xs,Zs). + +iterate([_], []). + + +iterate([X|Xs], [Z|WithoutLast]) :- + (sub_string(X,_,_,_,'Patient has ')->string_length(X,AA),L is AA-12, sub_string(X,12,L,_,AAA), split_string(AAA, ",", " ", AAAA),envelop(AAAA,Z); + (sub_string(X,_,_,_,'Patient ')->string_length(X,AA),L is AA-8, sub_string(X,8,L,_,AAA), split_string(AAA, ",", " ", AAAA),envelop(AAAA,Z); + (sub_string(X,_,_,_,'Patients erythrocyte level is ')->string_length(X,AA),L is AA-30, sub_string(X,30,L,_,AAA), re_replace(",",".",AAA,AAAA), number_string(VAL,AAAA), (VAL>4.2->(VAL>5.4->Z=('erythrocyte',1);Z=('erythrocyte',0));Z=[('erythrocyte',-1)]); + (sub_string(X,_,_,_,'Patients temperature is ')->string_length(X,AA), sub_string(X,24,4,_,AAA), re_replace(",",".",AAA,AAAA), number_string(VAL,AAAA), (VAL>37.0->(VAL>38.0->Z=('fever',2);Z=('fever',1));Z=[('fever',0)]); + (sub_string(X,_,_,_,'Patients ')->string_length(X,AA),L is AA-15, sub_string(X,9,L,_,AAA), split_string(AAA, ",", " ", AAAA), Z=[('pain',AAAA)];Z='cannot interprete'))))), + iterate(Xs, WithoutLast). + +