# GNU Health/Guía Técnica/Instalación

* Índice de la sección «Guía Técnica»
* Instalación
* Actualización
* Patches y Pachsets
* Contribución
* Localización
* Reportes
* Backups y Alta disponibilidad
* Seguridad
* Resolución de problemas
* Base de datos Demo

## IMPORTANTE

Antes de iniciar la instalación del GNUHealth le recomendamos leer exhaustivamente la presente documentación, en la que encontrará información relevante acerca del método de instalación.
A su vez, el proceso de documentación implica una revisión permanente de la misma, por lo que su experiencia puede ser muy valiosa para el resto de la comunidad. Si considera que algún aspecto de la documentación presente no es exhaustivo o no refleja su experiencia, por favor háganoslo saber. En caso de requerir asistencia durante le proceso de instalación, le sugerimos consultar las FAQs (próximamente), escribir a la lista de distribución oficial de GNUHealth (https://lists.gnu.org/mailman/listinfo/health-es) o consultar en nuestro canal IRC #gnu-health-es

## Componentes Centrales de GNU Health

GNUHealth se hace de otros entornos de desarrollo y base de datos, entre ellos Python, PostgreSQL y Tryton
A continuación brindamos una breve referencia de cada componente, para mas información sugerimos leer la documentación original de cada uno de ellos.
Python: Python es un lenguage de programación de alto nivel de uso general y sumamente popular. Su filosofía de diseño enfatiza la facilidad de lectura de su código, así como también permite expresar conceptos en menos lineas de código comparado con lenguages similares, tales como C. Python soporta diversos paradigmas de programación, tales como la orientación a objetos, imperativo y programación funcional. La utilización de herramientas específicas (tales como py2exe o pyinstaller) permite empaquetar código en programas tipo standalone en la gran mayoría de los sistemas operativos. Esto último es fundamental a la hora de distribuir software como GNUHealth que está basado en Python, sin la necesidad de requerir un intérprete.
PostgreSQL: PostgreSQL es un sistema de gestión de bases de datos orientas a objetos basada en software libre. Con mas de 15 años de evolución y permanente desarrollo, PostgreSQL tiene una fuerte reputación por su confiabilidad e integridad. PostgreSQL corre en la mayoría de los sistemas operativos tales como Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64) y Windows. Por tratarse de una base de datos de clase enterprise soporta Multi-Version Concurrency Control (MVCC), replicación asincrónica, backups online, etc.
Tryton: Tryton es una plataforma de desarrollo basado en software libre. Está basado en un modelo de 3 capas que permite implementar una solución de negocios integral, ofreciendo similares prestaciones a los conocidos ERPs (Enterprise Resource Planning). La principales ventajas de Tryton son su modularidad, escalabilidad y seguridad. La versión actual de GNUHealth basa su funcionamiento en Tryton 4.2, sobre el cuál se implementa módulos específicamente diseñados para la gestión de sistemas e instituciones de salud en todos sus niveles.
La próxima versión 3.4 de GNU Health también integra bases de datos documentales, como 'MongoDB.

## Requerimientos

EL ecosistema de la ultima versión estable de la GNU Health Federation utiliza los siguientes principales recursos
* Sistema operativo: GNU/Linux o FreeBSD para el servidor.
* RDBMS: PostgreSQL >= 10.x
* Base de datos orientada a documentos para el Sistema de Información de Salud/Indice de la Tabla Maestra de Personas: PostgreSQL :>= 10.x
* Python: >= 3.6
* Gunicorn : 19.9
* Flask : 1.0
* Tryton 5.0
* Bash shell
* PIP para Python 3, verificar a través de:

## Instalar GNU Health en un Sistema GNU/Linux o FreeBSD

