%@ 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
Set rs1 = CreateObject("ADODB.Recordset")
rs1.CursorType = AdopenKeyset
rs1.LockType = adLockOptimistic
'********************************************
'**** 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
'****************************************************************************************
'**** BUSCA LOS IDENTIFICADOR_SUBPRUEBA REALIZADAS AL PACIENTE
'****************************************************************************************
SQL = "SELECT SUBPRUEBA.IDENTIFICADOR_SUBPRUEBA FROM SUBPRUEBA INNER JOIN (RESULTADO INNER JOIN HISTORIA_RESULTADO ON RESULTADO.IDENTIFICADOR_RESULTADO = HISTORIA_RESULTADO.IDENTIFICADOR_RESULTADO) ON SUBPRUEBA.IDENTIFICADOR_SUBPRUEBA = RESULTADO.IDENTIFICADOR_SUBPRUEBA "
SQL = SQL + " WHERE HISTORIA_RESULTADO.IDENTIFICADOR_HISTORIA = " + CSTR(IDENTIFICADOR_HISTORIA_ACTUAL)
'Set rs1 = CreateObject("ADODB.Recordset")
'rs1.CursorType = AdopenKeyset
'rs1.LockType = adLockOptimistic
rs1.Open SQL, "DSN=SEX"
REDIM PruebasRealizadas(0)
NPruebasRealizadas = 0
WHILE rs1.eof = false
REDIM preserve PruebasRealizadas(NPruebasRealizadas)
PruebasRealizadas(NPruebasRealizadas) = rs1.fields(0)
NPruebasRealizadas = NPruebasRealizadas + 1
'response.write cstr(rs1.fields(0)) + "
"
rs1.movenext
wend
rs1.close
'****************************************************************************************
'**** BUSCA LOS IDENTIFICADOR_RESULTADO REALIZADAS AL PACIENTE
'****************************************************************************************
SQL = "SELECT identificador_resultado FROM HISTORIA_RESULTADO WHERE HISTORIA_RESULTADO.IDENTIFICADOR_HISTORIA = " + CSTR(IDENTIFICADOR_HISTORIA_ACTUAL)
'Set rs1 = CreateObject("ADODB.Recordset")
'rs1.CursorType = AdopenKeyset
'rs1.LockType = adLockOptimistic
rs1.Open SQL, "DSN=SEX"
REDIM IdentificadoresPruebasRealizadas(0)
NIdentificadoresPruebasRealizadas = 0
WHILE rs1.eof = false
REDIM preserve IdentificadoresPruebasRealizadas(NIdentificadoresPruebasRealizadas)
IdentificadoresPruebasRealizadas(NIdentificadoresPruebasRealizadas) = rs1.fields(0)
NIdentificadoresPruebasRealizadas = NIdentificadoresPruebasRealizadas + 1
'response.write cstr(rs1.fields(0)) + "
"
rs1.movenext
wend
rs1.close
'****************************************************************************************
'**** BUSCA LOS IDENTIFICADOR_RESULTADO CONTRARIOS A LOS DEL PACIENTE Y DISTINTOS DE 1 Y 4
'****************************************************************************************
IF NPruebasRealizadas > 0 THEN
SQL= "SELECT RESULTADO.IDENTIFICADOR_RESULTADO FROM SUBPRUEBA INNER JOIN RESULTADO ON SUBPRUEBA.IDENTIFICADOR_SUBPRUEBA = RESULTADO.IDENTIFICADOR_SUBPRUEBA "
SQL = SQL + " WHERE RESULTADO.VALOR_RESULTADO NOT IN (0,1,4) "
SQL = SQL + " AND RESULTADO.IDENTIFICADOR_RESULTADO NOT IN ("
FOR I = 0 TO NIdentificadoresPruebasRealizadas - 1
SQL = SQL + cstr(IdentificadoresPruebasRealizadas(I))
IF I < NIdentificadoresPruebasRealizadas - 1 THEN
SQL = SQL + ","
END IF
NEXT
SQL = SQL + ")"
SQL = SQL + " AND SUBPRUEBA.IDENTIFICADOR_SUBPRUEBA IN ("
FOR I = 0 TO NPruebasRealizadas - 1
SQL = SQL + cstr(PruebasRealizadas(I))
IF I < NPruebasRealizadas - 1 THEN
SQL = SQL + ","
END IF
NEXT
SQL = SQL + ")"
'response.write "
" + sql + "
"
'Set rs1 = CreateObject("ADODB.Recordset")
'rs1.CursorType = AdopenKeyset
'rs1.LockType = adLockOptimistic
rs1.Open SQL, "DSN=SEX"
REDIM ResultadosContrarios(0)
NResultadosContrarios = 0
WHILE rs1.eof = false
REDIM preserve ResultadosContrarios(NResultadosContrarios)
ResultadosContrarios(NResultadosContrarios) = rs1.fields(0)
NResultadosContrarios = NResultadosContrarios + 1
' response.write cstr(rs1.fields(0)) + "
"
rs1.movenext
wend
rs1.close
END IF
'****************************************************************************************
'**** BUSCA LAS POSIBLES PATOLOGIAS TENIENDO EN CUENTA LOS RESULTADOS DE LAS PRUEBAS
'****************************************************************************************
SQL= "SELECT DISTINCT NOMBRE_PATOLOGIA FROM DIAGNOSTICO_RESULTADO "
SQL = SQL + " WHERE "
SQL = SQL + " NOMBRE_PATOLOGIA IN ('"
FOR I = 0 TO NPosiblePatologia - 1
SQL = SQL + cstr(PosiblePatologia(I))
IF I < NPosiblePatologia - 1 THEN
SQL = SQL + "','"
END IF
NEXT
SQL = SQL + "')"
IF NResultadosContrarios > 0 THEN
SQL = SQL + " AND IDENTIFICADOR_RESULTADO NOT IN ("
FOR I = 0 TO NResultadosContrarios - 1
SQL = SQL + cstr(ResultadosContrarios(I))
IF I < NResultadosContrarios - 1 THEN
SQL = SQL + ","
END IF
NEXT
SQL = SQL + ")"
'response.write "
" + sql + "
"
'Set rs1 = CreateObject("ADODB.Recordset")
'rs1.CursorType = AdopenKeyset
'rs1.LockType = adLockOptimistic
rs1.Open SQL, "DSN=SEX"
'REDIM ResultadosContrarios(0)
'NResultadosContrarios = 0
'response.write "LAS POSIBLES PATOLOGIAS DESPUES DEL DESCARTE SON:" + "
"
NPP=0
redim PosiblePatologia(0)
WHILE rs1.eof = false
redim OrdenadaPosiblePatologia(NPP)
redim PesoPosiblePatologia(NPP)
redim preserve PosiblePatologia(NPP)
PosiblePatologia(NPP) = rs1.fields(0)
'response.write cstr(rs1.fields(0)) + "
"
NPP=NPP+1
rs1.movenext
wend
rs1.close
'response.write "EL NUEMRO DE POSIBLES PATOLOGIAS SON=" + CSTR(NPP) + "
"
NPosiblePatologia = NPP
END IF
%>
e-REdING. Biblioteca de la Escuela Superior de Ingenieros de Sevilla.