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_Simulado"
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_Simulado FROM Diagnostico_Simulado 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_Simulado) as Suma FROM Diagnostico_Simulado 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_Simulado) as Suma FROM Diagnostico_Simulado 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 II
"
Response.write "
Posibles patologias ordenadas y con sus pesos relativos
"
if NPosiblePatologia > 0 then
Response.write "
"
Response.write "
Patologia
Pesos relativos( % )
"
For I=0 to NPosiblePatologia - 1
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.