La siguiente tabla contiene las instrucciones para preparar tu sistema operativo en una instalación estándar de GNU Health. Los sistemas operativos y sus respectivas versiones han que aparecen aquí han sido probados para la versión estable actual.
Las instrucciones para los distintos sistemas operativos y distribuciones se han basado en sistemas limpios, instalados desde cero. En beneficio de la claridad, el entorno del servidor se ha realizado sin interfaz gráfica. No se ha configurado el firewall (se cubre en la sección de seguridad) y se instaló el servidor OpenSSH.
| Sistema Operativo | Versión | Enlace |
| Arch Linux | 2017.07.01 | Arch Linux setup |
| Debian | 9 | Debian setup |
| FreeBSD | 11.1 | FreeBSD setup |
| openSUSE | Leap 15 / Tumbleweed | openSUSE setup |
| Ubuntu | 16.04 LTS | Ubuntu setup |

### Crear el Usuario en el Sistema Operativo

Se recomienda emplear un usuario dedicado para la Instalación de GNU Health. Este usuario será diferente al usuario root del sistema.
Para la creación del usuario ejecute uno de los siguientes pasos, según su sistema operativo:
Ubuntu:
Arch Linux:
A continuación, se le solicitará ingresar una contraseña para el nuevo usuario gnuhealth. Le sugerimos tomar nota de la misma para su utilización en el futuro.

### Crear el Usuario de Base de Datos en PostgreSQL

El siguiente comando cambia al usuario administrador por defecto de dicho motor de base de datos (usuario postgres) y le otorga permisos al recientemente creado administrador gnuhealth. Se otorga permisos para crear usuarios y bases de datos (no permite crear roles ni permisos de superusuario en PostgreSql):
Ejecute, como root :

### Descarga e Instalación de GNU Health
#### Ejecutando el Instalador de GNU Health

La instalación de GNU Health debe realizarse con el usuario gnuhealth. Este punto es muy importante. NUNCA realizar la instalación como "root".
Sugerencia: para mayor seguridad de estar como usuario gnuhealth, cerramos la sesión con la que instaló hasta este punto (generalmente el usuario root del sistema), e ingresamos con el usuario gnuhealth. Desde ahí podemos comenzar con todo el proceso que veremos a continuación.
Los pasos principales son para la descarga e instalación son los siguientes :
1. Convertirse en el usuario gnuhealth
2. Descargar GNU Health
3. Descomprimir el archivo Una vez descargado el archivo de instalación (generalmente en /home), es necesario descomprimirlo mediante el siguiente comando:
De esta manera, se creará la carpeta "gnuhealth-3.2.x" la cuál contiene todos los archivos necesarios para correr el script de instalación.
4. Ejecutar el programa de instalación
(Requiere conexión activa a Internet)
Finalmente, habilite el entorno BASH para el usuario gnuhealth para poder definir las variables de entorno:

#### Active los dispositivos de red para el protocolo JSON-RPC

El servidor Tryton de GNU Health atiende peticiones de red de localhost en el puerto 8000, no permitiendo conexiones directas desde otras terminales. Para ello es necesario editar el archivo /home/gnuhealth/gnuhealth/tryton/server/trytond-3.2.2/etc/trytond.conf. Esto puede hacerse mediante un editor de texto o a través del comando
Puede modificar la línea con el parámetro jsonrpc, activando el dispositivo de red para que las terminales en su red se puedan conectar. Por ejemplo, la siguiente línea
Permitirá conectar con el servidor en los diferentes dispositivos de su sistema.

#### Configuración de un directorio local para archivos adjuntos

Por defecto, Tryton utiliza un directorio a nivel de sistema para almacenar los archivos adjuntos. En GNU Health es recomendable guardar los archivos adjuntos en el espacio de usuario gnuhealth. Con un editor de texto, abra el archivo de configuración del servidor trytond.conf e ingrese el directorio para archivos adjuntos, por ejemplo :

## Arrancar el Servidor Tryton

