Sie sind auf Seite 1von 8

CODIGO FUENTE COMENTADO

enfermedad(neumonia).
enfermedad(tuberculosis).
enfermedad(hepatitisB).
enfermedad(gastritis).
enfermedad(sinusitis).
%-------------------------------------------------------------------% sintoma(X,Y) = X es sintoma de Y, donde Y es enfermedad
%---------------------------------------------------------------% enfermedad: Neumonia
sintoma(fiebre,neumonia).
sintoma(dolorTorxico , neumonia).
sintoma(dolorCabeza , neumonia).
sintoma(escalofrios, neumonia).
sintoma(tos,neumonia).
% enfermedad: Tuberculosis
sintoma(fiebre,tuberculosis).
sintoma(cansancio,tuberculosis).
sintoma(prdidaPeso,tuberculosis).
sintoma(faltaApetito,tuberculosis).
sintoma(tos ,tuberculosis).
sintoma(sudoracion ,tuberculosis).
% enfermedad: Hepatitis B
sintoma(fiebre,hepatitisB).
sintoma(nauseas,hepatitisB).
sintoma(dolorParteAltaAbdomen,hepatitisB).
sintoma(ictericia,hepatitisB).%color amarillo de la piel y el ojo
sintoma(orinaColorOscuro,hepatitisB).
% enfermedad: Gastritis
sintoma(distencionAbdominal,gastritis).
sintoma(nauseas,gastritis).
sintoma(dolorParteAltaAbdomen,gastritis).
sintoma(faltaApetito,gastritis).
sintoma(acidezEstomacal,gastritis).
% enfermedad: Sinusitis
sintoma(fiebre,sinusitis).
sintoma(congestionSecrecionNasal,sinusitis).
sintoma(dolorCabeza,sinusitis).
sintoma(tos,sinusitis).
%-------------------------------------------------------------------% medicamento(X,Y) = X es medicamento de Y
%-------------------------------------------------------------------% enfermedad: Neumonia
medicamento(ibuprofeno ,neumonia).
medicamento(azitromicina,neumonia).
medicamento(claritromicina,neumonia).
medicamento(amoxicilina,neumonia).
medicamento(dextrometorfano,neumonia).
% enfermedad: Tuberculosis
medicamento(ibuprofeno ,tuberculosis).
medicamento(complejoB,tuberculosis).
medicamento(pirazinamida,tuberculosis).

medicamento(ribavirina,tuberculosis).
medicamento(dextrometorfano,tuberculosis).
% enfermedad: Hepatitis B
medicamento(ibuprofeno,hepatitisB).
medicamento(ondansetron,hepatitisB).
medicamento(omeprazol ,hepatitisB).
medicamento(timosina ,hepatitisB).
medicamento(entecavir,hepatitisB).
% enfermedad: Gastritis
medicamento(almax ,gastritis).
medicamento(ondansetron,gastritis).
medicamento(omeprazol ,gastritis).
medicamento(ribavirina_l,gastritis).
medicamento(ridocaina ,gastritis).
% enfermedad: Sinusitis
medicamento(ibuprofeno,sinusitis).
medicamento(ampicilina,sinusitis).
medicamento(clindamicina ,sinusitis).
medicamento(amoxicilina,sinusitis).
medicamento(dextrometorfano,sinusitis).
%--------------------------------------------------------% tiene_sintoma(X,Y) = paciente X tiene sintoma de Y
%--------------------------------------------------------tiene_sintoma(juan,escalofrios).
tiene_sintoma(juan,tos).
tiene_sintoma(pedro,escalofrios).
tiene_sintoma(ana,fiebre).
tiene_sintoma(ana,tos).
tiene_sintoma(maria,ictericia).
tiene_sintoma(maria,vomitos).
tiene_sintoma(maria,cansancio).
tiene_sintoma(carlos,fiebre).
tiene_sintoma(carlos,dolorParteAltaAbdomen).
tiene_sintoma(carlos,nauseas).
% especialidad(X) = X es especialidad
% -------------------------------------------------------------------especialidad(neumologia).
especialidad(hepatologia).
especialidad(otorinolaringologia).
especialidad(gastroenterologia).
especialidad(medicinaGeneral).
%--------------------------------------------------------% doctor(X) = X es doctor
%--------------------------------------------------------doctor(ramonMendoza).
doctor(luisPerez).
doctor(jennyCornejo).
doctor(cesarHernandez).

