<%@ 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.


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

: Calle Suarez, Marcos
: Ingeniería Organización