2021-06-12 18:36:16 +02:00
% | = = = = = = = = = = = = = = = = = = = = = = = |
% | = = disease data base == |
% | = = = = = = = = = = = = = = = = = = = = = = = |
disease ( 'flu' , [ ( 'pain' , [ 'throat' ] ) , ( 'runny nose' ) , ( 'fever' , - 1 ) , ( 'general weakness' ) , ( 'cough' ) ] , [ ( 'pain' , [ 'muscles' ] ) ] ) .
2021-06-12 16:14:29 +02:00
disease ( 'malaria' , [ ( 'fever' , 2 ) , ( 'general weakness' ) ] , [ ( 'pain' , [ 'head' ] ) , ( 'chills' ) , ( 'erythrocyte' , - 1 ) ] ) .
2021-06-12 16:21:07 +02:00
disease ( 'angina' , [ ( 'fever' , 2 ) , ( 'cough' ) , ( 'general weakness' ) , ( 'magnifying lymph nodes' ) , ( 'pain' , [ 'throat' ] ) ] , [ ( 'cannot swallow' ) , ( 'pain' , [ 'head' ] ) , ( 'chills' ) ] ) .
2021-06-12 16:14:29 +02:00
disease ( 'diphtheria' , [ ( 'fever' , 1 ) , ( 'general weakness' ) , ( 'dyspnea' ) ] , [ ( 'Unclear Speech' ) , ( 'cannot swallow' ) ] ) .
disease ( 'typhoid' , [ ( 'fever' , - 1 ) , ( 'pain' , [ 'stomach' ] ) , ( 'spleen enlargement' ) ] , [ 'tire symptoms' ] ) .
disease ( 'plague' , [ ( 'fever' , 2 ) , ( 'general weakness' ) , ( 'magnifying lymph nodes' ) , ( 'liver enlargement' ) , ( 'spleen enlargement' ) ] , [ ( 'cloded rash' ) ] ) .
disease ( 'haemophilia' , [ ( 'epistaxis' ) , ( 'impaired blood clotting' ) , ( 'spleen enlargement' ) ] , [] ) .
2021-06-12 16:21:07 +02:00
disease ( 'whooping cough' , [ ( 'fever' , 1 ) , ( 'pain' , [ 'throat' ] ) , ( 'paroxysmal cough' ) ] , [ ( 'conjunctivitis' ) , ( 'vomiting' ) ] ) .
2021-06-12 16:14:29 +02:00
disease ( 'myasthenia' , [ ( 'excessive fatigue' ) ] , [ ( 'muscle weakness' ) , ( 'double vision' ) ] ) .
2021-06-12 18:36:16 +02:00
disease ( 'atrial fibrillation' , [ ( 'dizziness' ) , ( 'fainting' ) , ( 'excessive fatigue' ) ] , [ ( 'cough' ) ] ) .
% | = = = = = = = = = = = = = = = = = = = = = |
% | = = main procedures == |
% | = = = = = = = = = = = = = = = = = = = = = |
% temporarily returning true
diagnose ( Sentence , Answer ) : - true .
% | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = |
% | = = 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 ) ,
includesAny ( Symptoms , ExpectedSymptoms ) ,
includesAll ( ExpectedSymptoms , Symptoms ) ,
! .
% | = suggest procedure = |
% flu
suggest ( Symptoms , Answer ) : -
checkForDiseaseStrong ( Symptoms , 'flu' ) ,
Answer = "The patients disease is almost certainly flu." .
suggest ( Symptoms , Answer ) : -
checkForDiseaseWeak ( Symptoms , 'flu' ) ,
Answer = "The patients disease might be flu." .
% malaria
suggest ( Symptoms , Answer ) : -
checkForDiseaseStrong ( Symptoms , 'malaria' ) ,
Answer = "The patients disease is almost certainly malaria." .
suggest ( Symptoms , Answer ) : -
checkForDiseaseWeak ( Symptoms , 'malaria' ) ,
Answer = "The patients disease might be malaria." .
% angina
suggest ( Symptoms , Answer ) : -
checkForDiseaseStrong ( Symptoms , 'angina' ) ,
Answer = "The patients disease is almost certainly angina." .
suggest ( Symptoms , Answer ) : -
checkForDiseaseWeak ( Symptoms , 'angina' ) ,
Answer = "The patients disease might be angina." .
% diphtheria
suggest ( Symptoms , Answer ) : -
checkForDiseaseStrong ( Symptoms , 'diphtheria' ) ,
Answer = "The patients disease is almost certainly diphtheria." .
suggest ( Symptoms , Answer ) : -
checkForDiseaseWeak ( Symptoms , 'diphtheria' ) ,
Answer = "The patients disease might be diphtheria." .
% typhoid
suggest ( Symptoms , Answer ) : -
checkForDiseaseStrong ( Symptoms , 'typhoid' ) ,
Answer = "The patients disease is almost certainly typhoid." .
suggest ( Symptoms , Answer ) : -
checkForDiseaseWeak ( Symptoms , 'typhoid' ) ,
Answer = "The patients disease might be typhoid." .
% plague
suggest ( Symptoms , Answer ) : -
checkForDiseaseStrong ( Symptoms , 'plague' ) ,
Answer = "The patients disease is almost certainly plague." .
suggest ( Symptoms , Answer ) : -
checkForDiseaseWeak ( Symptoms , 'plague' ) ,
Answer = "The patients disease might be plague." .
% haemophilia
suggest ( Symptoms , Answer ) : -
checkForDiseaseStrong ( Symptoms , 'haemophilia' ) ,
Answer = "The patients disease is almost certainly haemophilia." .
suggest ( Symptoms , Answer ) : -
checkForDiseaseWeak ( Symptoms , 'haemophilia' ) ,
Answer = "The patients disease might be haemophilia." .
% whooping cough
suggest ( Symptoms , Answer ) : -
checkForDiseaseStrong ( Symptoms , 'whooping cough' ) ,
Answer = "The patients disease is almost certainly whooping cough." .
suggest ( Symptoms , Answer ) : -
checkForDiseaseWeak ( Symptoms , 'whooping cough' ) ,
Answer = "The patients disease might be whooping cough." .
% myasthenia
suggest ( Symptoms , Answer ) : -
checkForDiseaseStrong ( Symptoms , 'myasthenia' ) ,
Answer = "The patients disease is almost certainly myasthenia." .
suggest ( Symptoms , Answer ) : -
checkForDiseaseWeak ( Symptoms , 'myasthenia' ) ,
Answer = "The patients disease might be myasthenia." .
% atrial fibrillation
suggest ( Symptoms , Answer ) : -
checkForDiseaseStrong ( Symptoms , 'atrial fibrillation' ) ,
Answer = "The patients disease is almost certainly atrial fibrillation." .
suggest ( Symptoms , Answer ) : -
checkForDiseaseWeak ( Symptoms , 'atrial fibrillation' ) ,
2021-06-13 16:48:31 +02:00
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 ) .