doctor(mariluPeralta).
doctor(jaimeParra).
doctor(marcoMollo).
doctor(rosaCasavilca).
% especialista_en(X,Y) = X es especialista en Y(especialidad)
%----------------------------------------------------------------especialista_en( ramonMendoza ,neumologia).
especialista_en( luisPerez ,hepatologia).
especialista_en( jennyCornejo ,otorinolaringologia).
especialista_en( jennyCornejo ,medicinaGeneral).
especialista_en( jennyCornejo ,gastroenterologia).
especialista_en( cesarHernandez ,gastroenterologia).
especialista_en( mariluPeralta ,medicinaGeneral).
especialista_en( jaimeParra ,otorinolaringologia).
especialista_en( marcoMollo ,neumologia).
especialista_en( rosaCasavilca ,medicinaGeneral).
especialista_en( rosaCasavilca, neumologia).
% tratado_en(X,Y) = X(enfermedad) es tratado en Y(especialidad)
%------------------------------------------------------------------tratado_en(neumonia,neumologia).
tratado_en(hepatitisB,hepatologia).
tratado_en(sinusitis,otolaringologia).
tratado_en(gastritis,gastroenterologia).
tratado_en(tuberculosis,medicinaGeneral).
tratado_en(tuberculosis,neumologia).
% hace_bien(X,Y) = ingrediente X propiedad curativa para enfermedad Y
%-------------------------------------------------------------------% enfermedad: Neumonia
hace_bien(verduracocida,neumonia).
hace_bien(papaamarilla,neumonia).
hace_bien(pollohervido,neumonia).
hace_bien(aguacaliente,neumonia).
hace_bien(eucalipto,neumonia).
hace_bien(miel,neumonia).
hace_bien(apio,neumonia).
hace_bien(zapallo,neumonia).
hace_bien(zanahoria,neumonia).
% enfermedad: Gastritis
hace_bien(verduracocida,gastritis).
hace_bien(papaamarilla,gastritis).
hace_bien(pollohervido,gastritis).
hace_bien(aguacaliente,gastritis).
hace_bien(eucalipto,gastritis).
hace_bien(miel,gastritis).
hace_bien(apio,gastritis).
hace_bien(zapallo,gastritis).
hace_bien(zanahoria,gastritis).
hace_bien(mantequilla,gastritis).
hace_bien(leche,gastritis).
% enfermedad: sinusitis
hace_bien(aguacaliente,sinusitis).
hace_bien(eucalipto,sinusitis).

hace_bien(apio,sinusitis).
hace_bien(zapallo,sinusitis).
hace_bien(zanahoria,sinusitis).
hace_bien(mantequilla,sinusitis).
hace_bien(limon,sinusitis).
hace_bien(harinadetrigo,sinusitis).
% enfermedad: tuberculosis
hace_bien(verduracocida,tuberculosis).
hace_bien(papaamarilla,tuberculosis).
hace_bien(pollohervido,tuberculosis).
hace_bien(aguacaliente,tuberculosis).
hace_bien(eucalipto,tuberculosis).
hace_bien(lecheSoya,tuberculosis).
hace_bien(platano,tuberculosis).
hace_bien(zapallo,tuberculosis).
hace_bien(zanahoria,tuberculosis).
hace_bien(limon,tuberculosis).
hace_bien(harinadetrigo,tuberculosis).
hace_bien(mantequilla,tuberculosis).
% enfermedad: hepatitis B
hace_bien(apio,hepatitisB).
hace_bien(zapallo,hepatitisB).
hace_bien(zanahoria,hepatitisB).
hace_bien(limon,hepatitisB).
hace_bien(harinadetrigo,hepatitisB).
hace_bien(mantequilla,hepatitisB).
% hace_mal(X,Y) = ingrediente X propiedad negativa para enfermedad Y
%------------------------------------------------------------------hace_mal(harinadetrigo,neumonia).
hace_mal(mantequilla,neumonia).
hace_mal(leche,neumonia).
hace_mal(leche,tuberculosis).
hace_mal(papaamarilla,hepatitisB).
hace_mal(leche,hepatitisB).
hace_mal(aguacaliente,gastritis).
hace_mal(limon,gastritis).
hace_mal(mantequilla,gastritis).
hace_mal(mantequilla,sinusitis).
hace_mal(leche,sinusitis).
%------------------------------------------------------------------% platillo(P) = P es platillo
%------------------------------------------------------------------platillo(sopaDieta).
platillo(teEucalipto).
platillo(sopadeverduras).
platillo(chapo).
platillo(shambar).
platillo(tortillakiwicha).
platillo(purdepapas).
platillo(pasteldelimon).
platillo(empanada).

%-------------------------------------------------------------------% restaurante(R) = R es restaurante


