autor: tutor - repositorio digital: página de inicio · 4.5 funcionamiento de la aplicación ......
TRANSCRIPT
UNIVERSIDAD CENTRAL DEL ECUADOR
FACULTAD DE INGENIERÍA, CIENCIAS FÍSICAS Y MATEMÁTICA
CARRERA DE INGENIERÍA INFORMÁTICA
“DIGITALIZACIÓN Y AUTOMATIZACIÓN DE LA GESTIÓN DE HISTORIAS
CLÍNICAS PEDIÁTRICAS EN EL HOSPITAL DEL DÍA DE LA UNIVERSIDAD
CENTRAL DEL ECUADOR MEDIANTE EL DISEÑO Y CONSTRUCCIÓN DE
UNA APLICACIÓN WEB”
TRABAJO DE GRADUACIÓN PREVIO A LA OBTENCIÓN DEL TÍTULO DE
INGENIERO INFORMÁTICO.
AUTOR: NELSON WLADIMIR TRUJILLO GUERRÓN.
TUTOR: ING. RENÉ ALFONSO CARRILLO FLORES, MSC.
QUITO – ECUADOR
2016
ii
DEDICATORIA
A Dios por la salud y permitirme realizar el presente trabajo de graduación, a mis
padres y a mi familia por su apoyo y palabras de aliento, a mis maestros y a mis
amigos por brindarme su conocimiento y ayuda en todo momento.
iii
AGRADECIMIENTO
A mi familia por la compresión y por sus consejos de continuar siempre mejorando y
logrando nuevos objetivos.
A mi tutor de tesis por su compresión y guía para culminar con éxito el presente
trabajo de graduación.
A mis padres por su empeño y esfuerzo diario, y el amor que me brindan que ha sido
pilar fundamental en mi vida.
iv
AUTORIZACIÓN DE LA AUTORÍA INTELECTUAL
Yo, NELSON WLADIMIR TRUJILLO GUERRÓN, en calidad de autor de la tesis
realizada sobre “DIGITALIZACIÓN Y AUTOMATIZACIÓN DE LA GESTIÓN
DE HISTORIAS CLÍNICAS PEDIÁTRICAS EN EL HOSPITAL DEL DÍA DE LA
UNIVERSIDAD CENTRAL DEL ECUADOR MEDIANTE EL DISEÑO Y
CONSTRUCCIÓN DE UNA APLICACIÓN WEB”, por la presente autorizo a la
UNIVERSIDAD CENTRAL DEL ECUADOR, hacer uso de todos los casos de
contenidos que me pertenecen o de parte de los que contienen esta obra, con fines
estrictamente académicos o de investigación.
Los derechos que como autor me corresponden, con excepción de la presente
autorización, seguirán vigentes a mi favor, de conformidad con lo establecido en los
artículos 5, 6, 8, 19 y demás pendientes de la ley de la Propiedad Intelectual y su
reglamento.
Quito, 1 de Diciembre de 2015
NELSON WLADIMIR TRUJILLO GUERRÓN
C.C.: 1719004218
x
Contenido
CAPITULO 1 ............................................................................................................... 1
1.1 Introducción ................................................................................................... 1
1.2 Planteamiento del problema .......................................................................... 2
1.3 Justificación ................................................................................................... 3
1.4 Hipótesis ........................................................................................................ 4
1.5 Objetivos ....................................................................................................... 4
1.5.1 Objetivo General .................................................................................... 4
1.5.2 Objetivos Específicos ............................................................................. 4
1.6 Alcance .......................................................................................................... 5
CAPITULO 2 ............................................................................................................... 6
2.1 Aplicaciones de una sola Página (SPA) ........................................................ 6
2.2 REST ............................................................................................................. 8
2.2.1 Servicios Web RESTful ........................................................................... 10
2.2.2 URIs ..................................................................................................... 10
2.2.2.1 URIs CRUD ..................................................................................... 11
2.2.2.2 URIs Relacionales ............................................................................ 11
2.2.2.3 URIs No CRUD ................................................................................ 12
2.2.2.4 URIs para filtros ............................................................................... 12
2.2.2.5 URIs para ordenamiento ................................................................... 13
2.2.2.6 URIs para búsqueda .......................................................................... 13
2.2.2.7 URIs alias ......................................................................................... 13
2.2.2.8 URIs para recupera por campos ....................................................... 14
2.2.2.9 URIs para paginación ....................................................................... 14
2.3 Autenticación basada en Tokens ................................................................. 15
2.4 JSON Web Tokens (JWT) ........................................................................... 16
2.5 El Stack Spring MVC - AngularJS .............................................................. 18
2.5.1 Frontend - AngularJS ............................................................................... 18
2.5.2 Backend – Spring MVC ........................................................................... 19
CAPITULO 3 ............................................................................................................. 20
1.1 Metodología de Desarrollo .......................................................................... 20
1.1.1 Ventajas del modelo espiral ................................................................. 22
1.1.2 Desventajas del modelo espiral ............................................................ 22
CAPITULO 4 ............................................................................................................. 23
xi
Análisis y descripción de la aplicación ...................................................................... 23
4.1 Actores ......................................................................................................... 23
4.2 Casos de uso ................................................................................................ 23
4.2.1 Caso de uso Identificarse ......................................................................... 24
4.2.2 Caso de uso Buscar Historia Clínica........................................................ 24
4.2.3 Caso de uso Ver Citas Agendadas ........................................................... 25
4.2.4 Caso de uso Ver Historial Clínico ........................................................... 25
4.2.5 Caso de uso Ver Información Personal.................................................... 26
4.2.6 Caso de uso Ver Antecedentes Familiares ............................................... 26
4.2.7 Caso de uso Ver Antecedentes Personales .............................................. 26
4.2.8 Caso de uso Ver Formulario Historia Clínica .......................................... 27
4.2.9 Caso de uso Imprimir Historia Clínica .................................................... 27
4.2.10 Caso de uso Crear Episodio ..................................................................... 28
4.2.11 Caso de uso Buscar Episodio ................................................................... 28
4.2.12 Caso de uso Ver Episodio ........................................................................ 29
4.2.13 Caso de uso Ingresar Motivo de Consulta ............................................... 30
4.2.14 Caso de uso Ingresar Enfermedad Actual ................................................ 30
4.2.15 Caso de uso Ingresar Revisión Actual ..................................................... 31
4.2.16 Caso de uso Ingresar Examen Físico ....................................................... 31
4.2.17 Caso de uso Ingresar Diagnósticos .......................................................... 32
4.2.18 Caso de uso Ingresar Planes..................................................................... 32
4.2.19 Caso de uso Ingresar Evolución y Prescripciones: .................................. 33
4.2.20 Caso de uso Ver Gráficas......................................................................... 33
4.2.21 Caso de uso Crear Usuario....................................................................... 34
4.2.22 Caso de uso Gestionar Catálogos............................................................. 35
4.2.23 Caso de uso Ver Registros Auditoria ....................................................... 35
4.3 Diagramas de Secuencia .............................................................................. 36
4.3.1 Diagrama de secuencia Crear Usuario ..................................................... 36
4.3.2 Diagrama de secuencia Identificarse ....................................................... 36
4.3.3 Diagrama de secuencia Buscar Historia Clínica ...................................... 37
4.3.4 Diagrama de secuencia Gestionar Formulario Historia Clínica .............. 38
4.3.5 Diagrama de secuencia Historial Clínico ................................................. 39
4.3.6 Diagrama de secuencia Gestionar Catálogos ........................................... 40
4.4 Arquitectura de la aplicación ....................................................................... 41
4.4.1 Servicios RESTful ................................................................................... 45
xii
4.5 Funcionamiento de la aplicación ................................................................. 52
4.5.1 Ingreso a la aplicación: ............................................................................ 52
4.5.2 Pantalla de inicio:..................................................................................... 52
4.5.3 Menú Citas ............................................................................................... 53
4.5.3.1 Buscar Historia: ................................................................................ 53
4.5.3.2 Citas Agendadas ............................................................................... 53
4.5.4 Información Personal ............................................................................... 54
4.5.5 Antecedentes Familiares: ......................................................................... 55
4.5.6 Antecedentes Personales: ......................................................................... 57
4.5.7 Formulario Historial Clínico:................................................................... 58
4.5.8 Gráficas de Crecimiento .......................................................................... 64
4.5.8.1 Circunferencia Cefálica (Puntaje Z) ................................................. 64
4.5.8.2 Circunferencia Cefálica (Percentiles) ............................................... 65
4.5.8.3 Longitud / Estatura (Puntaje Z) ........................................................ 65
4.5.8.4 Longitud / Estatura (Percentiles) ...................................................... 66
4.5.8.5 Peso (Puntaje Z) ............................................................................... 66
4.5.8.6 Peso (Percentiles) ............................................................................. 66
4.5.9 Menú Entidades ....................................................................................... 67
4.5.9.1 Personas ............................................................................................ 68
4.5.9.2 Historia Clínica ................................................................................. 68
4.5.9.3 Países ................................................................................................ 69
4.5.9.4 Provincias ......................................................................................... 69
4.5.9.5 Cantones ........................................................................................... 69
4.5.9.6 Catálogos .......................................................................................... 70
4.5.10 Menú Administración .............................................................................. 74
4.5.11 Menú Cuenta ............................................................................................ 74
4.5.11.1 Ajustes .............................................................................................. 74
4.5.11.2 Contraseña ........................................................................................ 75
4.5.11.3 Cerrar Sesión .................................................................................... 75
4.5.12 Idioma ...................................................................................................... 75
CAPITULO 5 ............................................................................................................. 76
Conclusiones y recomendaciones ........................................................................... 76
Conclusiones .......................................................................................................... 76
Recomendaciones ................................................................................................... 78
GLOSARIO DE TÉRMINOS .................................................................................... 80
xiii
BIBLIOGRAFÍA ....................................................................................................... 83
Libros ...................................................................................................................... 83
Páginas Web ........................................................................................................... 83
ANEXOS ................................................................................................................... 84
Anexo 1. Manual Técnico .......................................................................................... 85
Modelo Entidad Relación ....................................................................................... 85
Persona y Reservaciones ..................................................................................... 85
Historial Clínico .................................................................................................. 86
Episodios ............................................................................................................. 87
Catálogos ............................................................................................................ 88
Auditoria ............................................................................................................. 89
Seguridades y Permisos ...................................................................................... 89
DICCIONARIO DE DATOS ................................................................................. 90
GN_PERSONA .................................................................................................. 90
TN_RESERVACION ......................................................................................... 91
HS_HISTORIA_CLINICA ................................................................................ 91
FAMILYHISTORY ............................................................................................ 91
PERSONALHISTORY ...................................................................................... 92
VITALSIGN ....................................................................................................... 92
CLINICHISTORYADDINF ............................................................................... 92
EPISODE ............................................................................................................ 93
CURRENTILLNESS .......................................................................................... 93
CURRENTREVISION ....................................................................................... 93
DIAGNOSTIC .................................................................................................... 94
EVOLUTIONPRESCRIPTION ......................................................................... 94
PHYSICALEXAM ............................................................................................. 94
PLANS ................................................................................................................ 95
REASON ............................................................................................................ 95
TABLA ............................................................................................................... 95
CATALOG ......................................................................................................... 95
ICD10.................................................................................................................. 96
COUNTRY ......................................................................................................... 96
PROVINCIA ....................................................................................................... 96
CANTON ............................................................................................................ 96
JHI_AUTHORITY ............................................................................................. 96
xiv
JHI_USER .......................................................................................................... 97
JHI_USER_AUTHORITY ................................................................................. 97
JHI_PERSISTENT_AUDIT_EVENT ................................................................ 97
JHI_PERSISTENT_AUDIT_EVT_DATA ........................................................ 98
Anexo 2. Manual de Instalación ................................................................................ 99
Instalación de SQL SERVER 2008 R2 .................................................................. 99
Crear la base de datos fimeped ......................................................................... 104
Firewall de Windows ........................................................................................ 105
Instalar JDK (Java Development Kit) .................................................................. 108
Configuración de variables de entorno ............................................................. 110
Instalar Git ............................................................................................................ 112
Instalar NodeJS: .................................................................................................. 113
Instalar Bower: ..................................................................................................... 114
Configurar Maven ................................................................................................ 115
Configurar IDE Eclipse ........................................................................................ 117
Configurar JDK en el IDE eclipse .................................................................... 118
Confingurar maven en el IDE Eclipse .............................................................. 120
Anexo 3. Manual de Ejecución en modo Desarrollo ............................................... 122
Anexo 4. Manual de Ejecución en modo Producción .............................................. 128
xv
Lista de Figuras
Ilustración 1: Aplicaciones SPA .................................................................................. 7
Ilustración 2: Aplicaciones SPA Capas........................................................................ 8
Ilustración 3: Arquitectura REST................................................................................. 9
Ilustración 4: Autenticación basada en Tokens .......................................................... 16
Ilustración 5: Token ................................................................................................... 18
Ilustración 6: Spring MVC - AngularJS..................................................................... 18
Ilustración 7: Modelo en Espiral ................................................................................ 21
Ilustración 8: Casos de Uso ........................................................................................ 23
Ilustración 9: Crear Usuario ....................................................................................... 36
Ilustración 10: Identificarse........................................................................................ 37
Ilustración 11: Buscar Historia Clínica ...................................................................... 38
Ilustración 12: Gestionar Formulario Historia Clínica............................................... 39
Ilustración 13: Historial Clínico ................................................................................. 40
Ilustración 14: Gestionar Catálogos ........................................................................... 41
Ilustración 15: Arquitectura de la Aplicación ............................................................ 42
Ilustración 16: Template HTML5 .............................................................................. 43
Ilustración 17: Controlador AngularJS ...................................................................... 43
Ilustración 18: Servicio AngularJS ............................................................................ 44
Ilustración 19: Servicio RESTful ............................................................................... 45
Ilustración 20: JpaRepository ..................................................................................... 45
Ilustración 21: Ingreso a la aplicación ....................................................................... 52
Ilustración 22: Pantalla Inicio .................................................................................... 52
Ilustración 23: Menú Citas ......................................................................................... 53
Ilustración 24: Búsqueda de Historias Clínicas ......................................................... 53
Ilustración 25: Citas Agendadas ................................................................................ 53
Ilustración 26: Información Personal ......................................................................... 54
Ilustración 27: Antecedentes Familiares .................................................................... 55
Ilustración 28: Crear Antecedente Familiar ............................................................... 55
Ilustración 29: Editar Antecedente Familiar .............................................................. 56
Ilustración 30: Eliminar Antecedente Familiar .......................................................... 56
Ilustración 31: Antecedentes Personales .................................................................... 57
Ilustración 32: Crear Antecedente Personal ............................................................... 57
Ilustración 33: Editar Antecedente Personal .............................................................. 57
Ilustración 34: Eliminar Antecedente Personal .......................................................... 58
Ilustración 35: Formulario Historial Clínico .............................................................. 58
Ilustración 36: Menú Formulario Historial Clínico ................................................... 59
Ilustración 37: Buscar Episodio ................................................................................. 59
Ilustración 38: Crear Episodio ................................................................................... 59
Ilustración 39: Reporte Historial Clínico ................................................................... 60
Ilustración 40: Motivo de Consulta ............................................................................ 61
Ilustración 41: Enfermedad Actual ............................................................................ 61
Ilustración 42: Revisión Actual .................................................................................. 61
Ilustración 43: Examen Físico .................................................................................... 62
Ilustración 44: Diagnósticos ....................................................................................... 62
xvi
Ilustración 45: CIE 10 ................................................................................................ 63
Ilustración 46: Planes ................................................................................................. 63
Ilustración 47: Evolución y Prescripciones ................................................................ 64
Ilustración 48: Gráfica Circunferencia Cefálica Puntaje Z ........................................ 64
Ilustración 49: Gráfica Circunferencia Cefálica Percentiles ...................................... 65
Ilustración 50: Gráfica Longitud/Estatura Puntaje Z ................................................. 65
Ilustración 51: Gráfica Longitud/Estatura Percentiles ............................................... 66
Ilustración 52: Gráfica Peso Puntaje Z....................................................................... 66
Ilustración 53: Gráfica Peso Percentiles .................................................................... 67
Ilustración 54: Entidades ............................................................................................ 67
Ilustración 55: Personas ............................................................................................. 68
Ilustración 56: Historiales Clínicos ............................................................................ 68
Ilustración 57: Catálogo Países .................................................................................. 69
Ilustración 58: Catálogo Provincias ........................................................................... 69
Ilustración 59: Catálogo Cantones ............................................................................. 69
Ilustración 60: Catálogos............................................................................................ 70
Ilustración 61: Catálogo Diagnósticos ....................................................................... 70
Ilustración 62: Catálogo Antecedente Personales Actividades .................................. 70
Ilustración 63: Catálogo Antecedentes Familiares Enfermedades ............................. 71
Ilustración 64: Catálogo Revisión Actual Con Evidencia Sin Evidencia .................. 71
Ilustración 65: Catálogo Revisión Actual Órganos .................................................... 72
Ilustración 66: Catálogo Examen Físico Partes Del Cuerpo ...................................... 72
Ilustración 67: Catálogo Género ................................................................................ 73
Ilustración 68: Catálogo Nivel de Educación ............................................................ 73
Ilustración 69: Catálogo Estado Civil ........................................................................ 73
Ilustración 70: Menú Administración ........................................................................ 74
Ilustración 71: Menú Cuenta ...................................................................................... 74
Ilustración 72: Ajustes de Usuario ............................................................................. 74
Ilustración 73: Cambiar Contraseña ........................................................................... 75
Ilustración 74: Menú Lenguaje .................................................................................. 75
Ilustración 75: Entidad Relación Personas y Reservaciones...................................... 85
Ilustración 76: Entidad Relación Historial Clínico .................................................... 86
Ilustración 77: Entidad Relación Episodios ............................................................... 87
Ilustración 78: Entidad Relación Catálogo Países ..................................................... 88
Ilustración 79: Entidad Relación Catálogos ............................................................... 88
Ilustración 80: Entidad Relación Auditoria................................................................ 89
Ilustración 81: Entidad Relación Seguridades y Permisos ......................................... 89
Ilustración 82: Nueva instalación SQL Server ........................................................... 99
Ilustración 83: Reglas de Instalación SQL Server ..................................................... 99
Ilustración 84: Selección de Características ............................................................. 100
Ilustración 85: Requisitos de espacio en disco ......................................................... 100
Ilustración 86: Configuración del servidor .............................................................. 101
Ilustración 87: Configuración del motor de base de datos ....................................... 101
Ilustración 88: Inicio de la instalación ..................................................................... 102
Ilustración 89: Instalación Completada .................................................................... 102
Ilustración 90: Ubicación del administrador de SQL Server ................................... 103
Ilustración 91: Iniciar sesión SQL Server ................................................................ 103
xvii
Ilustración 92: Menú contextual crear base de datos ............................................... 104
Ilustración 93: Nueva base de datos ......................................................................... 104
Ilustración 94: Firewall de Windows ....................................................................... 105
Ilustración 95: Reglas del Firewall de Windows ..................................................... 105
Ilustración 96: Elección de puerto en la regla de firewall ........................................ 105
Ilustración 97: Selección protocolo en regla de firewall .......................................... 106
Ilustración 98: Selección tipo de conexión en regla de firewall .............................. 106
Ilustración 99: Selección cuando se aplica la regla en firewall ............................... 107
Ilustración 100: Nombre de la regla ......................................................................... 107
Ilustración 101: Instalar JDK ................................................................................... 108
Ilustración 102: Instalar JRE .................................................................................... 108
Ilustración 103: Instalación de JDK y JRE exitosa .................................................. 109
Ilustración 104: Directorio de instalación del JDK y JRE ....................................... 109
Ilustración 105: Ventana de propiedades del sistema .............................................. 110
Ilustración 106: Variable de entorno ........................................................................ 110
Ilustración 107: Variable de entorno JAVA_HOME ............................................... 111
Ilustración 108: Variable de entorno JRE_HOME .................................................. 111
Ilustración 109: Variable de entorno Path ................................................................ 111
Ilustración 110: Instalación Git ................................................................................ 112
Ilustración 111: Ubicación de Git en el menú .......................................................... 112
Ilustración 112: Instalación NodeJS......................................................................... 113
Ilustración 113: Verificar versión de NodeJS y npm instaladas .............................. 113
Ilustración 114: Instalar Bower ................................................................................ 114
Ilustración 115: Instalar Karma ................................................................................ 114
Ilustración 116: Instalar karma-coverage ................................................................. 114
Ilustración 117: Instalar jasmine-core ...................................................................... 114
Ilustración 118: Crear directorio para ubicación de herramientas ........................... 115
Ilustración 119: Copiar Eclipse a directorio de herramientas .................................. 115
Ilustración 120: Configurar ubicación de Maven en variable de entorno Path ........ 115
Ilustración 121: Ubicación de archivo settings.xml de Maven ................................ 116
Ilustración 122: Repositorio local de Maven ........................................................... 116
Ilustración 123: Verificación versión de Maven instalada ....................................... 116
Ilustración 124: Copiar Maven a directorio de herramientas ................................... 117
Ilustración 125: Iniciar Eclipse ................................................................................ 117
Ilustración 126: Ubicación de workspace ................................................................ 118
Ilustración 127: JRE instalados ................................................................................ 118
Ilustración 128: Tipo de JRE ................................................................................... 119
Ilustración 129: Seleccionar ubicación del JDK ...................................................... 119
Ilustración 130: Marcar jdk como predeterminado .................................................. 120
Ilustración 131: Configuraciones de usuario de Maven ........................................... 120
Ilustración 132: Seleccionar ubicación del archivo setting.xml de Maven .............. 121
Ilustración 133: Aplicar configuraciones de Maven ................................................ 121
Ilustración 134: Copiar código fuente al area de trabajo ......................................... 122
Ilustración 135: Instalación manual de sqljdbc41.jar en el repositorio local de Maven
.................................................................................................................................. 122
Ilustración 136: Instalación de sqljdb41.jar exitosa ................................................ 123
Ilustración 137: Instalación de dependencias java ................................................... 123
xviii
Ilustración 138: Instalación de dependencias java exitosa ....................................... 124
Ilustración 139: Instalación de dependencias JavaScript ......................................... 124
Ilustración 140: Instalación de dependencias JavaScript exitosa ............................. 124
Ilustración 141: Instalación de dependencias JavaScript para el Frontend .............. 125
Ilustración 142: Instalación de dependencias JavaScript para el Frontend exitosa . 125
Ilustración 143: Importación de proyecto ................................................................ 125
Ilustración 144: Configuración de acceso a la Base de datos .................................. 126
Ilustración 145: Ejecución de la aplicación en modo desarrollo.............................. 126
Ilustración 146: Ejecución de aplicación en modo desarrollo exitosa ..................... 127
Ilustración 147: Ingreso a la aplicación en modo desarrollo.................................... 127
Ilustración 148: Ubicación de proyecto apache-tomcat ........................................... 128
Ilustración 149: Configurar variables de entorno para apache-tomcat .................... 128
Ilustración 150: Variable de entorno CATALINA_HOME..................................... 129
Ilustración 151: Configurar variable de entorno Path para apache-tomcat .............. 129
Ilustración 152: Inicio de servidor apache-tomcat ................................................... 129
Ilustración 153: Inicio de servidor apache-tomcat exitoso ...................................... 130
Ilustración 154: Pantalla de bienvenida del servidor apache-tomcat ....................... 130
Ilustración 155: Ubicación del archivo war del proyecto en el servidor apache-tomcat
.................................................................................................................................. 130
Ilustración 156: Configuración de acceso a la base de datos en modo producción . 131
Ilustración 157: Archivo de configuración de la aplicación .................................... 131
Ilustración 158: Ingreso a la aplicación en modo producción.................................. 132
xix
Lista de Tablas
Tabla 1: URIs CRUD ................................................................................................. 11
Tabla 2: URIs Relacionales ........................................................................................ 12
Tabla 3: URIs No CRUD ........................................................................................... 12
Tabla 4: URIs Filtros .................................................................................................. 12
Tabla 5: URIs Ordenamiento ..................................................................................... 13
Tabla 6: URIs Búsqueda ............................................................................................ 13
Tabla 7: URIs Alias .................................................................................................... 14
Tabla 8: URIs Campos ............................................................................................... 14
Tabla 9: URIs Paginación .......................................................................................... 14
Tabla 10: Identificarse................................................................................................ 24
Tabla 11: Buscar Historia Clínica .............................................................................. 25
Tabla 12: Ver Citas Agendadas ................................................................................. 25
Tabla 13: Ver Historial Clínico .................................................................................. 26
Tabla 14: Ver Información Personal .......................................................................... 26
Tabla 15: Ver Antecedentes Familiares ..................................................................... 26
Tabla 16: Ver Antecedentes Personales ..................................................................... 27
Tabla 17: Ver Formulario Historia Clínica ................................................................ 27
Tabla 18: Imprimir Historia Clínica ........................................................................... 28
Tabla 19: Crear Episodio ........................................................................................... 28
Tabla 20: Buscar Episodio ......................................................................................... 29
Tabla 21: Ver Episodio .............................................................................................. 30
Tabla 22: Ingresar Motivo de Consulta ...................................................................... 30
Tabla 23: Ingresar Enfermedad Actual ...................................................................... 31
Tabla 24: Ingresar Revisión Actual ........................................................................... 31
Tabla 25: Ingresar Examen Físico.............................................................................. 32
Tabla 26: Ingresar Diagnósticos................................................................................. 32
Tabla 27: Ingresar Planes ........................................................................................... 33
Tabla 28: Ingresar Evolución y Prescripciones .......................................................... 33
Tabla 29: Ver Gráficas ............................................................................................... 34
Tabla 30: Crear Usuario ............................................................................................. 35
Tabla 31: Gestionar Catálogos ................................................................................... 35
Tabla 32: Ver Registros Auditoria ............................................................................. 36
Tabla 33: RESTful Cuentas ....................................................................................... 46
Tabla 34: RESTful Usuarios ..................................................................................... 46
Tabla 35: RESTful Tablas ......................................................................................... 46
Tabla 36: RESTful Catálogos ................................................................................... 47
Tabla 37: RESTful Cantones .................................................................................... 47
Tabla 38: RESTful Provincias .................................................................................. 47
Tabla 39: RESTful Países .......................................................................................... 47
Tabla 40: RESTful Personas ..................................................................................... 48
Tabla 41: RESTful Historias Clínicas ....................................................................... 48
Tabla 42: RESTful Episodios ................................................................................... 48
Tabla 43: RESTful Antecedentes Personales ............................................................ 49
Tabla 44: RESTful Antecedentes Familiares ............................................................. 49
xx
Tabla 45: RESTful Signos Vitales ............................................................................ 49
Tabla 46: RESTful Motvos de Consulta ................................................................... 50
Tabla 47: RESTful Enfermedad o Problema Actual ................................................. 50
Tabla 48: RESTful Revisión Actual de Órganos y Sistemas .................................... 50
Tabla 49: RESTful Examen Físico ........................................................................... 50
Tabla 50: RESTful Diagnósticos ............................................................................... 51
Tabla 51: RESTful Planes ......................................................................................... 51
Tabla 52: RESTful Evolución y Prescripciones........................................................ 51
Tabla 53: GN_PERSONA.......................................................................................... 91
Tabla 54: TN_RESERVACION ................................................................................ 91
Tabla 55: HS_HISTORIA_CLINICA ....................................................................... 91
Tabla 56: FAMILYHISTORY ................................................................................... 91
Tabla 57: PERSONALHISTORY.............................................................................. 92
Tabla 58: VITALSIGN .............................................................................................. 92
Tabla 59: CLINICHISTORIADDINF ....................................................................... 93
Tabla 60: EPISODE ................................................................................................... 93
Tabla 61: CURRENTILLNESS ................................................................................. 93
Tabla 62: CURRENTREVISION .............................................................................. 93
Tabla 63: DIAGNOSTIC ........................................................................................... 94
Tabla 64: EVOLUTIONPRESCRIPTION ................................................................ 94
Tabla 65: PHYSICALEXAM .................................................................................... 94
Tabla 66: PLANS ....................................................................................................... 95
Tabla 67: REASON ................................................................................................... 95
Tabla 68: TABLA ...................................................................................................... 95
Tabla 69: CATALOG ................................................................................................ 95
Tabla 70: ICD10 ......................................................................................................... 96
Tabla 71: COUNTRY ................................................................................................ 96
Tabla 72: PROVINCIA .............................................................................................. 96
Tabla 73: CANTON ................................................................................................... 96
Tabla 74: JHI_AUTHORITY .................................................................................... 96
Tabla 75: JHI_USER ................................................................................................. 97
Tabla 76: JHI_USER_AUTHORITY ........................................................................ 97
Tabla 77: JHI_PERSISTENT_AUDIT_EVENT ....................................................... 97
Tabla 78: JHI_PERSISTENT_AUDIT_EVT_DATA ............................................... 98
xxi
RESUMEN
DIGITALIZACIÓN Y AUTOMATIZACIÓN DE LA GESTIÓN DE HISTORIAS
CLÍNICAS PEDIÁTRICAS EN EL HOSPITAL DEL DÍA DE LA UNIVERSIDAD
CENTRAL DEL ECUADOR MEDIANTE EL DISEÑO Y CONSTRUCCIÓN DE
UNA APLICACIÓN WEB
El presente trabajo de graduación muestra el desarrollo de una aplicación web SPA
(Aplicación de una sola página) con un diseño responsivo, permitiendo que los
componentes visuales se adapten a diferentes tamaños de pantalla de distintos
dispositivos. El Backend consiste de una API RESTful con autenticación basada en
Tokens lo que facilita la escalabilidad de la aplicación.
El sistema permite la gestión de fichas médicas pediátricas en formato digital
facilitando tareas como búsqueda, almacenamiento y portabilidad. Permite llevar el
control de los antecedentes personales y antecedentes familiares, el control de
gráficas de crecimiento: circunferencia cefálica, longitud/altura y peso tanto en
percentiles como en puntaje Z para niños y niñas desde el nacimiento hasta los cinco
años de edad y el almacenamiento ordenado por episodios de la información
requerida para la elaboración del historial clínico.
Para el desarrollo de la aplicación web se han utilizado todos los conocimientos
adquiridos a lo largo de la carrera de Ingeniería Informática en desarrollo de
software, patrones de diseño, arquitectura de software, bases de datos, además de
haber realizado un estudio de la arquitectura REST, un estilo de arquitectura de
software que se fundamente en las especificaciones del protocolo HTTP.
DESCRIPTORES:
GESTIÓN DE HISTORIAS CLÍNICAS PEDIATRICAS / JAVA / SPRING / REST
/ JAVASCRIPT / ANGULARJS / BOOTSTRAP / SPA / SQL SERVER /
AUTENTICACIÓN BASADA EN TOKEN
xxii
ABSTRACT
SCANNING AND AUTOMATION OF MEDICAL RECORDS MANAGEMENT
IN PEDIATRIC HOSPITAL DAY CENTRAL UNIVERSITY OF ECUADOR
THROUGH THE DESIGN AND CONSTRUCTION OF A WEB APPLICATION
This graduation work shows the development of a SPA web application (Single Page
Application) with a responsive design, visual components adapt to different screen
sizes of different devices. The backend is a RESTful API with token-based
authentication which facilitates application scalability.
The system allows management of pediatric medical records in digital format
facilitating tasks such as search, storage and portability. It lets keep track of personal
history and family history, controlling growth charts: head circumference, length /
height and weight percentiles and both Z score for children from birth to five years of
age and storage ordered by episodes of the information required for the development
of the clinical history.
For the development of the Web application are used all the knowledge acquired
throughout the career of Engineering in software development, design patterns,
software architecture, databases, in addition to a study of REST a style of software
architecture that is based on the specifications of the HTTP protocol.
KEYWORDS:
MEDICAL RECORDS MANAGEMENT PEDIATRIC / JAVA / SPRING / REST /
JAVASCRIPT / ANGULARJS / BOOTSTRAP / SPA / SQL SERVER / TOKEN
BASED AUTHENTICATION
1
CAPITULO 1
1.1 Introducción
En la actualidad el desarrollo de las tecnologías de información y comunicaciones
brindan muy sorprendentes mejoras en los diferentes campos en los que pueden ser
aplicadas. En distintos campos profesionales los avances tecnológicos continúan
estableciendo puntos que marcan el antes y después del cómo se llevaba a cabo algún
proceso. Uno de estos avances es el que la información sea producida y almacenada
en la actualidad mayoritariamente en formato digital. Con el uso de diferentes
programas y accesorios diseñados para tal efecto, la información puede ser creada y
revisada rápida, dinámica y fácilmente, adicionalmente gracias al Internet puede ser
transmitida y distribuida a cualquier parte del mundo. La ininterrumpida mejora y
crecimiento en la capacidad de los dispositivos para almacenamiento en formato
digital ponen hoy en día al alcance de las personas la capacidad de almacenar miles
de millones de bytes de información de todo tipo: textos, imágenes, videos, música,
etcétera, todo a un costo económico bajo, siempre con tendencia a disminuir más, y
en un espacio mucho más reducido al que se utilizaría si se lo llevara a cabo de otra
forma.
En lo que se refiere al campo médico una de las fundamentales prácticas que se
realizan para la atención de un paciente es la manipulación del Registro Médico o
Historial Clínico que es de suma importancia para el correcto cuidado del mismo. El
Historial Clínico para efectos operativos, se entiende como el conjunto de los
formularios en los cuales se registran en forma detallada y ordenada todos los datos
relativos a la salud de una persona.
Considerando que nos encontramos en la era digital el manejo de las Historias
Clínicas de forma manual presenta muchos inconvenientes que pueden ser
minimizados y procesos que pueden ser automatizados si se lo lleva a cabo en
formato digital, significando esto la traducción o representación de un documento
físico impreso a un formato de dígitos, específicamente en sistema binario, y que
puede ser almacenado de esta forma en dispositivos diseñados para tal efecto,
2
facilitando de esta manera su almacenamiento y preservación en el tiempo, además
de poder realizar la automatización y optimización de procesos para efectos tales
como: ordenamiento, búsqueda, transmisión y demás características relacionadas con
su gestión.
1.2 Planteamiento del problema
El “Hospital del Día” de la Universidad Central del Ecuador es una institución
médica al servicio de la comunidad y se encuentra ubicado en las instalaciones del
edificio de la ex residencia universitaria, brinda atención tanto a estudiantes
matriculados, docentes, empleados y público en general.
Entre las distintas especialidades médicas que ofrece esta institución se encuentra la
especialidad de pediatría, dentro de esta área el manejo de ciertas actividades
relacionadas con la atención del paciente se las realiza de forma manual lo que
implica inconvenientes que pueden ser minimizados.
Entre las distintas actividades que se realizan de forma manual se pueden mencionar
las siguientes:
Asignación de Turnos
Manipulación de las Historias Clínicas en papel y cajones haciendo difícil su
manipulación en grandes volúmenes.
Ordenamiento de las fichas de los pacientes.
Gráficas de evolución de crecimiento en niños y adolescentes.
Búsqueda y actualización de Historias Clínicas lo que implica dificultad y
retraso de tiempo.
En el área de pediatría las Historias Clínicas son un recurso que adquiere una muy
alta importancia para el ejercicio médico pediátrico al ser un conjunto de soportes
que sirven para la recolección, transmisión y conservación de la información relativa
al estado de salud o de enfermedad del niño o adolecente atendido en el centro de
salud. Constituye además el eje principal y una herramienta fundamental para el
médico en el seguimiento del crecimiento y desarrollo de un paciente en edad
pediátrica.
3
Es un documento que tiene que cumplir con múltiples requisitos: registro
secuencial, permitir la docencia y comunicación, ser fuente de control de calidad,
proporcionar recursos para realizar investigación clínica, por citar estos entre los más
importantes.
Para esto se requiere que los diferentes formularios que componen la Historia Clínica
tengan un formato preestablecido de acuerdo a estudios previos que aseguren el
correcto registro de la información y que cuente con un estándar unificado que se
maneje entre los médicos de una región.
Citando estos antecedentes se puede mencionar que la realización de ciertas
actividades para atención al paciente y el manejo del Historial Clínico de forma
manual y en papel en el área de pediatría del “Hospital del Día” implica procesos que
pueden ser optimizados y automatizados contribuyendo a mejorar el servicio que allí
se brinda.
1.3 Justificación
Al realizarse la supervisión de salud a un niño o adolecente en un espacio de tiempo
limitado, el pediatra enfrenta el desafío de formular un diagnóstico del niño y su
familia lo más certero posible. El historial clínico pediátrico no es ni debe ser un
acumulo de datos sin conexión, debe ser una fuente de información disponible de
forma ordenada y accesible en cualquier momento y lugar con las respectivas
seguridades de acceso al mismo.
Es un documento de suma importancia para el registro de la experiencia entre el
médico y el paciente, mucho más aun con pacientes en edad pediátrica, por lo que se
requiere de un apropiado manejo del mismo mediante una metodología de registro y
análisis que reúna la información dentro de un contexto médico legal.
El manejo de Historias Clínicas de los pacientes de forma manual es ineficiente
desde muchos puntos de vista, estas pueden ser almacenadas en formato digital
facilitando su localización y ordenamiento, favoreciendo el uso adecuado de
recursos, contribuyendo a un ahorro de tiempo y espacio significativamente grande,
así como el mejoramiento continuo en la atención a los pacientes.
4
La progresiva complejidad en la gestión de servicios de salud y los avances en la
informática exigen también la implantación de nuevos modelos de atención y gestión
que se apoyen en sistemas documentales de información y registros que permitan un
monitoreo y evaluación dinámicos de las actividades de salud utilizando los datos
obtenidos de la práctica clínica.
El desarrollo de un sistema informático para el manejo de Historias Clínicas brinda
este dinamismo en la monitorización y evaluación de los pacientes, contribuye al
manejo eficiente de recursos, asegura mejor precisión en la obtención y generación
de información y conocimiento sobre el cuidado de los pacientes y facilita el
intercambio de esta información brindando mejor calidad en la atención médica.
El desarrollo del presente proyecto beneficia de forma directa al área de pediatría del
hospital del día en su labor diaria de servicio, como también a los estudiantes,
docentes y pacientes en general que reciben atención médica en este sitio.
1.4 Hipótesis
El área de pediatría del Hospital Del Día de la Universidad Central del Ecuador
requiere de la digitalización, actualización y automatización del manejo de Historias
Clínicas Pediátricas considerando las más recientes especificaciones establecidas por
el ministerio de salud pública del Ecuador.
1.5 Objetivos
1.5.1 Objetivo General
Diseñar una aplicación web para la gestión y administración de Historias Clínicas
Pediátricas en el “Hospital del Día” de la Universidad Central del Ecuador.
1.5.2 Objetivos Específicos
5
Construir una interfaz gráfica, dinámica y amigable para el usuario accesible
a través de la web para el manejo de Historias Clínicas Pediátricas.
Diseñar un programa para la construcción de gráficas de curvas de evolución
comparativas mediante percentiles y desviación estándar para niños
diferenciando su sexo y edad. Se detalla en el alcance del proyecto las
gráficas a considerarse.
Implementar el registro de las Historias Clínicas Pediátricas en formato
digital de acuerdo a las más recientes especificaciones del ministerio de salud
pública del Ecuador respecto al marco conceptual y formularios básicos
rediseñados de la Historia Clínica única.
Diseñar la base de datos para el almacenamiento de la información que
asegure integridad, eficiencia y eficacia en el manejo de datos.
1.6 Alcance
El alcance del presente proyecto contempla los siguientes puntos:
La realización de un sistema informático web que implemente la
funcionalidad para la gestión de Historias Clínicas Pediátricas.
Para la implementación de la funcionalidad del sistema se considerará la guía
para análisis y discusión de un caso médico, detallada en el Expediente Único
para la Historia Clínica elaborado por el ministerio de salud Aprobado
mediante Resolución del Directorio del Consejo Nacional de Salud del
Ecuador del 25 de octubre del 2006.
Para estos efectos se realizará la digitalización del formulario que conforma
el historial clínico y que se encuentra descrito en el documento ya citado.
Gráficas de curvas de evolución de niños en puntaje Z y Percentiles de
acuerdo a edad y género.
Para este punto se considerará las gráficas referenciadas por la Organización
Mundial de la Salud y se listan a continuación:
6
1. Peso según edad niñas desde el nacimiento hasta los 5 años (Puntaje
Z).
2. Peso según edad niñas desde el nacimiento hasta los 5 años
(Percentiles).
3. Peso según edad niños desde el nacimiento hasta los 5 años (Puntaje
Z).
4. Peso según edad niños desde el nacimiento hasta los 5 años
(Percentiles).
5. Longitud y talla según edad niñas desde el nacimiento hasta los 5 años
(Puntaje Z).
6. Longitud y talla según edad niñas desde el nacimiento hasta los 5 años
(Percentiles).
7. Longitud y talla según edad niños desde el nacimiento hasta los 5
años (Puntaje Z).
8. Longitud y talla según edad niños desde el nacimiento hasta los 5
años (Percentiles).
9. Circunferencia cefálica según edad niñas desde el nacimiento hasta
los 5 años (Puntaje Z)
10. Circunferencia cefálica según edad niñas desde el nacimiento hasta
los 5 años (Percentiles)
11. Circunferencia cefálica según edad niños desde el nacimiento hasta
los 5 años (Puntaje Z)
12. Circunferencia cefálica según edad niños desde el nacimiento hasta
los 5 años (Percentiles)
CAPITULO 2
2.1 Aplicaciones de una sola Página (SPA)
Las aplicaciones de una sola página son aplicaciones web en las que todos los
recursos tales como HTML, archivos JavaScript, CSS, etcétera, se envían al cliente
en la carga inicial, luego de ello el intercambio de información que se realiza entre
cliente y servidor son únicamente tramas de información en algún formato especifico
7
como por ejemplo JSON o XML enviadas a través de peticiones asincrónicas, esto
brinda al usuario un escenario amigable semejante al de una aplicación de escritorio,
las páginas no se recargan completamente sino que la página principal o página de
inicio actualiza determinadas porciones de sí misma, esto es posible realizarlo hoy en
días gracias a nuevas tecnologías que han ido evolucionando a través del tiempo
tales como HTML5, el lenguaje de programación JavaScript, AJAX, Frameworks de
programación como AngularJS entre otras.
Visto desde otro sentido una SPA es la interfaz de una aplicación Web que se
encuentra implementada íntegramente en el lado del cliente o dicho de otra manera
en el browser, todas las vistas de la aplicación están contenidas dentro de una página
principal cargadas en una sola petición al servidor, esto reduce por completo el ancho
de banda y tiempo de proceso ya que se gestiona el estado de la aplicación desde el
lado del cliente.
En una aplicación de este tipo el tiempo de respuesta es mucho más rápido que el de
una aplicación web tradicional, esto debido entre otros aspectos a que al recargar una
página no se envía todo el archivo HTML sino únicamente la información necesaria
para actualizar el contenido.
Ilustración 1: Aplicaciones SPA
Fuente: Web
En las aplicaciones SPA se transporta algunas de las responsabilidades que en una
aplicación web tradicional se encuentran en el servidor hacia el cliente, el código en
el servidor se usa básicamente para proveer de una API RESTful, esto implica menor
8
carga de trabajo en el lado del servidor permitiendo atender a más clientes en menos
tiempo, adicionalmente se tiene una mejor experiencia de usuario evitando recargas
innecesarias y una interacción con la web en tiempo real.
Ilustración 2: Aplicaciones SPA Capas
Fuente: Web
Sin embargo aunque en este tipo de aplicaciones se cuenta con muchas ventajas
también se tienen desventajas entre ellas el que la lógica de negocio sea transportada
al lado del cliente permitiendo que cualquier persona pueda tener acceso al código
fuente, por lo que es necesario reforzar la seguridad además de realizar la
minificación y ofuscación de código, también se debe tener en cuenta que de esta
manera va a trabajar mayormente el browser ocupando gran cantidad de memoria
RAM y procesamiento de la máquina cliente.
2.2 REST
REST son las siglas en inglés de Representational State Transfer, es un tipo de
arquitectura de desarrollo web que se apoya en el estándar HTTP. El término se
originó en el año 2000 al ser mencionado en una tesis doctoral escrita por Roy
Fielding quien además es uno de los principales autores de la especificación del
protocolo HTTP.
REST permite crear servicios que pueden ser consumidos por cualquier aplicación o
dispositivo, esta arquitectura cumple con los siguientes principios:
9
Arquitectura cliente/servidor.- La separación entre el cliente y el servidor
debe ser clara y concisa, el cliente realiza peticiones al servidor y éste
responde ninguno de los dos debe mantener información que dependa del
otro.
Stateless.- Cada petición realizada por el cliente es independiente una de otra,
el servidor no almacena ningún tipo de información concerniente al estado.
Cache.- Esta norma implica que el servidor debe definir alguna forma de
cachear las peticiones que realizan los clientes, para aumentar el rendimiento,
escalabilidad, etc.
Arquitectura en capas.- El sistema debe estar segmentado en capas bien
definidas que permitan que la capa cliente sea completamente independiente.
Interfaz uniforme.- Todos los servicios REST compartirán un forma de
invocación y métodos uniformes entendidos tanto por el cliente como por el
servidor.
Ilustración 3: Arquitectura REST
Fuente: Web
Para la lograr esta arquitectura se podría construir un protocolo que cumpla los
principios descritos anteriormente, sin embargo no es necesario construirlo puesto
que ya existe, este protocolo es HTTP por sus siglas en inglés Hipetertext Transfer
Protocol, REST logra satisfacer los 5 principios listados anteriormente basándose en
el estándar HTTP aplicando cuatro restricciones:
Identificación de recursos.- Las aplicaciones REST deben poder identificar
sus recursos de manera uniforme, HTTP implementa esto usando las llamadas
URIs. Esta identificación del recurso no incluye la representación del mismo.
Recursos y representaciones.- HTTP define distintas cabeceras de tipos, y un
contenido en la respuesta, por lo que las aplicaciones pueden enviar el
contenido en el formato que deseen tales como XML, JSON, etcétera.
10
Mensajes auto descriptivos.- HTTP implementa esto a través del estado y una
serie de cabeceras, el cómo se usen estos estados y cabeceras depende de la
implementación del sistema.
Hipermedia.- El servidor debe incluir en sus respuestas toda aquella
información que requiere el cliente para seguir operando.
2.2.1 Servicios Web RESTful
Un servicio web RESTful hace referencia a un servicio web que implementa la
arquitectura REST y debe contener lo siguiente:
URI del recurso.- La URI del recurso al que se va hacer referencia. Ejemplo:
/api/recurso
El tipo de representación.- Se especifica en el Header de la respuesta HTTP
por ejemplo Content-type:application/json indicaría que la representación del
recurso es en formato JSON.
Operaciones soportadas.- HTTP define varias operaciones entre las más
usadas: GET, POST, PUT, DELETE que generalmente se usan para realizar
operaciones CRUD con un recurso.
Hipervínculos.- En la respuesta del servidor se puede incluir hipervínculos
hacia otras acciones que se puedan realizar sobre el recurso, normalmente se
incluyen en el mismo contenido de la respuesta, por ejemplo, si la respuesta
está representada en formato JSON, se puede agregar una propiedad con los
hipervínculos a las demás acciones que se pueden realizar con el recurso.
2.2.2 URIs
Se diferencian dos tipos de URI las URI RESTful y las URI no RESTful. Una URI
RESTful se usa para identificar un recurso de dominio (como un libro, un cliente o
cualquier entidad en una aplicación) a diferencia de una URI no RESTful que
identifica un recurso de aplicación (como una página web o una imagen de la
aplicación). Algunas consideraciones que se deben tener en cuenta al crear una URI
RESTful se listan a continuación:
11
Cortas.- Deben ser en lo posible no muy extensas, deben ser fáciles de
escribir y de recordar.
Predictivas.- Deben describir fácilmente al recurso que identifican.
Sustantivos.- No deben contener verbos como: editar, crear, eliminar,
etcétera, la acción que realiza se especifica usando el estándar HTTP.
Minúsculas.- En lo posible deben estar escritas en minúsculas y evitar
caracteres especiales.
Plural.- En lo posible deben estar escritas en plural.
Stateless.- No deben contener información de estado.
Argumentos.- Argumentos generalmente usados en consultas son colocados
después del signo “?”.
2.2.2.1 URIs CRUD
Se usan para la especificación de acciones CRUD de un recurso.
Ejemplo:
URI Método
HTTP
Resultado
/api/personas GET Todos los pacientes
/api/personas/132580 GET Paciente con id 132580
/api/personas POST Crear paciente
/api/personas PUT Actualizar paciente
/api/personas/132580 DELETE Borrar paciente con id 132580
Tabla 1: URIs CRUD
2.2.2.2 URIs Relacionales
Se usan para acciones CRUD de recursos relacionados.
Ejemplo:
URI Método
HTTP
Resultado
/api/personas /555250/historias GET Todas las historias clínicas del
paciente con id 555250
/api/personas /555250/ historias/2560 GET La historia clínica con id 2560 del
12
paciente con id 555250
/api/personas /555250/ historias POST Crear historia clínica para el paciente
con id 555250
/api/personas /555250/ historias PUT Actualizar historia clínica para el
paciente con id 555250
/api/personas /555250/ historias/2560 DELETE Borrar historia clínica 2560 del
paciente con id 555250
Tabla 2: URIs Relacionales
2.2.2.3 URIs No CRUD
Se usan para acciones que no están relacionadas directamente con la persistencia de
un recurso.
Ejemplo:
URI Método
HTTP
Resultado
/api/personas/{id}/estado PUT Poner el estado de un paciente activo
/api/personas/{id}/estado DELETE Poner el estado de un paciente
inactivo
Tabla 3: URIs No CRUD
2.2.2.4 URIs para filtros
Se usan para realizar consultas con filtro, el estándar recomienda enviar una lista de
parámetros con los atributos y valores por los que se desea filtrar.
Ejemplo:
URI Método
HTTP
Resultado
/api/personas?estado=activo GET Todos los pacientes con estado
activo
/api/personas?estado=activo&categoría=1 GET Todos los pacientes con estado
activo y categoría igual a 1
Tabla 4: URIs Filtros
13
2.2.2.5 URIs para ordenamiento
Se usan para realizar consultas y retornar el resultado ordenado ascendente o
descendentemente, para esto el estándar recomienda enviar un parámetro sort con
una lista separada por comas de los atributos por los cuales se desea realizar el
ordenamiento, para especificar el orden descendente se antepone un signo - al
nombre del atributo, el orden ascendente se lo puede especificar implícitamente
únicamente con el nombre del atributo o explícitamente anteponiendo un signo + al
atributo.
Ejemplo:
URI Método HTTP Resultado
/api/personas?sort=-nombre,apellido GET Todos los pacientes ordenados en
forma descendente por nombre y
ascendente por apellido
/api/personas?estado=activo&sort=+nombre GET Todos los pacientes con estado
activo y ordenados por nombre
ascendentemente
Tabla 5: URIs Ordenamiento
2.2.2.6 URIs para búsqueda
Se usan para realizar búsquedas generales para ello el estándar recomienda enviar un
parámetro q con la cadena que se desea buscar.
Ejemplo:
URL Método HTTP Resultado
/api/personas?q=mora GET Todos los pacientes en los que
cualquier atributo coincida con la
cadena “mora”
Tabla 6: URIs Búsqueda
2.2.2.7 URIs alias
Se usan para asignar un alias a una consulta y no enviar parámetros.
Ejemplo:
14
URI Método HTTP Resultado
/api/personas?estado=inactivo GET Todos los pacientes con estado
inactivo
/api/personas/inactivos GET Todos los pacientes con estado
inactivo
Tabla 7: URIs Alias
2.2.2.8 URIs para recupera por campos
Se usan para especificar la lista de atributos que se desea recuperar de la entidad,
para ello el estándar recomienda enviar un parámetro fields con una lista separada
por comas de los atributos.
Ejemplo:
URI Método HTTP Resultado
/api/personas?fields=id,apellido GET Todos los pacientes pero únicamente
el id y apellido
Tabla 8: URIs Campos
2.2.2.9 URIs para paginación
Se usan para realizar consultas con paginación en el lado del servidor, el estándar
recomienda enviar dos parámetros: page que indica la página que se desea recuperar
y per_page que indica cuantos registros por página se van a recuperar,
adicionalmente el cliente web puede requerir el número total de registros existentes
en la base de datos para esto en la cabecera HTTP de respuesta se envía el atributo
XTotalCount con el número total de registros almacenados en la base de datos.
Ejemplo:
URI Método HTTP Resultado
/api/personas?page=1&per_page=50 GET Los primeros 50 pacientes, el total de
pacientes en la base de datos se envía
como un valor en la cabecera de la
respuesta HTTP
Tabla 9: URIs Paginación
15
HEADER > XTotalCount = 100
2.3 Autenticación basada en Tokens
El protocolo HTTP es un protocolo orientado a la conexión pero sin estado, esto
significa que cuando un cliente web realiza una petición al servidor éste atiende la
misma y responde al cliente sin saber nada acerca de quien hizo la petición, esto
brinda cierto grado de anonimato en las comunicaciones que se realizan en el
internet, sin embargo, también es necesario realizar algún tipo de autenticación para
que el servidor pueda obtener cierta información de quien hace la petición, esto para
poder por ejemplo responder información específica para un cliente o también para
saber si el cliente tiene o no permisos para poder recibir esa información.
Un tipo de autenticación que se ha venido desarrollando a lo largo del tiempo es la
autenticación con sesiones. Una sesión permite agrupar un grupo de peticiones
pertenecientes a un mismo cliente, el servidor otorga una sesión al cliente web y éste
le envía esta sesión en todas las demás peticiones que haga, de esta manera el
servidor puede determinar que cliente le está enviando la petición y si tiene una
sesión activa.
En este tipo de autenticación el servidor debe almacenar un registro por cada cliente
autenticado en el sistema, la lógica de autenticación está del lado del servidor,
haciendo perder cierto grado de escalabilidad en la aplicación. Por ejemplo en el caso
de contar con una aplicación web ya desarrollada y querer construirla como una
aplicación móvil habría que desarrollar un nuevo Backend, no pudiendo reutilizar el
ya existente.
Una nueva tendencia en cuanto a la autenticación en el desarrollo web es la
autenticación basada en Tokens. En este tipo de autenticación el cliente se autentica
16
en el sistema ingresando sus credenciales como usuario y contraseña o bien a través
de un proveedor como Facebook, Twitter, etcétera, desde ese momento cada nueva
petición HTTP que el cliente haga al servidor ira acompañada de un Token en el
Header. Este Token es una firma cifrada que permitirá identificar al cliente, el mismo
es almacenado en el lado del cliente como por ejemplo en localStorage o
sessionStorage. Como el Token es almacenado en el lado del cliente, en el servidor
no hay información de estado y la aplicación se vuelve totalmente escalable, se
puede consumir el mismo backend para diferentes aplicaciones tanto web como
móviles, solo hay que preocuparse por generar y descifrar Tokens en las peticiones
HTTP a través de un middleware.
Agrega también más seguridad al no utilizar cookies además podemos configurar la
autenticación para que el Token expire dentro de un lapso de tiempo y enviar un
nuevo Token o enviar un nuevo Token después de cada petición HTTP que el cliente
web realice, esto para evitar posibles clonaciones de un Token.
Como se visualiza en la siguiente imagen con la autenticación basada en Tokens no
se guarda ningún estado entre las diferentes peticiones de la aplicación y la
información puede ser consumida desde diferentes tipos de clientes:
Ilustración 4: Autenticación basada en Tokens
Fuente: Web
2.4 JSON Web Tokens (JWT)
Para la autenticación basada en Token se suele usar un objeto en formato JSON que
contiene información referente al cliente y además información del tipo de
17
encriptación que se va a usar. A éste tipo de Tokens se los conoce como JSON Web
Tokens o JWT. La definición de JSON Web Token es la siguiente:
JWT es un estándar abierto que define una manera compacta y autónoma para
asegurar la transmisión de información a través de un objeto en formato JSON.
Tomado de: www.jwt.io
Consiste de tres partes que estarán separadas por punto:
Header.- Consiste de dos partes el tipo que será JWT y el algoritmo hash que
se va a usar. Ejemplo:
{
“alg” : “HS256”,
“typ”: ”JWT”
}
Payload .- Contiene las peticiones, las mismas son sentencias sobre una
entidad y metada adicional. Hay tres tipos: reservadas, públicas y privadas.
Reservadas: Conjunto de peticiones predefinidas, no son mandatarias,
algunas son: Exp (expiración), sub(asunto), aud(audiencia) entre otras
Publicas: Son definidas por quien usa JWT.
Privadas: Peticiones personalizadas creadas para compartir información entre
las partes que están de acuerdo en usarlas.
Ejemplo:
{
"exp": "50000",
"name": "NTG",
"admin": true
}
Signature: La firma está formada por el header codificado y el payload
codificado
El Token está formado por las tres partes: Header, Payload y Signature separadas por
punto, este puede ser fácilmente transmitido. Ejemplo:
18
Ilustración 5: Token
2.5 El Stack Spring MVC - AngularJS
El stack para desarrollo de software Spring MVC – AngularJS se basa en el uso de
éstas tecnologías con el lenguaje Java en el Backend haciendo uso del framework
Spring MVC y JavaScript en el Frontend haciendo uso del framework AngularJS.
Ilustración 6: Spring MVC - AngularJS
Fuente: Web
2.5.1 Frontend - AngularJS
19
El Frontend sigue el patrón MVC se encuentra separado en capas y contiene toda la
lógica de presentación la cual está separada en la capa vista, la capa controlador y la
capa de servicios, siguiendo la arquitectura de una aplicación SPA una vez iniciada
la aplicación se cargan todos sus recursos, luego de esto únicamente tramas JSON
viajan entre el cliente y el servidor.
La capa vista, está compuesta de los diferentes archivos HTML, CSS, JavaScript y
directivas de AngularJS que representan los diferentes componentes de la interfaz
gráfica.
La capa controlador, está construida con AngularJS mediante el uso de controladores
que permiten la unión de los datos recuperados desde el Backend con la capa vista.
Una de las principales responsabilidades que recaen en la capa controlador es el de
realizar validaciones en la vista, tales como campos obligatorios, tipos de datos,
etcétera, cualquier validación realizada en la capa controlador del Frontend debe ser
replicada en la capa de servicios del Backend debido a razones de seguridad ya que
las validaciones en el Frontend pueden ser fácilmente vulneradas por personal con
algún grado de conocimiento en programación.
La capa de servicios, contiene un conjunto de servicios que permiten interactuar con
el Backend y que pueden ser inyectados en los controladores.
2.5.2 Backend – Spring MVC
El Backend consiste de una API RESTful construida mediante el uso de Spring
MVC, consiste de tres capas: capa de ruteo, capa de servicios y capa de persistencia.
La capa de ruteo, define qué servicios corresponden al URI que solicita el cliente,
también verifica que parámetros han sido enviados en la URI. Las anotaciones de
Spring MVC facilitan en gran medida la construcción del API RESTful.
Adicionalmente complementando Spring MVC con la librería Jackson se pude
retornar directamente objetos convertidos al formato JSON si futuras
configuraciones.
La capa de servicios, contiene la lógica de negocio tal como transacciones y
validaciones, escrito con el lenguaje de programación Java.
La capa de persistencia, mapea el esquema orientado a objetos con el esquema
relacional de la base de datos.
20
CAPITULO 3
1.1 Metodología de Desarrollo
Para el desarrollo de la presente aplicación web se realizó la selección de una
metodología de desarrollo de software que permita el análisis inicial de los
requerimientos funcionales y los objetivos que se quieren cumplir, análisis y
mitigación de riesgos en la construcción de la aplicación y brinde un escenario que
facilite la escalabilidad y extensibilidad del aplicativo.
El modelo en espiral se acopla a estas necesidades de desarrollo, puesto que se
distinguen cuatro fases principales:
1. Determinar o fijar los objetivos. En este paso se definen los objetivos
específicos para posteriormente identifica las limitaciones del proceso y del
sistema de software, además se diseña una planificación detallada de gestión
y se identifican los riesgos.
2. Análisis del riesgo. En este paso se efectúa un análisis detallado para cada
uno de los riesgos identificados del proyecto, se definen los pasos a seguir
para reducir los riesgos y luego del análisis de estos riesgos se planean
estrategias alternativas.
3. Desarrollar, verificar y validar. En este tercer paso, después del análisis de
riesgo, se eligen un paradigma para el desarrollo del sistema de software y se
lo desarrolla.
4. Planificar. En este último paso es donde el proyecto se revisa y se toma la
decisión si se debe continuar con un ciclo posterior al de la espiral. Si se
decide continuar, se desarrollan los planes para la siguiente fase del proyecto.
Ver fig1 anexos Con cada iteración alrededor de la espiral, se crean sucesivas
versiones del software, cada vez más completas y, al final, el sistema de
software ya queda totalmente funcional.
21
Ilustración 7: Modelo en Espiral
Fuente: Web
El modelo en espiral es considerado como un modelo evolutivo ya que combina el
modelo clásico con el diseño de prototipos. Contiene una nueva etapa que es el
análisis de riesgos, no incluida en otros modelos de desarrollo de software. Este
modelo es el indicado para desarrollar software con diferentes versiones actualizadas
como se hace con los programas modernos de PC.
El modelo en espiral es un enfoque realista del desarrollo de sistemas y de software a
gran escala. Como el software evoluciona, a medida que progresa el desarrollo
programador y cliente comprenden y reaccionan mejor ante riesgos en cada uno de
los niveles evolutivos.
Este modelo demanda una consideración directa de los riesgos técnicos en todas las
etapas del proyecto, y si se aplica adecuadamente, debe reducir los riesgos antes de
que se conviertan en problemáticos.
El modelo en espiral esta compartido en varias actividades estructurales, también
llamadas regiones de tareas:
Comunicación con el cliente: esta es una tarea requerida para establecer
comunicación entre el desarrollador y el cliente.
Planificación: esta tarea es necesaria aplicarla para poder definir los recursos,
el tiempo y otras informaciones relacionadas con el proyecto, es decir, son
todos los requerimientos.
Análisis de riesgos: esta es una de las tareas principales por lo que se aplica el
modelo en espiral, es requerida para evaluar los riesgos técnicos y otras
informaciones relacionadas con el proyecto.
22
Ingeniería: esta es una tarea necesaria ya que se requiere construir una o más
representaciones de la aplicación.
Construcción y adaptación: esta tarea es requerida en el modelo espiral
porque se necesita construir, probar, instalar y proporcionar soporte al
usuario.
Evaluación el cliente: esta también es una tarea principal, necesaria para
adquirir la reacción del cliente según la evaluación de las representaciones del
software creadas durante la etapa de ingeniería y la de implementación creada
durante la etapa de instalación.
1.1.1 Ventajas del modelo espiral
No requiere una definición completa de los requerimientos del software a desarrollar
para comenzar su funcionalidad.
En la terminación de un producto desde el final de la primera iteración es muy
factible aprobar los requisitos.
Sufrir retrasos corre un riesgo menor, porque se comprueban los conflictos
presentados tempranamente y existe la forma de poder corregirlos a tiempo.
1.1.2 Desventajas del modelo espiral
Existe complicación cuando se evalúa los riesgos.
Se requiere la participación continua por parte del cliente.
Se pierde tiempo al volver producir inicialmente una especificación completa de los
requerimientos cuando se modifica o mejora el software.
23
CAPITULO 4
Análisis y descripción de la aplicación
4.1 Actores
Para el desarrollo de la presente aplicación se identificaron los siguientes actores:
Usuario: Profesional médico que accede a la aplicación para la gestión del
historial clínico de un paciente.
Administrador: Persona que administra la aplicación tiene acceso al
mantenimiento de catálogos, creación de nuevos usuarios, revisión de
registros de auditoria así como también a la consulta y modificación de
historias clínicas.
4.2 Casos de uso
A continuación se describen los casos de uso para la aplicación:
Ilustración 8: Casos de Uso
24
4.2.1 Caso de uso Identificarse
1. Caso de uso Identificarse:
1.1 Actor principal: Usuario, Administrador
1.2 Precondición: Ninguna
1.3 Postcondición: El Usuario está autenticado
1.4 Casos de uso relacionados:
2. Escenario Principal:
2.1 El usuario ingresa su código de usuario y contraseña.
2.2 El sistema valida las credenciales.
3. Flujos Alternativos:
3.1 Si el usuario no existe se muestra mensaje de error que el usuario no
existe.
3.2 Si las credenciales no son correctas muestra mensaje de error indicando
que vuelva a digitar usuario y contraseña.
Tabla 10: Identificarse
4.2.2 Caso de uso Buscar Historia Clínica
1. Caso de uso Buscar Historia Clínica:
1.1 Actor Principal: Usuario
1.2 Precondición: El usuario se ha autenticado.
1.3 Postcondición: Ninguna
1.4 Casos de uso relacionados: Ver Historial Clínico
2. Escenario Principal:
2.1 El usuario ingresa los criterios de búsqueda y presiona enter o tab
2.2 El sistema muestra las coincidencias de Historias Clínicas según los
criterios de búsqueda indicados
2.3 El usuario hace clic en el identificador de la Historia Clínica que desea
visualizar
2.4 El sistema ejecuta el caso de uso Ver Historial Clínico
3. Flujos Alternativos:
3.1 Si no existe ninguna coincidencia con los criterios de búsqueda
25
ingresados se muestra una lista vacía, el usuario puede volver a realizar
la búsqueda con otros criterios.
Tabla 11: Buscar Historia Clínica
4.2.3 Caso de uso Ver Citas Agendadas
1. Caso de uso Ver Citas Agendadas:
1.1 Actor Principal: Usuario
1.2 Precondición: El usuario se ha autenticado
1.3 Postcondición: Ninguna
1.4 Casos de uso relacionados: Ver Historial Clínico
2. Escenario Principal:
2.1 El usuario visualiza las citas agendadas para la fecha actual ordenadas
por turno
2.2 El usuario hace clic en la cita que desea seleccionar, el sistema busca la
historia clínica asociada al paciente que reservó la cita
2.3 El sistema ejecuta el caso de uso Ver Historial Clínico
3. Flujos Alternativos: Ninguno
Tabla 12: Ver Citas Agendadas
4.2.4 Caso de uso Ver Historial Clínico
1. Caso de uso Ver Historial Clínico:
1.1 Actor Principal: Usuario
1.2 Precondición: Ninguna
1.3 Postcondición: Ninguna
1.4 Casos de uso relacionados: Ver Información Personal, Ver
Antecedentes Familiares, Ver Antecedentes Personales, Ver Formulario
Historia Clínica, Ver Gráficas
2. Escenario Principal:
2.1 El usuario visualiza el nombre del paciente asociado a la Historia
Clínica y el número de Historia Clínica
2.2 El usuario visualiza un menú con opciones del Historial Clínico
3. Flujos Alternativos: Ninguno
26
Tabla 13: Ver Historial Clínico
4.2.5 Caso de uso Ver Información Personal
1. Caso de uso Ver Información Personal:
1.1 Actor Principal: Usuario
1.2 Precondición: Ninguna
1.3 Postcondición: Ninguna
1.4 Casos de uso relacionados: Ver Historial Clínico
2. Escenario Principal:
2.1 El usuario puede visualizar la información personal del paciente
asociado a la Historia Clínica
3. Flujos Alternativos: Ninguno
Tabla 14: Ver Información Personal
4.2.6 Caso de uso Ver Antecedentes Familiares
1. Caso de uso Ver Antecedentes Familiares:
1.1 Actor Principal: Usuario
1.2 Precondición: Ninguna
1.3 Postcondición: Ninguna
1.4 Casos de uso relacionados: Ver Historial Clínico
2. Escenario Principal:
2.1 El usuario puede visualizar los Antecedentes Familiares del paciente
asociado a la Historia Clínica
2.2 El usuario puede crear nuevos Antecedentes Familiares
2.3 El usuario puede eliminar Antecedentes Familiares
2.4 El usuario puede editar Antecedentes Familiares
3. Flujos Alternativos: Ninguno
Tabla 15: Ver Antecedentes Familiares
4.2.7 Caso de uso Ver Antecedentes Personales
27
1. Caso de uso Ver Antecedentes Personales:
1.1 Actor Principal: Usuario
1.2 Precondición: Ninguna
1.3 Postcondición: Ninguna
1.4 Casos de uso relacionados: Ver Historial Clínico
2. Escenario Principal:
2.1 El usuario puede visualizar los Antecedentes Personales del paciente
asociado a la Historia Clínica
2.2 El usuario puede crear nuevos Antecedentes Personales
2.3 El usuario puede eliminar Antecedentes Personales
2.4 El usuario puede editar Antecedentes Personales
3. Flujos Alternativos: Ninguno
Tabla 16: Ver Antecedentes Personales
4.2.8 Caso de uso Ver Formulario Historia Clínica
1. Caso de uso Ver Formulario Historia Clínica:
1.1 Actor Principal: Usuario
1.2 Precondición: Ninguna
1.3 Postcondición: Ninguna
1.4 Casos de uso relacionados: Imprimir Historia Clínica, Buscar Episodio,
Crear Episodio
2. Escenario Principal:
2.1 El usuario puede visualizar el formulario de Historia Clínica
2.2 El usuario visualiza el menú de campos del formulario deshabilitado
primer debe crear un episodio o buscar un episodio ya existente para
modificarlo.
2.3 El usuario luego de crear o buscar un episodio navega a través del
menú de campos del formulario de Historia Clínica
3. Flujos Alternativos: Ninguno
Tabla 17: Ver Formulario Historia Clínica
4.2.9 Caso de uso Imprimir Historia Clínica
1. Caso de uso Imprimir Historia Clínica:
28
1.1 Actor Principal: Usuario
1.2 Precondición: La historia clínica debe existir en la BDD
1.3 Postcondición: Se obtiene el formulario de Historia Clínica en formato
1.4 Casos de uso relacionados: Ver Formulario Historia Clínica
2. Escenario Principal:
2.1 El usuario presiona el botón imprimir
2.2 El sistema muestra la impresión del formulario en formato PDF en una
nueva pestaña del navegador
3. Flujos Alternativos:
3.1 En caso que la Historia Clínica no tenga registrado ningún campo se
mostrará la impresión vacía.
Tabla 18: Imprimir Historia Clínica
4.2.10 Caso de uso Crear Episodio
1. Caso de uso Crear Episodio:
1.1 Actor Principal: Usuario
1.2 Precondición: Ninguna
1.3 Postcondición: Se crea un nuevo episodio asociado a la Historia Clínica
1.4 Casos de uso relacionados: Ver Formulario Historia Clínica
2. Escenario Principal:
2.1 El usuario presiona el botón Nuevo Episodio
2.2 El sistema crea un nuevo episodio asociado a la historia clínica
seleccionada
2.3 El nuevo episodio se crea con la fecha actual
2.4 El sistema ejecuta el caso de uso Ver Episodio
3. Flujos Alternativos:
3.1 Si existe error al crear el registro se muestra mensaje indicando que la
operación no pudo ser realizada.
Tabla 19: Crear Episodio
4.2.11 Caso de uso Buscar Episodio
29
1. Caso de uso Buscar Episodio:
1.1 Actor Principal: Usuario
1.2 Precondición: Ninguna
1.3 Postcondición: Ninguna
1.4 Casos de uso relacionados: Ver Formulario Historia Clínica
2. Escenario Principal:
2.1 El usuario presiona el botón Buscar Episodio
2.2 El sistema muestra una ventana emergente para realizar la búsqueda
2.3 El usuario ingresa fecha inicial y fecha final como criterios de
búsqueda
2.4 El sistema muestra los episodios asociado a la Historia Clínica que
coincidan con los criterios de búsqueda ingresados
2.5 El usuario selecciona la fecha del episodio que desea visualizar
2.6 El sistema ejecuta el caso de uso Ver Episodio
3. Flujos Alternativos:
3.1 Si el usuario no ingresa fecha inicial o fecha final como criterios de
búsqueda el sistema recupera todos los episodios asociados a la Historia
Clínica
Tabla 20: Buscar Episodio
4.2.12 Caso de uso Ver Episodio
1. Caso de uso Ver Episodio:
1.1 Actor Principal: Usuario
1.2 Precondición: Deber haberse seleccionado un episodio o creado uno
nuevo
1.3 Postcondición: Ninguna
1.4 Casos de uso relacionados: Crear Episodio, Ver Episodio, Ingresar
Motivo de Consulta, Ingresar Enfermedad Actual, Ingresar Revisión
Actual, Ingresar Examen Físico, Ingresar Diagnósticos, Ingresar Planes,
Ingresar Evolución y Prescripciones
2. Escenario Principal:
2.1 El sistema habilita el menú de campos de la Historia Clínica
2.2 El usuario navega por el menú de campos de la Historia Clínica
30
3. Flujos Alternativos:
3.1 Si no se ha seleccionado un Episodio Anterior o creado uno nuevo el
menú de campos de la Historia Clínica aparece deshabilitado
Tabla 21: Ver Episodio
4.2.13 Caso de uso Ingresar Motivo de Consulta
1. Caso de uso Ingresar Motivo de Consulta:
1.1 Actor Principal: Usuario
1.2 Precondición: Episodio existente
1.3 Postcondición: Crear un nuevo Motivo de Consulta
1.4 Casos de uso relacionados: Ver Episodio
2. Escenario Principal:
2.1 El usuario ingresa la descripción del motivo de consulta
2.2 El sistema habilita el botón de guardar
2.3 El sistema crea un nuevo motivo de consulta
2.4 El usuario puede editar un motivo de consulta
2.5 El usuario puede eliminar un motivo de consulta
3. Flujos Alternativos: Ninguno
Tabla 22: Ingresar Motivo de Consulta
4.2.14 Caso de uso Ingresar Enfermedad Actual
1. Caso de uso Ingresar Enfermedad Actual:
1.1 Actor Principal: Usuario
1.2 Precondición: Episodio existente
1.3 Postcondición: Se crea un nuevo registro enfermedad actual
1.4 Casos de uso relacionados: Ver Episodio
2. Escenario Principal:
2.1 El usuario ingresa la descripción de la enfermedad actual
2.2 El sistema habilita el botón de guardar
2.3 El sistema crea un nuevo registro de enfermedad actual
2.4 El usuario puede editar un registro de enfermedad actual
31
Tabla 23: Ingresar Enfermedad Actual
4.2.15 Caso de uso Ingresar Revisión Actual
1. Caso de uso Ingresar Revisión Actual:
1.1 Actor Principal: Usuario
1.2 Precondición: Episodio existente
1.3 Postcondición: Se crea un nuevo registro Revisión Actual
1.4 Casos de uso relacionados: Ver Episodio
2. Escenario Principal:
2.1 El usuario selecciona un registro del catálogo: órganos
2.2 El usuario selecciona un registro del catálogo: evidencia o sin evidencia
de patología
2.3 El sistema habilita el botón de guardar
2.4 El usuario puede opcionalmente ingresar una descripción de Revisión
Actual
2.5 El sistema crea un nuevo registro de Revisión Actual
2.6 El usuario puede editar un registro de Revisión Actual
2.7 El usuario puede eliminar un registro de Revisión Actual
3. Flujos Alternativos: Ninguno
Tabla 24: Ingresar Revisión Actual
4.2.16 Caso de uso Ingresar Examen Físico
1. Caso de uso Ingresar Examen Físico:
1.1 Actor Principal: Usuario
1.2 Precondición: Episodio existente
1.3 Postcondición: Se crea un nuevo registro Examen Físico
1.4 Casos de uso relacionados: Ver Episodio
2. Escenario Principal:
2.1 El usuario selecciona un registro del catálogo: partes del cuerpo
2.2 El usuario selecciona un registro del catálogo: con evidencia o sin
2.5 Se usuario puede eliminar un registro de enfermedad actual
3. Flujos Alternativos: Ninguno
32
evidencia de patología
2.3 El sistema habilita el botón de guardar
2.4 El usuario puede opcionalmente ingresar una descripción de Examen
Físico
2.5 El sistema crea un nuevo registro de Examen Físico
2.6 El usuario puede editar un registro de Examen Físico
2.7 El usuario puede eliminar un registro de Examen Físico
3. Flujos Alternativos: Ninguno
Tabla 25: Ingresar Examen Físico
4.2.17 Caso de uso Ingresar Diagnósticos
1. Caso de uso Ingresar Diagnósticos:
1.1 Actor Principal: Usuario
1.2 Precondición: Episodio existente
1.3 Postcondición: Se crea un nuevo Diagnóstico
1.4 Casos de uso relacionados: Ver Episodio
2. Escenario Principal:
2.1 El usuario selecciona un registro del catálogo: Presuntivo / Definitivo
2.2 El usuario selecciona un registro del catálogo : CIE-10 (Clasificación
Internacional de Enfermedades versión 10)
2.3 El sistema habilita el botón de guardar
2.4 El usuario puede opcionalmente ingresar una descripción del
Diagnóstico
2.5 El sistema crea un nuevo Diagnóstico
2.6 El usuario puede editar un Diagnóstico
2.7 El usuario puede eliminar un Diagnóstico
3. Flujos Alternativos: Ninguno
Tabla 26: Ingresar Diagnósticos
4.2.18 Caso de uso Ingresar Planes
1. Caso de uso Ingresar Planes:
33
1.1 Actor Principal: Usuario
1.2 Precondición: Episodio existente
1.3 Postcondición: Se crea un nuevo Plan
1.4 Casos de uso relacionados: Ver Episodio
2. Escenario Principal:
2.1 El usuario ingresa una descripción del plan de tratamiento
2.2 El sistema habilita el botón de guardar
2.3 El sistema crea un nuevo registro de plan
2.4 El usuario puede editar un Plan
2.5 El usuario puede eliminar un Plan
3. Flujos Alternativos: Ninguno
Tabla 27: Ingresar Planes
4.2.19 Caso de uso Ingresar Evolución y Prescripciones:
1. Caso de uso Ingresar Evolución y Prescripciones:
1.1 Actor Principal: Usuario
1.2 Precondición: Episodio existente
1.3 Postcondición: Se crea un nuevo registro Evolución y Prescripción
1.4 Casos de uso relacionados: Ver Episodio
2. Escenario Principal:
2.1 El usuario ingresa una descripción de evolución
2.2 El usuario ingresa una descripción de prescripción
2.3 El usuario ingresa una descripción de medicinas
2.4 El sistema crea un nuevo registro de Evolución y Prescripciones
2.5 El usuario puede editar un registro Evolución y Prescripciones
2.6 El usuario puede eliminar un registro Evolución y Prescripciones
3. Flujos Alternativos: Ninguno
Tabla 28: Ingresar Evolución y Prescripciones
4.2.20 Caso de uso Ver Gráficas
1. Caso de uso Ver Gráficas:
1.1 Actor Principal: Usuario
34
1.2 Precondición: La persona asociada a la Historia Clínica debe tener
registrada obligatoriamente información de género y fecha de
nacimiento
1.3 Postcondición: Ninguna
1.4 Casos de uso relacionados: Ver Formulario Historia Clínica
2. Escenario Principal:
2.1 El usuario ingresa los datos de peso en kilogramos, talla en centímetros
y circunferencia cefálica en centímetros
2.2 El sistema toma la información registrada de la persona asociada a la
Historia Clínica para calcular la edad actual en meses
2.3 El sistema crea un nuevo registro de Signos Vitales
2.4 El usuario selecciona del menú de gráficas la gráfica que desea
visualizar
2.5 El sistema muestra en una ventana emergente la gráfica seleccionada
con opciones de Percentiles o Puntaje Z, el sistema toma la información
registrada de la persona asociada a la Historia Clínica para mostrar la
gráfica de acuerdo al género.
3. Flujos Alternativos: Ninguno
Tabla 29: Ver Gráficas
4.2.21 Caso de uso Crear Usuario
1. Caso de uso Crear Usuario:
1.1 Actor Principal: Administrador
1.2 Precondición: Usuario se ha autenticado
1.3 Postcondición: Se crea un nuevo usuario
1.4 Casos de uso relacionados: Ninguno
2. Escenario Principal:
2.1 El usuario ingresa el código de usuario
2.2 El usuario ingresa el correo electrónico del nuevo usuario
2.3 El usuario digita una contraseña
2.4 El usuario confirma la contraseña
2.5 El sistema habilita el botón de crear nueva cuenta
2.6 El sistema crea una nueva cuenta
35
3. Flujos Alternativos:
3.1 En caso que no se ingrese todos los campos se muestra advertencia de
campos requeridos
3.2 Si la contraseña tiene menos de 5 dígitos se emite mensaje de error
debe tener más de 5 dígitos
3.3 Si el nuevo usuario ya existe se emite mensaje de error
Tabla 30: Crear Usuario
4.2.22 Caso de uso Gestionar Catálogos
1. Caso de uso Gestionar Catálogos:
1.1 Actor Principal: Administrador
1.2 Precondición: Usuario se ha autenticado
1.3 Postcondición: Ninguna
1.4 Casos de uso relacionados: Ninguno
2. Escenario Principal:
2.1 El usuario consulta los catálogos existentes
2.2 El usuario consulta los registros asociados a cada catálogo existente
2.3 El usuario puede agregar nuevos registros a un catálogo existente
2.4 El usuario puede editar un registro de un catálogo existente
2.5 El usuario puede eliminar un registro de un catálogo existente
3. Flujos Alternativos: Ninguno
Tabla 31: Gestionar Catálogos
4.2.23 Caso de uso Ver Registros Auditoria
1. Caso de uso Ver Registros Auditoria:
1.1 Actor Principal: Administrador
1.2 Precondición: Usuario se ha autenticado
36
1.3 Postcondición: Ninguna
1.4 Casos de uso relacionados: Ninguno
2. Escenario Principal:
2.1 El usuario consulta los registros de auditorio del sistema
3. Flujos Alternativos: Ninguno
Tabla 32: Ver Registros Auditoria
4.3 Diagramas de Secuencia
4.3.1 Diagrama de secuencia Crear Usuario
Ilustración 9: Crear Usuario
4.3.2 Diagrama de secuencia Identificarse
Diagrama de secuencia Crear Usuario
mostrar mensaje
enviar respuesta
mostrar mensajeenviar mensaje
petición HTTP
registrar
ok
grabarUsuario()
usuario existente
buscarUsuario()
Registrar Usuario
Adminstrador
Pantalla Registro Servicio RESTful Base de datosControlador Usuario
mostrar mensaje
enviar respuesta
mostrar mensajeenviar mensaje
petición HTTP
registrar
ok
grabarUsuario()
usuario existente
buscarUsuario()
Registrar Usuario
37
Ilustración 10: Identificarse
4.3.3 Diagrama de secuencia Buscar Historia Clínica
Diagrama de Secuencia Identificarse
renderizar pantalla de inicio
enviar respuesta
mostrar mensajeenviar mensaje
peticion HTTP
autenticar
error
ok
autenticar()
Ingresar Credenciales
Pantalla Login Servicio RESTful Base de Datos
Usuario
Contralador Cuentas
renderizar pantalla de inicio
enviar respuesta
mostrar mensajeenviar mensaje
peticion HTTP
autenticar
error
ok
autenticar()
Ingresar Credenciales
38
Ilustración 11: Buscar Historia Clínica
4.3.4 Diagrama de secuencia Gestionar Formulario Historia Clínica
Diagrama de Secuencia Buscar Historia Clínica
enviar respuesta
renderizar pantalla
petición HTTP
realizar busqueda
recuperar
consultar()
ingresa criterios búsqueda
Usuario
Pantalla Búsqueda Servicio RESTful Base de datosControlador Búsqueda
enviar respuesta
renderizar pantalla
petición HTTP
realizar busqueda
recuperar
consultar()
ingresa criterios búsqueda
39
Ilustración 12: Gestionar Formulario Historia Clínica
4.3.5 Diagrama de secuencia Historial Clínico
Diagrama de Secuencia Gestionar Formulario Historia Clínica
enviar respuesta
enviar respuesta
enviar respuesta
enviar respuesta
enviar respuesta
enviar respuesta
petición HTTP
petición HTTP
petición HTTP
petición HTTP
petición HTTP
petición HTTP
renderizar pantalla
renderizar pantalla
renderizar pantalla
renderizar pantalla
renderizar pantalla
renderizar pantalla
Ingresar Evolución Prescripcines
Ingresar Planes
Ingresar Diagnósticos
Ingresar Examen Físico
Ingresar Revisión Actual
Ingresar Enfermedad Actual
renderizar pantallaenviar respuesta
petición HTTPIngresar motivo de consulta
habilitar/deshabilitar menu
enviar respuesta
petición HTTPCrear/Buscar Episodio
CRUD Evolución Prescripciones
CRUD Planes
CRUD Diagnósticos
CRUD Examen Físico
CRUD Revisión Actual
Seleccionar Historia
CRUD Enfermedad Actual
CRUD Motivo Consulta
CRUD Episodio
Usuario
Servicio RESTful Base de datosFormulario Historia Clínica Controlador Historia Clínica
enviar respuesta
enviar respuesta
enviar respuesta
enviar respuesta
enviar respuesta
enviar respuesta
petición HTTP
petición HTTP
petición HTTP
petición HTTP
petición HTTP
petición HTTP
renderizar pantalla
renderizar pantalla
renderizar pantalla
renderizar pantalla
renderizar pantalla
renderizar pantalla
Ingresar Evolución Prescripcines
Ingresar Planes
Ingresar Diagnósticos
Ingresar Examen Físico
Ingresar Revisión Actual
Ingresar Enfermedad Actual
renderizar pantallaenviar respuesta
petición HTTPIngresar motivo de consulta
habilitar/deshabilitar menu
enviar respuesta
petición HTTPCrear/Buscar Episodio
CRUD Evolución Prescripciones
CRUD Planes
CRUD Diagnósticos
CRUD Examen Físico
CRUD Revisión Actual
Seleccionar Historia
CRUD Enfermedad Actual
CRUD Motivo Consulta
CRUD Episodio
40
Ilustración 13: Historial Clínico
4.3.6 Diagrama de secuencia Gestionar Catálogos
Diagrama de Secuencia Historial Clínico
CRUD Signos Vitales
enviar respuesta
petición HTTP
renderizar pantalla
ver gráficas
renderizar pantalla
renderizar pantalla
renderizar pantalla
renderizar pantalla
ver formulario historia clínica
enviar respuesta
enviar respuesta
enviar respuesta
petición HTTPver antecedentes familiares
petición HTTPver antecedentes familiares
petición HTTP
ver información personal
CRUD Antecedentes Personales
CRUD Antecedentes Famliares
consultar()
consultar historial
Usuario
Pantalla Historial Clínico Servicio RESTful Base de datosControlador Historial Clínico
CRUD Signos Vitales
enviar respuesta
petición HTTP
renderizar pantalla
ver gráficas
renderizar pantalla
renderizar pantalla
renderizar pantalla
renderizar pantalla
ver formulario historia clínica
enviar respuesta
enviar respuesta
enviar respuesta
petición HTTPver antecedentes familiares
petición HTTPver antecedentes familiares
petición HTTP
ver información personal
CRUD Antecedentes Personales
CRUD Antecedentes Famliares
consultar()
consultar historial
41
Ilustración 14: Gestionar Catálogos
4.4 Arquitectura de la aplicación
Diagrama de Secuencia Gestionar Catálogos
renderizar pantallaenviar respuesta
CRUD Catálogo
petición HTTPseleccionar registro
renderizar pantalla
enviar respuesta
CRUD Tablapetición HTTP
seleccionar catálogo
gestionar catálogos
Adminstrador
Pantalla Catálogos Controlador Catálogos Servicio RESTful Base de datos
renderizar pantallaenviar respuesta
CRUD Catálogo
petición HTTPseleccionar registro
renderizar pantalla
enviar respuesta
CRUD Tablapetición HTTP
seleccionar catálogo
gestionar catálogos
42
La aplicación desarrollada se basa en el estilo de una aplicación de una sola página o
SPA por sus siglas en inglés, todos los componentes de FRONTEND tales como
archivos HTML, JavaScript, CSS, etcétera son enviado en la carga inicial o primera
llamada o petición al servidor, a partir de ese momento el intercambio de
información entre el cliente y servidor serán únicamente representaciones objetos en
algún formato como JSON o XML. A continuación se muestra la arquitectura de la
aplicación que se basa en el estilo SPA con un stack Spring MVC - AngularJS:
Ilustración 15: Arquitectura de la Aplicación
Se evidencian el FrontEnd y Backend completamente independientes uno del otro, el
FrontEnd escrito en lenguaje JavaScript haciendo uso del patrón MVC con el
framework de programación AngularJS, el Backend construido con el lenguaje Java
consiste de una API RESTful con el framework de programación Spring MVC.
El FrontEnd consta de tres capas:
1. Capa de Vista: compuesta por templates html, CSS y directivas de AngularJS
que se cargan dentro de la página principal o inicial de la aplicación. Las
etiquetas HTML permiten definir componentes que serán renderizados en el
43
browser y mostrados al usuario, las directivas AngularJS permiten la
definición de comportamiento dinámico que tendrá la página y el enlace de la
vista con el modelo y posterior envío de información hacia el Backend.
Ilustración 16: Template HTML5
2. Capa de Control: Cada una de las vistas tiene asociado un controlador mismo
que se identifica con un nombre y se asocia a un módulo de AngularJS.
Los controladores escritos en lenguaje JavaScript permiten definir la lógica
de negocio de la aplicación en el lado del cliente y liberar de carga de trabajo
al servidor.
Ilustración 17: Controlador AngularJS
3. Capa de servicios: Un conjunto de servicios que permiten interactuar con el
BACKEND y pueden ser inyectados en los controladores de AngularJS. En la
44
definición de los servicios se especifican la URI del API REST a la que hace
referencia y el método a ejecutar para cada acción.
Ilustración 18: Servicio AngularJS
El BACKEND consiste de una API REST, está constituido por tres capas:
1. Capa de Ruteo.- define qué servicios corresponden a una URI HTTP y como
los parámetros son leídos desde la petición HTTP.
45
Ilustración 19: Servicio RESTful
2. Capa de Servicio.- Contiene toda la lógica de negocio como validaciones y
manejo de transacciones.
3. Capa de Persistencia.- Construida con el uso del módulo Spring Data JPA el
cual brinda la implementación de una interfaz que reduce la cantidad de
código repetido en la construcción de la capa de persistencia.
Ilustración 20: JpaRepository
4.4.1 Servicios RESTful
A continuación se especifican los servicios RESTful usados en la construcción de la
aplicación.
46
Cuentas
URI Método
HTTP
POST
Body
Result
/api/register POST JSON Crear usuario
/api/account GET Recuperar usuario
autenticado
/api/account POST JSON Actualizar usuario
autenticado
/api/account/change_password POST JSON Cambiar contraseña
usuario autenticado
/api/authenticate POST Autenticar usuario
Tabla 33: RESTful Cuentas
Usuarios
URI Método
HTTP
POST
Body
Result
/api/users GET Recuperar todos
/api/users/{login} GET Recuperar por id
Tabla 34: RESTful Usuarios
Tablas (Para Catálogos)
URI Método
HTTP
POST
Body
Result
/api/tablas GET Recuperar todos
/api/tablas/{id} GET Recuperar por id
/api/tablas POST JSON Crear registro
/api/tablas PUT JSON Actualizar registro
/api/tablas/{id} DELETE Borrar registro
Tabla 35: RESTful Tablas
Catálogos
URI Método
HTTP
POST
Body
Result
/api/tablas/{tab_id}/catalogs GET Recuperar todos
/api/tablas/{tab_id}/catalogs/{id} GET Recuperar por id
47
/api/tablas/{tab_id}/catalogs POST JSON Crear registro
/api/tablas/{tab_id}/catalogs PUT JSON Actualizar registro
/api/tablas/{tab_id}/catalogs DELETE Borrar registro
Tabla 36: RESTful Catálogos
Cantones
URI Método
HTTP
POST
Body
Result
/api/cantons GET Recuperar todos
/api/cantons/{id} GET Recuperar por id
/api/cantons POST JSON Crear registro
/api/cantons PUT JSON Actualizar registro
/api/cantons/{id} DELETE Borrar registro
Tabla 37: RESTful Cantones
Provincias
URI Método
HTTP
POST
Body
Result
/api/provincias GET Recuperar todos
/api/provincias /{id} GET Recuperar por id
/api/provincias POST JSON Crear registro
/api/provincias PUT JSON Actualizar registro
/api/provincias/{id} DELETE Borrar registro
Tabla 38: RESTful Provincias
Países
URI Método
HTTP
POST
Body
Result
/api/countries GET Recuperar todos
/api/countries/{id} GET Recuperar por id
/api/countries POST JSON Crear registro
/api/countries PUT JSON Actualizar registro
/api/countries DELETE Borrar registro
Tabla 39: RESTful Países
48
Personas
URI Método
HTTP
POST
Body
Result
/api/persons GET Recuperar todos
/api/persons/{id} GET Recuperar por id
/api/persons POST JSON Crear registro
/api/persons PUT JSON Actualizar registro
/api/persons/{id} DELETE Borrar registro
Tabla 40: RESTful Personas
Historias Clínicas
URI Método
HTTP
POST
Body
Result
/api/clinicHistories GET Recuperar todos
/api/clinicHistories /{id} GET Recuperar por id
/api/clinicHistories POST Crear registro
/api/clinicHistories PUT Actualizar registro
/api/clinicHistories/{id} DELETE Borrar registro
Tabla 41: RESTful Historias Clínicas
Episodios
URI Método
HTTP
POST
Body
Result
/api/clinicHistories /{history_id}/episodes GET Recuperar todos
/api/clinicHistories /{history_id}/episodes/{id} GET Recuperar por id
/api/clinicHistories /{history_id}/episodes POST JSON Crear registro
/api/clinicHistories /{history_id}/episodes PUT JSON Actualizar registro
/api/clinicHistories /{history_id}/episodes/{id} DELETE Borrar registro
Tabla 42: RESTful Episodios
49
Antecedentes Personales
URI Método
HTTP
POST
Body
Result
/api/clinicHistories /{history_id}/episodes GET Recuperar todos
/api/clinicHistories /{history_id}/episodes/{id} GET Recuperar por id
/api/clinicHistories /{history_id}/episodes POST JSON Crear registro
/api/clinicHistories /{history_id}/episodes PUT JSON Actualizar registro
/api/clinicHistories /{history_id}/episodes/{id} DELETE Borrar registro
Tabla 43: RESTful Antecedentes Personales
Antecedentes Familiares
URI Método
HTTP
POST
Body
Result
/api/clinicHistories /{history_id}/episodes GET Recuperar todos
/api/clinicHistories /{history_id}/episodes/{id} GET Recuperar por id
/api/clinicHistories /{history_id}/episodes POST JSON Crear registro
/api/clinicHistories /{history_id}/episodes PUT JSON Actualizar registro
/api/clinicHistories /{history_id}/episodes/{id} DELETE Borrar registro
Tabla 44: RESTful Antecedentes Familiares
Signos Vitales
URI Método
HTTP
POST
Body
Result
/api/clinicHistories /{history_id}/vitalSigns GET Recuperar todos
/api/clinicHistories /{history_id}/ vitalSigns /{id} GET Recuperar por id
/api/clinicHistories /{history_id}/ vitalSigns POST JSON Crear registro
/api/clinicHistories /{history_id}/ vitalSigns PUT JSON Actualizar registro
/api/clinicHistories /{history_id}/ vitalSigns/{id} DELETE Borrar registro
Tabla 45: RESTful Signos Vitales
Motivos de Consulta
URI Método
HTTP
POST
Body
Result
/api/episodes/{episode_id}/reasons GET Recuperar todos
/api/episodes/{episode _id}/reasons /{id} GET Recuperar por id
/api/episodes/{episode _id}/reasons POST JSON Crear registro
50
/api/episodes/{episode tory_id}/reasons PUT JSON Actualizar registro
/api/episodes/{episode _id}/reasons/{id} DELETE Borrar registro
Tabla 46: RESTful Motvos de Consulta
Enfermedad o Problema Actual
URI Método
HTTP
POST
Body
Result
/api/episodes/{episode_id}/currentIllnes GET Recuperar todos
/api/episodes/{episode_id}/currentIllnes/{id} GET Recuperar por id
/api/episodes/{episode_id}/currentIllnes POST JSON Crear registro
/api/episodes/{episode_id}/currentIllnes PUT JSON Actualizar registro
/api/episodes/{episode_id}/currentIllnes/{id} DELETE Borrar registro
Tabla 47: RESTful Enfermedad o Problema Actual
Revisión Actual de Órganos Y Sistemas
URI Método
HTTP
POST
Body
Result
/api/episodes/{episode_id}/currentRevision GET Recuperar todos
/api/episodes/{episode_id}/currentRevision /{id} GET Recuperar por id
/api/episodes/{episode_id}/currentRevision POST JSON Crear registro
/api/episodes/{episode_id}/currentRevision PUT JSON Actualizar registro
/api/episodes/{episode_id}/currentRevision/{id} DELETE Borrar registro
Tabla 48: RESTful Revisión Actual de Órganos y Sistemas
Examen Físico
URI Método
HTTP
POST
Body
Result
/api/episodes/{episode_id}/physicalExam GET Recuperar todos
/api/episodes/{episode_id}/physicalExam/{id} GET Recuperar por id
/api/episodes/{episode_id}/physicalExam POST JSON Crear registro
/api/episodes/{episode_id}/physicalExam PUT JSON Actualizar registro
/api/episodes/{episode_id}/physicalExam/{id} DELETE Borrar registro
Tabla 49: RESTful Examen Físico
51
Diagnósticos
URI Método
HTTP
POST
Body
Result
/api/episodes/{episode_id}/diagnostics GET Recuperar todos
/api/episodes/{episode_id}/diagnostics /{ id} GET Recuperar por id
/api/episodes/{episode_id}/diagnostics POST JSON Crear registro
/api/episodes/{episode_id}/diagnostics PUT JSON Actualizar registro
/api/episodes/{episode_id}/diagnostics/{id} DELETE Borrar registro
Tabla 50: RESTful Diagnósticos
Planes
URI Método
HTTP
POST
Body
Result
/api/episodes/{episode_id}/plans GET Recuperar todos
/api/episodes/{episode_id}/plans /{ id} GET Recuperar por id
/api/episodes/{episode_id}/plans POST JSON Crear registro
/api/episodes/{episode_id}/plans PUT JSON Actualizar registro
/api/episodes/{episode_id}/plans/{id} DELETE Borrar registro
Tabla 51: RESTful Planes
Evolución y Prescripciones
URI Método
HTTP
POST
Body
Result
/api/episodes/{episode_id}/evolutionPrescriptions GET Recuperar todos
/api/episodes/{episode_id}/evolutionPrescriptions/{id} GET Recuperar por id
/api/episodes/{episode_id}/evolutionPrescriptions POST JSON Crear registro
/api/episodes/{episode_id}/evolutionPrescriptions PUT JSON Actualizar registro
/api/episodes/{episode_id}/evolutionPrescriptions/{id} DELETE Borrar registro
Tabla 52: RESTful Evolución y Prescripciones
52
4.5 Funcionamiento de la aplicación
4.5.1 Ingreso a la aplicación:
Ilustración 21: Ingreso a la aplicación
4.5.2 Pantalla de inicio:
Ilustración 22: Pantalla Inicio
53
4.5.3 Menú Citas
En el menú Citas se cuenta con dos submenús:
Ilustración 23: Menú Citas
4.5.3.1 Buscar Historia:
Permite la búsqueda de historias Clínicas:
Ilustración 24: Búsqueda de Historias Clínicas
4.5.3.2 Citas Agendadas
Citas Agenda das Permite la consulta de citas que han sido previamente registradas:
Ilustración 25: Citas Agendadas
54
Desde la opción Citas Agendas con un clic en turno o desde Búsqueda De Historias
Clínicas con un clic en id se puede acceder a la opción Historial Clínico para la
persona seleccionada, y se muestran cinco opciones:
Información Personal
Antecedentes Familiares
Antecedentes Personales
Historia Clínica
Gráficas
4.5.4 Información Personal
Se muestra la información personal del paciente asociado al Historial Clínico
seleccionado:
Ilustración 26: Información Personal
55
4.5.5 Antecedentes Familiares:
Muestra los Antecedentes Familiares del Historial Clínico:
Ilustración 27: Antecedentes Familiares
Crear Antecedente Familiar:
Ingresar la Fecha, Enfermedad, Descripción del Antecedente Familiar y presionar el
botón Guardar:
Ilustración 28: Crear Antecedente Familiar
56
Editar Antecedente Familiar:
Presionar el botón editar y se mostrará una ventana emergente para la modificación:
Ilustración 29: Editar Antecedente Familiar
Eliminar Antecedente Familiar:
Presionar el botón Eliminar y confirmar la eliminación:
Ilustración 30: Eliminar Antecedente Familiar
57
4.5.6 Antecedentes Personales:
Muestra los Antecedentes Personales del Historial Clínico:
Ilustración 31: Antecedentes Personales
Crear Antecedente Personal:
Ingresar la Fecha, Enfermedad, Descripción del Antecedente Personal y presionar el
botón Guardar:
Ilustración 32: Crear Antecedente Personal
Editar Antecedente Personal:
Presionar el botón editar y se mostrará una ventana emergente para la modificación:
Ilustración 33: Editar Antecedente Personal
58
Eliminar Antecedente Personal:
Presionar el botón Eliminar y confirmar la eliminación:
Ilustración 34: Eliminar Antecedente Personal
4.5.7 Formulario Historial Clínico:
Ilustración 35: Formulario Historial Clínico
Muestra el formato de Historial Clínico contiene 7 campos:
Motivo de Consulta
Enfermedad Actual
Revisión Actual
Diagnósticos
Planes
Evolución y Prescripciones
59
Inicialmente los campos se muestran deshabilitados pues es necesario primero crear
un nuevo Episodio o Buscar un Episodio Anterior:
Ilustración 36: Menú Formulario Historial Clínico
Buscar Episodio:
Ilustración 37: Buscar Episodio
Permite buscar y seleccionar un episodio anterior, la lista muestra los episodios que
ha tenido el paciente los mismos se muestran ordenados por fecha en orden
descendente.
Nuevo Episodio:
Permite crear un Episodio Nuevo
Se visualiza la fecha de creación, secuencial y se habilitan los campos para edición
Ilustración 38: Crear Episodio
60
Imprimir:
Permite realizar la Impresión del Historial Clínico.
Ilustración 39: Reporte Historial Clínico
61
Motivo de Consulta
Permite el registro del motivo de la consulta
Ilustración 40: Motivo de Consulta
Enfermedad Actual
Permite el registro de la enfermedad actual
Ilustración 41: Enfermedad Actual
Revisión Actual
Registra la revisión actual del paciente, seleccionar el Órgano de Revisión y si existe
evidencia o no de patología adicionalmente se puede registrar una descripción.
Ilustración 42: Revisión Actual
62
Examen Físico
Registra el Examen Físico del paciente, seleccionar la parte del cuerpo que se revisa
y si tiene evidencia o no de patología, adicionalmente se puede registrar una
descripción.
Ilustración 43: Examen Físico
Diagnósticos
Registra el diagnóstico, seleccionar si es presuntivo o definitivo, el código CIE de la
enfermedad diagnosticada, adicionalmente se puede registrar una descripción
Ilustración 44: Diagnósticos
Selección de CIE (Clasificación Internacional de Enfermedades)
Se puede realizar búsqueda por Código o Descripción, seleccionar haciendo clic en el
código de la enfermedad.
63
Ilustración 45: CIE 10
Planes
Permite registra los planes a seguir en el tratamiento del paciente.
Ilustración 46: Planes
64
Evolución y Prescripciones
Permite registrar la evolución y prescripciones del paciente.
Ilustración 47: Evolución y Prescripciones
4.5.8 Gráficas de Crecimiento
4.5.8.1 Circunferencia Cefálica (Puntaje Z)
Circunferencia Cefálica en centímetros vs Edad en meses
Se muestran cinco curvas, Serie corresponde a los datos del paciente
Ilustración 48: Gráfica Circunferencia Cefálica Puntaje Z
65
4.5.8.2 Circunferencia Cefálica (Percentiles)
Circunferencia Cefálica en centímetros vs Edad en meses
Se muestran cinco curvas, Serie corresponde a los datos del paciente
Ilustración 49: Gráfica Circunferencia Cefálica Percentiles
4.5.8.3 Longitud / Estatura (Puntaje Z)
Longitud / Estatura en cm vs Edad en meses
Se muestran cinco curvas, Serie corresponde a los datos del paciente
Ilustración 50: Gráfica Longitud/Estatura Puntaje Z
66
4.5.8.4 Longitud / Estatura (Percentiles)
Longitud / Estatura en cm vs Edad en meses
Se muestran cinco curvas, Serie corresponde a los datos del paciente
Ilustración 51: Gráfica Longitud/Estatura Percentiles
4.5.8.5 Peso (Puntaje Z)
Peso en Kg vs Edad en meses
Se muestran cinco curvas, Serie corresponde a los datos del paciente
Ilustración 52: Gráfica Peso Puntaje Z
4.5.8.6 Peso (Percentiles)
Peso en Kg vs Edad en meses
67
Se muestran cinco curvas, Serie corresponde a los datos del paciente
Ilustración 53: Gráfica Peso Percentiles
4.5.9 Menú Entidades
Permite el mantenimiento de entidades, este menú se muestra únicamente para el rol
Administrador.
Ilustración 54: Entidades
68
4.5.9.1 Personas
Permite administrar los Pacientes.
Ilustración 55: Personas
4.5.9.2 Historia Clínica
Permite administras las Historias Clínicas
Ilustración 56: Historiales Clínicos
69
4.5.9.3 Países
Permite administrar al catálogo de Países
Ilustración 57: Catálogo Países
4.5.9.4 Provincias
Permite administrar el catálogo de Provincias
Ilustración 58: Catálogo Provincias
4.5.9.5 Cantones
Permite administrar el catálogo de Cantones
Ilustración 59: Catálogo Cantones
70
4.5.9.6 Catálogos
Permite administrar los distintos catálogos mostrados en el historial Clínico,
presionar el botón de vista para visualizar los registros asociados al catálogo.
Ilustración 60: Catálogos
Catálogo diagnósticos presuntivos definitivo
Ilustración 61: Catálogo Diagnósticos
Catálogo antecedentes personales lista actividades
Ilustración 62: Catálogo Antecedente Personales Actividades
71
Catálogo antecedentes familiares lista enfermedades
Ilustración 63: Catálogo Antecedentes Familiares Enfermedades
Catálogo revisión actual con evidencia sin evidencia
Ilustración 64: Catálogo Revisión Actual Con Evidencia Sin Evidencia
72
Catálogo revisión actual lista órganos
Ilustración 65: Catálogo Revisión Actual Órganos
Catálogo examen físico lista partes del cuerpo
Ilustración 66: Catálogo Examen Físico Partes Del Cuerpo
73
Catálogo género
Ilustración 67: Catálogo Género
Catálogo nivel de educación
Ilustración 68: Catálogo Nivel de Educación
Catálogo estado civil
Ilustración 69: Catálogo Estado Civil
74
4.5.10 Menú Administración
Este menú está activo únicamente para el rol Administrador
Ilustración 70: Menú Administración
4.5.11 Menú Cuenta
Este menú permite realizar configuraciones de la cuenta y cerrar la sesión actual.
Ilustración 71: Menú Cuenta
4.5.11.1 Ajustes
Permite cambiar el nombre de usuario, correo electrónico e idioma de visualización
preferido.
Ilustración 72: Ajustes de Usuario
75
4.5.11.2 Contraseña
Permite la actualización de contraseña
Ilustración 73: Cambiar Contraseña
4.5.11.3 Cerrar Sesión
Permite el cierre de sesión
4.5.12 Idioma
Permite la visualización tanto en idioma español como en inglés.
Ilustración 74: Menú Lenguaje
76
CAPITULO 5
Conclusiones y recomendaciones
A continuación se detalla de manera general las conclusiones y recomendaciones que
surgieron en el desarrollo del presente proyecto.
Conclusiones
1. La colaboración del personal del área de Pediatría del Hospital del Día de la
Universidad Central del Ecuador, fue de vital importancia para la
construcción de la presente aplicación web, ya que a través de la
determinación de los requerimientos se realizó la automatización del proceso
de gestión de historias clínicas pediátricas.
2. El uso de la Metodología de Desarrollo de Software, en Espiral, permitió el
análisis y mitigación de riesgos en el desarrollo de la presente aplicación web
permitiendo obtener un producto final más apegado a las especificaciones del
usuario final.
3. La presente aplicación web contribuye a la conservación del medio ambiente
disminuyendo el uso de papel y eliminando las actividades manuales
realizadas anteriormente en el Hospital del Día, en el área de pediatría;
permitiendo de esta manera mantener la información digitalizada, integra y
disponible para el usuario final.
4. El presente proyecto brinda las facilidades para realizar un correcto y
eficiente control del historial clínico de niños y niñas en edad pediátrica; el
uso de las gráficas de crecimiento permite detectar tempranamente problemas
relacionados con su salud.
5. El diseño de esta aplicación, basado en una Arquitectura REST, define un
conjunto de principios con los cuales se pueden diseñar servicios web que
77
pueden ser consumidos por una muy amplia gama de clientes de distintas
plataformas y lenguajes; lo que permitió la construcción de una aplicación
web independiente de la plataforma, escalable, extensible y confiable.
6. La presente aplicación web, definida como aplicación SPA o de una sola
página, permite el ahorro de ancho de banda y tiempo de proceso de cálculo
en el lado del servidor al delegar al cliente cierta lógica de negocio y
creación de contenido dinámico de las vistas; convirtiéndola en una
aplicación de alto rendimiento, eficiente y que brinda una mejor experiencia
al usuario final.
7. En la construcción de aplicaciones web de este estilo se transfiere lógica de
negocio que en una aplicación típica se encuentra en el servidor hacia el lado
del cliente esto permite que cualquier persona con ciertos conocimientos de
programación y el uso de herramientas informáticas para desarrollo de
software pueda manipular el código, por ello es necesario la replicación de
validaciones y control de seguridad en el servidor.
78
Recomendaciones
1. Una de las creencias que se presentan con la implementación de un sistema
de software es que la mejora vendrá únicamente con la implementación del
mismo sin considerar que el éxito o fracaso de la implementación dependerá
también de que los usuarios se muestren interesados en el uso y la
automatización de los procesos. Es por ello la necesidad de fomentar el uso
del sistema desarrollado y dar un seguimiento minucioso para validar
mejoras, detectar posibles falencias y realizar una mejora continua.
2. Los avances tecnológicos hacen que las empresas u organizaciones que no
tienen una visión de crecimiento tecnológico tiendan a ser desplazadas por la
competencia que apuesta por los sistemas de información, por este motivo se
recomienda la automatización de procesos también en otras áreas que
conforman el Hospital Del Día con la finalidad de obtener un sistema de
información integrado que abarque la gran mayoría de procesos que se llevan
a cabo en esta institución.
3. El desarrollo de presente proyecto de software es el punto inicial de un
sistema informático para la gestión de fichas médicas se recomienda para
futuros desarrolladores o estudiantes que consideren la ampliación del
proyecto incorporando los diferentes formularios que contemplan el Historial
Clínico para las distintas especialidades médicas cada uno con su respectivo
formato, continuando con la utilización de los estándares que fueron usados
en el desarrollo de la presente aplicación y fomentando el uso de
herramientas de desarrollo de software libre.
4. La información generada en el sistema de gestión de Fichas Médicas debe ser
manipulada de forma reservada respetando la confidencialidad e intimidad
del paciente ninguna persona no autorizada debe tener acceso a esta
79
información, para ello se recomienda tener un control estricto de usuarios
autorizados y registrados, se debe acceder al Historial Clínico únicamente
por razones asistenciales por parte del profesional médico, de investigación o
docente, en estos últimos casos garantizando el anonimato del paciente.
5. En vista de la gran importancia que conlleva el manejo del historial clínico de
los pacientes es necesario y se recomienda la administración del sistema por
parte de personal capacitado con conocimientos en el área de informática para
la adecuada gestión de la base de datos y administración general del sistema.
6. Se recomienda implementar la presente aplicación web haciendo uso de las
tecnologías de software libre definidas para el mismo, permitiendo
aprovechar las futuras liberaciones de versiones que ayudarán a mejorar su
rendimiento y experiencia hacia el usuario final.
80
GLOSARIO DE TÉRMINOS
A
API.- Por sus siglas en inglés Aplication Programing Interface, interfaz de
programación de aplicaciones, es un conjunto de funciones y/o procedimientos de
programación que se ofrecen de manera que puedan ser reutilizados.
Actor.- Usado en el lenguaje de modelado UML para representar a un usuario o
aplicación externa que interactúa con el sistema.
B
Backend.- es la parte de una aplicación o sistema de software que interactúa con la
capa de acceso a datos.
BDD.- gestor de datos o base de datos donde se almacena información en forma
organizada para su fácil acceso y preservación en el tiempo.
C
Cacheable.- Que implementa algún tipo de mecanismo para el almacenamiento
temporal en memoria cache para mejorar el rendimiento.
CRUD.- Por sus siglas en inglés commit, retrieve, update, delete abreviatura usada
para representar las cuatro operaciones básicas que se pueden realizar con una
entidad.
D
Digitalización.- Representación de documentos, imágenes, sonidos, etcétera
mediante el uso de números o dígitos para su posterior tratamiento mediante el uso
de dispositivos construidos para tal efecto.
E
Entidad.- El término entidad en el área de la informática hace referencia a la
representación de un objeto de la vida real mediante el uso de un lenguaje de
programación orientado a objetos y que puede ser almacenado en una base datos.
Episodio.- Visita que realiza un paciente al profesional médico en una determinada
fecha.
F
Frontend.- Es la parte de una aplicación o sistema de software que permite la
interacción con el usuario.
81
Framework.- Conjunto de asunciones, conceptos, valores y prácticas que facilitan o
sirven de base para enfrentar y resolver problemas que se dan en la construcción de
software con algún lenguaje de programación.
FIMEPED.- Acrónimo con que se designa al proyecto Fichas Médicas Pediátricas.
H
HTML.- Por sus siglas en inglés Hipertext Markup Languaje, es un lenguaje de
etiquetado para el diseño de páginas web.
HTTP.- Por sus siglas en inglés Hipertext Transfer Protocol es un conjunto de
especificaciones que permiten la comunicación a través del internet.
I
IDE.- Por sus siglas en inglés Integrated Develoment Enviorment, es una aplicación
informática que proporciona servicios integrales y facilita el desarrollo de software.
J
JSON.- Por sus siglas en inglés JavaScript Object Notation define un conjunto de
reglas para representar a un objeto o entidad con sus atributos.
JWT.- Por sus siglas en inglés JSON Web Token es un token en formato JSON
usado para la autenticación basada en Tokens.
R
REST.- Por sus siglas en inglés Representational State Transfer es un estilo de
arquitectura de software que se fundamenta en las especificaciones del protocolo
HTTP.
RESTful.- Hace referencia a un servicio en la web que implementa la arquitectura
REST.
S
Stateless.- Que no mantiene ningún tipo de información acerca del estado.
SPA.- Por sus siglas en ingles Single Page Application, Aplicación de una sola
página, se usa para distinguir a las aplicaciones que usan un estilo de realizar una
carga inicial de todas las vistas de la aplicación y mediante el uso de un lenguaje de
programación en el lado del cliente realizar la navegación de vistas únicamente
cambiando o actualizando ciertas porciones de una página inicial o página principal.
82
T
Token.- Objeto que contiene las credenciales de seguridad e identifica un usuario
para el uso de una aplicación o sistema en la web.
U
URI.- Por sus siglas en inglés Uniform Resource Identifier es una cadena de
caracteres que se usan para identificar un recurso en la web.
URL.- Por sus siglas en inglés Uniform Resource Locator es una cadena de
caracteres que se usa para especificar la ubicación de un recurso en un computador
en la red.
W
WEB.- También conocida con las siglas www (World Wide Web), espacio de uso
libre donde documentos, archivos y otros recursos son identificados por URIs y
pueden ser accedidos a través del internet.
X
XML.- Por sus siglas en inglés Extensible Markup Languaje define un conjunto de
reglas para codificar documentos en un formato en el cual humanos y máquina
puedan entenderlo, se usa también para representar un objeto o entidad.
83
BIBLIOGRAFÍA
Libros
1. Álvarez Caula Cecilio. Sun Certified Enterprise Architect. Arquitectura Java
Sólida
2. Joseph Schmuller. Prentice Hall. Aprendiendo UML en 24 Horas
3. Carlos Azaustre. Desarrollo Web Ágil con AngularJS
4. O’Reilly - Eric Freeman & Elisabeth Robson. Head First Design Patterns
5. O’Reilly - Eric Freeman & Elisabeth Robson. Head First HTML5
Programming
6. Craig Walls. Spring in Action Third Edition
7. Mike Keith, Merrick Schincariol. Pro JPA 2: Mastering the Java™
Persistence API: Mastering the Java™ Persistence API (Expert's Voice in
Java Technology)
Páginas Web
https://www.angularjs.org/
http://bower.io/
http://yeoman.io/
http://gruntjs.com/
https://www.npmjs.com/
https://nodejs.org/en/
https://git-scm.com/
http://spring.io/
http://jwt.io/
http://blog.jhades.org/developing-a-modern-java-8-web-app-with-spring-mvc-and-
angularjs/
85
Anexo 1. Manual Técnico
Modelo Entidad Relación
Persona y Reservaciones
Ilustración 75: Entidad Relación Personas y Reservaciones
88
Catálogos
Ilustración 78: Entidad Relación Catálogo Países
Ilustración 79: Entidad Relación Catálogos
89
Auditoria
Ilustración 80: Entidad Relación Auditoria
Seguridades y Permisos
Ilustración 81: Entidad Relación Seguridades y Permisos
90
DICCIONARIO DE DATOS
GN_PERSONA
Almacena datos de los pacientes.
Nombre Tipo de Dato Nullable PK Serial
CODIGO_PER bigint NO SI SI
INSTITUCION_SISTEMA_PER varchar(255) SI NO NO
UNIDAD_OPERATIVA_PER varchar(255) SI NO NO
COD_UO_PER int SI NO NO
TIPO_PER varchar(255) SI NO NO
FACULTAD_PER varchar(255) SI NO NO
CARRERA_PER varchar(255) SI NO NO
SEMESTRE_PER int SI NO NO
PRIMER_NOMBRE_PER varchar(255) SI NO NO
SEGUNDO_NOMBRE_PER varchar(255) SI NO NO
APELLIDO_PATERNO_PER varchar(255) SI NO NO
APELLIDO_MATERNO_PER varchar(255) SI NO NO
CEDULA_PER varchar(255) SI NO NO
DIRECCION_PER varchar(255) SI NO NO
TELEFONO_PER varchar(255) SI NO NO
FECHA_NACIMIENTO_PER date SI NO NO
LUGAR_NACIMIENTO_PER varchar(255) SI NO NO
NACIONALIDAD_PER varchar(255) SI NO NO
EDAD_PER int SI NO NO
SEXO_PER varchar(255) SI NO NO
ESTADO_CIVIL_PER varchar(255) SI NO NO
INSTRUCCION_ANIO_APROBADO_PER varchar(255) SI NO NO
FECHA_ADMISION_PER date SI NO NO
OCUPACION_PER varchar(255) SI NO NO
EMPRESA_TRABAJA_PER varchar(255) SI NO NO
TIPO_SEGURO_PER varchar(255) SI NO NO
REFERIDO_PER varchar(255) SI NO NO
PARENTESCO_NOMBRE_PER varchar(255) SI NO NO
PARENTESCO_PER varchar(255) SI NO NO
DIRECCION_PARENTESCO_PER varchar(255) SI NO NO
TELEFONO_PARENTESCO_PER varchar(255) SI NO NO
BARRIO_PER varchar(255) SI NO NO
PARROQUIA_PER varchar(255) SI NO NO
CANTON_PER varchar(255) SI NO NO
91
PROVINCIA_PER varchar(255) SI NO NO
ZONA_PER varchar(255) SI NO NO
GRUPO_CULTURAL_PER varchar(255) SI NO NO
Tabla 53: GN_PERSONA
TN_RESERVACION
Almacena datos de las reservaciones de citas médicas.
Nombre Tipo de Dato Nullable PK Serial
CODIGO_RES bigint NO SI SI
CODIGO_PER bigint SI NO NO
CODIGO_USW int SI NO NO
CODIGO_ESP int SI NO NO
CODIGO_ETR int SI NO NO
FECHA_RES date SI NO NO
NUM_TURNO_RES int SI NO NO
Tabla 54: TN_RESERVACION
HS_HISTORIA_CLINICA
Almacena datos de la historia clínica.
Nombre Tipo de Dato Nullable PK Serial
CODIGO_HIS bigint NO SI SI
FECHA_CRE_HIS date SI NO NO
CODIGO_PER bigint SI NO NO
Tabla 55: HS_HISTORIA_CLINICA
FAMILYHISTORY
Almacena los antecedentes familiares del paciente.
Nombre Tipo de Dato Nullable PK Serial
id bigint NO SI SI
date date SI NO NO
description varchar(255) SI NO NO
illness varchar(255) SI NO NO
codigo_his bigint SI NO NO
Tabla 56: FAMILYHISTORY
92
PERSONALHISTORY
Almacena los antecedentes personales del paciente.
Nombre Tipo de Dato Nullable PK Serial
id bigint NO SI SI
date date SI NO NO
description varchar(255) SI NO NO
illness varchar(255) SI NO NO
codigo_his bigint SI NO NO
Tabla 57: PERSONALHISTORY
VITALSIGN
Almacena signos vitales del paciente.
Nombre Tipo de Dato Nullable PK Serial
id bigint NO SI NO
blood_pressure varchar(255) SI NO NO
heart_rate int SI NO NO
breathing_frecuency int SI NO NO
oral_temperature float SI NO NO
axillary_temperature float SI NO NO
weight float SI NO NO
size int SI NO NO
head_circumference float SI NO NO
body_mass float SI NO NO
date date SI NO NO
age int SI NO NO
codigo_his bigint SI NO NO
Tabla 58: VITALSIGN
CLINICHISTORYADDINF
Almacena información adicional de la historia clínica.
Nombre Tipo de Dato Nullable PK Serial
id bigint NO SI SI
menarche_age int SI NO NO
menopause_age int SI NO NO
cycles int SI NO NO
sexually_active varchar(255) SI NO NO
feat int SI NO NO
deliveries int SI NO NO
abortions int SI NO NO
93
caesareans int SI NO NO
living_children int SI NO NO
last_menarche date SI NO NO
last_delivery date SI NO NO
last_citology date SI NO NO
biopsy varchar(255) SI NO NO
protection_method varchar(255) SI NO NO
hormone_terapy varchar(255) SI NO NO
colposcopy varchar(255) SI NO NO
mammografhy varchar(255) SI NO NO
codigo_his bigint SI NO NO
Tabla 59: CLINICHISTORIADDINF
EPISODE
Almacena datos de cada visita o episodio realizado por el paciente.
Nombre Tipo de Dato Nullable PK Serial
id bigint NO SI SI
epi_date date SI NO NO
epi_description varchar(255) SI NO NO
codigo_his bigint SI NO NO
epi_user varchar(255) SI NO NO
Tabla 60: EPISODE
CURRENTILLNESS
Almacena la enfermedad actual del paciente.
Nombre Tipo de Dato Nullable PK Serial
id bigint NO SI SI
description varchar(255) SI NO NO
episode_id bigint SI NO NO
Tabla 61: CURRENTILLNESS
CURRENTREVISION
Almacena datos de la revisión realizada al paciente.
Nombre Tipo de Dato Nullable PK Serial
id bigint NO SI SI
description varchar(255) SI NO NO
organ varchar(255) SI NO NO
we_ne varchar(255) SI NO NO
episode_id bigint SI NO NO
Tabla 62: CURRENTREVISION
94
DIAGNOSTIC
Almacena datos del diagnóstico realizado al paciente.
Nombre Tipo de Dato Nullable PK Serial
id bigint NO SI SI
description varchar(255) SI NO NO
cie varchar(255) SI NO NO
pre_def varchar(255) SI NO NO
episode_id bigint SI NO NO
Tabla 63: DIAGNOSTIC
EVOLUTIONPRESCRIPTION
Almacena datos de evolución y prescripciones realizadas al paciente.
Nombre Tipo de Dato Nullable PK Serial
id bigint NO SI SI
evolution varchar(255) SI NO NO
prescription varchar(255) SI NO NO
medicines varchar(255) SI NO NO
episode_id bigint SI NO NO
Tabla 64: EVOLUTIONPRESCRIPTION
PHYSICALEXAM
Almacena datos del examen físico realizado al paciente
Nombre Tipo de Dato Nullable PK Serial
id bigint NO SI SI
description varchar(255) SI NO NO
body_part varchar(255) SI NO NO
we_ne varchar(255) SI NO NO
episode_id bigint SI NO NO
Tabla 65: PHYSICALEXAM
95
PLANS
Almacena los planes a realizar para el tratamiento del paciente.
Nombre Tipo de Dato Nullable PK Serial
id bigint NO SI SI
description varchar(255) SI NO NO
episode_id bigint SI NO NO
Tabla 66: PLANS
REASON
Almacena el motivo de consulta del paciente.
Nombre Tipo de Dato Nullable PK Serial
id bigint NO SI SI
description varchar(255) SI NO NO
episode_id bigint SI NO NO
Tabla 67: REASON
TABLA
Almacena los nombres de catálogos usados en el historial clínico.
Nombre Tipo de Dato Nullable PK Serial
tab_id varchar(255) NO SI NO
description varchar(255) SI NO NO
Tabla 68: TABLA
CATALOG
Almacena los registros de catálogos usados en el historial clínico.
Nombre Tipo de Dato Nullable PK Serial
tab_id varchar(255) NO SI NO
cat_id varchar(255) NO SI NO
value varchar(255) SI NO NO
Tabla 69: CATALOG
96
ICD10
Catálogo de la clasificación internacional de enfermedades versión 10
Nombre Tipo de Dato Nullable PK Serial
code varchar(255) NO SI NO
description varchar(255) NO NO NO
parent varchar(255) SI NO NO
Tabla 70: ICD10
COUNTRY
Catálogo de Países
Nombre Tipo de Dato Nullable PK Serial
id varchar(255) NO SI NO
name varchar(255) NO NO NO
nacionality varchar(255) SI NO NO
Tabla 71: COUNTRY
PROVINCIA
Catálogo de Provincias
Nombre Tipo de Dato Nullable PK Serial
id varchar(255) NO SI NO
name varchar(255) NO NO NO
country_id varchar(255) SI NO NO
Tabla 72: PROVINCIA
CANTON
Catálogo de Cantones
Nombre Tipo de Dato Nullable PK Serial
id varchar(255) NO SI NO
name varchar(255) NO NO NO
provincia_id varchar(255) SI NO NO
Tabla 73: CANTON
JHI_AUTHORITY
Almacena los roles para los usuarios de la aplicación.
Nombre Tipo de Dato Nullable PK Serial
name varchar(50) NO SI NO
Tabla 74: JHI_AUTHORITY
97
JHI_USER
Almacena los usuarios de la aplicación.
Nombre Tipo de Dato Nullable PK Serial
id bigint NO SI SI
login varchar(50) NO SI NO
PASSWORD varchar(60) SI NO NO
first_name varchar(50) SI NO NO
last_name varchar(50) SI NO NO
email varchar(100) SI NO NO
activated bit NO NO NO
lang_key varchar(5) SI NO NO
activation_key varchar(20) SI NO NO
reset_key varchar(20) SI NO NO
created_by varchar(50) NO NO NO
created_date datetime NO NO NO
reset_date datetime SI NO NO
last_modified_by varchar(50) SI NO NO
last_modified_date datetime SI NO NO
Tabla 75: JHI_USER
JHI_USER_AUTHORITY
Tabla de unión entre JHI_USER y JHI_AUTHORITY
Nombre Tipo de Dato Nullable PK Serial
user_id bigint NO SI NO
authority_name varchar(50) NO SI NO
Tabla 76: JHI_USER_AUTHORITY
JHI_PERSISTENT_AUDIT_EVENT
Cabecera para eventos de auditoria
Nombre Tipo de Dato Nullable PK Serial
event_id bigint NO SI SI
principal varchar(255) NO NO NO
event_date datetime SI NO NO
event_type varchar(255) SI NO NO
Tabla 77: JHI_PERSISTENT_AUDIT_EVENT
98
JHI_PERSISTENT_AUDIT_EVT_DATA
Detalle para eventos de auditoria
Nombre Tipo de Dato Nullable PK Serial
event_id bigint NO SI NO
name varchar(255) NO NO NO
value varchar(255) SI NO NO
Tabla 78: JHI_PERSISTENT_AUDIT_EVT_DATA
99
Anexo 2. Manual de Instalación
Instalación de SQL SERVER 2008 R2
Elegir la opción Instalación, Nueva instalación o agregar características a una
instalación existente:
Ilustración 82: Nueva instalación SQL Server
El programa de instalación verifica que se cumplan ciertas reglas verificar que todas
estén en estado Correcto o Advertencia esto permitirá continuar con la instalación.
La advertencia obtenida sobre el Firewall de Windows se solventará más adelante:
Ilustración 83: Reglas de Instalación SQL Server
100
Las caracteristicas seleccionadas como se muestran en la figura son suficientes para
la aplicación desarrollada:
Ilustración 84: Selección de Características
Se realiza la verificación de espacio para las características seleccionadas:
Ilustración 85: Requisitos de espacio en disco
101
Configurar como se muestra en la figura:
Ilustración 86: Configuración del servidor
Seleccionar Modo mixto digitar la contraseña para el usuario sa y agregar el usuario
actual:
Ilustración 87: Configuración del motor de base de datos
102
Iniciar la instalación presionando el botón Instalar:
Ilustración 88: Inicio de la instalación
Ilustración 89: Instalación Completada
103
Iniciar el administrador de la base de datos en Inicio/Todos Los Programas/Microsoft
SQL Server 2008 R2
Ilustración 90: Ubicación del administrador de SQL Server
Iniciar sesión para el usuario sa:
Ilustración 91: Iniciar sesión SQL Server
104
Crear la base de datos fimeped
En el menú Base de datos hacer clic derecho y en el menú contextual que se
despliega seleccionar Nueva base de datos:
Ilustración 92: Menú contextual crear base de datos
Ingresar el nombre de la base de datos fimeped y presionar el botón aceptar:
Ilustración 93: Nueva base de datos
105
Firewall de Windows
Habilitar el Firewall de Windows para permitir conexiones TCP al puerto 1433.
Dirigirse a panel de control Firewall de Windows:
Ilustración 94: Firewall de Windows
Seleccionar Reglas de Entrada y crear una nueva regla:
Ilustración 95: Reglas del Firewall de Windows
Seleccionar tipo de regla Puerto:
Ilustración 96: Elección de puerto en la regla de firewall
106
Seleccionar TCP y Puerto locales especificos:1433
Ilustración 97: Selección protocolo en regla de firewall
Permitir la conexión:
Ilustración 98: Selección tipo de conexión en regla de firewall
107
Seleccionar todas las opciones:
Ilustración 99: Selección cuando se aplica la regla en firewall
Digitar un nombre para le nueva regla de entrada:
Ilustración 100: Nombre de la regla
108
Instalar JDK (Java Development Kit)
Ejecutar el instalador del JDK, continuar con el asistente de instalación con las
opciones por defecto:
Ilustración 101: Instalar JDK
Automáticamente se dará inicio a la instalación del JRE, continuar con el asistente de
instalación con las opciones por defecto:
Ilustración 102: Instalar JRE
109
La instalación se lleva a cabo exitosamente:
Ilustración 103: Instalación de JDK y JRE exitosa
Verificar que se hayan creado los siguientes directorios en la dirección
C:\ProgramFiles\Java:
Ilustración 104: Directorio de instalación del JDK y JRE
110
Configuración de variables de entorno
Dirigirse a las propiedades del sistema y en la pestaña avanzadas presionar el botón
Variables de Entorno:
Ilustración 105: Ventana de propiedades del sistema
En la ventana que se muestra verificar buscar las variables JAVA_HOME y
JRE_HOME en caso de no existir agregarlas presionando el botón Nuevo:
Ilustración 106: Variable de entorno
111
Crear la variable JAVA_HOME y configurar el valor con la dirección del JDK:
Ilustración 107: Variable de entorno JAVA_HOME
Crear la variable JRE_HOME y configurar el valor con la dirección del JRE:
Ilustración 108: Variable de entorno JRE_HOME
Adicionalmente modificar el valor de la variable Path agregando al final la cadena
mostrada en la siguiente figura:
Ilustración 109: Variable de entorno Path
112
Instalar Git
Ejecutar el instalador de Git para Windows y continuar con el asistente de instalación
con las opciones por defecto:
Ilustración 110: Instalación Git
Verificar que se haya agregado en Inicio – Todos los Programas el siguiente
directorio:
Ilustración 111: Ubicación de Git en el menú
113
Instalar NodeJS:
Ejecutar el instalador de NodeJS para Windows y continuar con el asistente de
instalación con las opciones por defecto, esto instalará NodeJS y npm:
Ilustración 112: Instalación NodeJS
Verificar versiones de NodeJS y npm instaladas ejecutar Git CMD en modo
administrador (Clic derecho Ejecutar como administrador) y ejecutar los siguientes
comandos:
Ilustración 113: Verificar versión de NodeJS y npm instaladas
114
Instalar Bower:
Ejecutar Git CMD como Administrador (Clic derecho ejecutar como administrador)
y ejecutar el siguiente comando, tener en cuenta no ubicarse en la unidad raíz pues se
podrían presentar advertencias por temas de permisos:
Ilustración 114: Instalar Bower
Instalar karma ejecutar los siguientes comandos:
Ilustración 115: Instalar Karma
Ilustración 116: Instalar karma-coverage
Ilustración 117: Instalar jasmine-core
115
Configurar Maven
Crear una carpeta en la unidad preferida en este caso D:\java para copiar Maven:
Ilustración 118: Crear directorio para ubicación de herramientas
Copiar dentro de esta carpeta apache-maven-3.3.9:
Ilustración 119: Copiar Eclipse a directorio de herramientas
Agregar en la variable de entorno Path la dirección de maven que se copió en el
directorio D:\java:
Ilustración 120: Configurar ubicación de Maven en variable de entorno Path
116
En caso que se desee especificar un directorio personalizado para el repositorio local
de maven descomentar en el archivo settings la propiedad localRepository:
Ilustración 121: Ubicación de archivo settings.xml de Maven
Para el caso de este manual se usa la configuración por default del repositorio local
de Maven, por lo que se deja el archivo setting.xml de Maven sin modificaciones:
Ilustración 122: Repositorio local de Maven
Verificar que al ejecutar el comando mvn –v se obtenga la versión de Maven
instalada y de JDK:
Ilustración 123: Verificación versión de Maven instalada
117
Configurar IDE Eclipse
Copiar eclipse dentro de la carpeta java creada anteriormente:
Ilustración 124: Copiar Maven a directorio de herramientas
Doble clic en el ejecutable:
Ilustración 125: Iniciar Eclipse
118
Presionar el botón Browser y crear el área de trabajo por ejemplo D:\workspace:
Ilustración 126: Ubicación de workspace
Configurar JDK en el IDE eclipse
Dirigirse en el menú de eclipse a Windows/Preferences buscar JRE´s instalados:
Ilustración 127: JRE instalados
119
Agregar aquí el JDK7, presionar siguiente y buscar la ruta del JDK:
Ilustración 128: Tipo de JRE
Buscar la dirección del JDK instalado:
Ilustración 129: Seleccionar ubicación del JDK
120
Seleccionar el registro agregado como predeterminado:
Ilustración 130: Marcar jdk como predeterminado
Confingurar maven en el IDE Eclipse
Ubicarse en preferences y buscar la opción Maven – User Settings, en el campo User
Settings presionar el botón de buscar:
Ilustración 131: Configuraciones de usuario de Maven
121
Buscar el archivo settings.xml de maven configurado anteriormente:
Ilustración 132: Seleccionar ubicación del archivo setting.xml de Maven
Confirmar los cambios:
Ilustración 133: Aplicar configuraciones de Maven
122
Anexo 3. Manual de Ejecución en modo Desarrollo
Crear un directorio como área de trabajo, para el efecto del presente manual se usa
D:\workspace copiar la carpeta del proyecto fimeped dentro del directorio área de
trabajo:
Ilustración 134: Copiar código fuente al area de trabajo
Para la conexión a la base de datos SQL SERVER se utiliza el sqljdbc proveído por
MICROSOFT, este jar no se encuentra en los repositorios centrales de maven por lo
que hay que realizar una instalación en el repositorio local de manera manual, para
ello copiar el sqljdbc41.jar en algún directorio y ejecutar el siguiente comando
(considerar que la opción –Dfile debe contener el path donde se encuentra el jar a
instalar en este caso el mismo directorio donde se ejecuta la instrucción):
Ilustración 135: Instalación manual de sqljdbc41.jar en el repositorio local de
Maven
123
Si la instalación del jar en el repositorio local se efectua exitosamente se obtendrá los
siguientes mensajes:
Ilustración 136: Instalación de sqljdb41.jar exitosa
Ubicarse en el directorio del proyecto fimeped e instalar todas las dependencias de
java ejecutando la siguiente instrucción:
Ilustración 137: Instalación de dependencias java
124
Si la instalación de dependencias de java se efectúa exitosamente se obtendrá los
siguientes mensajes:
Ilustración 138: Instalación de dependencias java exitosa
Realizar la instalación de dependencias JavaScript requeridas para el proyecto,
ubicándose en el directorio del proyecto ejecutar el siguiente comando:
Ilustración 139: Instalación de dependencias JavaScript
Verificar que dentro del directorio del proyecto se haya creado el directorio
node_modules con todas las dependencias JavaScript:
Ilustración 140: Instalación de dependencias JavaScript exitosa
125
Realizar la instalación de dependencias JavaScript para el FrontEnd, ubicándose en
el directorio del proyecto ejecutar la siguiente instrucción:
Ilustración 141: Instalación de dependencias JavaScript para el Frontend
Verificar que dentro del directorio del proyecto en la ruta src/main/webapp se haya
creado la carpeta bower_components con las dependencias JavaScript para el
FrontEnd:
Ilustración 142: Instalación de dependencias JavaScript para el Frontend exitosa
Ejecutar el IDE Eclipse
Importar el proyecto fimeped:
Dirigirse en el menu del IDE Eclipse a File – Importar elegir la siguiente opción:
Ilustración 143: Importación de proyecto
126
Una vez importado el proyecto dentro del directorio src/main/resource modificar el
archivo application-dev.yml donde se encuentran las configuraciones de acceso a la
base de datos, ingresar la información que corresponda:
Ilustración 144: Configuración de acceso a la Base de datos
Como siguiente paso dentro del directorio src/main/java ubicar el paquete de clases
org.uce.fimeped y ejecutar la clase Application.java la misma cuenta con un método
main que levanta la aplicación con una configuración básica del servidor apache –
tomcat:
Ilustración 145: Ejecución de la aplicación en modo desarrollo
127
Si todo se realizó exitosamente se obtendrá el siguiente mensaje en la consola de
eclipse:
Ilustración 146: Ejecución de aplicación en modo desarrollo exitosa
Ingresar a un browser con las urls especificadas:
Ilustración 147: Ingreso a la aplicación en modo desarrollo
128
Anexo 4. Manual de Ejecución en modo Producción
Copiar apache-tomcat en la unidad que se desee:
Ilustración 148: Ubicación de proyecto apache-tomcat
Desde el apartado Variables del sistema crear la variable CATALINA_HOME,
para esto hacemos click en el botón Nueva:
Ilustración 149: Configurar variables de entorno para apache-tomcat
En el campo Nombre de la variable ingresamos el texto CATALINA_HOME, y
sobre el campo Valor de la variable ingresamos la ruta donde copiamos apache-
tomcat y presionamos el botón Aceptar:
129
Ilustración 150: Variable de entorno CATALINA_HOME
Modificar el valor de la variable Path, aquí nos ubicaremos sobre el campo Valor de
la variable, nos desplazaremos hasta el final del valor y colocaremos un punto y
coma he ingresaremos el texto%CATALINA_HOME%\bin. Note que al final del
valor de la variable Path quedo sin punto y coma. Damos click en el botón Aceptar.
Ilustración 151: Configurar variable de entorno Path para apache-tomcat
Hasta aquí han quedado configuradas las variables necesarias para ejecutar apache-
tomcat.
Abrir un pantalla de comandos de Windows a la ruta donde copiamos apache-tomcat
y ejecutamos el comando startup.bat. La primera vez nos preguntara el Firewall de
Windows si deseamos darle acceso al Tomcat, le decimos que permita el acceso.
Ilustración 152: Inicio de servidor apache-tomcat
130
Se despliega la ventana llamada Tomcat, donde nos informa que el servidor Tomcat
ha iniciado correctamente.
Ilustración 153: Inicio de servidor apache-tomcat exitoso
Podemos verificar que el servidor haya iniciado correctamente ingresando al browser
de preferencia e ingresando la url http://localhost:8080 y se mostrara la
ventana Apache Tomcat la cual nos muestra la pantalla de bienvenida de Apache
Tomcat, esto quiere decir que todo se ha configurado exitosamente.
Ilustración 154: Pantalla de bienvenida del servidor apache-tomcat
Como siguiente paso copiar el archivo fimeped-0.0.1-SNAPSHOT.war dentro del
directorio webapps de apache-tomcat:
Ilustración 155: Ubicación del archivo war del proyecto en el servidor apache-
tomcat
131
El archivo war se descomprime, dentro del directorio del proyecto dirigirse a la ruta
WEB-INF/clases/config y buscar el archivo application-dev.yml:
Ilustración 156: Configuración de acceso a la base de datos en modo producción
Configurar la información correspondiente a la conexión con la base de datos:
Ilustración 157: Archivo de configuración de la aplicación
132
Volver a iniciar el servidor e ingresar a la url http://ipservidor:8080/fimeped-
0.0.1.SNAPSHOT/index.html:
Ilustración 158: Ingreso a la aplicación en modo producción