INSTALL.md 13.3 KB
Newer Older
SIAP committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345
Sistema Integral de Atención al Paciente - SIAP
====================================================
Sistema enfocado a la Atención del Paciente; que contiene todo el historial
clínico de un paciente dentro del primer nivel de atención. Lo que permite
darle seguimiento en todas las áreas del establecimiento y así cualquier
personal autorizado pueda analizar la información clínica de un determinado
paciente.

La instalación se divide en las siguientes etapas:

- [Instalación y configuración del entorno Web](#instalación-y-configuración-del-entorno-web)
- [Instalación y configuración de la base de datos](#instalación-y-configuración-de-la-base-de-datos)
- [Instalación y configuración del SIAP](#instalación-y-configuración-del-siap)

A continuación se describen las etapas de configuración para que el SIAP pueda funcionar en un establecimiento.

## Instalación y configuración del entorno Web

* Para preparar el entorno Web en Debian 8.0 "Jessie"  es necesario instalar
los siguientes paquetes, lo cual implica tener configurado apropiadamente el
archivo /etc/apt/sources.list

Puede encontrar información adicional en
http://wiki.salud.gob.sv/wiki/Actualizaciones_y_sources.list

* Primero se deberán actualizar los repositorios del sistema operativo.
Como **usuario root** escribir en una terminal:

        aptitude update && aptitude full-upgrade

* Siempre como **usuario root** ejecutar la siguiente instrucción:

        aptitude install apache2-mpm-prefork php5 libgdchart-gd2-xpm  php5-apcu  acl php5-mcrypt curl git libapache2-mod-php5 php5-intl php-pear php5-cli php5-pgsql postgresql openjdk-7-jdk openjdk-7-jre php5-cgi  php5-fpm postgresql-contrib php5-curl php5-gd php-soap


* Editar el archivo /etc/php5/apache2/php.ini como **usuario root**; con cualquier
editor de texto, puede ser nano o vi; ir a la sección *Module Settings* y
modificar o agregar la línea *;date.timezone =* con lo siguiente:

        date.timezone = America/El_Salvador

* Buscar y modificar o agregar la línea **session.gc_maxlifetime = 1440**, con la siguiente:

        session.gc_maxlifetime = 28800


* Editar el archivo **/etc/php5/cli/php.ini** como **usuario root**; con cualquier
editor de texto, puede ser nano o vi; buscar y modificar o agregar la línea **session.gc_maxlifetime = 1440**,
con la siguiente:

        session.gc_maxlifetime = 28800

* Reiniciar el servicio de Apache para que la configuración surta efecto:

	/etc/init.d/apache2 restart

2. Instalación y configuración de la base de datos
-----------------------------------------
## Instalación y Configuración de la base de datos

* Configurar PostgreSQL para conectarse con un usuario en particular.
Editar el archivo */etc/postgresql/9.1/main/pg_hba.conf* como
**usuario root**, con cualquier editor de texto, puede ser nano o vi:

* Ir al final del archivo e identificar las siguientes líneas:

        # "local" is for Unix domain socket connections only
        local   all         all                               peer
* Cambiar el valor *peer* por *md5*. Es posible que en lugar de peer
aparezca otro valor como ident, lo importante, es que se debe cambiar a
md5. La línea debería quedar como se muestra a continuación:

        # "local" is for Unix domain socket connections only
        local   all         all                               md5
* Reiniciar el servicio de postgres con la siguiente instrucción:

        /etc/init.d/postgresql restart

### Creación del usuario

* Como **usuario postgres** ejecutar la siguiente sentencia desde consola:

        createuser -DRSP siap

### Creación de la base de datos

* Siempre como **usuario postgres** ejecutar la siguiente sentencia desde
consola:

        createdb siap -O siap

### Carga del script

* Clonar el siguiente repositorio de git como usuario normal:
	git clone http://gitlab.salud.gob.sv/SIAP/db_siaps.git
* Entrar al directorio y realizar la carga con el archivo denominado
**siap-prod.sql** ejecutando la siguiente sentencia como
**usuario postgres**:

        psql -U siap -d siap -f siap-prod.sql

## Instalación y configuración del SIAP.

### Clonando el proyecto desde el servidor gitlab.salud.gob.sv

* Clonar el repositorio **http://gitlab.salud.gob.sv/SIAP/siaps.git**

* Descargar el el archivo **composer.phar** como **usuario normal** con la
  siguiente sentencia:

        curl -s https://getcomposer.org/installer | php

* Agregar el archivo **parameters.yml** en el directorio **app/config/** con un
  contenido similar al siguiente:

        parameters:
          database_driver: pdo_pgsql
          database_host: localhost
          database_port: '5432'
          database_name: dbname
          database_user: dbuser
          database_password: dbpassword
          mailer_transport: smtp
          mailer_host: null
          mailer_encryption: ssl
          mailer_port: '465'
          mailer_user: muser
          mailer_password: mpassword
          jasper_username: jasperuser
          jasper_password: jasperpassword
          jasper_url: http://localhost:8080/jasperserver/services/repository?wsdl
          cun_uri: 'http:/url_cun.salud.gob.sv/'
          cun_syu: '00000000-1'
          cun_syi: 'c9722c2f-9748-4e53-97d6-571b6e7eaf3e'
          ip_servidor_siap: '192.168.1.1'
          rnpn_uri: 'http:/url_rnpn.salud.gob.sv/'
          module1_url: http://siap.ESTABLECIMIENTO/admin/login?_moduleSelection=1
          module2_url: http://siap.ESTABLECIMIENTO/admin/login?_moduleSelection=2
          module3_url: http://siap.ESTABLECIMIENTO/admin/login?_moduleSelection=3
          module4_url: http://siap.ESTABLECIMIENTO/admin/login?_moduleSelection=4
          module5_url: http://siap.ESTABLECIMIENTO/admin/login?_moduleSelection=5
          module6_url: http://siap.ESTABLECIMIENTO/admin/login?_moduleSelection=6
          module7_url: http://siap.ESTABLECIMIENTO/admin/login?_moduleSelection=7
          module8_url: http://siap.ESTABLECIMIENTO/admin/login?_moduleSelection=8
          total_modules: 8
          hide_modules: '7,8'
          signed_modules: '3,6,7'
          print_ticket: [2]
          report_base_url: 'http://localhost/'
          numero_receta_imprimir: 4
          servicio_generar_cita: []
          solicitar_hora_laboratorio : false
          global_host: 'dominio.global'
          ws_method: 'ip'
          locale: es
          secret: df1ca40cfc425c4f34e654696720435a044b9ca9
          session_max_idle_time: 7200
          solicitud_lab_print_single: true
          validate_ingreso_hospitalario: true
          api_idle_time: 60
          user_automatizado: ~
          password_automatizado: ~

* Cambiar los parámetros por los datos que se definieron en la creación de la
  base de datos y las variables del jasper según como se hayan configurado.

* Crear los directorios cache/, logs/ e imagenes/ con la siguiente sentencia:

        mkdir -p app/cache app/logs web/imagenes upload/firmaDigital

* Descomprimir los vendor que se encuentran en el directorio db_siaps con la siguiente instrucción:

     ```bash
     tar zxvf ../db_siaps/vendor.tar.gz
     ```

* Siempre como **usuario normal** ejecutar:

         php composer.phar install

* Permisos con ACL

Dado que tanto Apache como el usuario con el que se clonó el proyecto deben tener acceso a los archivos y directorios dentro de app/cache/ app/logs/ web/imagenes/, se utilizarán ACL para asignar los permisos.

Primero, se debe identificar en qué partición está el directorio donde se clonó el proyecto. Normalmente, debería ser en /var/www/ o similar. Editar el archivo /etc/fstab como usuario root y agregar la opción acl tal como se muestra a continuación.

Archivo /etc/fstab original.

```bash
/etc/fstab: static file system information.
#<file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
devpts          /dev/pts        devpts  rw,noexec,nosuid,gid=5,mode=620 0  0
/dev/xvda1 none swap sw 0 0
/dev/xvda2 / ext4 noatime,nodiratime,errors=remount-ro 0 1
/dev/xvda3   /var    ext4    defaults                0       1
```

Como se puede apreciar, hay una partición dedicada a /var y es /dev/xvda3 (esto puede variar de sistema a sistema). Lo importante, es identificar dónde está /var. En el caso de sistemas con una sola partición, será la raíz /.

Archivo /etc/fstab posterior a la modificación será similar a como se muestra a continuación.
```bash
/etc/fstab: static file system information.
#<file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
devpts          /dev/pts        devpts  rw,noexec,nosuid,gid=5,mode=620 0  0
/dev/xvda1 none swap sw 0 0
/dev/xvda2 / ext4 noatime,nodiratime,errors=remount-ro 0 1
/dev/xvda3   /var    ext4    defaults,acl                0       1
```

Ahora, se puede apreciar que la partición en la que está /var tiene la opción acl.

Para que la configuración efectuada surta efecto, hay que volver a montar la partición. Como usuario root ejecutar la siguiente orden.

```bash
mount -o remount /var
```

Con el usuario con el que se clonó el proyecto se otorgarán los permisos por medio de acl.

Los permisos se aplican primero a los archivos y luego a los directorios. Estando en la raíz del proyecto.

    setfacl -R -m u:www-data:rwx -m u:`whoami`:rwx app/cache/ app/logs/ web/imagenes upload/firmaDigital
    setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx app/cache/ app/logs/ web/imagenes upload/firmaDigital

* Limpiar cache de producción e instalar los assets con la siguiente instrucción:

    ```bash
    php app/console cache:clear --env=prod
    php app/console assets:install --symlink --env=prod
    ```

### Creando el Virtual Host

* Como **usuario root**  moverse a la carpeta:

```bash
cd /etc/apache2/sites-available/
```


* Con un editor de texto crear el archivo **siap.localhost** con el siguiente
  contenido:

  ```bash
    # Inicio del archivo
    <VirtualHost *:80>
    ServerName siap.localhost
    DocumentRoot /directorioSIAP/siaps/web
    DirectoryIndex app.php
    <Directory /directorioSIAP/siaps/web >
            Options FollowSymLinks MultiViews
            AllowOverride All
            Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/siap.localhost-error.log
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/siap.localhost-access.log combined
    </VirtualHost>
    # Fin del archivo
```
  En donde **directorioSIAP** es la ruta del directorio raíz en donde se encuentra el SIAP
  
* Guardar el archivo. Luego, como **root** ejecutar:

    ```bash
    a2ensite siap.localhost
    ```

* Habilitar el modo de reescritura con la siguiente sentencia:

    ```bash
    a2enmod rewrite
    ```

* Reiniciar el servicio de Apache

    ```bash
    /etc/init.d/apache2 restart
    ```

* Se debe agregar en el archivo **/etc/hosts** la IP junto con el ServerName
  del Virtual Host. La línea debe ser similar a la siguiente:

        X.X.X.X       siap.localhost

  ### Configuración Máquinas Clientes

* Agregar la siguiente linea en el archivo **/etc/hosts** para que puedan acceder al sistema.

  ```bash
    X.X.X.X       siap.localhost
  ```
  #### Configuración Firefox

* Configurar **Firefox** para poder visualizar los reportes en la ventana del navegador. Abrir en el menú de Herramientas la opción *Editar* y seleccionar *Preferencias*.

* Aparecerá una ventana en donde se debe seleccionar la opción *Aplicaciones*, luego en el campo de búsqueda digitar *pdf*; deberá aparecer en el tipo de contenido *Portable Document Format(PDF)* y en la acción debe seleccionarse *Previsualizar en Firefox*.

* Probar desde un navegador la siguiente url: *http://siap.localhost/* y deberá aparecer la página de inicio de sesión del sistema.

### Ejecutar Scripts de Actualizaciones y Envios de documentos

Con las siguientes instrucciones se cambian los estados de las historias clinicas y envio de documentos a la base centralizada.

Ejecutar la siguiente instrucción para abrir el crontab como **usuario normal**

```bash
crontab -e
```

Seleccionar el número de la opción de editor, de su preferencia, que el crontab (esta opción solo aparecerá si no ha sido configura previamente).  Agregar las siguientes líneas.

```bash
# Envio de Documento de Expediente
*/30  * * * * cd /directorioSIAP/siaps/scripts/; ./executeSendDocument
#Cambio de estado de historia clínica a las 00:00 de todos los dias
00 00   * * * cd /directorioSIAP/siaps/scripts/;./changeStatusHC
#Genera los documentos de las personas validadas en el día
45 23   * * * cd /directorioSIAP/siaps/scripts/;./generateDocumentHistoricosDelDia
#Genera los documentos de Historia Clinica
00 02   * * * cd /directorioSIAP/siaps/scripts/;./generateDocumentHC
# Envio de Documento de Expediente
15 02 * * * cd /directorioSIAP/siaps/scripts/;./executeSendDocumentHC
```

En donde **directorioSIAP** es la ruta del directorio raíz en donde se encuentra el SIAP

### Ejecutar instrucción de borrado de archivos temporales del Reporteado

Como **usuario root** ejecutar la siguiente instrucción para abrir el crontab.

```bash
crontab -e
```

Seleccionar el número de la opción de editor, de su preferencia, que el crontab (esta opción solo aparecerá si no ha sido configura previamente).  Agregar las siguientes líneas.

```bash
# Borrado de archivos temporales de la libreria whtmltopdf
*/30 * * * * rm -rf /tmp/knp_snappy*
```