<%@ LANGUAGE = "VBScript" %> SISTEMA EXPERTO <% IDENTIFICADOR_HISTORIA_ACTUAL = session("HISTORIA_ACTUAL") dim NSintoma NSintoma = 0 redim Sintoma(0) dim NPosiblePatologia NPosiblePatologia = 0 redim PosiblePatologia(0) redim OrdenadaPosiblePatologia(0) redim PesoPosiblePatologia(0) '**** Prepara la conexion Const AdopenKeyset = 1 Const adLockOptimistic = 3 '******************************************** '**** Busca los sintomas del caso actual '******************************************** SQL= "SELECT nombre_sintoma FROM historia_sintoma WHERE identificador_historia = " + cstr(IDENTIFICADOR_HISTORIA_ACTUAL) Set rs1 = CreateObject("ADODB.Recordset") rs1.CursorType = AdopenKeyset rs1.LockType = adLockOptimistic rs1.Open SQL, "DSN=SEX" J=0 while rs1.eof = false ReDim Preserve Sintoma(J) Sintoma(J) = rs1.fields(0) NSintoma = NSintoma + 1 rs1.movenext J=J+1 wend rs1.Close '******************************************************* '**** Busca las posibles patologias del caso actual '******************************************************* SQL= "SELECT DISTINCT nombre_patologia FROM diagnostico_base" SQL = SQL + " WHERE nombre_sintoma IN ('" FOR I = 0 TO NSintoma - 1 SQL = SQL + Sintoma(I) IF I < NSintoma - 1 THEN SQL = SQL + "','" END IF NEXT SQL = SQL + "') ORDER BY nombre_patologia ASC" Set rs1 = CreateObject("ADODB.Recordset") rs1.CursorType = AdopenKeyset rs1.LockType = adLockOptimistic rs1.Open SQL, "DSN=SEX" J=0 while rs1.eof = false NPosiblePatologia = NPosiblePatologia + 1 redim OrdenadaPosiblePatologia(J) redim PesoPosiblePatologia(J) redim preserve PosiblePatologia(J) PosiblePatologia(J) = rs1.fields(0) rs1.movenext J=J+1 wend rs1.Close '******************************************** '**** Empieza la orientacion al diagnostico '******************************************** For Contador_J=0 to NPosiblePatologia - 1 PesoRelativoPatologia=0 PesoPatologiaJSintomaI=0 PesoParcialPatologiaJSintomaI=0 ContadorBase=0 FOR Contador_I=0 TO NSintoma - 1 SQL= "SELECT Contador_Base FROM Diagnostico_Base WHERE Nombre_Patologia like '" + PosiblePatologia(Contador_J) + "' and Nombre_Sintoma like '" + Sintoma(Contador_I) + "'" Set rs1 = CreateObject("ADODB.Recordset") rs1.CursorType = AdopenKeyset rs1.LockType = adLockOptimistic rs1.Open SQL, "DSN=SEX" IF rs1.bof=false and rs1.eof=false THEN ContadorBase= rs1.Fields(0) rs1.Close SQL= "SELECT sum(Contador_Base) as Suma FROM Diagnostico_Base WHERE Nombre_Sintoma like '" + Sintoma(Contador_I) + "'" Set rs1 = CreateObject("ADODB.Recordset") rs1.CursorType = AdopenKeyset rs1.LockType = adLockOptimistic rs1.Open SQL, "DSN=SEX" PesoParcialPatologiaJSintomaI=ContadorBase/rs1.Fields(0) rs1.Close SQL= "SELECT sum(Contador_Base) as Suma FROM Diagnostico_Base WHERE Nombre_Patologia like '" + PosiblePatologia(Contador_J) + "'" Set rs1 = CreateObject("ADODB.Recordset") rs1.CursorType = AdopenKeyset rs1.LockType = adLockOptimistic rs1.Open SQL, "DSN=SEX" PesoPatologiaJSintomaI=(PesoParcialPatologiaJSintomaI*ContadorBase)/rs1.Fields(0) PesoRelativoPatologia=PesoRelativoPatologia+PesoPatologiaJSintomaI rs1.close PesoPosiblePatologia(Contador_J)=PesoRelativoPatologia END IF NEXT Next Redim PatologiasOrdenadas(Contador_J,2) dim Elegida FOR Vez=0 TO Contador_J - 1 PatologiasOrdenadas(Vez,1) = PosiblePatologia(0) PatologiasOrdenadas(Vez,2) = PesoPosiblePatologia(0) Elegida=0 FOR A=1 TO Contador_J - 1 IF PesoPosiblePatologia(A) > PatologiasOrdenadas(Vez,2) THEN PatologiasOrdenadas(Vez,1)=PosiblePatologia(A) PatologiasOrdenadas(Vez,2)=PesoPosiblePatologia(A) Elegida=A END IF NEXT PesoPosiblePatologia(Elegida)=0 NEXT Dim Suma Suma=0 For I=0 to NPosiblePatologia - 1 Suma = Suma + PatologiasOrdenadas(I,2) Next Response.write "
ORIENTACION TIPO I

" Response.write "
Posibles patologias ordenadas y con sus pesos relativos

" if NPosiblePatologia > 0 then Response.write "" Response.write "" For I=0 to NPosiblePatologia - 1 Response.write "" Next Response.write "
Patologia
Pesos relativos( % )
" + PatologiasOrdenadas(I,1) + "
" + Cstr( Cint( PatologiasOrdenadas(I,2)*10000/Suma ) /100 ) + "( % )
" Response.Write "

Numero de posibles patologias = " + cstr(NPosiblePatologia) + "
" else Response.Write "

No existen patologías asociadas con los síntomas y resultados de pruebas realizadas.
" end if 'session("NumPatologiasFiltradas")=NPosiblePatologia 'session("PatologiasFiltradas")=PosiblePatologia %> e-REdING. Biblioteca de la Escuela Superior de Ingenieros de Sevilla.


SISTEMA EXPERTO APLICADO A LA ATENCIÓN PRIMARIA MÉDICA. AYUDA AL DIAGNÓSTICO

: Calle Suarez, Marcos
: Ingeniería Organización
Contenido del proyecto: