=== modified file 'src/docbkx/es/dhis2_implementation_guide_installation.xml' --- src/docbkx/es/dhis2_implementation_guide_installation.xml 2012-09-27 08:55:25 +0000 +++ src/docbkx/es/dhis2_implementation_guide_installation.xml 2012-10-08 22:27:00 +0000 @@ -2,89 +2,85 @@ Instalación - The installation chapter provides information on how to install DHIS 2 in various contexts, including online central server, offline local network, standalone application and self-contained package called DHIS 2 Live. - DHIS 2 runs on all platforms for which there exists a Java Runtime Environment version 6 or higher, which includes most popular operating systems such as Windows, Linux and Mac. DHIS 2 also runs on many relational database systems such as PostgreSQL, MySQL, H2 and Derby. DHIS 2 is packaged as a standard Java Web Archive (WAR-file) and thus runs on any Servlet containers such as Tomcat and Jetty. - The DHIS 2 team recommends Ubuntu 12.04 LTS operating system, PostgreSQL database system and - Tomcat Servlet container as the preferred environment for server installations. The mentioned - frameworks can be regarded as market leaders within their domain and is heavily field tested - over many years. - This chapter provides a guide for setting up the above technology stack. It should however be read as a guide for getting up and running and not as an exhaustive documentation for the mentioned environment. We refer to the official Ubuntu, PostgreSQL and Tomcat documentation for in-depth reading. + El capítulo de instalación proporciona información sobre cómo instalar DHIS 2 en diversos contextos, incluidos un servidor central online, una red local offline, una aplicación independiente y un paquete autocontenido denominado DHIS 2 Live. + DHIS 2 funciona en toda plataforma para la cual exista una versión 6 o superior del Entorno de Ejecución de Java (Java Runtime Environment), lo que incluye los sistemas operativos más populares como son Windows, Linux y Mac. DHIS 2 funciona con sistemas de bases de datos relacionales como PostgreSQL, MySQL, H2 y Derby. DHIS 2 está empaquetado como un fichero estándar Java Web Archive (fichero WAR) y por tanto se ejecuta en cualquier contenedor Servlet como Tomcat o Jetty. + El equipo DHIS 2 recomienda el sistema operativo Ubuntu 12.04 LTS, el sistema de base de datos PostgreSQL y el contenedor Servlet Tomcat como el entorno preferido para las instalaciones en servidor. Los sistemas mencionados pueden considerarse líderes de mercado en sus respectivos dominios y han sido probados intensivamente durante muchos años. + Este capítulo ofrece una guía para montar la citada pila de tecnologías (Ubuntu-PostgreSQL-Tomcat). Sin embargo, esta guía debe leerse como un itinerario para montar y poner en marcha DHIS 2, y no como una documentación exhaustiva sobre el entorno mencionado. Para una lectura en profundidad, recomendamos seguir la documentación oficial de Ubuntu, PostgreSQL y Tomcat.
- Montaje del sevidor - This section describes how to set up a server instance of DHIS 2 on Ubuntu 12.04 64 bit - with PostgreSQL as database system and Tomcat as Servlet container. The term invoke refers to executing a given command in a terminal. - For a national server the recommended configuration is a quad-core 2 Ghz processor or - higher and 12 Gb RAM or higher. Note that a 64 bit operating system is required for utilizing - more than 4 Gb of RAM, the Ubuntu 12.04 64 bit edition is thus recommended. - For this guide we assume that 4 Gb RAM is allocated for PostgreSQL and 7 GB RAM is allocated for Tomcat. If you are running a different configuration please adjust the suggested values accordingly! The steps marked as optional, like the step for performance tuning, can be done at a later stage. - Create new user (optional) - You might want to create a dedicated user for running DHIS - it is not recommended to run as the root user. Create a new user called dhis by invoking useradd -d /home/dhis -m dhis -s /bin/bash Then make the user able to perform operations temporarily as root user by invoking adduser dhis admin If there is no admin group you must create it first by invoking groupadd admin Then invoke passwd dhis to set the password for your account. Make sure you set a strong password with at least 15 random characters. You might want to disable remote login for the root account for improved security by invoking sudo passwd -l root - Operating system kernel tuning - These settings are optional except for the shared memory setting which is required for PostgreSQL memory allocation. Open the kernel configuration file by invoking sudo nano /etc/sysctl.conf At the end of the file add the following lines and save. + Montaje del servidor + Esta sección describe cómo montar una instancia de servidor de DHIS 2 en Ubuntu 12.04 64 bit con PostgreSQL como sistema de base de datos y con Tomcat como contenedor Servlet. El término invocar indica la ejecución de un determinado comando en el terminal. + Para un servidor nacional los requisitos hardware son un procesador quad-core 2GHz o superior y 12GB de RAM o superior. Nótese que se requiere un sistema operativo de 64 bits para utilizar más de 4 GB de RAM, por lo que se recomienda la edición Ubuntu 12.04 de 64 bits. + En esta guía asumiremos que 4 GB se asignan a PostgreSQL y 7GB de RAM se asignan a Tomcat. ¡Si estás utilizando una configuración distinta por favor ajusta los valores sugeridos en consecuencia!. Los pasos que marcaremos como opcional, como el paso de ajuste de rendimiento, pueden realizarse en un momento posterior. + Crear nuevo usuario (opcional) + Tal vez queramos crear un usuario dedicado para ejecutar DHIS - no es recomendable ejecutarlo como usuario root. Creamos un nuevo usuario llamado dhis invocando useradd -d /home/dhis -m dhis -s /bin/bash A continuación habilitamos al usuario para realizar operaciones como root temporalmente invocando adduser dhis admin Si no hay grupo admin en el sistema, crearemos dicho grupo primero invocando groupadd admin Después invocamos passwd dhis para fijar la contraseña de esta nueva cuenta de usuario. Nos aseguraremos de poner una contraseña fuerte con al menos 15 caracteres aleatorios. Tal vez queramos deshabilitar el login remoto para la cuenta de root, logrando así mayor seguridad, invocando sudo passwd -l root. + Ajuste del núcleo del sistema operativo + Estas configuraciones son opcionales excepto para la configuración de la memoria compartida, que es un requisito para la asignación de memoria para PostgreSQL. Abrimos el fichero de configuración del núcleo o kernel invocando sudo nano /etc/sysctl.conf Al final del fichero añadiremos las líneas siguientes y guardaremos el fichero. kernel.shmmax = 1073741824 net.core.rmem_max = 8388608 net.core.wmem_max = 8388608 - Make the changes take effect by invoking sudo sysctl -p - Install Java - Install Java by invoking the following: + Hacemos que los cambios tengan efecto invocando sudo sysctl -p + Instalar Java + Instalamos Java invocando lo siguiente: sudo apt-get install openjdk-7-jdk sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-7-openjdk/bin/java 1 sudo update-alternatives --set java /usr/lib/jvm/java-7-openjdk/bin/java - Please check that the path the Java binaries are correct as they might vary from system to system, e.g. on AMD systems you might see ../java-7-openjdk-amd64/.. Check that your installation is okay by invoking java -version - Install PostgreSQL - Install PostgreSQL by invoking sudo apt-get install postgresql-9.1 - Switch to the postgres user by invoking sudo su postgres. - Create a non-privileged user called dhis by invoking - createuser -SDRP dhis. Enter a secure password at the prompt. Create a database by invoking - createdb -O dhis dhis2. Return to your session by invoking exit You now have a - PostgreSQL user called dhis and a database called dhis2. - Do performance tuning by opening the following file by invoking + A continuación es importante chequear que la ruta de los binarios de Java es correcta, ya que puede cambiar de un sistema a otro, por ejemplo en sistemas AMD podríamos encontrar algo como ../java-7-openjdk-amd64/... Chequeamos a continuación que nuestra instalación está bien invocando java -version + Instalar PostgreSQL + Instalamos PostgreSQL invocando sudo apt-get install postgresql-9.1 + Cambiamos al usuario de postgres invocando sudo su postgres + Creaamos ahora un usuario sin privilegios llamado dhis invocando + createuser -SDRP dhis Introducimos una contraseña segura cuando aparece el prompt. Creamos una base de datos invocando createdb -O dhis dhis2 Regresamos a nuestra sesión de usuario invocando exit + Ahora ya tenemos un usuario PostgreSQL llamado dhis y una base de datos llamada dhis2. + Continuamos ajustando el rendimiento abriendo el fichero siguiente invocando sudo nano /etc/postgresql/9.1/main/postgresql.conf - and set the following properties: + y fijando las propiedades siguientes: shared_buffers = 512MB - Determines how much memory PostgreSQL can use for caching of query data. Is set too low by default since it depends on kernel shared memory which is low on some operating systems. + Esto determina cuánta memoria PostgreSQL puede utilizarse para almacenar datos de consultas. Se ajusta muy pequeña por defecto porque depende de la memoria compartida del núcleo, que es reducida en algunos sistemas operativos. effective_cache_size = 3500MB - An estimate of how much memory is available for caching (not an allocation) and is used by PostgreSQL to determine whether a query plan will fit into memory or not (setting it too high might result in unpredictable and slow behavior). + Es una estimación de cuánta memoria está disponible para almacenar (no para asignar) y es usada por PostgreSQL para determinar si un plan de consultas se adecuará a la memoria o no (aquí una configuración demasiado grande podría resultar en un comportamiento impredecible y lento). checkpoint_segments = 32 - PostgreSQL writes new transactions to a log file called WAL segments which are 16MB in size. When a number of segments have been written a checkpoint occurs. Setting this number to a larger value will thus improve performance for write-heavy systems such as DHIS 2. + PostgreSQL graba las nuevas transacciones en un fichero de log llamado WAL en segmentos de tamaño 16MB. Cuando se graba una cantidad de segmentos dada sucede un checkpoint. Configurar esta cifra en un valor mayor nos permite por tanto mejorar el rendimiento de sistemas de escritura pesada como DHIS 2. checkpoint_completion_target = 0.8 - Determines the percentage of segment completion before a checkpoint occurs. Setting this to a high value will thus spread the writes out and lower the average write overhead. + Determina el porcentaje de segmentos completos antes de que aparezca un checkpoint. Fijar este número en un valor alto amplía por tanto la transcripción y reduce la sobrecarga de escritura promedio. wal_buffers = 4MB - Sets the memory used for buffering during the WAL write process. Increasing this value might improve throughput in write-heavy systems. + Fija la memoria utilizada para buffer durante el proceso de escritura WAL. Aumentar este valor puede mejorar el rendimiento en sistemas de escritura pesada. synchronous_commit = off - Specifies whether transaction commits will wait for WAL records to be written to the disk before returning to the client or not. Setting this to off will improve performance considerably. It also implies that there is a slight delay between the transaction is reported successful to the client and it actually being safe, but the database state cannot be corrupted and this is a good alternative for performance-intensive and write-heavy systems like DHIS 2. + Especifica si las asignaciones de transacción van a esperar a que se escriban los registros WAL en el disco antes de regresar al cliente o no. Fijar esto en off mejora el rendimiento considerablemente. También implica que habrá un pequeño retardo entre la transacción reportada con éxito al cliente y que esté realmente guardada, pero el estado de la base de datos no puede corromperse y es una buena alternativa en sistemas de producción intensiva y escritura pesada como DHIS 2. wal_writer_delay = 10000ms - Specifies the delay between WAL write operations. Setting this to a high value will improve performance on write-heavy systems since potentially many write operations can be executed within a single flush to disk. - Restart PostgreSQL by invoking sudo /etc/init.d/postgresql restart - Set the database configuration - The database connection information is provided to DHIS 2 through a configuration file called hibernate.properties. Create this file and save it in a convenient location. A file corresponding to the above setup has these properties: + Especifica el retraso entre operaciones de escritura WAL. Fijar esto a un valor grande mejora el rendimiento en sistemas de escritura pesada ya que potencialmente pueden ejecutarse muchas operaciones de escritura en un único envío al disco. + Reiniciar PostgreSQL invocando sudo /etc/init.d/postgresql restart + Fijar la configuración de la base de datos + La información de conexión de la base de datos llega a DHIS 2 a través de un fichero de configuración llamado hibernate.properties. Creamos este fichero y lo guardamos en una ubicación adecuada. El fichero correspondiente al montaje anterior tiene las siguientes propiedades: hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect hibernate.connection.driver_class = org.postgresql.Driver hibernate.connection.url = jdbc:postgresql:dhis2 hibernate.connection.username = dhis hibernate.connection.password = xxxx hibernate.hbm2ddl.auto = update - A common mistake is to have a white-space after the last property value - make sure there - is no white-space at the end of any line. Also remember that this file contains the clear text - password for your dhis2 database so needs to be protected from unauthorized access. To do this - invoke chmod 0600 hibernate.properties which ensures that only the dhis user which owns the - file is allowed to read or write to it. - Install Tomcat - Download the Tomcat binary distribution from http://tomcat.apache.org/download-70.cgi A useful tool for downloading files from the web is wget. Extract to a convenient location. This guide assumes that you have navigated to the root directory of the extracted archive. - Clear the pre-installed web applications by invoking rm -rf webapps/* Download the latest DHIS 2 WAR file from http://dhis2.org/download, move it to the webapps directory and rename it to ROOT.war - Open file bin/setclasspath.sh and add the lines below. The first will set the location of your Java Runtime Environment, the second will dedicate memory to Tomcat and the third will set the location for where DHIS 2 will search for the hibernate.properties configuration file. Please check that the path to the JDK location is correct. Note that you should adjust this to your environment: + Un error frecuente es dejar un espacio en blanco después del último valor de propiedad - asegúrate de que no hay espacios en blanco al final de ninguna línea en este fichero. También debemos recordar que este fichero contiene la contraseña en claro de nuestra base de datos dhis2 de modo que deberemos protegerlo de accesos no autorizados. Para hacer esto invocamos chmod 0600 hibernate.properties que garantiza que solo el usuario dhis que es propietario del fichero puede leer o escribir en él. + Instalar Tomcat + Descarga la distribución binaria de Tomcat de http://tomcat.apache.org/download-70.cgi. Una herramienta útil para descargar ficheros desde la web es wget. Extraemos el fichero en una ubiación adecuada. Esta guía asume que hemos navegado al directorio root del fichero extraido. + Limpiamos las aplicaciones web preinstaladas invocando rm -rf webapps/* Descargamos el último fichero WAR de DHIS 2 desde http://dhis2.org/download, lo movemos al directorio webapps y lo renombramos como ROOT.war + Abrimos el fichero bin/setclasspath.sh y añadimos las líneas que siguen. Lo primero será fijar la ubicación de nuestro Java Runtime Environment, lo segundo será dedicar memoria a Tomcat y lo tercero será fijar la ubicación en la que DHIS 2 buscará el fichero de configuración hibernate.properties. Es importante aquí que chequeemos que la ruta a la ubicación del JDK es correcta. Notemos que deberemos ajustar esto a nuestro entorno: export JAVA_HOME='/usr/lib/jvm/java-7-openjdk' export JAVA_OPTS='-Xmx6000m -Xms3000m -XX:MaxPermSize=800m -XX:PermSize=400m' export DHIS2_HOME='/home/dhis/config' - If you need to change the port of which Tomcat listens for requests you can open the Tomcat configuration file /conf/server.xml, locate the <Connector> element which is not commented out and change the port attribute value to the desired port number. - To monitor the behavior of Tomcat the log is the primary source of information. The log can be easily viewed with the command tail -f logs/catalina.out - Run DHIS 2 - Make the startup script executable by invoking chmod 755 bin/* DHIS 2 can now be started by invoking bin/startup.sh The log can be monitored by invoking tail -f logs/catalina.out DHIS 2 can be stopped by invoking bin/shutdown.sh Assuming that the WAR file is called ROOT.war, you can now access your DHIS instance at http://localhost:8080 + Si necesitamos cambiar el puerto en el que Tomcat escucha las peticiones, podemos abrir el fichero de configuración de Tomcat /conf/server.xml, encontrar el elemento <Connector> que no está comentado y cambiar el valor de su atributo puerto por el número de puerto deseado. + El log será nuestra primera fuente de información cuando queramos monitorear el comportamiento de Tomcat. Podemos ver fácilmente el log invocando tail -f logs/catalina.out + Ejecutar DHIS 2 + Para terminar haremos ejecutable el script de arranque invocando chmod 755 bin/* Ahora podemos arrancar DHIs 2 invocando bin/startup.sh Podemos monitorear el log invocando tail -f logs/catalina.out Podemos detener DHIS 2 invocando bin/shutdown.sh Finalemente, asumiendo que el fichero WAR se llama ahora ROOT.war, podemos acceder a nuestra instancia DHIS a través del navegador web en http://localhost:8080.
+ + + + + + +
- Reverse proxy configuration + Configuración reversa proxy A reverse proxy is a proxy server that acts on behalf of a server. Using a reverse proxy in combination with a servlet container is optional but has many advantages: @@ -258,7 +254,7 @@ }
- Basic reverse proxy setup with Apache + Configuración básica reversa de proxy con Apache The Apache HTTP server is the most common Using nginx is the preferred option as reverse proxy with DHIS2 and you should not attempt to install both nginx and Apache on the same server. If you have installed nginx please ignore this section. @@ -285,7 +281,7 @@ You now can restart Tomcat and the Apache HTTPD server and your DHIS 2 instance should be available on http://myserver/dhis where myserver is the hostname of your server.
- Basic load-balancing with Apache and Tomcat + Balanceo de carga básico con Apache y Tomcat Load balancing may be employed to more evenly distribute system load across multiple Tomcat instances in situations where user load is too high to be handled by a single server instance. In this example, we will create a simple load-balanced architecture using "sticky sessions" to distribute users across two instances of Tomcat. First, we need at least two instances of Tomcat running DHIS2, which are connected to the same database. There are various architectures, such as running the application servers (Tomcat) on separate (virtual) machines connected to a single database server, or perhaps running multiple Tomcat instances and a database on a single-high capacity machine in situations with I/O is not an issue, but when CPU usage of a single Tomcat instance limits overall system performance. In this scenario, we will configure connect two Tomcat instances running on the same machine to a single database through a load-balanced reverse proxy. Apache will take care of the details of determining which Tomcat instance a particular client is interfaced to with the The first step is to configure our Tomcat instances. The previous sections have detailed how this should be done. Importantly, both Tomcat instances should be configured to use the same database server. Some modifications need to be made to the server.xml file of each Tomcat instance, which will be used to uniquely identify each instance. Two copies of Tomcat should be extracted to a directory of your choice. Modify the server.xml file so that the following lines are unique for each instance. @@ -319,7 +315,7 @@ This example demonstrates how to implement a simple load balanced system with sticky sessions using Apache HTTP server.
- Basic SSL encryption with Apache + Encriptado básico SSL con Apache Using Apache and the reverse proxy setup described in the previous section, we can easily implement encrypted transfer of data between clients and the server over HTTPS. This section will describe how to use self-signed certificates, although the same procedure could be used if you have fully-signed certificates as well. First (as root), generate the necessary private key files and CSR (Certificate Signing Request) mkdir /etc/apache2/ssl @@ -349,7 +345,7 @@
- DHIS 2 Live setup + Configuración de DHIS 2 Live The DHIS 2 Live package is extremely convenient to install and run. It is intended for demonstrations, for users who want to explore the system and for small, offline installations typically at districts or facilities. It only requires a Java Runtime Environment and runs on all browsers except Internet Explorer 7 and lower. To install start by downloading DHIS 2 Live from http://dhis2.org and extract the archive to any location. On Windows click the executable archive. On Linux invoke the startup.sh script. After the startup process is done your default web browser will automtically be pointed to http://localhost:8082 where the application is accessible. A system tray menu is accessible on most operating systems where you can start and stop the server and start new browser sesssions. Please note that if you have the server running there is no need to start it again, simply open the application from the tray menu. DHIS 2 Live is running on an embedded Jetty servlet container and an embedded H2 database. However it can easily be configured to run on other database systems such as PostgreSQL. Please read the section above about server installations for an explanation of the database configuration. The hibernate.properties configuration file is located in the conf folder. Remember to restart the Live package for your changes to take effect. The server port is 8082 by default. This can be changed by modifying the value in the jetty.port configuration file located in the conf directory. @@ -363,7 +359,7 @@ The cron job is set up with two files. The first is a script which performs the actual task of backup up the database. It uses a PostgreSQL program called pg_dump for creating the database copy. The second is a crontab file which runs the backup script every day at 23:00. Note that this script backs up the database file to the local disk. It is strongly recommended to store a copy of the backup at a location outside the server where the application is hosted. This can be achieved with the scp tool. Make sure that you have set the system date correctly on your server.
- Using Amazon Web services + Usando los servicios Web Amazon Amazon Web Services (AWS) offers virtual cloud-computing resources which allow developers and implementers to quickly scale an application, both horizontally and vertically, in a cost effective manner. AWS offers multiple operating systems and instance sizes depending on the exact nature of the deployment. This section will describe a basic setup with the AWS Elastic Cloud Compute (EC2) system using the Basic 32 bit Amazon AMI, which is based on the Red Hat Linux distribution. Estimating the cost of an AWS instance can be performed using the "Simple Monthly Cal culator". AWS costs are based entirely on usage. As your application usage grows, you can provision new servers. === modified file 'src/docbkx/es/dhis2_implementation_guide_setting_up_new_database.xml' --- src/docbkx/es/dhis2_implementation_guide_setting_up_new_database.xml 2012-09-27 08:55:25 +0000 +++ src/docbkx/es/dhis2_implementation_guide_setting_up_new_database.xml 2012-10-08 22:27:00 +0000 @@ -46,23 +46,24 @@
Elementos de datos - The Data Element is perhaps the most important building block of a DHIS 2 database. It represents the what dimension, it explains what is being collected or analysed. In some contexts this is referred to an indicator, but in DHIS 2 we call this unit of collection and analysis a data element. The data element often represents a count of something, and its name describes what is being counted, e.g. "BCG doses given" or "Malaria cases". When data is collected, validated, analysed, reported or presented it is the data elements or expressions built upon data elements that describes the WHAT of the data. As such the data elements become important for all aspects of the system and they decide not only how data is collected, but more importantly how the data values are represented in the database, which again decides how data can be analysed and presented. - A best practice when designing data elements is to think of data elements as a unit of data analysis and not just as a field in the data collection form. Each data element lives on its own in the database, completely detached from the collection form, and reports and other outputs are based on data elements and expressions/formulas composed of data elements and not the data collection forms. So the data analysis needs should drive the process, and not the look an feel of the data collection forms. + El Elemento de Datos es probablemente el bloque más fundamental de una base de datos en DHIS2. Representa la dimensión qué, ya que explica qué se está recopilando o analizando. En algunos contextos esto está referido a un indicador, para en DHIS2 llamamos elemento de datos a esta unidad de colección y análisis. El elemento de datos a menudo representa un conteo de algo, y su nombre describe qué es aquello que se está contando, por ejemplo "Dosis entregadas de BCG" o "Casos de Malaria". Cuando los datos son recopilados, validados, analizados, reportados o presentados, lo que describe el QUé de los datos son los elementos de datos o expresiones construidas a partir de elementos de datos. Como tales, los elementos de datos se vuelven importantes para todos los aspectos del sistema y deciden no sólo cómo se recopilan los datos, sino algo más importante: cómo los valores de datos se representan en la base de datos, lo cual de nuevo afecta a cómo los datos son analizados y presentados. + + La mejor práctica en el diseño de elementos de datos es pensar en los elementos de datos como una unidad de análisis de datos y no sólo como un campo en el formulario de entrada de datos. Cada elemento de datos tiene vida propia en la base de datos, completamente separado del formulario, y los reportes y otras salidas se basan en elementos de datos y expresiones o fórmulas compuestas por elementos de datos y no en los formularios de colección de datos. De modo que las necesidades del análisis de datos son las que deberían dirigir este proceso, y no el aspecto y función amigables del formulario de colección de datos.
Sets de datos y formularios de entrada de datos - All data entry in DHIS 2 is organised through the use of data sets. A data set is a collection of data elements grouped together for data collection, and in the case of distributed installs they also define chunks of data for export and import between instances of DHIS 2 (e.g. from a district office local installation to a national server). Data sets are not linked directly to the data values, only through their data elements and frequencies, and as such a data set can be modified, deleted or added at any point in time without affecting the raw data already captured in the system, but such changes will of course affect how new data will be collected. - Once you have assigned a data set to an organisation unit that data set will be made available in Data Entry (under Services) for the organisation units you have assigned it to and for the valid periods according to the data set's period type. A default data entry form will then be shown, which is simply a list of the data elements belonging to the data set together with a column for inputting the values. If your data set contains data elements with categories such as age groups or gender, then additional columns will be automatically generated in the default form based on the categories. In addition to the default list-based data entry form there are two more alternatives, the section-based form and the custom form. Section forms allow for a bit more flexibility when it comes to using tabular forms and are quick and simple to design. Often your data entry form will need multiple tables with subheadings, and sometimes you need to disable (grey out) a few fields in the table (e.g. some categpories do not apply to all data elements), both of these functions are supported in section forms. When the form you want to design is too complicated for the default or section forms then your last option is to use a custom form. This takes more time, but gives you full flexibility in term of the design. In DHIS 2 there is a built in HTML editor (FcK Editor) for the form designer and you can either design the form in the UI or paste in your html directly (using the Source window in the editor. + Toda la entrada de datos en DHIS 2 se organiza mediante la utilización de sets de datos. Un set de datos es una colección de elementos de datos agrupados juntos para la recopilación de datos, y en el caso de instalaciones distribuidas también define pedazos de datos para exportarlos o importarlos entre instancias de DHIS 2 (por ejemplo de una instalatión local en una oficina distrital a un servidor nacional). Los sets de datos no están vinculados directamente a los valores de datos, solo mediante sus elementos de datos y frecuencias, y como tales los sets de datos pueden ser modificados, eliminados o añadidos en cualquier momento sin que esto afecte a los datos en bruto previamente capturados en el sistema, pero tales cambios afectarán por su puesto a cómo se registrarán nuevos datos. + Una vez hemos asignado un set de datos a una unidad organizativa, ese set de datos estará disponible en Entrada de Datos (del menú Servicios) para la unidad asignada y para los periodos válidos de acuerdo al tipo de periodo del set de datos. Entonces, se mostrará un formulario de entrada de datos por defecto, que es simplemente una lista de los elementos de datos pertenecientes al set de datos junto a una columna para introducir los valores. Si nuestro set de datos contiene elementos de datos con categorías como grupos de edad o género, entonces se generarán automáticamente columnas adicionales en el formulario por defecto en base a estas categorías. Además del formulario de entrada de datos por defecto basado en listado, existen dos alternativas: el formulario basado en secciones y el formulario personalizado. Los formularios por secciones permiten un poco más de flexibilidad cuando queremos utilizar formularios tabulares, y además son rápidos y sencillos de diseñar. A menudo sucederá que nuestro formulario de entrada de datos precisa múltiples tablas con subtítulos, y a veces necesitamos deshabilitar (poner en gris) algunos campos de la tabla (por ejemplo cuando algunas categorías no aplican para todos los elementos de datos); estas funciones están soportadas en los formularios por secciones. Cuando el formulario que queremos diseñar es demasiado complicado para los modelos por defecto o por secciones, entonces nuestra última opción es usar el formulario personalizado. Este nos llevará más tiempo, pero da una flexibilidad total en términos de diseño. DHIS 2 viene ya con un editor HTML (Editor FcK) para el diseñador de formularios y podemos diseñar el formulario usando este interfaz de usuario o bien pegar directamente nuestro código HTML (usando la ventana Fuente en el editor).
Reglas de validación - Once you have set up the data entry part of the system and started to collect data then there is time to define data quality checks that help to improve the quality of the data being collected. You can add as many validation rules as you like and these are composed of left and right side expressions that again are composed of data elements, with an operator between the two sides. Typical rules are comparing subtotals to totals of something. E.g. if you have two data elements "HIV tests taken" and "HIV test result positive" then you know that in the same form (for the same period and organisational unit) the total number of tests must always be equal or higher than the number of positive tests. These rules should be absolute rules meaning that they are mathematically correct and not just assumptions or "most of the time correct". The rules can be run in data entry, after filling each form, or as a more batch like process on multiple forms at the same time, e.g. for all facilities for the previous reporting month. The results of the tests will list all violations and the detailed values for each side of the expression where the violation occurred to make it easy to go back to data entry and correct the values. + Una vez que hayamos configurado la parte de entrada de datos del sistema y comenzado a recoger datos, entonces es momento de definir chequeos de calidad de los datos que ayuden a mejorar la calidad de los datos que se están recopilando. Podemos añadir tantas reglas de validación como queramos, que estarán compuestas por expresiones a izquierda y derecha de un operador matemático, que a su vez están formadas por elementos de datos. Las reglas típicas consisten en comparar los subtotales con los totales de algo. Por ejemplo, si tenemos dos elementos de datos "Test VIH realizados" y "Test VIH resultado positivo", entonces sabemos que en el mismo formulario (es decir, para el mismo periodo y unidad organizativa) el número total de tests deberá ser siempre igual o mayor que el número de tests positivos. Estas reglas deberían ser reglas absolutas, que significa que son matemáticamente correctas y no simplemente asunciones o "casi siempre correctas". Las reglas se pueden ejecutar en la entrada de datos, después de rellenar cada formulario, o como un proceso por tandas testeando múltiples formularios de una vez, por ejemplo para todos los establecimientos durante el mes de reporte previo. Los resultados de los tests de validación mostrarán un listado con todas las infracciones y con los valores detallados de cada lado de la expresión donde se produjo la infracción para facilitar que regresemos a la entrada de datos y corrijamos los valores.
Indicadores - Indicators represent perhaps the most powerful data analysis feature of the DHIS 2. While data elements represent the raw data (counts) being collected the indicators represent formulas providing coverage rates, incidence rates, ratios and other formula-based units of analysis. An indicator is made up of a factor (e.g. 1, 100, 100, 100 000), a numerator and a denominator, the two latter are both expressions based on one or more data elements. E.g. the indicator "BCG coverage <1 year" is defined a formula with a factor 100, a numerator ("BCG doses given to children under 1 year") and a denominator ("Target population under 1 year"). The indicator "DPT1 to DPT3 drop out rate" is a formula of 100 % x ("DPT1 doses given"- "DPT3 doses given") / ("DPT1 doses given"). - Most report modules in DHIS 2 support both data elements and indicators and you can also combine these in custom reports, but the important difference and strength of indicators versus raw data (data element's data values) is the ability to compare data across different geographical areas (e.g. highly populated vs rural areas) as the target population can be used in the denominator. - Indicators can be added, modified and deleted at any point in time without interfering with the data values in the database. + Los indicadores representan seguramente la herramienta más poderosa de análisis incluida en DHIS 2. Mientras los elementos de datos representan los datos en bruto (conteos) que son recopilados, los indicadores representan fórmulas que proporcionan tasas cobertura, tasas de incidencia, ratios y otras unidades de análisis calculadas. Un indicador se compone de un factor (por ejemplo 1, 10, 100, 10 000), un numerador y un denominador, los dos últimos siendo expresiones obtenidas a partir de uno o varios elementos de datos. A modo de ejemplo, el indicador "Cobertura BCG <1 año" queda definido por una fórmula con factor 100, numerador el número de "dosis BCG entregadas a niños menores de 1 año", y denominador la "población diana menor de 1 año". El indicador "Tasa de exclusión de DPT1 a DPT3" es una fórmula de 100 % x ("Dosis entregadas DPT1"-"Dosis entregadas DPT3") / ("Dosis entregadas DPT1") + La mayoría de los módulos de reporte en DHIS 2 soportan tanto elementos de datos como indicadores y podemos incluso combinarlos en reportes personalizados. Pero la diferencia más importante y la ventaja de los indicadores frente a los datos en bruto (los valores de los datos en los elementos de datos) es la capacidad para comparar datos a través de áreas geográficas distintas (por ejemplo, áreas muy pobladas frente a áreas rurales) ya que la población diana puede utilizarse como denominador. + Es posible añadir, modificar y eliminar indicadores en cualquier momento sin interferir en los valores de los datos que ya se encuentran en la base de datos.
Tablas de reporte e informes