Para poder iniciar el servidor Tryton (//home/gnuhealth/gnuhealth/tryton/server/trytond-3.2.2/bin/trytond) debe moverse al directorio del sistema que acabamos de instalar. Para ello es posible utilizar el alias cdexe (disponible desde la versión 2.2.1 )
Ahora sí estamos en condiciones de iniciar el servidor:
Deberá ver algo como lo siguiente. Preste atención a la última línea INFO:server:starting JSON-RPC protocol on localhost:8000
Esta última línea nos indica (tal como se haya configurado el archivo trytond.conf) si el sistema estará disposible para el localhost unicamente o para todas las terminales dentro de su red.

## Instalación del cliente GNU Health
### Instalación Tradicional

Comenzando en la versión GNU Health 3.2, hay un cliente nativo GTK para GNU Health
Puede instalar el cliente usando el código fuente o desde pip:

### Instalación desde el código fuente

* Descargar el último cliente GNU Health desde GNU.org
* Instalar dependencias de Python :pip2 install --user python-dateutil
* Descomprimir el cliente :tar -xzvf gnuhealth-client-latest.tar.gz
* Ejecutar el cliente:cd gnuhealth-client-3.2.6/bin ./gnuhealth-client

### Instalación usando PIP

El cliente GNU Health también puede ser instalado desde el Python Package Index (pypi).
El siguiente comando instalará el cliente GNU Health para todo el sistema (sin la opción --user):
Se puede actualizar el cliente con el siguiente comando :
Ejecutar el cliente :

### MS Windows

Descarga de Tryton Cliente para Windows
Siga las instrucciones al correr la instalación

## Crear la base de datos de GNU Health

El primer paso es crear una base de datos para GNU Health. GNU Health HMIS guarda la información en PostgreSQL.
La base de datos es creada desde el sistema operativo, usando el usuario "gnuhealth". Por ejemplo, si quieres inicializar una base de datos con el nombre "health320", ejecutarías lo siguiente:
Fíjate que no hayan errores en el log / consola.
Una vez la base de datos ha sido inicializada, estás listo para conectarte a GNU Health !

## Inicio de sesión de la aplicación

Ahora que ha vuelto a la pantalla de inicio de sesión, notará que el perfil seleccionado es el que recién acaba de crear. Complete el formulario de inicio de sesión:
* Nombre de usuario: el nombre que ha usado antes, normalmente, admin
* Contraseña: la contraseña introducida dos veces en la sección anterior

## Instalación de los módulos por defecto

A partir de este momento, usará el cliente para la mayoría de los procesos. Empiece por la instalación de la funcionalidad básica:
* Después de haber creado la base de datos, el sistema le preguntará para la creación de algunos usuarios nuevos. Puede saltar este paso desde ahora.
* Se le mostrará un listado de módulos que le proporcionarán la funcionalidad deseada. Si no ve la ventana de los módulos, navegue hacia ella en el lado derecho: Administración > Módulos > Módulos.
* Seleccione el módulo de perfiles health_profile, y haga click en marcar para instalación Marcar para instalación:
* Haga click en el icono de Ejecutar Acción (un cuadrado rotado azul) y seleccione Realizar instalaciones/actualizaciones pendientes:
* Tryton seleccionará de manera automática todos los módulos dependientes requeridos para la instalación:
* Haga Click en iniciar actualización Iniciar Actualización. Este proceso tomará un tiempo, dependiendo del ordenador en el que se esté instalando GNU Health. Una vez hecho, aparecerá el siguiente mensaje:
Enhorabuena, ha instalado satisfactoriamente GNU Health!

## Instalación de Módulos Extra

GNU Health está en evolucionando constantemente. Los módulos base son un paquete que brinda la funcionalidad básica. Dependiendo de su centro de salud, lo más probable es que deba instalar algunos de los otros módulos de GNU Health. Algunos de los módulos que están listos para su instalación son:
* health_history: Genera reportes de la historia clínica del paciente.
* health_reporting: Estadísticas basadas en diferentes indicadores (enfermedades, asignaciones médicas, .. ). También crea diferentes tipos de gráficos
* health_services: Registra todos los servicios brindados al paciente, tanto para tratamiento ambulatorio como para hospitalización. Le permitirá generar facturas de los servicios seleccionados.
* health_qrcodes: Permite identificar al paciente y los recién nacidos con códigos QR 2-dimensional Quick-Recognition codes.
Hay muchos más. Sólo hay que revisar la lista de módulos y seleccionar los que mejor se adapten a su centro de salud.
Enhorabuena ! Ya ha completado la instalación inicial de GNU Health.
Los próximos capítulos le guiarán a través de la personalización de GNU Health para satisfacer las necesidades de su centro de salud.
← Epidemiología · Actualización →