%---------------------------------------------------------------restaurante(rinconAyacuchano).
restaurante(alCarbon).
restaurante(surChico).
%-------------------------------------------------------------------% buscar_restaurante(P,R) = el platillo P se sirve en el restaurante R
%---------------------------------------------------------------buscar_restaurante(sopaDieta,alCarbon).
buscar_restaurante(teEucalipto,alCarbon).
buscar_restaurante(sopadeverduras,surChico).
buscar_restaurante(chapo,rinconAyacuchano).
buscar_restaurante(shambar,rinconAyacuchano).
buscar_restaurante(tortillakiwicha,rinconAyacuchano).
buscar_restaurante(purdepapas,surChico).
buscar_restaurante(pastellimon,surChico).
buscar_restaurante(empanada,alCarbon).
%------------------------------------------------------------------% ingrediente(X) = X es ingrediente
%------------------------------------------------------------------ingredientePlatillo(papaamarilla).
ingredientePlatillo(pollohervido).
ingredientePlatillo(verduracocida).
ingredientePlatillo(aguacaliente).
ingredientePlatillo(eucalipto).
ingredientePlatillo(miel).
ingredientePlatillo(apio).
ingredientePlatillo(zapallo).
ingredientePlatillo(zanahoria).
ingredientePlatillo(platano).
ingredientePlatillo(lecheSoya).
ingredientePlatillo(trigo).
ingredientePlatillo(arverjasSecas).
ingredientePlatillo(garbanzo).
ingredientePlatillo(kiwicha).
ingredientePlatillo(huevo).
ingredientePlatillo(cebollaPicada).
ingredientePlatillo(leche).
ingredientePlatillo(limon).
ingredientePlatillo(harinadetrigo).
ingredientePlatillo(mantequilla).
ingredientePlatillo(carne).
%------------------------------------------------------------------% ingrediente(X,Y) = X es ingrediente del plato Y
%------------------------------------------------------------------ingrediente(papaamarilla,sopaDieta).
ingrediente(pollohervido,sopaDieta).
ingrediente(verduracocida,sopaDieta).
ingrediente(aguacaliente,teEucalipto).
ingrediente(eucalipto,teEucalipto).
ingrediente(miel,teEucalipto).
ingrediente(apio,sopadeverduras).
ingrediente(zapallo,sopadeverduras).

ingrediente(zanahoria,sopadeverduras).
ingrediente(platano,chapo).
ingrediente(lecheSoya,chapo).
ingrediente(aguacaliente,chapo).
ingrediente(trigo,shambar).
ingrediente(arverjasSecas,shambar).
ingrediente(garbanzo,shambar).
ingrediente(kiwicha,tortillaKiwicha).
ingrediente(huevo,tortillaKiwicha).
ingrediente(cebollaPicada,tortillaKiwicha).
ingrediente(papaamarilla,purdepapas).
ingrediente(leche,purdepapas).
ingrediente(aguacaliente,purdepapas).
ingrediente(limon,pasteldelimon).
ingrediente(harinadetrigo,pasteldelimon).
ingrediente(mantequilla,pasteldelimon).
ingrediente(cebollaPicada,empanada).
ingrediente(mantequilla,empanada).
ingrediente(harinadetrigo,empanada).
ingrediente(carne,empanada).

%===================================================================
%ESPECIFICACION DE REGLAS
%===================================================================
%---------------------------------------------------%paciente X debe tomar la lista de medicamentos P
%---------------------------------------------------debe_tomar_medicamento(X,P):- findall(Y,tiene_sintoma(X,Y),L),findall(M,buscar_m
edicamento(L,M),Z),sinDuplicados(Z,P).
%---------------------------------------------------%elemento X no pertenece a la lista, donde [Y|Ys] es la lista
%Y es la cabeza y Ys es la cola.
%---------------------------------------------------noPertenece(X,[]).
noPertenece(X,[Y|Ys]):-X\=Y,noPertenece(X,Ys).
%---------------------------------------------------%elemento X pertenece a la lista
%---------------------------------------------------pertenece(X,[X|_]).
pertenece(X,[_|T]):- pertenece(X,T).

%---------------------------------------------------%paciente X debe tomar la lista de medicamentos P


