2021-06-12 18:36:16 +02:00
% | = = = = = = = = = = = = = = = = = = = = = = = |
% | = = disease data base == |
% | = = = = = = = = = = = = = = = = = = = = = = = |
2021-06-13 21:16:24 +02:00
disease ( "flu" , [ ( "pain" , [ "throat" ] ) , ( "runny nose" ) , ( "fever" , - 1 ) , ( "general weakness" ) , ( "coughs" ) ] , [ ( "pain" , [ "muscles" ] ) ] ) .
2021-06-13 17:19:24 +02:00
disease ( "malaria" , [ ( "fever" , 2 ) , ( "general weakness" ) ] , [ ( "pain" , [ "head" ] ) , ( "chills" ) , ( "erythrocyte" , - 1 ) ] ) .
2021-06-13 21:16:24 +02:00
disease ( "angina" , [ ( "fever" , 2 ) , ( "coughs" ) , ( "general weakness" ) , ( "magnifying lymph nodes" ) , ( "pain" , [ "throat" ] ) ] , [ ( "cannot swallow" ) , ( "pain" , [ "head" ] ) , ( "chills" ) ] ) .
2021-06-13 17:19:24 +02:00
disease ( "diphtheria" , [ ( "fever" , 1 ) , ( "general weakness" ) , ( "dyspnea" ) ] , [ ( "Unclear Speech" ) , ( "cannot swallow" ) ] ) .
2021-06-13 21:16:24 +02:00
disease ( "typhoid" , [ ( "fever" , 0 ) , ( "pain" , [ "stomach" ] ) , ( "spleen enlargement" ) ] , [ "tire symptoms" ] ) .
2021-06-13 17:19:24 +02:00
disease ( "plague" , [ ( "fever" , 2 ) , ( "general weakness" ) , ( "magnifying lymph nodes" ) , ( "liver enlargement" ) , ( "spleen enlargement" ) ] , [ ( "cloded rash" ) ] ) .
2021-06-13 21:16:24 +02:00
disease ( "haemophilia" , [ ( "epistaxis" ) , ( "impaired blood clotting" ) , ( "spleen enlargement" ) ] , [ ( "fever" , 0 ) , ( "fever" , 1 ) , ( "fever" , 2 ) ] ) .
disease ( "whooping cough" , [ ( "fever" , 1 ) , ( "pain" , [ "throat" ] ) , ( "paroxysmal cough" ) ] , [ ( "conjunctivitis" ) , ( "vomits" ) ] ) .
disease ( "myasthenia" , [ ( "excessive fatigue" ) ] , [ ( "muscle weakness" ) , ( "double vision" ) , ( "fever" , 0 ) , ( "fever" , 1 ) , ( "fever" , 2 ) ] ) .
disease ( "atrial fibrillation" , [ ( "dizziness" ) , ( "faints" ) , ( "excessive fatigue" ) ] , [ ( "coughs" ) , ( "fever" , 1 ) , ( "fever" , 2 ) , ( "fever" , 3 ) ] ) .
2021-06-12 18:36:16 +02:00
% | = = = = = = = = = = = = = = = = = = = = = |
% | = = main procedures == |
% | = = = = = = = = = = = = = = = = = = = = = |
2021-06-13 17:19:24 +02:00
diagnose ( Sentence , Answer ) : -
interpret ( Sentence , Symptoms ) ,
suggest ( Symptoms , Answer ) .
2021-06-12 18:36:16 +02:00
2021-06-13 21:16:24 +02:00
% | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = |
% | = = data parsing procedures == |
% | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = |
% | = interprete input = |
interpret ( Input , Symptoms ) : -
split_string ( Input , "." , " " , Splited ) ,
iterate ( Splited , A ) ,
flatten ( A , Symptoms ) .
% | = auxiliary procedures = |
envelop ( [ X ] , [ Z ] ) : -
Z = ( X ) .
envelop ( [ X | Xs ] , [ Z | Zs ] ) : -
Z = ( X ) ,
envelop ( Xs , Zs ) .
2021-06-13 21:25:03 +02:00
envelopPain ( [ X ] , [ Z ] ) : -
Z = ( "pain" , [ X ] ) .
envelopPain ( [ X | Xs ] , [ Z | Zs ] ) : -
Z = ( "pain" , [ X ] ) ,
envelopPain ( Xs , Zs ) .
2021-06-13 21:16:24 +02:00
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 ) ] ) ;
2021-06-13 21:25:03 +02:00
( sub_string ( X , _ , _ , _ , "Patients " ) - > string_length ( X , AA ) , L is AA - 15 , sub_string ( X , 9 , L , _ , AAA ) , split_string ( AAA , "," , " " , AAAA ) , envelopPain ( AAAA , Z ) ; Z = "cannot interprete" ) ) ) ) ) ,
2021-06-13 21:16:24 +02:00
iterate ( Xs , WithoutLast ) .
2021-06-12 18:36:16 +02:00
% | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = |
% | = = disease recognizing procedures == |
% | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = |
% | = auxiliary procedures = |
includesAll ( _ , [] ) : - true , ! .
includesAll ( List , [ Inhd | Intl ] ) : - member ( Inhd , List ) , includesAll ( List , Intl ) , ! .
includesAny ( _ , [] ) : - false , ! .
includesAny ( List , [ Inhd | Intl ] ) : - member ( Inhd , List ) ; includesAny ( List , Intl ) , ! .
checkForDiseaseStrong ( Symptoms , Disease ) : -
disease ( Disease , ObligatorySymptoms , AdditionalSymptoms ) ,
append ( ObligatorySymptoms , AdditionalSymptoms , ExpectedSymptoms ) ,
includesAll ( Symptoms , ObligatorySymptoms ) ,
includesAll ( ExpectedSymptoms , Symptoms ) ,
! .
checkForDiseaseWeak ( Symptoms , Disease ) : -
disease ( Disease , ObligatorySymptoms , AdditionalSymptoms ) ,
append ( ObligatorySymptoms , AdditionalSymptoms , ExpectedSymptoms ) ,
2021-06-13 17:19:24 +02:00
not ( checkForDiseaseStrong ( Symptoms , Disease ) ) ,
2021-06-12 18:36:16 +02:00
includesAny ( Symptoms , ExpectedSymptoms ) ,
includesAll ( ExpectedSymptoms , Symptoms ) ,
! .
% | = suggest procedure = |
% flu
suggest ( Symptoms , Answer ) : -
2021-06-13 17:19:24 +02:00
checkForDiseaseStrong ( Symptoms , "flu" ) ,
2021-06-12 18:36:16 +02:00
Answer = "The patients disease is almost certainly flu." .
suggest ( Symptoms , Answer ) : -
2021-06-13 17:19:24 +02:00
checkForDiseaseWeak ( Symptoms , "flu" ) ,
2021-06-12 18:36:16 +02:00
Answer = "The patients disease might be flu." .
% malaria
suggest ( Symptoms , Answer ) : -
2021-06-13 17:19:24 +02:00
checkForDiseaseStrong ( Symptoms , "malaria" ) ,
2021-06-12 18:36:16 +02:00
Answer = "The patients disease is almost certainly malaria." .
suggest ( Symptoms , Answer ) : -
2021-06-13 17:19:24 +02:00
checkForDiseaseWeak ( Symptoms , "malaria" ) ,
2021-06-12 18:36:16 +02:00
Answer = "The patients disease might be malaria." .
% angina
suggest ( Symptoms , Answer ) : -
2021-06-13 17:19:24 +02:00
checkForDiseaseStrong ( Symptoms , "angina" ) ,
2021-06-12 18:36:16 +02:00
Answer = "The patients disease is almost certainly angina." .
suggest ( Symptoms , Answer ) : -
2021-06-13 17:19:24 +02:00
checkForDiseaseWeak ( Symptoms , "angina" ) ,
2021-06-12 18:36:16 +02:00
Answer = "The patients disease might be angina." .
% diphtheria
suggest ( Symptoms , Answer ) : -
2021-06-13 17:19:24 +02:00
checkForDiseaseStrong ( Symptoms , "diphtheria" ) ,
2021-06-12 18:36:16 +02:00
Answer = "The patients disease is almost certainly diphtheria." .
suggest ( Symptoms , Answer ) : -
2021-06-13 17:19:24 +02:00
checkForDiseaseWeak ( Symptoms , "diphtheria" ) ,
2021-06-12 18:36:16 +02:00
Answer = "The patients disease might be diphtheria." .
% typhoid
suggest ( Symptoms , Answer ) : -
2021-06-13 17:19:24 +02:00
checkForDiseaseStrong ( Symptoms , "typhoid" ) ,
2021-06-12 18:36:16 +02:00
Answer = "The patients disease is almost certainly typhoid." .
suggest ( Symptoms , Answer ) : -
2021-06-13 17:19:24 +02:00
checkForDiseaseWeak ( Symptoms , "typhoid" ) ,
2021-06-12 18:36:16 +02:00
Answer = "The patients disease might be typhoid." .
% plague
suggest ( Symptoms , Answer ) : -
2021-06-13 17:19:24 +02:00
checkForDiseaseStrong ( Symptoms , "plague" ) ,
2021-06-12 18:36:16 +02:00
Answer = "The patients disease is almost certainly plague." .
suggest ( Symptoms , Answer ) : -
2021-06-13 17:19:24 +02:00
checkForDiseaseWeak ( Symptoms , "plague" ) ,
2021-06-12 18:36:16 +02:00
Answer = "The patients disease might be plague." .
% haemophilia
suggest ( Symptoms , Answer ) : -
2021-06-13 17:19:24 +02:00
checkForDiseaseStrong ( Symptoms , "haemophilia" ) ,
2021-06-12 18:36:16 +02:00
Answer = "The patients disease is almost certainly haemophilia." .
suggest ( Symptoms , Answer ) : -
2021-06-13 17:19:24 +02:00
checkForDiseaseWeak ( Symptoms , "haemophilia" ) ,
2021-06-12 18:36:16 +02:00
Answer = "The patients disease might be haemophilia." .
% whooping cough
suggest ( Symptoms , Answer ) : -
2021-06-13 17:19:24 +02:00
checkForDiseaseStrong ( Symptoms , "whooping cough" ) ,
2021-06-12 18:36:16 +02:00
Answer = "The patients disease is almost certainly whooping cough." .
suggest ( Symptoms , Answer ) : -
2021-06-13 17:19:24 +02:00
checkForDiseaseWeak ( Symptoms , "whooping cough" ) ,
2021-06-12 18:36:16 +02:00
Answer = "The patients disease might be whooping cough." .
% myasthenia
suggest ( Symptoms , Answer ) : -
2021-06-13 17:19:24 +02:00
checkForDiseaseStrong ( Symptoms , "myasthenia" ) ,
2021-06-12 18:36:16 +02:00
Answer = "The patients disease is almost certainly myasthenia." .
suggest ( Symptoms , Answer ) : -
2021-06-13 17:19:24 +02:00
checkForDiseaseWeak ( Symptoms , "myasthenia" ) ,
2021-06-12 18:36:16 +02:00
Answer = "The patients disease might be myasthenia." .
% atrial fibrillation
suggest ( Symptoms , Answer ) : -
2021-06-13 17:19:24 +02:00
checkForDiseaseStrong ( Symptoms , "atrial fibrillation" ) ,
2021-06-12 18:36:16 +02:00
Answer = "The patients disease is almost certainly atrial fibrillation." .
suggest ( Symptoms , Answer ) : -
2021-06-13 17:19:24 +02:00
checkForDiseaseWeak ( Symptoms , "atrial fibrillation" ) ,
2021-06-13 16:48:31 +02:00
Answer = "The patients disease might be atrial fibrillation." .