%---------------------------------------------------sinDuplicados([],[]).
sinDuplicados([X|Xs],[X|Ys]):-noPertenece(X,Xs),sinDuplicados(Xs,Ys).
sinDuplicados([X|Xs],Ys):- pertenece(X,Xs),sinDuplicados(Xs,Ys).
%------------------------------------------------------------%dado una lista de sintomas se indicar que medicamentos tomar
%------------------------------------------------------------buscar_medicamento(X,M):-sintoma(X, E), medicamento(M,E).
buscar_medicamento([X|Xs],M ) :- buscar_medicamento(X,M) ; buscar_medicamento(Xs
,M).
%------------------------------------------------------------%el metodo buscar nos permite encontrar la enfermedad E que tenga
%todos los sintomas de la lista [X,Xs]
%------------------------------------------------------------buscar([],E,0).
buscar(X , E , 1) :- sintoma(X, E).
buscar([X|Xs] , E ,P) :- enfermedad(E) , buscar(X , E , S1) , buscar(Xs , E ,S2)
, P is S1 + S2.
%-----------------------------------------------------------------%nos permite saber la cantidad K de sintomas para la enfermedad E
%-----------------------------------------------------------------totalSintoma(E , K) :- findall(X , sintoma(X, E) , L) , length(L , K) .
%-----------------------------------------------------------------%dado una lista de sintomas nos permite saber las posibles enfermedades
%con sus respectivos porcentajes.
%-----------------------------------------------------------------diagnostico([X|Xs] , E , K) :- buscar([X|Xs] , E , P) , totalSintoma(E , T) , K
is P * 100 / T.

% -----------------------------------------------------------------% Paciente X tiene enfermedad E con un porcentaje C


%----------------------------------------------------------------tiene_enfermedad(X,E,C):-findall(Y,tiene_sintoma(X,Y),L),diagnostico(L , E , C).
% -----------------------------------------------------------------% la lista de pacientes L tiene enfermedad E
%----------------------------------------------------------------padece(L,E):-sintoma(S,E),findall(X,tiene_sintoma(X,S),L).
%----------------------------------%medicamento M alivia los sintomas S
%----------------------------------alivia_sintoma(M,S):-medicamento(M,E),sintoma(S,E).
%---------------------------------------------------------------%Cantidad C de medicamentos que pueden aliviar la enfermedad E
%---------------------------------------------------------------cant_medicamentos(E,C):- findall(M,medicamento(M,E),L), length(L,C).
%------------------------------------------------------------------%doctor_especialista(Y,X) = Y es el doctor especialista en enfermedad X.

%------------------------------------------------------------------doctor_especialista(Y,X) :- especialista_en(Y,Z),tratado_en(X,Z).
buscar_especialista(X,Y):-sintoma(X, E), doctor_especialista(Y,E).
buscar_especialista([X|Xs],Y ) :- buscar_especialista(X,Y) ; buscar_especialista
(Xs,Y).
%------------------------------------------------------------------%paciente X puede atenderse con el medico Y
%------------------------------------------------------------------puede_atenderse(X,Y):- findall(S,tiene_sintoma(X,S),L),buscar_especialista(L,Y )
.
%---------------------------------------------------------------%el medico P trata los sintomas S
%---------------------------------------------------------------trata_sintoma(P,S):-doctor_especialista(P,E),findall(Y,sintoma(Y,E),L),sinDuplic
ados(L,S).
%---------------------------------------------------------------%medico P receta medicamentos M
%---------------------------------------------------------------receta_medicamento(P,M):- doctor_especialista(P,E),medicamento(M,E).
%---------------------------------------------------------------%medico P trata cantidad de sntomas C
%---------------------------------------------------------------tratar_cant_sintoma(P,C):-doctor_especialista(P,E),totalSintoma(E,C).
%---------------------------------------------------------------%lista de platillos L con bueno para enfermedad E
%---------------------------------------------------------------alivia_mal1(P,E):- ingrediente(Z,P),hace_bien(Z,E).
alivia_mal(L,E):- enfermedad(E),findall(PL,alivia_mal1(PL,E),LL),sinDuplicados(L
L,L).
%--------------------------------------------------------------------%enfermedad E puede encontrar platillo que le alivie en restaurante R
%--------------------------------------------------------------------%buscar_restaurante(P,R).
rest_plato([],[]).
rest_plato(K,X) :- buscar_restaurante(X,R).
rest_plato(K,[X|Xs]) :- rest_plato(K,X),rest_plato(K,Xs).
encontrar_platillo_bueno(E,K):- alivia_mal(L,E),rest_plato(K,L).
%---------------------------------------------------------------%platillo P es malo para enfermedad E
%---------------------------------------------------------------inadecuado_para_mal(P,E):- ingrediente(Z,P),hace_mal(Z,E).
%---------------------------------------------------------------%ingrediente X sirve para preparar platillo P
%---------------------------------------------------------------sirve_para_preparar([],P).
sirve_para_preparar(X,P):-ingrediente(X,P).
sirve_para_preparar([X,Xs],P):-sirve_para_preparar(X,P),sirve_para_preparar(Xs,P
).

Das könnte Ihnen auch gefallen