DHIS2
DHIS2
2.15
© 2006-2014
Equipo de Documentación DHIS2
1182
Version 2.15 2014-12-03 16:01:32
Licencia: Se garantiza el permiso para copiar, distribuir y/o modificar este documento bajo los
términos de la Licencia de Documentación Libre de GNU, Versión 1.3 o cualquier versión posterior
publicada por la Free Software Foundation; sin Secciones Invariables ("Invariant Sections"), sin
Textos de Portada ("Front-Cover Texts") y sin Textos de Contraportada ("Back-Cover Texts"). Las
fuentes de esta documentación incluyen una copia de la licencia, que también está disponible online:
[Link]
ii
Manual completo de Usuario DHIS2 Contents
iii
Manual completo de Usuario DHIS2 Contents
iv
Manual completo de Usuario DHIS2 Contents
(2.15) v
Manual completo de Usuario DHIS2 Contents
vi
Manual completo de Usuario DHIS2 Contents
(2.15) vii
Manual completo de Usuario DHIS2 Contents
21.1. The core building blocks describing the data ......................................................................... 153
21.2. The data element dimension ............................................................................................... 153
21.2.1. Data element categories .......................................................................................... 153
21.2.2. Data element group sets .......................................................................................... 154
21.3. The organisation unit dimension ......................................................................................... 154
21.3.1. Organisation unit group sets and groups ..................................................................... 155
[Link]. Alternative orgunit hierarchies - advanced use of group sets and groups ................. 155
21.3.2. Best practice on the use of group sets and groups ........................................................ 155
21.4. The time (period) dimension .............................................................................................. 155
21.4.1. Period Types ......................................................................................................... 156
21.4.2. Relative periods ..................................................................................................... 156
21.4.3. Aggregation of periods ........................................................................................... 156
[Link]. Sum and average aggregation along the period dimension ................................... 156
21.5. Data collection vs. data analysis .......................................................................................... 157
21.5.1. Data collection and storage ...................................................................................... 157
21.5.2. Input != Output ...................................................................................................... 157
21.6. Some more examples ........................................................................................................ 158
21.7. How this works in pivot tables ........................................................................................... 158
21.8. From paper for to multidimensional datasets - lessons learned .................................................. 159
21.8.1. From tables to category combinations - designing multidimensional data sets .................... 160
22. DHIS TRACKER ....................................................................................................................... 163
22.1. Introduction ..................................................................................................................... 163
22.1.1. Quick Background ................................................................................................. 163
22.1.2. Getting started with DHIS Tracker ............................................................................ 163
[Link]. Person registration ....................................................................................... 164
[Link]. Program enrollment ..................................................................................... 164
[Link]. Treatment case ............................................................................................ 164
[Link]. Reports ...................................................................................................... 164
22.2. User guide ....................................................................................................................... 164
22.2.1. Persons and Programs maintenance ........................................................................... 165
[Link]. Person attribute ........................................................................................... 165
[Link]. Person attribute group .................................................................................. 166
[Link]. Person identifier type ................................................................................... 166
[Link]. Relationship type ......................................................................................... 166
[Link]. Program and Program stage ........................................................................... 166
[Link]. Aggregation query builder ............................................................................. 169
[Link]. Validation criteria ........................................................................................ 170
[Link]. Schedule automated message reminder ............................................................ 171
[Link]. Schedule Automated Aggregation ................................................................... 171
22.2.2. Individual records module ....................................................................................... 171
[Link]. Person registration ....................................................................................... 172
[Link]. Tracking .................................................................................................... 175
[Link]. Data entry .................................................................................................. 175
[Link]. Reports ...................................................................................................... 176
[Link]. Manual person aggregation ............................................................................ 178
23. Web API ................................................................................................................................... 179
23.1. Introduction ..................................................................................................................... 179
23.2. Authentication .................................................................................................................. 179
23.3. Date and period format ...................................................................................................... 179
23.4. Working with the meta-data API ......................................................................................... 180
23.5. Example: Sending data values ............................................................................................ 181
23.6. Example: Sending data values using SDMX-HD .................................................................... 182
23.7. Example: Sending large bulks of data values ......................................................................... 183
23.8. Example: Reading data values ............................................................................................ 184
23.9. Example: Reading aggregated data values ............................................................................. 185
23.10. Example: Writing and reading messages ............................................................................. 185
23.11. Example: Writing interpretations ....................................................................................... 186
viii
Manual completo de Usuario DHIS2 Contents
(2.15) ix
Acerca de esta Guía
DHIS2 es una aplicación web. En muchos casos, hemos incluido capturas de pantalla para mayor claridad en los
ejemplos. También se muestran las rutas de algunas funcionalidades como "Mantenimiento->Administración de datos".
El símbolo "->" indica que deberíamos primero entrar en "Mantenimiento" y luego hacer click en "Administración de
datos" en el menú desplegable que aparece en la ventana del navegador.
Hemos utilizado varios estilos de texto para resaltar partes importantes del texto o tipos particulares de texto, como el
código fuente. Cada convención utilizada en el documento se explica a continuación.
Nota
Una nota contiene información adicional que debería ser tomada en cuenta o una referencia a más información
que puede ser relevante.
Sugerencia
Una sugerencia puede ser un consejo, como por ejemplo cómo realizar una tarea concreta de forma más
eficiente.
Importante
La información importante no debería ignorarse, y normalmente indica algo que es un requisito de la aplicación.
Atención
La información incluida en estas secciones debería ser considerada cuidadosamente, y si no es así, puede tener
consecuencias inesperadas en el análisis, el funcionamiento o el rendimiento del sistema.
Aviso
La información incluida en estas secciones, de no ser tomada en cuenta, puede resultar en pérdida permanente
de datos o puede afectar la usabilidad global del sistema.
Los comandos se mostrarán en texto en negrita, y representan un comando que necesita ser ejecutado en el
sistema operativo o en la base de datos.
Los enlaces a sitios web externos o las referencias cruzadas se mostrarán en texto azul y subrayado como este..
Las referencias bibliográficas se mostrarán entre corchetes como esta: [Store2007]. Podremos encontrar una referencia
completa en la bibliografía incluida al final de este documento.
xi
¿Qué es DHIS2? Antecedentes de DHIS2
DHIS2 es software de código abierto publicado bajo la licencia BSD y puede utilizarse sin coste alguno. Funciona en
cualquier plataforma que tenga instalado JRE 6 (o una versión superior). Simplemente se descarga (de [Link]), se
desempaqueta, se lanza el fichero ejecutable y estamos listos para comenzar.
DHIS2 ha sido desarrollado por el Health Information Systems Programme (HISP) en un proceso abierto y distribuido
globalmente con desarrolladores que actualmente están en India, Vietnam, Tanzania, Irlanda y Noruega. El desarrollo
está coordinado desde la Universidad de Oslo con un soporte principal de Norad.
En Octubre de 2012, el software DHIS2 se utiliza en los sistemas de salud de más de 30 países en África, Asia y
Latinoamérica, y entre los países que han adoptado DHIS2 como software de SIS nacional están KEnia, Tanzania,
Uganda, Ruanda, Ghana, Liberia y Bangladesh. Un número creciente de países y organizaciones esán comenzando
nuevos despliegues con DHIS2.
La documentación ofrecida aquí trata de ofrecer una panorámica global de la aplicación. Dada la naturaleza abstracta
de la aplicación, este manual no sirve como una guía paso a paso detallada de cómo utilizar la aplicación en cada
circunstancia, sino más bien ofrece ilustraciones y ejemplos de cómo DHIS2 puede implementarse en varias situaciones
mediante ejemplos generalizados.
1
¿Qué es DHIS2? Utilización de DHIS2 en el SIS: registro,
procesado, interpretación y análisis de los
datos
herramientas de diseño de reportes externas y populares como iReport o BIRT, permitiendo a los usuarios añadir
más reportes personalizados de forma flexible y accesibles a todos los usuarios.
• Análisis de datos flexible y dinámico (en tiempo real) en la herramienta de Visualizador de Datos y en el módulo SIG.
• Un panel de control (dashboard) para cada usuario con acceso rápido a las herramientas relevantes de monitoreo
y evaluación incluidas las gráficas de indicadores y enlaces a los reportes favoritos, mapas y otros recursos clave
en el sistema.
• Interfaces de usuario sencillas de utilizar para la gestión de metadatos, por ejemplo para añadir o editar sets de datos
o establecimientos de salud. No es necesaria la programación de código para poner en marcha el sistema en un
nuevo despliegue.
• Funcionalidad para diseñar y modificar las fórmulas calculadas de los indicadores.
• Módulo de gestión de usuarios para las contraseñas, seguridad y control fino de acceso (roles de usuario).
• Es posible enviar mensajes a los usuarios del sistema de cara a obtener retroalimentación y avisos. Los mensajes
también pueden entregarse en formato de email y como SMS.
• Los usuarios pueden compartir y discutir sus datos en gráficas y reportes utilizando "Interpretaciones", favoreciendo
una comunidad de usuarios con base activa en la información.
• Funcionalidades de exportación-importación de datos y metadatos, apoyando la sincronización de las instalaciones
offline así como la interoperabilidad con otras aplicaciones.
• Integración con otros sistemas software - utilizando el API-Web de DHIS2 y el Motor de Integración.
• Existe la posibilidad de desarrollar e integrar nuevos módulos para dar respuesta a necesidades específicas de los
usuarios, ya sea como parte del interfaz de usuario del portal de DHIS2 o como una aplicación externa acoplada
que interactúe a través del API-Web de DHIS2.
En resumen, DHIS2 facilita una solución integral de SIS para las necesidades de reporte y análisis de los usuarios de
información de salud a cualquier nivel.
DHIS2 participa en las diferentes facetas del ciclo de vida de la información, donde se incluyen:
• Recogida de datos.
• Realización de chequeos de calidad.
• Acceso a los datos a múltiples niveles.
2
¿Qué es DHIS2? Antecedentes tecnológicos
• Reporte.
• Elaboración de gráficas, mapas y otras formas de análisis.
• Posibilidad de comparaciones a lo largo del tiempo (por ejemplo, frente a meses anteriores) y del espacio (por
ejemplo, entre distintos establecimientos y distritos).
• Detección de tendencias (mostrando datos en series temporales para verificar niveles máximos y mínimos tolerados).
En un primer paso, DHIS2 sirve como herramienta para la recogida, registro y compilación de datos, y todos los datos
(ya sea en forma de números o texto) pueden introducirse en la aplicación. La entrada de datos puede hacerse en listas
de elementos de datos o mediante formularios definidos por los usuarios, que pueden elaborarse a imagen y semejanza
de los formularios en papel para facilitar a los usuarios el proceso de registro de datos.
En un segungo paso, DHIS2 puede utilizarse para aumentar la calidad de los datos. Por un lado, en los puntos de
entrada de datos puede realizarse un chequeo para verificar si los datos cuadran en rangos aceptables entre valores
máximos y mínimos para cada elemento de datos particular. Este chequeo puede ayudar, por ejemplo, a identificar
errores producidos al momento de meter los datos. Por otro lado, los usuarios pueden definir reglas de validación, y
DHIs2 puede lanzar comprobaciones de estas reglas de validación sobre los datos para detectar infracciones.
Luego, cuando ya se han introducido y verificado los datos, DHIS2 puede ayudar a realizar diferentes tipos de reportes.
El primer tipo de reporte es el rutinario que necesita ser predefinido, de modo que todos los reportes que sean generados
en rutina puedan obtenerse con un click. Adrmás, DHIS2 puede ayudar en la generación de reportes analíticos mediante
por ejemplo comparaciones de indicadores en distintos establecimientos de salud o a lo largo del tiempo. Algunas de
las salidas de análisis que puede producir DHIS2 son gráficas, mapas, reportes y perfiles de salud. Todos ellos deberían
ser producidos, analizados y servir de base para intervenciones de salud por parte de los gestores de salud.
En segundo lugar, gracias a su diseño modular DHIS2 puede extenderse con módulos software adicionales. Estos
módulos software pueden convivir con los módulos centrales de DHIS2, e integrarse en el portal DHIS y en el sistema
de menús. Es una caractarística potente que permite extender el sistema con funcionalidad extra cuando se requiera,
típicamente para requisitos específicos del país, como se apuntó anteriormente.
La otra cara del módulo de extensión software es que impone varias limitaciones al proceso de desarrollo. Los
desarrolladores que crean funcionalidad extra están limitados a la tecnología DHIS en términos de lenguaje de
programación y de entornos software, además de las limitaciones ya mencionadas para el diseño de los módulos para
la solución de portal web DHIS. Estos módulos deben incluirse en el software DHIS cuando se compila el software y
se despliega en un servidor, no se pueden añadir dinámicamente en tiempo de ejecución.
Para superar estas limitaciones y lograr un acercamiento entre el nivel de servicio DHIS y otras piezas adicionales de
software, el equipo de desarrollo de DHIS decidió crear el API Web. Este API-Web cumple con las normas de estilo
arquitectónico REST. Esto implica que:
• El API Web proporciona un interfaz navegable y también de lenguaje-máquina para completar el modelo de
datos DHIS. Por ejemplo, podemos acceder a la lista completa de elementos de datos, luego navegar utilizando el
hipervínculo a un elemento de datos que nos interese en particular, luego navegar utilizando el hipervínculo a la lista
de formularios de los cuales este elemento de datos forma parte. Por ejemplo, los clientes solo harán transiciones de
estado utilizando hipervínculos que se incrustan dinámicamente en las respuestas de la base de datos.
3
¿Qué es DHIS2? Comprendiendo la independencia de
plataforma
• Los datos son accedidos mediante un interfaz uniforme (URLs) utilizando un protocolo reconocido. No hay formatos
o protocolos de transporte extravagantes - solo el protocolo HTTP ampliamente probado y entendido, que es el
bloque fundamental de la Web actual. Esto implica que los desarrolladores de terceros pueden desarrollar software
utilizando el modelo de datos y los datos de DHIS sin conocer la tecnología específica o sin cumplir a las restricciones
de diseño de DHIS.
• Todos los datos incluidos metadatos, reportes, mapas y gráficas, que consideramos "recursos" en terminología REST,
pueden obtenerse en los formatos de representación de datos más populares de la Web como HTML, XML, JSON,
PDF y PNG. Estos formatos son ampliamente soportados en aplicaciones y lenguajes de programación y permiten
a los desarrolladores de terceros un amplio abanico de opciones de implementación.
Más allá, DHIS2 es también independiente de plataforma en relación al Sistema de Gestión de Base de Datos. DHIS2
utiliza el entorno de abstracción de bases de datos Hibernate y es compativle con cualquier sistema soportado por
Hibernate, como PostgreSQL, MySQL, H2, MS SQL Server, Oracle y muchos otros. PostgreSQL es el sistema de
base de datos recomendado para DHIS2.
4
¿Qué es DHIS2? Estrategias de despliegue - conectado
(online) o desconectado (offline)
(desconectado) (2) despliegue online (conectado) y (3) despliegue híbrido. El significado de cada una y las diferencias
entre ellas se detallan en las secciones siguientes.
Esta forma de despliegue online tiene implicaciones muy positivas en el proceso de implementación y en el
mantenimiento de la aplicación en comparación con el estilo tradicional desconectado:
• Hardware: Los requisitos hardware del lado del usuario se limitan a una computadora o portátil (laptop)
razonablemente modernos, y conexión a Internet a través de línea fija o módem celular. No hay necesidad de tener
servidores especializados del lado del usuario, sino que cualquier computadora que pueda navegar es suficiente.
• Plataforma software: Los usuarios solo necesitan un navegador web para conectarse al servidor online. Hoy en día
todos los sistemas operativos populares vienen con un navegador web ya instalado y no hay ningún requisito especial
5
¿Qué es DHIS2? Estrategias de despliegue - conectado
(online) o desconectado (offline)
sobre qué tipo o versión de navegador. Lo que esto significa es que si hay problemas graves como infecciones de
virus o corrupción del software en esa computadora, siempre podremos recurrir a reformatear e instalar de nuevo
el sistema operativo o comprar una computadora nueva. En tal caso, el usuario podrá seguir introduciendo datos
donde lo dejó y no se habrá perdido ningún dato.
• Aplicación software: El estilo de despliegue online, es decir, basado en un servidor central, significa que podemos
actualizar y mantener la aplicación de manera centralizada. Cuando salen nuevas versiones de DHIS con nuevas
funcionalidades y resoluciones de bugs, esto puede aplicarse únicamente al servidor online. Y todos los cambios
se reflejarán en el lado del cliente la próxima vez que los usuarios se conecten al servidor a través de Internet.
Obviamente, esto tiene un impacto enormemente positivo en el proceso de mejorar el sistema ya que las nuevas
funcionalidades se distribuyen inmediatamente a los usuarios, todos los usuarios estarán siemrpe accediendo a la
misma versión de la aplicación, y los bugs y complicaciones pueden resolverse e implantarse al momento.
• Mantenimiento de la base de datos: De forma similar al punto anteior, los cambios en los metadatos se hacen en
el servidor online de forma centralizada y se propagan automáticamente a todos los clientes la próxima vez que se
conecten al servidor. Esto efectivamente elimina los vastos problemas relacionados con mantener un set de metadatos
actualizado y estandarizado, como sucede en el despliegue offline. Por ejemplo es muy conveniente este estilo
durante la fase inicial de desarrollo de la base de datos y durante los procesos anuales de revisión de la base de datos,
ya uqe los usuarios estarán accediendo a una base de datos consistente y estandarizada incluso cuando en ella se
están produciendo cambios frecuentes.
Este enfoque puede ser problemático en los casos en los que la conexión a Internet es volatil o insuficiente durante
largos periodos de tiempo. Sin embargo, DHIS 2 dispone de algunas características que permiten que el requisito de
conexión a Internet solo sea necesario en momentos concretos para que el sistema funcione bien, como la herramienta
MyDatamart que se explica en un capítulo específico de este Manual.
Es difícil definir con precisión cómo es una conexión a Internet suficiente pero podemos poner como regla práctica
que la velocidad de descarga debería ser mínimo 10 Kbyte/seg y la disponibilidad devería ser como mínimo el 70%
del tiempo.
En este sentido los modems de Internet por celular que se puedan conectar a una computadora o portátil para acceder
a la red celular son una solución factible y suficiente. La cobertura de Internet móvil está aumentando rápidamente en
todo el mundo, con frecuencia ofreciendo una conectividad buena a precios asequibles y es una alternativa a las redes
locales y poco mantenidas de líneas fijas de Internet. Puede resultar un esfuerzo que vale la pena el contactar con las
compañías de red móvil nacional y negocias suscripciones de postpago y beneficios potenciales de economía de escala.
Es conveniente estudiar la cobertura de red para cada operador de red de telecomunicaciones en el país concreto, a la
hora de decidir qué tipo de despliegue arrancar, ya que podrá ser diferente en distintas regiones del país.
La razón principal para elegir la primera de las opciones es a menudo la motivación política de tener "propiedad
física" de la base de datos. Muchos perciben esto como algo importante de cara a "poseer" y controlar los datos. Existe
también el deseo de desarrollar capacidad local para la administración del servidor relacionada con la sostenibilidad
del proyecto. Esto suele darse en iniciativas lideradas por donantes que perciben así la misión más concreta y servicial.
6
¿Qué es DHIS2? Diferencias entre datos agregados y datos de
paciente en un SIS
En cuanto a la segunda opción, en algunos lugares se construye un centro gubernamental de datos con la visión de
promover y mejorar el uso y acceso a los datos públicos. Otra razón puede ser que la proliferación de entornos internos
de servidos demanda muchos recursos y es más eficiente establecer una infraestructura y capacidad centralizadas.
El objetivo primordial de un despligue de servidor online es proporcionar un acceso estable a largo plazo y de alto
rendimiento a los servicios ofrecidos. Cuando decidamos qué opción elegir para un entorno de servidor, deberemos
considerar varios aspectos:
1. La capacidad humana de administración y operación del servidor. Debe haber personal con habilidades genéricas
para la administración de servidor y en las tecnologías específicas de la aplicación que provee servicios. Ejemplos
de estas tecnologías son los servidores web y las plataformas de gestión de bases de datos.
2. Soluciones fiables para copias de seguridad automatizadas, incluido un servidor local off y backup remoto.
3. Conectividad estable y buen ancho de banda para el tráfico hacia y desde el servidor.
4. Fuente de alimentación eléctrica estable, incluida una solución de backup.
5. Entorno seguro para el servirod físico en términos de acceso, robo y fuego.
6. Presencia de un plan de recuperación ante desastres. Este plan debe contener una estrategia realista para asegurar
que el servicio solo sufrirá caídas breves en los casos de fallo hardware, caída de la red y otros.
7. Hardware viable, potente y robusto.
Todos estos aspectos deben cubrirse para crear un entorno de alojamiento apropiado. El requisito hardware se ha puesto
en último lugar deliberadamente debido a que hay una tendencia clara a prestarle demasiada atención, habiendo otros
factores más cruciales.
Volviendo a las tres principales opciones de alojamiento, la experiencia de misiones de implementación en países en
desarrollo sugiere que los aspectos citados rara vez están presentes en las opciones uno y dos a nivel viable. Alcanzar
un nivel aceptable en todos esos aspectos es desafiante en términos de recursos humanos y dinero, especialmente
al comparar con la tercera opción. Tiene el beneficio de que acomoda los aspectos políticos mencionados y crea
capacidades locales para la administración de servidor, aunque por otro lado esto se puede lograr por otras vías.
La opción tres - alojamiento externo - tiene la ventaja de que soporta todos los aspectos mencionados a un coste
asequible. Muchos proveedores de hosting - de servidores virtuales o de servicios en la nube - ofrecen servicios fiables
para lanzar la mayoría de aplicaciones posibles. Un ejemplo de estos proveedores son los servidores web de Linode y
Amazon. La administración de esos servidores se realiza a través de una conexión de red, lo que sucede también muchas
veces en el caso de la administración de un servidor local. La ubicación física del sercidor en este caso es irrelevante ya
que esos proveedores ofrecen servicios en muchas partes del mundo. Esta solución se está convirtiendo en un estándar
para el alojamiento de los servicios de aplicaciones. El aspecto de crear capacidad local para la administración de
servidor es compatible con esta opción ya que un equipo local TIC puede asumir la tarea de mantenimiento del servidor
alojado externamente.
Una alternativa para combinar las ventajas del alojamiento externo con la necesidad de hosting local y propiedad física
es usar un proveedor de hosting externo para el sistema de transacción primario, y copiar (mirror) este servidor a un
servidor local no-crítico que se use para solo-lectura como el análisis de datos y que se acceda por una intranet.
7
¿Qué es DHIS2? Software libre y de código abierto (FOSS):
beneficios y retos
si queremos seguir cómo un paciente se adhiere y responde a un proceso de tratamiento de TB (que generalmente tiene
una duración de 6-9 meses), necesitaremos información de datos de paciente.
Los datos agregados son la consolidación de datos relativos a múltiples pacientes, y por tanto no se puede rastrear
el origen de los datos de un paciente concreto. Se trata generalmente de conteos, como la incidencia de Malaria,
TB y otras enfermedades. Típicamente, los datos rutinarios con los que trabaja un establecimiento de salud so este
tipo de estadísticas agregadas, y se utilizan para la generación de reportes e indicadores rutinarios, y lo que es más
importante, para la planificación estratégica en el sistema de salud. Los datos agregados no pueden proporcionar el
tipo de información detallada que dan los datos de nivel de paciente, pero es crucial para la planificación y orientación
del funcionamiento de los sistemas de salud.
Digamos que entre unos y otros se encuentran los datos relativos a casos, o datos anónimos "de paciente". Es posible
recoger numerosos detalles sobre el evento específico de salud sin necesidad de identificar al paciente involucrado. Las
visitas de pacientes externos o internos, un nuevo caso de cólera, mortalidad materna, etc. son casos de uso comunes
cuando queremos recopilar muchos más detalles que el mero conteo del número total de casos o visitas. Estos datos
normalmente se registran en formularios en forma de listado, o en formularios de auditoría más detallados. Y estos
datos de casos son diferentes de los datos agregados en el sentido de que contienen muchos detalles sobre un evento
concreto, mientras que los datos agregados simplemente contarían cuántos eventos se producen de un cierto tipo, por
ejemplo, cuántas visitas externas con diagnóstico principal "Malaria", o cuántas muertes maternas donde la fallecida no
siguió el protocolo ANC, o cuántos brotes de cólera en niños menores de 5 años. En DHIS2 estos datos son recogidos
mediante programas de tipo "evento único sin registro".
Los datos de paciente son muy confidenciales y por tanto deben ser protegidos para que ninguna persona no autorizada
pueda obtenerlos. Cuando están en papel, deben ser archivados en un lugar seguro. En computadoras, los datos de
paciente necesitan sistemas seguros con contraseñas, acceso restringido y logs de seguimiento.
La preocupación por la seguridad de datos agregados no es tan crucial como lo es para los datos de paciente, ya que
generalmente es imposible identificar una persona en particular con una estadística agregada. Sin embargo, los datos
también pueden ser mal usados o malinterpretados por otros, y no deberían distribuirse sin unas políticas de difusión
de datos adecuadas.
Los dueños de software propietario licencian su código objeto con copyright a un usuario, lo cual permite a éste ejecutar
el programa. Los programas FOSS, sin embargo, licencian tanto el código objeto como el código fuente, permitiendo al
usuario no sólo utilizarlo sino también modificar y tal vez distribuir los programas. Teniendo acceso al código fuente,
los usuarios tienen la libertad de ejecutar el programa para cualquier fin, redistribuirlo, probar, adaptar, aprender de ello,
personalizar el software para responder a sus necesidades, y volcar mejoras públicamente para el bien de la comunidad.
Por lo tanto, algun FOSS es conocido también como software libre, donde "libre" se refiere primero y ante todo, a las
libertades antes descritas que a un sentido monetario de la palabra (en relación a la gratuidad).
En el sector de la salud pública, FOSS puede tener muchos beneficios, como por ejemplo:
• Menores costes ya que no implica el pago de costes de licencia prohibitivos.
• Dado que las necesidades de información para el sector salud están en constante cambio y evolución, hay una
necesidad de que el usuario tenga libertad para hacer los cambios según sus propios requisitos. Esto frecuentemente
es muy limitado en sistemas propietarios.
• Acceso a código fuente para favorecer la integración e interoperabilidad. La interoperabilidad entre diferentes
aplicaciones software en el sector salud está tomando importancia creciente, lo que significa permitir que dos o más
sistemas compartan datos y metadatos. Este trabajo es mucho más fácil, y a veces dependiente del código fuente que
se disponibiliza a los desarrolladores que hacen la integración. Esta disponibilidad frecuentemente no es posible en
el caso del software propietario. Y cuando lo es, supone costes enormes y obligaciones contractuales.
8
¿Qué es DHIS2? Software libre y de código abierto (FOSS):
beneficios y retos
• Las aplicaciones FOSS como DHIS2 típicamente están mantenidas por una red global de desarrolladores, y por tanto
tiene acceso a conocimiento puntero en investigación y desarrollo (I+D).
9
Comenzando con DHIS 2 Primeros pasos con DHIS 2
1) Parar DHIS2 Live si está todavía corriendo. Hacer click con el botón derecho en el icono de bandeja y seleccionar
Salir. El icono de bandeja es el símbolo verde en la esquina inferior derecha de la pantalla (en Windows) que debería
decir "Servidor DHIS2 corriendo" cuando colocamos el puntero del mouse sobre él.
2) Abrir la carpeta donde se ha instalado el paquete DHIS2 Live y localizar la carpeta llamada "conf".
3) En conf/ abrir el fichero llamado '[Link]' en un editor de texto (bloc de notas o similar) y hacer la
siguiente modificación: encontrar la expresión 'jdbc:h2:./database/dhis2' y reemplazar la parte 'dhis2' por el nombre
que queremos dar a nuestra base de datos (ej. dhis2_test).
5) Arrancar DHIS 2 Live haciendo doble click en el fichero [Link] en la carpeta de instalación de DHIS 2 Live
o utilizando el acceso directo de escritorio o el enlace en el menú.
6) Esperar a que se abra la ventana del navegador web y la pantalla de login, y nos logueamos con nombre de usuario
admin y contraseña district.
7) Ahora veremos un sistema DHIS2 totalmente vacío y deberemos comenzar a añadir usuarios, jerarquía organizativa,
elementos de datos, sets de datos, etc. Para instrucciones detalladas sobre cómo hacer esto, podemos revisar otras
secciones de este manual.
11
Comenzando con DHIS 2 Descargar e instalar la versión de servidor
simplemente copiando el fichero. Toda la base de datos existe en la memoria, lo que da un alto rendimiento. La
desventaja viene de la necesidad de RAM. Este formato no es válido para instalaciones de servidor con múltiples
usuarios.
En general, es recomendable trabajar con la base de datos mediante el interfaz de usuario de DHIS2, pero en algunas
situaciones podemos necesitar manejar los datos directamente. Si descargamos H2 por separado, veremos que viene con
un interfaz web. De modo que puede manejarse utilizando [Link], siguiendo el procedimiento a continuación.
Asumimos que dhis2-live está ubicado en el directorio home del usuario Linux (representado por ~). Si no es el caso,
sustituiremos aquí la ruta absoluta a nuestra instalación de dhis2-live.
• Arrancamos el procesador de textos OpenOffice y seleccionamos Herramientas - Opciones, luego Java - Class Path...
y hacemos click en Añadir archivo...
• Cerramos la aplicación OpenOffice completamente y luego abrimos la base de datos [Link]. Seleccionamos
conectar con una base de datos existente - JDBC
• El nombre de usuario es sa, no es necesaria contraseña. Finalmente, seleccionamos un nombre y carpeta para el
fichero .odb.
Más info
Para loguearnos en la aplicación introducimos [Link] si estamos utilizando el paquete DHIS2 Live,
o reemplazamos el localhost con el nombre o dirección IP del servidor donde está instalada la versión de servidor.
Una vez hemos arrancado DHIS2, ya sea online o offline, la pantalla nos pedirá ingresar nuestro nombre de usuario
registrado y contraseña. Después de introducir la información requerida haremos click en el botón de Entrar para
loguearnos en la aplicación. El nombre de usuario y contraseña por defecto son 'admin' y 'district'. Deberemos
cambiarlos inmediatamente después de loguearnos en DHIS2 por primera vez.
12
Comenzando con DHIS 2 Definir un nuevo rol
Los nombres de usuario ya registrados aparecerán como una lista tal y como se muestra en la pantalla abajo.
Podemos buscar nombres de usuario específicos en la lista de usuarios introduciendo el nombre en 'filtrar por nombre
de usuario' como se muestra arriba.
La pantalla siguiente se abrirá y en el primer cuadro de texto introduciremos el Nombre del nuevo Rol como
'Superusuario', 'Administrador', etc. El segundo cuadro de texto llamado 'Descripción' da más información sobre el
tipo de Rol de Usuario que se ha creado, por ejemplo Usuario Administrador Estatal, Entrada de datos en distrito.
13
Comenzando con DHIS 2 Añadir un nuevo usuario
A continuación especificamos los sets de datos concretos que están disponibles para ese rol. También deberemos
especificar el tipo de 'autoridad' que damos al usuario concreto. Para cada una de las tres opciones sets de datos, reportes
y autoridades podemos seleccionar múltiples opciones del menú desplegable aportado en cada campo. Un usuario
puede elegir múltiples opciones también moviéndolas una por una.
Para que los usuarios puedan introducir datos, tenemos que añadirlos al set de datos y al nivel de unidad organizativa
correspondiente. También podemos seleccionar múltiples sets de datos individualmente presionando la tecla Ctrl en
el teclado y haciendo click en sets de datos individuales.
Finalmente cuando hayamos introducido los campos requeridos haremos click en el botón Guardar ubicado en la parte
inferior de la pantalla. El rol de usuario deseado y la autorización relacionada quedarán guardados en la base de datos,
y pueden entonces asignarse a un usuario concreto.
14
Comenzando con DHIS 2 Salir de DHIS 2
Esta sección ofrece una rápida y breve introducción al diseño de la base de datos en DHIS2 y fundamentalmente explica
los pasos necesarios para preparar un nuevo sistema DHIS2 para su uso. Cómo realizar cada paso se explica en otros
capítulos, y las buenas prácicas en las decisiones de diseño se explican en la Guía de Implementación. A continuación
se listan los pasos a seguir:
15
Comenzando con DHIS 2 La jerarquía organizativa
5. Definir indicadores
Es posible modelar jerarquías adicionales (tales como límites administrativos paralelos al Sector Salud) utilizando
grupos organizativos y sets de grupo, pero la jerarquía organizativa es el vehículo principal para la agregación de datos
en una dimensión geográfica. Normalmente las jerarquías organizativas nacionales en Salud Pública tienen entre 4 y
6 niveles, pero DHIS soporta cualquier cantidad de niveles. La jerarquía se construye con relaciones padre-hijo, por
ejemplo: una unidad País o Ministerio de Salud (la raíz) puede tener 8 unidades hijo (provincias), y cada provincia (en
nivel 2) puede tener a su vez 10 ó 15 distritos como nodos hijo. Generalmente los establecimientos de salud estarán
colocados en el nivel más bajo, pero también podemos colocarlos en niveles más altos como sucederá con los hospitales
provinciales o nacionales, de modo que es posible tener árboles organizativos asimétricos (ej. un nodo hoja puede estar
colocado en el nivel 2 mientras la mayoría de nodos hoja se encuentran en el nivel 5).
Normalmente hay una jerarquía geográfica definida por el sistema de salud, por ejemplo, dónde se ubican las oficinas
administrativas (el Ministerio de Salud, las direcciones provinciales, distritales..), pero frecuentemente hay también
otros límites administrativos en el país que puden o no añadirse, dependiendo de si estas subdivisiones mejoran el
análisis de los datos. Cuando diseñamos la jerarquía el número de hijos para cada unidad organizativa debe indicar
la utilidad de dicha estructura, es decir, tener una o más relaciones 1 a 1 entre dos niveles no es muy útil ya que los
valores serán los mismos para el nivel padre y el nivel hijo. En el lado opuesto tendríamos un número demasiado
grande de hijos en medio de la jerarquía (por ejemplo, 50 distritos en una provincia) que podemos resolver con un
nivel intermedio extra que aumente la utilidad del análisis de los datos. El nivel más bajo, los establecimientos de
salud, a menudo tienen un número grande de hijos (entre 10 y 60), pero ara otros niveles superiores en la jerarquía es
recomendable limitarlo a 5-20 hijos. Demasiados o demasiado pocos hijos puede indicarnos que deberíamos eliminar
o añadir un nivel. Es importante resaltar que es fácil hacer cambios en los niveles altos de la jerarquía a posteriori, el
único problema es cambiar las unidades organizativas que recogen los datos (los nodos hoja), al subdividir o fusionar
establecimientos de salud. El agregado de datos hacia arriba en la jerarquía se realiza según la jerarquía establecida en
un momento dado, y siempre reflejará los cambios más recientes en la estructura organizativa. Hay más detalle en el
capítulo sobre Unidades Organizativas para aprender cómo crear unidades organizativas y cómo construir la jerarquía.
16
Comenzando con DHIS 2 Sets de datos y formularios de entrada de
datos
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.
Es posible añadir más detalles a la dimensión "QUÉ" mediante las categorías de elementos de datos. Algunas categorías
comunes son Edad y Género, pero es posible añadir cualquier categoría identificada por el usuario y enlazarla con
elementos de datos específicos. La combinación del nombre de un elemento de datos y su categoría asignada define
la unidad más pequeña de recolección y análisis disponible en el sistema, y por tanto describe los datos en bruto en la
base de datos. Podemos hacer agregados al alejarnos en esta dimensión, pero no es posible acercarnos, descomponerlo
más, ya que diseñar elementos de datos y categorías define el detalle de análisis posible en el sistema (en la dimensión
QUÉ). Si hacemos cambios posteriores en los elementos de datos y categorías puede complicarse, ya que esto cambiará
el significado de los valores de datos ya registrados en la base de datos. De modo que este paso es uno de los más
decisivos y cuidadosos en el proceso de diseño de la base de datos.
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. Una regla de oro es que el nombre del elemento de datos debe entenderse por sí mismo
y describir el valor del dato también fuera del contexto de su formulario de registro. Por ejemplo, un nombre de elemento
de dato como "Total referidos" tiene sentido cuando miramos bien en el formulario de "RCH" o de "OPD", pero por
sí mismo no describe de forma unívoca el fenómeno (¿quiénes son referidos?), y debería más bien llamarse "Total
referidos en maternidad" o "Total referidos en OPD". Dos elementos de datos diferentes con significados distintos,
aunque el campo en el formulario de papel puede simplemente decir "Total referidos" ya que el usuario del formulario
siempre sabe de dónde vienen los referidos (está contextualizado). En una base de datos o un repositorio de elementos
de datos este contexto no es válido, y por eso los nombres de los elementos de datos se vuelven muy importantes al
describir los datos.
Las propiedades comunes de elementos de datos pueden modelarse con lo que llamamos grupos de elementos de datos.
Los grupos son completamente flexibles en el sentido de que son definidos por el usuario, tanto sus nombres como
sus miembros. Los grupos son útiles tanto para explorar como para presentar los datos relacionados, pero también
pueden utilizarse para agregar elementos de datos. Los grupos están vinculados a elementos de datos pero no ligados
directamente a los valores de los datos, lo que implica que podemos modificarlos y añadir nuevos grupos en cualquier
momento sin interferir en los datos en bruto.
Un set de datos tiene un tipo de periodo que indica la frecuencia de registro de datos, que puede ser diaria, semanal,
mensual, trimestral, semestral o anual. Tanto qué elementos incluir en el set de datos como el tipo de periodo son
definidos por el usuario, junto con un nombre, un nombre corto y un código.
Para utilizar un set de datos para recopilar los datos de una unidad organizativa específica debemos asignar la unidad
organizativa al set de datos, y este mecanismo controla qué unidades organizativas pueden utilizar qué sets de datos,
y al mismo tiempo define los valores objetivo para la completitud de los datos (por ejemplo, cuántos establecimientos
de salud en un distrito esperamos que envién datos de RCH cada mes).
Un elemento de datos puede pertenecer a múltiples sets de datos, pero requiere una reflexión cuidadosa ya que
puede luego provocar solapes y el registro de datos inconsistentes si por ejemplo, los sets de datos reciben diferentes
frecuencias y son utilizados por las mismas unidades organizativas.
17
Comenzando con DHIS 2 Reglas de validación
Los formularios de sección nos permiten una mayor flexibilidad que los formularios en tabla (por defecto) y son
rápidos y sencillos de diseñar. Frecuentemente nuestros formularios de entrada de datos requieren múltiples tablas
con subtítulos, y a veces necesitamos deshabilitar (poner en gris) unos pocos campos de la table (por ejemplo, para
algunas categorías que no aplican a todos los elementos de datos), y estas funciones son soportadas en los formularios
de sección. Después de definir un set de datos podemos definir sus secciones con subsets de elementos de datos, un
encabezado y posibles campos en gris. También podemos fijar el orden de las secciones en un set de datos. En Entrada
de Datos podemos comenzar a utilziar el formulario de sección (deberá aparecer automáticamente cuando las secciones
quedan disponibles para el set de datos seleccionado). Podemos cambiar pasar de formularios por defecto a sección
en la esquina superior derecha de la pantalla de entrada de datos. Muchos formularios de entrada de datos tabulares
deberían poder convertirse en formularios de sección, y cuantos más de estos utilicemos más facil nos resultará. Si estos
dos tipos de formularios no cumplen nuestros requisitos, entonces tenemos también una opción totalmente flexible,
aunque nos llevará más tiempo su diseño: los formularios personalizados de entrada de datos.
Cuando el formulario que queremos diseñar es demasiado complicado para los formatos por defecto o de sección, esta
es nuestar última opción. Nos llevará más tiempo, pero ofrece total flexibilidad en términos de diseño. En DHIS2 hay un
editor HTML (Editor FcK) para el diseñador de formularios y podemos diseñar el formulario en el interfaz de usuario o
bien pegar nuestro código HTML directamente (utilizando la ventana Fuente del editor). En el formulario personalizado
podemos insertar texto estático o campos de datos (vinculados a elementos de datos y categorías) en cualquier posición
del formulario y tendremos total libertad para diseñar la apariencia del formulario. Una vez hayamos añadido el
formulario personalizado a un set de datos, deberá estar disponible en Entrada de Datos y podremos comenzar a usarlo
inmediatamente. Podemos cambiar o regresar a los formularios por defecto o de sección, en la esquina superior derecha
de la pantalla de entrada de datos.
2.5.5. Indicadores
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
18
Comenzando con DHIS 2 Reportes y tablas de reportes
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.
2.5.7. SIG
En el módulo integrado de SIG podemos mostrar fácilmente nuestros datos en mapas, tanto en polígonos (áreas) como
en puntos (establecimientos de salud), y tanto los elementos de datos como los indicadores. Si añadimos al sistema
las coordenadas de nuestras unidades organizativas, podemos rápidamente comenzar a trabajar con este módulo.
Recomendamos ver la sección SIG para más detalles sobre cómo configurar este módulo.
19
Unidades organizativas La jerarquía organizativa
• Crear grupos de unidades organizativas, sets de grupos, y vincularlos con unidades organizativas
El diseño de esta jerarquía determinará las unidades geográficas de análisis disponibles a los usuarios, a medida qeu los
datos se registran y agregan siguiendo esta estructura. Solo hay una jerarquía organizativa al mismo tiempo de modo
que el diseño de esta estructura requiere una atención cuidadosa.
Otras jerarquías (como límites administrativos paralelos al sector salud) pueden modelarse utilizando grupos
organizativos o sets de grupos, pero la jerarquía organizativa es el principal vehículo de la agregación de datos en la
dimensión geográfica. Generalmente las jerarquías organizativas nacionales en los sistemas públicos de salud tienen
entre 4 y 6 niveles, aunque DHIS2 acepta cualquier número de niveles.
La jerarquía se construye on relaciones padre-hijo. Por ejemplo un país puede tener 8 provincias, y cada provincia
de nuevo tener varios distritos como 'hijos'. Normalmente los establecimientos de salud (donde se registran los datos)
se encuentran en el nivel más bajo, pero también pueden estar ubicados en niveles superiores, por ejemplo hospitales
nacionales o provinciales, de modo que puede haber árboles organizativos truncados (donde un nodo hoja puede estar
ubicado en el nivel 2 mientras todos los demás están en el nivel 5).
Notemos que es bastante fácil realizar cambios en los niveles superiores de la jerarquía posteriormente, el único
problema es cambiar las unidades organizativas que registran los datos (los nodos hoja), por ejemplo dividiendo o
fusionando establecimientos de salud. La agregación hacia arriba en la jerarquía puede hacerse en base a la jerarquía
actual en cualquier momento y siempre reflejará los cambios más recientes de la estructura organizativa.
Importante
Dado que la información más reciente que está contenida en la jerarquía de unidades organizativa es siempre
utilizada para agregado, es importante tener en cuenta que los cambios ahí (tales como la división de distritos en
subdistritos) no se respetará posteriormente. Por ejemplo, si el Distrito A se subdivide en Distrito B y Distrito
C. Este es un proceso que en ocasiones sucede por razones políticas. Los establecimientos que pertenecen
al distrito A necesitarán ser reasignados a los distritos B y C según corresponda. Sin embargo, cualquier
dato histórico, que se haya introducido antes de que la división ocurra, todavía quedará registrado como
perteneciente a los distritos B y C y no al extinto distrito A. Esta representación temporal de la jerarquía
organizativa en el tiempo se perderá.
21
Unidades organizativas Mantenimiento de la unidad organizativa
in the listed orgunits, and finally click on the "Edit" button next to the name of the orgunit that you want to
modify. The following properties can be defined in the Edit (or Create new) window:
• Nombre: Define the precise name of the orgunit in this field. Each orgunit must have a unique name.
• Nombre corto: Typically, an abbreviation of the full name. This attribute is often used in reports to display the name
of the orgunit, where there is limited space available.
• Código: In many countries, orgunits are assigned a code. This code can be entered in this field.
• Fecha de apertura: Used to control which orgunits that where existing at a point in time, e.g. when analysing historical
data. This attribute is required. The default date for opening of organisation units is 1900-01-01, but can be set to
any date (even dates which occur in the future).
• Registra datos: This property is used to identify which orgunits that can register data or not. Sometimes administrative
orgunits at higher levels in the hierarchy are not supposed to register any data. This can help control the data entry
process as only orgunits with this property set to Yes will be available for data entry.
• Comentarios: Any additional information that you would like to add can be put here.
• Coordenadas: This field is used to create the maps in the GIS module. Paste in the coordinates of the orgunit in
this field, either a polygon (for orgunits that represent an administrative boundary) or a point (for health facilities).
Without this information the GIS module will not work. It might be more efficient to import these coordinates later
as a batch job for all orgunits using the import module. See the GIS chapter for more details.
• URL: You can use this field to insert a URL link to an external web site that has additional information about this
specific orgunit.
• Información de contacto: A contact person, address, email, and phone number can be entered in these fields. This
information can be vital for facilitating follow-up.
• Sets de datos: Datasets can be assigned to organisational units here. See the chapter on "Data sets" for more detailed
information on assigning datasets to organisational units.
• Grupos de unidades organizativas: Assignments to organisational units group sets can be assigned through the
individual drop-down boxes which appear for each group set.
While a group set like "Type" describes a measure dimension, the actual categories are represented by the groups, and
the categorisation of an orgunit through the orgunit's group memberships. This can be understood as a parallel hierarchy
22
Unidades organizativas Grupos de unidades organizativas
of orgunits with the group set as the root ("Type"), the groups at level 2 (e..g "Clinic", "Hospital", "Dispensary"), and
the actual orgunits at level 3. The group set can as such provide additional information and dimensionality to the data
analysis as data is easily filtered, organised, or aggregated by groups within a group set.
For this aggregation to work without any duplication in the data some rules are necessary. A group set is always
exclusive, which means that an orgunit cannot be member of more than one group in a group set. Therefore, when
creating a new organisational unit, you will only be allowed to select a single organisational group membership for
each group set. Furthermore it is possible to define whether a group set is compulsory or not, which will affect the
completeness of the data when analysing data using group sets. Compulsory means that ALL orgunits must be member
of a group in that group set.
We recommend that you approach the orgunit grouping in the following sequence (and one group set at a time):
1. Define a new group set, such as "Location".
2. Add new groups (such as "Urban", "Rural" and "Peri-urban"). Once all groups have been defined, return to the
organisational unit group set and assign each of the desired groups to the group set.
3. Go back to each group, one by one, go to edit mode and assign the orgunits that should be member of the group.
Should you follow this route, you can place multiple organisation units at a time in a group. However, you must
be careful not to place the same organisational units in two groups which itself is a member of an organisation unit
group set. This will result in a data integrity violation. If you have organisation unit groups which are not exclusive,
they should not be members of a group.
4. A better way to ensure that you do not mistakedly assign an organisation unit to multiple members of a group set
is you can use the edit feature of each organisational unit to assign memberships to each group [Link] will only
be able to assign a single organisation unit at a time however.
It is important to keep in mind when using the "Organisational unit group" set function, that unless great care is taken,
organisational units can be assigned to multiple groups of a group set. This can be checked through the "Data Integrity"
module, which will report which organisational units are not members of a compulsory organisational unit group set,
and which organisational units have been assigned to more than one member of a group set.
Click on the "Edit" button next to the name of the orgunit group set that you want to modify. The following
properties can be defined in the Edit (or Create new) window:
• Name: Provide a precise name for the group set.
• Description: Describe the phenomena the group set is measuring/capturing.
• Compulsory: Indicate whether ALL orgunits need to be member of a group in this group set or not.
• Available groups/Selected groups: Here you assign groups to your group set by using the arrow buttons to move
highlighted groups between the two lists (/selected). If no groups appear in the list then you must go to orgunit
groups and create new groups there first. Note that assigning groups that will violate the exclusive rule on group
sets is not possible, e.g. adding a group that already has assigned an orgunit that again is already member of a group
that has already been selected by this group set, will not be possible since one orgunit will end up with two group
memberships in the same group set. To avoid such situations we recommend first adding groups to group sets, and
then orgunits to groups.
Click on the "Edit" button next to the name of the orgunit group that you want to modify. The following properties
can be defined in the Edit (or Create new) window:
23
Unidades organizativas Nivel de la unidad organizativas
1. Select the orgunit you want to move (in the hierarchy in the left side menu) and click "Confirm" under the "Select
an organisation unit to move" label.
2. Select the new parent orgunit (again by using the hierarchy in the left side menu). If no parent is selected then the
orgunit will be moved up to root level (top of the hierarchy). Click on the "Confirm" button under the "Select the new
parent organisation unit for the one to move" label.
Your changes will be immediately reflected in the left side menu hierarchy. At any time in the process (before hitting
the Move button) you can click on the "Reset" button to unselect orgunit to move and the new parent.
24
Elementos de datos Mantenimiento de elementos de datos
En el menú lateral izquierdo o haciendo click en las secciones listadas en la zona central, podemos acceder a las diversas
secciones sobre elementos de datos;
Elemento de datos, Grupo de elementos de datos, Editor de grupo de elemento de datos, Set de grupos de elementos
de datos, Categorías de elementos de datos, Combinación de categorías de elementos de datos.
• Elementos de datos
far beyond the scope of this manual to describe, but it is assumed that an administrator will be provided with a list of
standardised data elements for inclusion into the DHIS2 system.
To access the data element maintenance module, choose Maintenance -> Data elements and Indicators -> Data element.
The ‘Filter by name’ will allow you to filter a range of data elements if you know either the full name of the data
element, or just a part of it. Type the name into the search field and any matching data elements are displayed below.
You can also choose ‘Filter by group/view all’ to narrow down a data element search within a particular data element
group. In default mode, this field will display all the data elements in the application. The ‘Get PDF’ button can be
clicked to generate a .pdf file of all the data elements. The 'Sort' button can be used to sort the data elements into
alphabetical order.
To add a new data element, click the 'Add new' button. There are various options available from this page that allow the
user to modify data elements already present in the database. Each of the options are described below in the "Editing
data elements".
Click the "Edit" button to modify the properties of a data element that has been previously defined.
26
Elementos de datos Elementos de datos
• Name: Define the precise name of the data element in this field. Each data element must have a unique name.
• Short name: Typically, an abbreviation of the full data element name. This attribute is often used in reports to display
the name of the data element, where there is limited space available.
• Alternative name: Allows the definition of an alternative name of the data element.
• Code: In many countries, data elements are assigned a code. This code can be entered in this field.
• Description: Allows a full textual description of the data element to be entered. The user should be as precise as
possible, and include full information on how the data element is measured and what its meaning is.
• Active: Defines whether a given data element is active or not. Data elements marked as inactive, will not be displayed
in the data entry screens.
• Domain type: Defines whether a data element is an aggregate or patient type of data element.
• Value type: Defines the type of data this data element will be used to record. Currently there are four options:
number, text, yes/no (boolean), and date.
• Number type: In order to increase the robustness of data entry, DHIS2 supports several different number types.
During data entry, users will be restricted to enter the defined number types only. Each of the available options are
described below.
1. Number: This number type supports any real value with a single decimal point, an optional negative sign, and
no thousands separators.
2. Integer: Any whole number (positive and negative), including zero.
3. Positive integer: Any whole number greater than (but not including) zero.
4. Negative integer: Any whole number less than (but not including) zero.
• Aggregation operator: Defines the default aggregation operation that will be used on this data element. Most data
elements should have the "SUM" option set. This includes all data elements which should be added together. Other
data elements, such as staffing levels, should be set to use the "AVERAGE" operator, when values along the time
dimension should not be added together, but rather averaged.
• URL: A URL having an in-depth description of the data element can be entered in the ‘URL’ field. This could be for
instance, a link to a metadata repository or registry that contains detailed technical information about the definition
and measurement of the data element.
• Combination of categories: Defines which category combination the data element should have.
27
Elementos de datos Elementos de datos
• Data element group sets: Click the check box to activate this option hen choose which data element group sets this
data element should belong to. Available data element group sets are displayed din the upper window. Click the
desired data element group set, then the "Add selected" button to add the data element to the group set. To remove a
data element from a group set, click the data element group set in the lower list, and then click "Remove selected".
• Calculated: This option is available only when a data element is created.
Nota
As of version 2.3, calculated data elements have been deprecated. Calculated data elements should therefore
be implemented as indicators instead.
Select the data elements that will be used to define the calculated data element, and then click "Add selected" to add
them calculated data element composition list. Fill in the correct factor for the data element calculation component
(defaults to 1). Component elements of the calculated data element can be removed from the definition by pressing
the "Remove" button.
• Aggregation levels: The Aggregation Levels option allows the data element to be aggregated at one or more
levels. When the user clicks on the Aggregation levels option, a drop down menu appears which displays available
aggregation levels. The desired aggregation level is then selected by clicking the ‘Add Selected’ button. By default,
the aggregation will start at the lowest assigned organisation unit. If e.g. Chiefdom is selected below it means that
Chiefdom, District, and National aggregates will use Chiefdom (the highest aggregation level available) as the data
source, and PHU data will not be included. PHU data will still be available for the PHU level, but not included
in aggregations to the levels above. If District and Chiefdom are both selected then the District and National level
aggregates will use District data as their source, Chiefdom will use Chiefdom, and PHU will use PHU. Read more
about aggregation levels in the Reporting chapter i the section on data sources for reporting.
After making the required changes, click ‘Save’ to institute them. The ‘Cancel’ button aborts all changes made.
The reference language is displayed in the upper right portion of the dialogue. Choose a locale to translate the data
element into by selecting an option from the locale drop-down menu. Specify the name, short-name and description
in the target language. Press "Save" to save your changes.
The "Details" section of this dialogue will allow you add a new locale if it is not already present in the database. There
are two options:
• Language code
28
Elementos de datos Grupo de elementos de datos
Refers to the ISO 639-1 (two-letter code) language code. Refer to this web page for a detailed listing of language
codes.
• Country code
The combination of these two codes together, forms a "locale" code, which is composed of the combination of the
location and language. A very comprehensive discussion of the technical standard (RFC 3066) is available here. This
page provides a very comprehensive list of recognised locale codes.
Simply press the delete button to delete a data element. Note that this operation is only possible if there is no
data attached to the data element itself. The user will be prompted to ensure that the data element should be deleted.
Similar to the "Data element" maintenance page, data elements groups can be searched with by entering a search string
in the "Filter by name" field.
To add a new data element group, click the "Add new" button and the following screen will be displayed:
29
Elementos de datos Editor de grupo de elementos de datos
Fill in the "Name" field and then select all data elements that should belong to the group from the left panel. Click the
"Move selected" button to add the selected data elements to the data element group. Click the "Remove selected"
button to remove all data elements from the group that have been selected in the right panel. Finally, click the "Add"
button to save changes, or the "Cancel" button to discard any changes.
Data element groups area listed alphabetically in the leftmost panel. By clicking on a data element group, the current
members of that group (data elements) are listed in the centre panel. Available data elements that can be added to the
data element group appear are listed alphabetically in the rightmost panel. To remove an existing data element from
the group, click the name of the data element in the centre panel, and then press the "Move right" button. To
add data elements to the group, select them from the leftmost panel, and click the "Move left" button. Press the
"Update data element group member" button to save your changes.
30
Elementos de datos Categorías de elementos de datos
the "Add new button". Other operations include Edit, Translate, Delete and Information, similar to the other modules
in this section.
Existing data element group set members can be edited by clicking the "Edit" button of the desired data element
group set as seen below.
Available data element groups are displayed in the left panel. They can be moved into the selected data element group
set by pressing the "Move right" button. Data element groups that are currently members of the data element
group set are displayed in the right hand panel. They can be removed from the data element group set by clicking
the desired data element group and pressing the "Move left" button. The ordering of the data element groups
can be set with the "Move Up" and "Move Down" arrows. This ordering will be used in the datamart and
reports to order the data element groups. Press the "Update" button to save any changes and the "Cancel" button to
discard all changes.
Effective use of data element categories greatly simplifies the process of setting up the DHIS2 system, as the data
element categories can be reused to disaggregate many different data elements. Otherwise, each of the data elements
31
Elementos de datos Categorías de elementos de datos
listed above, would need to be created separately. Judicious use of data element categories will greatly simplify the
DHIS2 implementation, and allow for subsequent advanced analysis.
Data element categories are composed of category options. Category options must be defined when a data element
category is created for the first time. Subsequent changes to the data element category, i.e. adding or deleting new
category options, are not allowed once the data element category has been created.
It is critical that the proper categories and category options are defined in the initial definition step, as further changes
to the category and its options will are not possible.
To access the data element category maintenance module, press "Maintenance -> Data Elements and Indicators->Data
Element Category". The following screen will be displayed:
Similar to the other data element maintains modules, data element categories can be filtered by typing the name of the
data element category (or a portion of it) into the "Filter by name" field. To add a new data element category, press
the "Add new" button which will then display the following screen:
Type the name of the new data element category in the "Name" field in the "Details" region. Category options can
be added by typing the name of the category option in the "Category option" region and pressing the "Add category
option" button. Category options can be reordered using the "Move Up" and "Move Down" buttons. Categories
32
Elementos de datos Combinaciones de categorías de elementos
de datos
options can be deleted by selecting the data element category option and pressing the "Delete" button. Once
all data element categories options have been added to the data element category, press the "Add" button to save all
changes or the "Cancel" button to discard any changes.
All data element category options must be added and defined properly in this step. Subsequent alterations to the data
element category (other than reordering of the category options themselves) is not possible.
In this example, there would be two levels of disaggregation, consisting of two separate data element categories, each
consisting of several data element category options. In most HMIS systems, different data elements are disaggregated
according to a common set of categories. By combining these different categories into a data element category
combination and assigning these combinations to data elements, the appropriate disaggregation levels can be applied
efficiently and quickly to a large number of data elements.
To access the data element category combination maintenance module, select "Maintenance->Data element and
indicators->Data element category combinations" from the main DHIS2 menu. As with the other maintains modules,
you can filter the listed category combinations by entering the name (or portion thereof) of the category combination.
Other operations such as "Edit", "Delete" and "Information" should be familiar to the reader.
To add a new category combination, click the "Add new" button. The following dialogue will be displayed.
Type the name of the category combination in the "Name" field, and then select the desired categories from the left
panel. Press the "Move right" button to add the selected categories to the category combination. Press "Move left" to
remove any categories that should not be part of the category combination.
Categories can only be added to a category combination at this step. Categories can be removed from category
combinations later by editing the category combination, however, it is not allowed to add additional categories once
the combination has been created. Ensure that the category combination and its respective categories is final before
you create the category combination and assign it to a data element.
33
Elementos de datos Diccionarios de datos
Provide a name for the data dictionary in the "Name" field and a description of its contents. Data elements and indicators
can be added or removed from the dictionary. Click "Save" if you are creating a new data dictionary or "Add" if you
are editing the contents of an existing data dictionary.
4.1.8. Traducciones
DHIS 2 provides functionality for translations of database content like data elements, data element groups, indicators,
indicator groups, validation rules and more. These elements can be translated to any number of locales. A locale
represents a specific geographical, political, or cultural region.
To add a translation click the Translate icon next to the element you would like to translate. Start by selecting the
desired locale from the Locale select box. In the Translate screen, select your locale and enter values for the avaliable
34
Elementos de datos Traducciones
element properties. The reference property values are shown on the right. These values are the values which have been
entered in the regular add or update user interface for the current object.
Translations can be enabled by selecting the desired locale under Database Language under User General Settings in
the Settings module.
35
Sets de datos y formularios de entrada de Sets de datos
datos
A dataset also has a frequency which controls the data collection frequency, which can be daily, weekly, monthly,
quarterly, six-monthly, or yearly. Both which data elements to include in the dataset and the frequency is set in the
Add/Edit Dataset window, together with a name, short name, and code. In order to use a dataset to collect data for a
specific orgunit you must assign the orgunit to the dataset, and this mechanism controls which orgunits that can use
which datasets.
Datasets also are assigned to specific organisation units which will be allowed to enter data for all data elements in a
given dataset. You can assign orgunits to a dataset in the Dataset Management (list of available datasets are shown)
by clicking on the blue folder icon, the first icon under Operations, corresponding to the dataset you would like to
modify. Alternatively you can manage orgunit assignments for all datasets together in the Dataset Assignment Editor
(available in the right-side menu for Datasets).
Your dataset will then be ready to be used in Services->Data Entry for the orgunits that you have assigned and for
periods according to your selected frequency (period type).
element" list by selecting them individually. and pressing the button. Indicators can also be added to data sets
and will be available to be placed in custom data entry forms when they need to be shown along with data elements
on the same data entry form. Press "Save" to add the new dataset.
37
Sets de datos y formularios de entrada de Formularios de entrada de datos
datos
•
Assign organisation units to datasets: This function will allow you to assign individual organisational units to a
dataset. Only organisational units which have been assigned to a dataset will be allowed to enter data into the dataset.
•
Edit dataset: This will allow you to edit existing datasets, for instance when you need to add or remove data
elements and indicators to a given dataset.
•
Translate: Allows you to translate the name of a dataset to a different language.
•
Create or edit a custom data entry form. Refer to ??? for detailed information of how to use this function.
•
Edit compulsory data elements: This dialog will allow you to add or remove data elements which will be
marked as compulsory during data entry.
•
Delete: Completely removes a dataset from the system.
Aviso
Any dataset which is deleted from the system, is irrevocably lost. All data entry forms, and sectrion forms
which may have been developed will also be removed. Ensure that you have made a backup of your database
before deleting any dataset in case you need to restore it at some point in time.
•
Information: Display some informative information about the dataset, including the number of data elements,
the frequency, and which data entry form has been assigned to the dataset.
If you use more than one dataelement category combination you will get multiple columns in the data entry form with
different column headings for the options. In addition to the default list-based data entry form there are two more
alternatives, the section-based form and the custom form.
38
Sets de datos y formularios de entrada de Adding a new section form
datos
2. Open the DataSet Section window (from right side menu under Datasets) and add your sections one by one. To
add a new section to a section form, first choose the dataset from the "Select dataset" combo box. Then choose the
specific category combo and press "Add new". You can now add data elements from the "Available data element"
list on the left to the "Selected data elements" list on the right. Data elements can be sorted within the section with
the use of the "Move up" and "Move down" buttons. Be sure to press "Save" once you have finished.
Nota
You can only use one data element category combination per section.
3. You may need to control how the data element sections are displayed on the final form. In Dataset Section
management, select the dataset from the "Dataset" drop-down box, then leave [All] in the "Select Category Combo"
drop-down. Click on "Sort section" to sort the order of appearance of your sections in the data entry form.
4. In Data Entry you can now start using the Section form (should appear automatically when sections are available
for the selected dataset). Datasets which have section forms will automatically display the section form.
5.
Certain data elements may need to be disabled for data entry. Clicking on the "Section grey field management"
icon will allow you to disable specific data element category options as seen below. Pressing the "Disable" button
will prevent data from being entered into this specific data element/category option during data entry. Be sure to
press "Done" to save your changes.
A sample section form is displayed in the next figure. Notice how each data element category has been separated into
a separate section, and a data entry table has been automatically generated by the system. Use of section forms in
combination with data element categories can drastically reduce the amount of time which is required to create data
entry forms for datasets.
39
Sets de datos y formularios de entrada de Custom Forms
datos
One of the big advantages of custom forms, is that they can be created to mimic existing paper aggregation forms. This
makes data entry much easier for users, and should reduce the number of data elements which are incorrectly entered,
as they are more easily identifiable when entering data from a paper form.
Once a custom form has been added to a dataset it will be available in data entry and used automatically.
Nota
Custom forms are preferentially displayed over section forms. If a dataset has both a section form and a custom
form, the custom form will be displayed during data entry. Users will not be able to select which method they
wish to input data, so be sure that your custom form contains all data elements which may be required.
To add a custom form design to a dataset then first locate your dataset in the Dataset Management window and click
on the Design data entry form icon under Operations (the fifth icon), see the mouse-over text to be sure.
40
Sets de datos y formularios de entrada de Data set assignment editor
datos
First provide a Name for the form. There are a few important buttons in the Editor that you must pay special attention
to. The blue monitor icon is the full screen mode on/off button, which can be very useful. The there is a Source button
that shows the HTML code for your form.
If you already have the HTML for your form then you should start by pasting it in here. Click on Source again to go
back to preview/non-HTML mode. Then there is an icon in the top right corner with a + sign on it, this will open a list
of available data elements to add to your form, the Data Element Selector window.
All the input fields need to have a link to a data element or indicator. To add new data elements to the form, double-
click them from the data element/indicator box as shown below. You can also select a data element/indicator and press
the "+Insert" button. You can switch between either data elements or indicators by pressing the respective buttons.
You can to intermediary saving by clicking on the Save button, and this will not close the window. It is recommended
to save often to ensure you do not loose your work.
When you are done or want to test your form in data entry click on <Save and close>.
From the grid you can now assign or unassign data sets simply by clicking on of the corresponding icons in the grid.
If you want to assign or unassign an organisation unit to all data sets you can check or uncheck the checkbox next to
the organisation unit. Your changes will automatically be saved.
41
User management Creating new users and roles
User names already registered will appear as a list as seen in the screen shot below.
You can search for specific user names in the user list by entering the name in the ‘filter by user name’ field as shown
above.
43
User management User role management
The following screen will open and here in the first text box you need to give Name of the Role such as Super User,
Admin User, etc. The second text box called ‘Description’ gives more information about the type of User Role that is
being created for e.g. State Admin User, District Data Entry.
Next you will specify the particular data set(s) that are to be made available to the particular role. You will also need to
specify the type of ‘authority’ to be given to the particular user. For each of the three options namely Datasets, Reports
and Authorities user can select multiple options from the scroll down menu provided against each field. A user can
choose multiple options either by moving them one-by-one.
In order for particular users to be able to enter data, you must add them to both a dataset as well as an organisational
unit level. You can also select multiple datasets individually by pressing the Ctrl key on the keyboard and clicking
on individual datasets.
44
User management User management
Finally when you have entered the required fields click on Save which is located on the lower part of the displayed
screen. The desired user role and related authorisation will be saved to the database, and can then be assigned to a
particular user.
• Users must be assigned to at least one organisational unit. Users are able to have access to all children of the
organisational unit(s) which have been assigned to them. For instance, if a user has been assigned to "District X"
45
User management User group management
which has several facilities contained in the district, the user would have access to the district's data, as well as all
of the facilities contained within the district.
In order for users to be able to enter data for specific organisational units, they must be assigned these units. If a user
is responsible for entering data for all facilities for a given district, they should typically be assigned the district,
and all of the facilities contained within the district.
46
Panel de control (Dashboard) Poniendo en marcha el panel de control
En esta captura de pantalla, el panel de control ha sido ya publicado con varios reportes y vistas de mapas. Ahora
basta pinchar en uno de los enlaces azules para ir directamente a la vista de reporte o de mapa. Pinchando en una de
las gráficas se mostrará el diagrama ampliado, que podemos guardar como una imagen, para luego incluirlo en un
reporte u otro documento.
Podemos redefinir la estructura del panel de control vaciando cada una de las ventanas pinchando en el enlace
"Limpiar". Si pinchamos de nuevo el botón "Insertar", podremos seleccionar una nueva gráfica para que aparezca en
la ventana.
Todos los reportes, documentos, tablas de reportes y gráficas se pueden añadir al listado de opciones disponibles
pinchando en el icono "Añadir al panel de control" que encontraremos en los módulos respectivos.
Recomendamos revisar las secciones correspondientes de este manual para más detalle. Una vez hayamos añadido el
objeto al listado, podemos "Insertar" el objeto en el panel de control..
47
Panel de control (Dashboard) Mensajes y retroalimentación
Nota
El panel de control está configurado particularmente para cada usuario.
Los mensajes de retroalimentación se envían a un grupo particular de usuarios, y pueden ser enviados por todos aquellos
usuarios que tengan acceso al módulo de panel de control. Para permitir la recepción de mensajes de retroalimentación
enviados desde el panel de control, debemos activar la opción de configuración "Destinatario" de retroalimentación",
que se encuentra en el cuadro de diálogo de Mantenimiento -> Opciones de Sistema. Debemos asegurarnos de definir un
grupo de usuarios (por ejemplo "Destinatarios de retroalimentación") con todos los usuarios que deberán recibir dichos
mensajes. Recomendamos revisar la sección de este manual sobre "Grupos de Usuarios" para más información sobre
cómo realizar esto. Una vez se ha definido el grupo de usuarios, cada vez que se envíe un mensaje de retroalimentación,
aparecerá como un mensaje en la cola de mensajes de DHIS2 de los destinatarios. Tengamos en cuenta que los mensajes
no se enviarán a las direcciones de email de los usuarios, sino que solo aparecerán en la aplicación DHIS2.
Es posible enviar mensajes a grupos específicos de usuarios asociados a unidades organizativas particulares. Para
escribir un nuevo mensaje a estos usuarios, pinchamos en "Mensajes" en la pantalla del panel de control y presionamos
el botón "Escribir mensaje". Entonces seleccionaremos una unidad organizativa (o un grupo de unidades organizativas)
en el árbol de unidades organizativas "Destinatarios". Introduciremos un asunto y texto del mensaje, y pincharemos
en el botón "Enviar". Para cancelar el envío, podemos descartar el mensaje pinchando en el botón "Descartar" como
se muestra en la captura de pantalla siguiente.
48
Panel de control (Dashboard) Mensajes y retroalimentación
Podemos leer los mensajes que nos han enviado pinchando en "Mensajes" en el panel de control. Los mensajes se
mostrarán en una lista. Pincharemos en el mensaje deseado para leer todos los mensajes de esa conversación particular.
49
Entrada de datos Objetivos
8.1. Objetivos
Después de revisar este capítulo habremos comprendido:
El módulo de entrada de datos as donde podemos insertar datos manualmente en la base de datos DHIS 2. Los datos
son registrados para una determinada unidad organizativa, un periodo, y un set de elementos de datos (set de datos) al
mismo tiempo. Un set de datos corresponde normalmente a una herramienta de recogida de datos en formato papel,
es decir, a un formulario tradicional.
1. Busca la unidad organizativa donde quieres registrar los datos en el menú árbol que aparece en el lado izquierdo.
Pliega y despliega la jerarquía de unidades pinchando en los símbolos -/+. Una forma sencilla de encontrar una
unidad organizativa es utilizar el cuadro de búsqueda situado directamente encima del árbol (identificado con un
síbmolo verde), donde tendrás que escribir el nombre completo, sí :S, el nombre completo de la unidad que buscas.
2. Selecciona un set de datos del listado desplegable que está disponible para la unidad organizativa que has
seleccionado.
3. Selecciona un periodo para registrar estos datos. Los periodos disponibles están configurados en los tipos de periodo
de set de datos (es decir, la frecuencia de reporte: semanal, mensual, etc). Puedes saltar un año atrás o adelante
utilizando las flechas situadas encima de periodo.
Dependiendo de cómo se haya implementado el formulario de entrada de datos, veremos tres tipos diferentes de
formularios: Formulario por Defecto, Formulario de Sección o Formulario Personalizado. Si hay un formulario
personalizado, se mostrará seguido de un formulario de sección y finalmente de un formulario por defecto.
51
Entrada de datos Introduciendo datos
Validación de entrada: Cuando escribes un valor incorrecto, por ejemplo una letra en un campo que solo acepta
valores numéricos, se abrirá un mensaje pop-up que explica el problema y el campo que intentabas rellenar se coloreará
de amarillo (y permanecerá sin guardar) hasta que hayas corregido este valor. Si has definido un rango mínimo y
máximo para un campo (una combinación de elemento de datos y unidad organizativa) se abrirá un mensaje pop-up
que te informará cuando el valor está fuera de rango, y también ahora el valor quedará sin guardar hasta que hayas
introducido un valor correcto (o hayas actualizado el rando e introducido nuevamente el valor).
Campos deshabilitados: Cuando un campo está deshabilitado (aparece en color gris) significa que el campo no debería
rellenarse. Así, el cursor saltará automáticamente al siguiente campo abierto.
Historial de datos: Si pinchamos dos veces en cualquier campo de entrada del formulario se abrirá una ventala de
historial de datos que muestra en un diagrama de barras los últimos 12 valores registrados para dicho campo (una
combinación de unidad organizativa, elemento de datos y opción de categoría). Esta ventana muestra también el rango
máximo y mínimo y permite ajustar dicho rango para la combinación específica de unidad organizativa y elemento
de datos.
52
Entrada de datos Validando los datos en el formulario
Seguimiento: En la ventana de historial de datos hay también una función para etiquetar o marcar un valor. Por ejemplo,
imaginemos que un valor sospechoso que necesita ser investigado a fondo puede meterse en el sistema, pero marcado
para Seguimiento. En el módulo de Calidad de Datos podremos lanzar un análisis de seguimiento y revisar todos los
valores marcados para seguimiento, así como editar dichos valores si posteriormente se demuestra que son incorrectos.
Cuando hayamos corregido los valores erróneos y hayamos terminado el formulario, es recomendable pinchar en el
botón "Completado" en la parte inferior para registrar que el formulario ha sido completado. Esta información es
utilizada cuando se generan reportes de grado de completitud por distrito, departamento o a nivel nacional.
53
Entrada de datos Entrada de datos en desconexión (offline)
Cuando recuperamos la conexión con el servidor a través de Internet, se muestra un mensaje en la parte superior de
la pantalla de entrada de datos.
Cuando la conexión a Internet falla por alguna razón durante el proceso de entrada de datos, la aplicación DHIS 2 lo
detecta y nos avisará de que los datos serán guardados localmente.
La entrada de datos puede continuar de forma normal. Una vez que hayas introducido todos los datos necesarios, y
la aplicación detecta que el servidor está online, serás informado de que hay datos que deben ser sincronizados con
el servidor.
Cuando los datos se han sincronizado con éxito en el servidor, recibirás un mensaje de confirmación de que los datos
han sido cargados con éxito en el servidor.
54
Utilizando la funcionalidad de Calidad de Un vistazo a los chequeos de calidad de
Datos datos
Las reglas de validación se basan en una expresión que define la relación entre varios elementos de datos. Esta expresión
tiene una parte izquierda y una parte derecha, y también un operador en medio que define si la primera debe ser
menor que, igual que o mayor que la segunda. La expresión formula una condición que garantiza el cumplimiento de
determinados criterios lógicos. Por ejemplo, una regla de validación puede estipular que el número total de vacunas
recibidas por niños y niñas debe ser menor o igual al número total de niños y niña.
La función de análisis de reglas de validación prueba las reglas diseñadas para los datos registrados en el sistema. Los
fallos de validación son repotados en aquellos casos en los que la condición definida mediante la expresión de la regla
de validación no se cumple, esto es, cuando la condición es falsa.
55
Utilizando la funcionalidad de Calidad de Lanzando un análisis de reglas de validación
Datos
En primer lugar, introducimos una fecha de inicio y una fecha de fin para filtrar los datos que serán incluidos en el
análisis. Podemos utilizar el widget de fechas para seleccionar las fechas.
En segundo lugar, escogemos incluir o bien todas las reglas de validación o bien las reglas de validación de un grupo
concreto.
En tercer lugar, escogemos incluir o bien la unidad organizativa seleccionada únicamente o bien la unidad organizativa
seleccionada con todos sus hijos (unidades que cuelgan de ella).
Resultados de validación:
El proceso de análisis puede demorar un tiempo dependiendo de la cantidad de datos que está siendo analizada. Si no
hay fallos de validación veremos un mensaje que indique La validación finalizó con éxito..
Si hubo fallos en la validación, aparecerán mostrados en un listado. Para cada fallo se muestra la unidad organizativa,
el periodo, la descripción y valor del lado izquierdo de la expresión de validación, el operador, y la descripción y valor
del lado derecho de la expresión.
Pulsando el icono de detalle podemos obtener más información sobre el fallo de validación. Al pulsarlo se abrirá una
pantalla emergente que proporcione información sobre los elementos de datos incluidos en las reglas de validación y
sus correspondientes valores. Esta información podremos utilizarla para corregir datos erróneos.
También podremos exportar los fallos de validación a un documento PDF, pinchando en el botón de Descargar PDF,
o a un documento de Microsoft Excel, pinchando el botón de Descargar MS Excel.
56
Utilizando la funcionalidad de Calidad de Análisis de outliers (valores atípicos)
Datos
El análisis de outliers basado en la desviación típica ofrece un mecanismo para conocer qué valores están
numéricamente distantes del resto de los datos. Los outliers pueden aparecer por casualidad, pero a menudo representan
un error de medida o una distribución fuertemente prolongada (derivando en números grandes). En el primer caso
generalmente descartaremos estos outliers mientras en el segundo caso deberemos ser cautos al utilizar herramientas
estadísticas o interpretaciones que asuman una distribución normal. El análisis está basado en una distrubución normal
estándar.
1. Seleccionamos las fechas de inicio y fin (de y a) de los datos que serán incluidos en el análisis.
3. Seleccionamos todos o algunos elementos de datos del set de datos haciendo doble click o bien marcándolos y
después pinchando en los botones de añadir/quitar.
4. Seleccionamos la unidad organizativa padre que vamos a utilizar. Al hacer esto se incluirán automáticamente todas
las unidades hijas (las que se encuentran por debajo de ésta en la jerarquía).
5. Seleccionamos el número de desviaciones típicas. Así fijamos el número de desviaciones típicas que los datos
pueden alejarse desde la media (o valor promedio), antes de ser marcados como outliers.
57
Utilizando la funcionalidad de Calidad de Análisis de outliers en rangos Max-Min
Datos
Los posibles valores outliers que se han descubierto en el análisis se presentan en un listado una vez que el proceso
de análisis ha terminado. Para cada outlier se muestra el elemento de dato, la unidad organizativa, el periodo, el valor
mínimo, el valor actual y el valor máximo. Los valores máximo y mínimo indican los valores límite derivados del
número de desviaciones estándar que hemos seleccionado previamente para el análisis.
Podremos modidificar cada outlier directamente en la página de resultados de análisis. El valor puede modificarse
pinchando dentro del campo correspondiente en la columna de valores, introduciendo un valor y saliendo a continuación
de ese campo de datos (por ejemplo pulsando la tecla Tab) o pinchando simplemente fuera del campo. El sistema
lanzará una alerta si, después de modificarlo, el valor sigue fuera de los valores máximo y mínimo, aunque el valor
quedará guardado en cualquier caso. Si el valor que queda introducido está fuera de rango, veremos un fondo rojo en
el campo de datos. Si el valor está dentro el fondo quedará verde.
Pinchando en el icono de estrella, podemos también marcar cada outlier para posterior seguimiento.
58
Utilizando la funcionalidad de Calidad de Análisis de Huecos
Datos
59
Configurando la funcionalidad de Calidad de Objetivos de aprendizaje
Datos
61
Configurando la funcionalidad de Calidad de Cómo fijar manualmente el rango de valores
Datos mínimo y máximo
To add a validation rule, click the add new button. First, provide a descriptive name for the validation rule. The name
must be unique among the validation rules. Second, provide a description for the validation rule. Third, select an
operator. The operator options are equal, not equal, greater than, greater than or equal, less than, less than or equal to.
Then define the left side and right side of the validation rule expression. First, provde a description for the expression.
Second, build the expression with the expression builder. The expression is mathematical and contain data elements
as well as integers and mathematical operators. Data elements can be included by double-clicking one in the available
data elements list to the righ. Alternatively one can select a data element and click the insert button. Mathematical
operators can be included by clicking the corresponding button under the expression builder area. Save the expression
by clicking save, then save the validation rule by clicking save.
To edit a validation rule, click the editicon next to the relevant validation rule in the list. Then follow the same
producedures as above.
To delete a validation rule, click the deleteicon next to the relevant validation rule in the list.
To view validation rule details, click the view detailsicon next to the relevant validation rule in the list.
62
Indicadores Mantenimiento de indicadores
En el menú lateral izquierdo o más abajo en la zona central podemos acceder a las diversas secciones de Indicadores;
Indicador, Tipo de indicador, Grupo de indicadores, Editor de grupos de indicadores, y Set de grupos de indicadores.
11.1.1. Indicadores
Indicators are composed of multiple data elements, and typically consist of a numerator and denominator. Indicators
are never entered in DHIS2, but are derived from combinations of data elements and factors. Indicators are used to
calculate coverage rates, incidence and other values are are a result of data element values that have been entered into
the system.
To access the Indicator maintains page, press Maintenance -> Data Element and Indicators -> Indicator from the main
DHIS2 menu. Similar to data elements, you can add, delete, modify and view extra information about the indicators
in the system.
63
Indicadores Indicadores
Indicators can be filtered by entering the name or a part of the indicator name in the "Filter by name" field. Similar to
data elements, indicators can be added by pressing the "Add new" button. Other operations available from this menu
are as follows.
•
Existing indicators can be edited.
•
Translate an existing indicator.
•
Delete an existing indicator.
•
Get detailed information about this indicator.
To add a new indicator, click the "Add new" button. The following screen is displayed.
Each of the fields marked with an asterisk are compulsory. A description of each field is provided below.
64
Indicadores Indicadores
• Name: The full name of the indicator, such as "Incidence of confirmed malaria cases per 1000 population"
• Short name: An abbreviated name of the indicator such as "Inc conf. malaria per 1000 pop". The short name must
be less than or equal to 25 characters, including spaces.
• Alternative name: An additional field for a possible alternative name of the indicator.
• Code: In many countries, indicators are often assigned a particular code. This code can be entered here.
• Description: A brief, informative description of the indicator and how it is calculated can be entered here.
• Annualized: Determines whether or not an annualization factor is applied during the calculation of the indicator.
Typically, annualized indicator's numerator are multiplied by a factor of 12, and the denominator is for instance a
yearly population figure. This allows for monthly coverage values to be calculated with yearly population figures.
• Type: This field will determine a factor that will automatically be applied during the calculation of the indicator.
Possible choices are determined by the Indicator Types (described below). For instance, a "Percent" indicator will
automatically be multiplied by a factor of 100 when exported to the data mart, so that it will display as a percentage.
• URL: Can be used as a link to an indicator registry, where a full metadata description of the indicator can be made
available.
To define the numerator and denominator, simply press the respective button, and the following dialogue will be
displayed.
Essentially, an indicator is a formula that can be composed of multiple data elements, constant factors, and mathematical
operators. In order to define a new indicator proceed with the following steps.
1. Enter at least the required fields (Name and short name) from the indicator maintenance screen.
2. Next, press "Edit numerator" from the main indicator maintenance screen. This will provide a dialog where you can
define the actual formula of the indicator's numerator..
3. A description of the numerator/denominator must be provided in the "Description field". This should provide a
clear description of
4. Define the formula of the indicator by selecting the data elements that should compose the numerator from the "Data
elements" field. Simply select the data element, and double click it. It will now appear in the formula. You formula
must be mathematically valid, including the proper use of parentheses when necessary. You can double click on
each of the mathematical operator buttons below the indicator formula definition to add them to your formula.
65
Indicadores Tipos de indicadores
5. Click the Save button to save all changes to the numerator. Click cancel to discard any changes that you have made.
6. Follow the same procedure in order to define the denominator.
The indicator type maintenance panel has all of the same functions (Add new, Edit, Translate, Delete, and Information)
as the Indicator maintenance section.
There are only two fields that need to be filled-in to create an indicator type, Name and Factor, as seen below. Name
refers to the Indicator type (e.g. Per cent, Per thousand, Per ten thousand, etc). The factor is the numeric factor that
will be applied during the calculation of the indicator.
Nota
As of version 2.4 of DHIS2, the "Calculated data element" object has been deprecated. Instead, a calculated
data element can be created by creating an indicator type with a factor of "1" and by setting the "Number"
option to "Yes". The effect of setting the "Number" option to "Yes" will be that the indicator will effectively
not have a denominator. You will therefore only be able to define a numerator, which will serve as the formula
of the calculated data element.
66
Indicadores Sets de grupos de indicadores
Supply a name for the indicator group set, and then move the desired members from the "Available Indicator Groups"
to the "Group members". Click "Add" to save your changes and "Cancel" to discard any changes.
67
Utilizando la funcionalidad de Reporte Funcionalidad de reporte en DHIS 2
Reportes estándar: Los reportes estándar se construyen con tablas de reportes, pero su diseño avanzado permite
modificar su apariencia y estilo. Estos reportes pueden combinar múltiples tablas y gráficas en el mismo informe, y
se pueden visibilizar como reportes de 'un-click' que son muy fáciles de usar. Podemos descargar estos reportes en
formato PDF, por lo que son ideales para imprimir así como para compartir y copiar offline.
Reportes de Set de datos: Los reportes de set de datos son simplemente una forma amigable para ver e imprimir los
formularios de entrada de datos con datos en bruto o datos agregados (por lugar o tiempo). El diseño utilizado en la
entrada de datos es el mismo que se utiliza en estos reportes de set de datos. Aunque esto funcionará solo para los sets
de datos que han pre-establecido un formulario de entrada de datos personalizado.
Panel de control (Dashboard): Es la manera más rápida de ver los datos. El panel de control puede mostrar hasta
cuatro gráficas actualizadas así como enlaces a los reportes favoritos, tablas de reportes, y vistas de mapas. Cada usuario
puede configurar su propio panel personal de control.
Visualizador de datos: Permite formas flexibles de visualizar los datos como gráficas y tablas de datos. Es posible
incluir aquí tantos indicadores y elementos de datos como deseemos. También podemos elegir entre muchos tipos de
gráficas, tales como gráficos de barras, barras apiladas, lineales y diagramas de tarta. Podremos guardar las gráficas
a su vez para cargarlas fácilmente en sesiones posteriores, y también podemos incluirlas en nuestro panel personal de
control. Las gráficas se pueden descargar como imágenes o como PDF en nuestro computador local.
Tablas de reportes: Son una forma de mostrar los datos en tablas con múliples opciones de configuración, ya sea
utilizando datos en bruto, agregados o indicadores. Estas tablas son utilizadas bien como fuente de datos para otros
reportes más avanzados, para exportar la información a otros sistemas externos, o como un informe bruto. Se pueden
exportar a diversos formatos: PDF, MS Excel, CSV y Jasper. Las tablas representan una manera muy dinámica, flexible
y rápida de revisar los datos. Las tablas de reportes pueden configurarse con parámetros específicos para reutilizarlas
en otros periodos o lugares.
Reportes de distribución de unidades organizativas: Estos reportes se generan a partir del set grupo de unidades
organizativas (orgunit) y permiten ver qué tipos (y qué cantidad) de establecimientos de salud están ubicados en un área
determinada (en cualquier nivel de la jerarquía). Estos reportes se generan automáticamente y muestran la información
tanto en tablas como gráficas, que pueden descargarse en PDF, MS Excel y CSV.
Resumen de la tasa de reportes: Estos reportes ofrecen una bonita vista de cuántos establecimientos han registrado
sus datos para un periodo y set de datos determinados. Aquí podemos obtener la cuenta y el porcentaje de la tasa de
reporte para uno o para todos los sets de datos.
Tablas Excel dinámicas: Las tablas dinámicas Excel son una forma potente de analizar nuestros datos y DHIS 2
enlaza directamente con las tablas dinámicas, de manera que todos los datos quedan disponibles y actualizados en el
fichero Excel. Esto puede ser una herramienta muy útil a usuarios que prefieren trabajar con los datos offline. Para
actualizar las tablas dinámicas locales necesitarás la herramienta myDatamart que conecta con el servidor online y
descarga los datos restantes. Esta actualización normalmente se realiza una vez al mes cuando están disponibles los
nuevos datos, pero no requiere una conexión permanente a Internet como sucede con otras herramientas de reporte (si
estás conectado generalmente a un servidor DHIS 2 online).
Tablas Web dinámicas: La herramienta incluida en DHIS 2 de tabla dinámica es una herramienta web sencilla para
mostrar los datos de indicadores por unidad organizativa y por periodo en una vista típica de tabla dinámica. Permite
algunas manipulaciones básicas de dinamismo de las tablas. Es una manera rápida y fácil de mirar muchos valores de
69
Utilizando la funcionalidad de Reporte Utilizando reportes estándar
indicadores al mismo tiempo (por orgunit y/o periodo), pero que no tiene las mismas funcionalidades que las tablas
Excel dinámicas offline.
Sistema de Información Geográfica (SIG): Permite presentar y analizar los datos utilizando mapas temáticos. Es
posible ver tanto los elementos de datos como los indicadores y, dado que disponemos de las coordenadas de todas
nuestras orgunits, podemos explorar la jerarquía y ver los mapas para todos los niveles desde polígonos de país a
puntos de establecimientos de salud. Para más detalles revisa el capítulo específico sobre SIG. Toda la información
de mapas está cargada en DHIS 2 y tan solo necesitas registrar las coordenadas de las unidades organizativas y los
mapas estarán disponibles inmediatamente.
Podemos lanzar o leer un reporte pinchando en la flecha verde y blanca que aparece junto al reporte que queremos.
Entonces veremos una ventana de parámetros de reporte que tenemos que rellenar con los valores correspondientes
de orgunit y/o mes de reporte, dependiendo de qué se ha definido para la tabla de reporte subyacente. Cuando hayas
completado los parámetros, pincha en "Obtener Reporte". El reporte aparecerá en tu navegador o como un fichero PDF
para descarga, dependiendo de las opciones configuradas en tu navegador para los documentos PDF. Podemos guardar
el documento y almacenarlo localmente en la computadora para utilizarlo más tarde.
Parámetros de los reportes: La mayoría de las tablas de reportes tienen parámetros configurables, es decir, podemos
filtrar qué orgunits y/o periodos queremos en el reporte. Esto hace los reportes fácilmente reutilizables. Cuando
70
Utilizando la funcionalidad de Reporte Utilizando tablas de reportes
lanzamos una tabla de reporte aparece una ventana de parámetros que nos solicita introducir valores para los parámetros
seleccionados. Los parámetros posibles son "Mes de Reporte" y "Unidad Organizativa", y es posible que uno de ellos
o ambos aparezcan en la ventana. Después de seleccionar los valores hemos de pinchar en el botón "Obtener Reporte".
Exportar/Ver opciones: Cuando una tabla de reporte está preparado, se muestra en una vista HTML. La tabla de
reporte puede exportarse en PDF (para imprimir y guardar cómodamente), en Excel, CSV, y también en el formato
estándar de reporte (Jasper) mostrando un cuadro y una gráfica más bonicos, o como un archivo de diseño Jasper de
modo que se puedan realizar modificaciones futuras en el diseño del reporte antes de cargarlo en la aplicación DHIS
como un reporte estándar (ver la sección Crear reportes estándar).
71
Utilizando la funcionalidad de Reporte Utilizando reportes de set de datos
Podemos acceder a los reportes de sets de datos en el Menú Reportes, en el desplegable de Servicios. Entonces aparecerá
una ventana de Criterios de búsqueda donde deberemos rellenar los detalles del reporte:
Periodo de Reporte: Podemos introducir periodos agregados o en bruto, es decir, podemos solicitar un reporte
trimestral o anual incluso si ese set de datos se recoge mensualmente. El tipo de periodo de un set de datos (la frecuencia
de recogida de datos) se define en el menú de Mantenimiento de set de datos. Para ello hay que seleccionar primero el
tipo de periodo (mensual, trimestral, anual, etc) en el desplegable que hay junto a los botones Anterior y Siguiente, y
entonces seleccionamos uno de los periodos disponibles en la lista desplegada abajo. Utilizamos los botones Anterior
y Siguiente para movernos al año anterior o posterior.
Utilizar los datos solo para la unidad seleccionada: Podemos usar esta opción si queremos obtener un reporte para
una Unidad Organizativa con hijos (otras unidades por debajo en la jerarquía), pero solo queremos mostrar ahora los
datos recogidos directamente en este unidad y no todos los datos recogidos por todas las subunidades. Si queremos
generar un reporte agregado típico para una Unidad Organizativa no utilizaremos esta opción.
Reportando Unidad Organizativa: Aquí podemos seleccionar la Unidad Organizativa para la que queremos el
reporte. Esto puede ser en cualquier nivel de la jerarquía porque los datos se agregarán en este nivel automáticamente
(salvo si hemos seleccionado la opción anterior).
Una vez hemos terminado de rellenar los criterios de reporte pinchamos en "Generar". El reporte aparecerá en una
vista HTML con formato listo para impresión. Utiliza los botones Imprimir y Guardar de tu navegador para imprimir
o guardar (como HTML) el reporte.
Para crear un recurso nuevo pincharemos en el botón "Añadir nuevo". Introducimos un nombre para el recurso y
elegimos entre cargar un archivo o una URL externa. Si elegimos la carga de archivo local, deberemos pinchar en
"Elegir archivo" y seleccionar el documento de nuestra computadora. Si elegimos URL deberemos introducir el enlace
al recurso de Internet. Para finalizar pinchamos en "Guardar".
72
Utilizando la funcionalidad de Reporte Utilizando el panel de control
Personalizar las áreas de acceso directo: Cada una de estas áreas podrá contener una lista de objetos entre los que se
encuentren: Reportes (estándar), Documentos, exportaciones de Datamart, Tablas de reportes, vistas de mapas, RSS
de Salud. Si queremos añadir un tipo de objeto al área de acceso directo pincharemos en el enlace de Insertar ubicado
encima del área. Para publicar el listado necesitaremos añadir los objetos uno por uno desde los menús de Servicios-
>Reportes. De las listas de reportes, tablas de reportes, gráficas, etc. podemos añadir un objeto pinchando en el icono
de gráfico circular situado junto al objeto que queremos añadir al panel de control.
Por ejemplo, imaginemos que queremos añadir nuestros reportes estándar favoritos al panel de control. Primero
haremos Insertar Reportes en una de las áreas de acceso directo del panel de control, a continuación vamos a Servicios-
>Reportes y pinchamos en Reportes Estándar. En la lista de reportes estándar podemos ubicar los reportes que queremos
y pinchar en el icono de gráfico circular ubicado junto a cada uno de los reportes que deseamos añadir al panel de
control. Cuando regresemos al panel de control veremos ya los tres reportes listados en el área de acceso directo donde
hemos insertado los reportes.
Utilizaremos el enlace Limpiar situado encima del área de acceso directo para vaciarla. Por su lado, el enlace Cerrar
lo que hace es cerrar el menú de inserción sin añadir ningún objeto nuevo.
Personalizar áreas de gráficas: Hay un total de cuatro áreas de gráficas. Para insertar una gráfica en una de ellas
sencillamente pincharemos en Insertar y después en una de las gráficas de la lista. Utilizaremos el botón Cerrar para
cerrar el listado sin añadir ningún gráfico nuevo, y el botón Limpiar para vaciar un área de gráfica. Estas gráficas se
actualizarán cada vez que abramos el panel de control, mostrarán automáticamente los datos de la unidad organizativa
asociada al usuario, y actualizarán los datos cuando haya nuevos periodos disponibles.
73
Utilizando la funcionalidad de Reporte Utilizando el resumen de las tasas de reporte
3. Seleccionar todos los sets de datos (que reportará sobre todos los sets de datos para la unidad seleccionada) o bien
un solo set de datos (que reportará la integridad de todos los hijos de la unidad seleccionada).
4. Seleccionar un tipo de periodo y un periodo como tal de la lista disponible para cada tipo de periodo. Avanzar
adelante y atrás en los años utilizando los botones de Anterior y Siguiente.
74
Utilizando la funcionalidad de Reporte Utilizando los reportes de distribución de las
unidades organizativas
Los reportes de distribución de las unidades organizativas son informes que muestran cómo están distribuidas las
unidades en base a áreas geográficas y a diversas propiedades como tipo o pertenencia.
El resultado obtenido aquí puede procesarse en un reporte basado en tablas o en una gráfica.
Para lanzar un reporte primero seleccionaremos la unidad organizativa en la parte superior izquierda del árbol
de unidades. El reporte se basará en unidades organizativas ubicadas bajo la unidad seleccionada. Entonces
seleccionaremos el set de grupos de unidades organizativas que deseamos usar, normalmente será Tipo, Pertenencia,
Urbano/Rural, aunque también podemos definir este tipo de sets desde nuestro propio usuario. A continuación
pincharemos en Obtener Reporte para obtener una representación en tablas, u Obtener Gráfica para ver el mismo
resultado graficado.
75
Utilizando la funcionalidad de Reporte Utilizando tablas dinámicas web
Después de cargar una tabla dinámica veremos que los indicadores (o elementos de datos, según corresponda) aparecen
en la parte superior como columnas, mientras que los periodos y las unidades organizativas se combinan en filas. Si
queremos pivotar la tabla pinchamos en el botón "Pivotar" y seleccionamos las nuevas dimensiones. Estas dimensiones
se mostrarán como columnas en la tabla al momento de pinchar el botón "Pivotar".
En la tabla dinámica podemos también pinchar en cualquier celda y obtendremos un menú desde el cual tenemos
la opción de visualizar el indicador, la unidad organizativa y el periodo relevantes en las diferentes variantes de
graficación.
Para guardar los datos de la tabla dinámica en nuestra computadora local pincharemos en el botón de "Descargar
Excel", que contendrá un documento de hoja de cálculo con una página correspondiente a cada periodo.
76
Utilizando la funcionalidad de Reporte Utilizando la gestión con datamart
La pantalla de gestión de datamart permite seleccionar tipos de periodo, fecha de inicio y fecha de fin, que controlarán
qué periodos se incluyen en el proceso del datamart. Por defecto se incluyen todos los elementos de datos, indicadores
y unidades organizativas.
El proceso de datamart puede demorar un tiempo considerable y utiliza de forma extensiva los recursos del servidor
DHIS2, de modo que es recomendable iniciar este tipo de procesos en un momento en que sea viable en entornos de
producción. Los procesos de datamart se pueden planificar como tareas habituales en el módulo de administración
de datos.
77
Setting up report functionality Data sources for reporting
[Link]. Terminology
• Raw data refers to data that is registered into the DHIS 2 either through data entry or data import, and has not been
manipulated by the DHIS aggregation process. All these data are stored in the table (or Java object if you prefer)
called DataValue.
• Aggregated data refers to data that has been aggregated by the DHIS 2, meaning it is no longer raw data, but some
kind of aggregate of the raw data.
• Indicator values can also be understood as aggregated data, but these are special in the way that they are calculated
based on user defined formulas (factor * numerator/denominator). Indicator values are therefore processed data and
not raw data, and are located in the aggregatedindicatorvalue table/object. Indicators are calculated at any level of
the organisational hierarchy and these calculations are then based on the aggregated data values available at each
level. A level attribute in the aggregateddatavalue table refers to the organisational level of the orgunit the value
has been calculated for.
• Period and Period type are used to specify the time dimension of the raw or aggregated values, and data can be
aggregated from one period type to another, e.g from monthly to quarterly, or daily to monthly. Each data value has
one period and that period has one period type. E.g data values for the periods Jan, Feb, and Mar 2009, all of the
monthly period type can be aggregated together to an aggregated data value with the period Q1 2009 and period
type Quarterly.
Data (raw) can be registered at any organisational level, e.g. at at national hospital at level 2, a health facility at level
5, or at a bigger PHC at level 4. This varies form country to country, but DHIS is flexible in allowing data entry or data
import to take place at any level. This means that orgunits that themselves have children can register data, sometimes
the same data elements as their children units. The basic rule of aggregation in DHIS 2 is that all raw data is aggregated
together, meaning data registered at a facility on level 5 is added to the data registered for a PHC at level 4.
It is up to the user/system administrator/designer to make sure that no duplication of data entry is taking place and that
e.g. data entered at level 4 are not about the same services/visits that are reported by orgunit children at level 5. NOTE
that in some cases you want to have duplication of data in the system, but in a controlled manner. E.g. when you have
two different sources of data for population estimates, both level 5 catchment population data and another population
data source for level 4 based on census data (because sum of level 5 catchments is not always the same as level 4
census data). Then you can specify using advanced aggregation settings (see further down) that the system should e.g.
not add level 5 population data to the level 4 population data, and that level 3,2,1 population data aggregates are only
based on level 4 data and does not include level 5 data.
How data is aggregated depends on the dimension of aggregation (see further down).
79
Setting up report functionality Types of data and aggregation
Along the orgunit level dimension data is always summed up, simply added together. Note that raw data is never
percentages, and therefore can be summed together. Indicator values that can be percentages are treated differently
(re-calculated at each level, never summed up).
Along the time dimension there are several possibilities, the two most common ways to aggregate are sum and average.
The user can specify for each data element which method to use by setting the aggregation operator (see further down).
Monthly service data are normally summed together over time, e.g. the number of vaccines given in a year is the sum
of the vaccines given for each month of that year. For population, equipment, staff and other kind of what is often
called semi-permanent data the average method is often the one to use, as, e.g. 'number of nurses' working at a facility
in a year would not be the sum of the two numbers reported in the six-monthly staffing report, but rather the average
of the two numbers. More details further down under 'aggregation operators'.
[Link].2. Period
Periods are used to represent the 'when' dimension associated with data values. Data can easily be aggregated from
weeks to months, from months to quarters, and from quarters to years. DHIS 2 uses known rules of how these different
intervals are contained within other intervals (for instance Quarter 1 2010 is known to contain January 2010, February
2010 an March 2010) in order to aggregate data from smaller time intervals, e.g. weeks, into longer time intervals,
e.g. months.
[Link].2. Average
When the average aggregation operator is selected, the unweighted average of all data values within a given aggregation
matrix are calculated.
It is important to understand how DHIS 2 treats null values in the context of the average operator. It is fairly common
for some organisational units not to submit data for certain data elements. In the context of the average operator, the
average results from the number of data elemements that are actually present (therefore NOT NULL) within a given
aggregation matrix. If there are 12 districts within a given province, but only 10 of these have submitted data, the
80
Setting up report functionality Data mart
average aggreate will result from these ten values that are actually present in the database, and will not take into account
the missing values.
Sometimes such an aggregation is not desired, simply because it would mean duplicating data about the same
population. This is the case when you have two different sources of data for two different orgunit levels. E.g. catchment
population for facilities can come from a different source than district populations and therefore the sum of the facility
catchment populations do not match the district population provided by e.g. census data. If this is the case we would
actually want duplicated data in the system so that each level can have as accurate numbers as possible, but then we
do NOT want to aggregate these data sources together.
In the Data Element section you can edit data elements and for each of them specify how aggregation is done for each
level. In the case described above we need to tell the system NOT to include facility data on population in any of the
aggregations above that level, as the level above, in this case the districts have registered their population directly as
raw data. The district population data should then be used at all levels above and including the district level, while
facility level should use its own data.
81
Setting up report functionality Resource tables
be aggregated, the start date and end date, and press "Start export". The data mart process will be executed in the
background, and a full report of the export process will be updated regularly so that you can determine the state of
the process. See the section on "Scheduling" in the data administration module for information on how this process
can be triggered to run automatically.
Each data value for a data element has a reference to a category option combo, which is a combination of the
disaggregations for the data value, e.g. (male,<5y) or (In PHU, <1y). These disaggregations are exported as they are
to the data mart, and no aggregation is done on this dimension. See the data elements section for more on data element
categories and the resource tables section for more information on how to do aggregation on these categories.
When you add new data to an existing data mart the new values will be appended to the existing so that the data mart
grows for each new process if new selections (such as new periods) have been made. If any of the selected values are
already in the data mart, then the old will be replaced by the newly generated values.
Importante
It is therefore important to keep in mind that when the aggregation strategy of the system is set to "Batch", the
data for each report table must also be present in the data mart.
To create a report table, you start by making some general choices for the table, the most important of which is the
crosstab dimension. Then, you choose which data elements, indicators, datasets or data element dimensions you want
82
Setting up report functionality General options
to include. Finally you select which organisation units and time periods to use in the report table. Each of these steps
are described in detail below.
You can cross-tab one or more of the following dimensions: data element/indicator, orgunit, and period, which means
that columns will be created based on the values of the dimensions chosen, e.g. if indicators is selected you will get
column names in the table reflecting the names of the selected indicators.
For example, if you cross-tab on indicators and periods, the column headers will say "<indicator title> <period>". The
organisation units will be listed as rows. See screenshot for clarification:
If you cross-tab on indicators and organisation units, the column headers of the table will say "<indicator title>
<organisation unit>". Now the periods will be listed as rows. See screenshot for clarification:
Note that the options made here regarding crosstab dimensions may have consequences for what options are available
when using the report table as a data source later, for example for standard reports.
Sort order
Affects the rightmost column in the table, allows you to choose to sort it low to high or high to low.
Top limit
Top limit allow you to set a maximum number of rows you want to include in the report table.
Include regression
This adds additional columns with regression values that can be included in the report design, e.g. in line charts.
Indicators/Data elements
Here you select the data elements/indicators that you want to include in the report. Use the group filter to more easily
find what you are looking for and double click on the items you want to include, or use the buttons to add/remove
elements. You can have both data elements and indicators in the same report.
Data sets
Here you select the data sets that you want to include in the report. Including a data set will give you data on the
data completeness of the given set, not data on its data elements. Double click on the items you want to include, or
use the buttons.
There are two ways to select both what organisation units to include in a report, and what time periods should be
included: relative, or fixed. Fixed organisation units and/or periods means that you select the units/periods to include
in the report table when you create the report table. Using relative periods, you can select the time and/or units as
parameters when the report table is populated, for example when running a standard report or creating a chart. A
combination is also possible, for example to add some organisation units in the report permanently while letting the
83
Setting up report functionality Selecting report parameters
users choose additional. Report parameters is discussed below. In general, using fixed organisation units and/or time
periods are an unnecessary restriction.
To add fixed organisation units, click "Toggle fixed organisation units". A panel will appear where you can choose
orgunits to always include in the report. If you leave it blank, the users select orgunits when running the report through
the use of report parameters. Use the drop down menu to filter organisation units by level, double click or use the
buttons to add/remove.
Fixed Periods
To add fixed periods, click "Toggle fixed organisation units". A panel will appear where you can choose periods to
always include in the report. If you leave it blank, the users select periods when running the report through the use
of report parameters. Use the drop down menu to choose period type (week, month, etc), the Prev and Next button to
choose year, and double click or use the buttons to add/remove.
Relative periods
Instead of using fixed/static periods like 'Jan-2010' or 'Q1-2010', more generic periods can be used to create reusable
report tables, e.g. for monthly reports the period 'Reporting month' will simply pick the current reporting month selected
by the user when running the report. Note that all relative periods are relative to a "reporting month". The reporting
month is either selected by the users, otherwise the current month is used. Here is a description of the possible relative
periods:
• Reporting month:
Use this for monthly reports. The month selected in the reporting month parameter will be used in the report.
• Months/Quarters this year:
This will provide one value per month or quarter in the year. This is well suited for standard monthly or quarterly
reports where all month/quarters need to be listed. Periods that still have no data will be empty, but will always
keep the same column name.
• This year:
This is the cumulative so far in the year, aggregating the periods from the beginning of the year up to and including
the selected reporting month.
• Months/Quarters last year:
This will provide one value per month or quarter last year, relative to the reporting month. This is well suited for
standard monthly or quarterly reports where all month/quarters need to be listed. Periods that still have no data will
be empty, but will always keep the same column name.
• Last year:
This is the cumulative last year, relative to the reporting month, aggregating all the periods from last year.
Let's say we have chosen three indicators: A, B and C, and we have also chosen to use the relative periods 'Reporting
month' and 'This year' when we created the report table. If the reporting month (selected automatically or by the user)
is for example May 2010, the report table will calculate the values for the three selected indicators for May 2010 (=
the 'Reporting month') and the accumulated values for the three selected indicators so far in 2010 (= so far 'This year').
Thus, we will end up with six values for each of the organisation units: "Indicator A May 2010", "Indicator B May 2010"
"Indicator C May 2010", "Indicator A so far in 2010", "Indicator B so far in 2010" and "Indicator C so far in 2010".
Report parameters
Report parameters make the reports more generic and reusable over time and for different organisation units. These
parameters will pop up when generating the report table or running a report based on the report table. The users will
84
Setting up report functionality Data element dimension tables
select what they want to see in the report. There are four possible report parameters, and you can select none, all, or
any combination.
• Reporting month:
This decides which month will be used when the system is choosing the relative periods. If the box it not checked,
the user will not be asked for the reporting month when the report is generated - the current month will then be used.
• Grand parent organisation unit:
Select the grand parent of all the orgunit children and grand children you want listed in the report. E.g. a selected
region will trigger the use of the region itself, all its district, and all their sub-districts.
• Parent organisation unit:
Select the parent of all the orgunit children you want listed in the report. E.g. a selected district will trigger the use
of the district itself and all its children/sub-districts.
• Organisation unit:
This triggers the use of this orgunit in the report. No children are listed.
Continuing with the example on relative periods just above, let's say that in addition to 'Reporting month', we have
chosen 'Parent organisation unit' as a report parameter when we created the report table. When we're running the report
table, we will be asked to select an organisation unit. Now, let's say we choose "Region R" as the organisation unit.
"Region R" has the children "District X" and "District Y".
When the report is run, the system will aggregate data for both "District X" and "District Y". The data will be aggregated
from the lowest level where they have been collected. The values for the districts will be aggregated further to give
an aggregated value for "Region R".
Thus, the report table will generate the six values presented in the previous example, for "District X", "District Y"
and "Region R".
Subtotals and the total will also be included in the table, e.g. a gender (male, female) + EPI age(<1, >1) category combo
would give the following columns: male+<1, male+>1, Female+<1, female+>1, male, female,<1, >1, total.
Selecting data
Use the drop down menu to choose category combinations. The data elements using this category combination will be
listed. Double click to add to the report, or use the buttons.
85
Setting up report functionality Report table outcome
to the report. First the report table is re-generated (deleted and re-created with updated data), and then the report is run
(in the background, in Jasper report engine).
Report tables can consist of values related to data elements, indicators or data completeness, which is related to
completeness of reporting across orgunits for a given month. Completeness reports will be covered in a separate section.
There are three dimensions in a report table that identify the data; indicators or data elements, orgunits and periods. For
each of these dimensions the user can select which metadata values to include in the report. The user must select one
or more data elements or indicators to appear in the report. The orgunit selection can be substituted with a parameter,
either one specific orgunit or an orgunit parent (making itself and all its children appear in the report). If one or more
orgunits are selected and no orgunit parameter is used, then the report is static with regard to which orgunits to include,
which in most cases is an unnecessary restriction to a report.
The period selection is more advanced as it can in addition to specific periods like Jan-09, Q1-08, 2007 also contain
what is called relative periods. As report usually is run routinely over time a specific period like Jan-09 is not very
useful in a report. Instead, if you want to design a monthly report, you should use the relative period called Reporting
Month. Then you must also include Reporting Month as one of your report parameters to let the system know what
exactly is the Reporting Month on the time of report generation. There are many other relative periods available, and
they all relate to the report parameter Reporting Month. E.g. the relative period called So far this year refers to the
accumulative value for the year incl. the Reporting Month. If you want a trend report with multiple periods in stead
of one aggregated period, you can select e.g. 'Months this year', which would give you values for each month so far
in the year. You can do a similar report with quarters. The idea is to support as many generic report types as possible
using relative periods, so if you have other report needs, please suggest new relative periods on the mailing list, and
they might be added to the report table options.
Cross-tabbing dimensions
Cross tabbing is a very powerful functionality in report design, as the typical DHIS 2 data table with references to
period, data element/indicator and orgunit makes more advanced report design very difficult, as you cannot put e.g.
specific indicators, periods or orgunits on specific columns. E.g. by cross-tabbing on the indicator dimension in an
indicator report table you will get the indicator names on the column headers in your report, in addition to a column
referencing orgunit, and another column referencing period. With such a table design you could drag and drop indicator
names to specific columns or chart positions in the iReport software. Similarly you can cross tab on orgunits or periods
to make their names specifically available to report design. E.g. by cross-tabbing on periods and selecting the two
relative periods 'Reporting month' and 'This year', you can design reports with both the last month and the accumulative
annual value for given month as they will be available as column headers in your report table. It is also possible
to combine two dimensions in cross-tabbing, e.g. period and indicator, which makes it possible to e.g. look at three
selected indicators for two specific relative periods. This would e.g. make it possible to make a table or chart based
report with BCG, DPT3 and Measles coverage, both for the last month and the accumulative coverage so far in the year.
All in all, by combining the functionality of cross tabbing, relative periods and report table parameters you should have
a tool to support most report scenarios. If not, we would be very happy to receive suggestions to further improvements to
report tables. As already mentioned, we have started to look at more fine-grained parameters for the period dimension as
the 'Reporting month' does not cover enough, or at least is not intuitive enough, when it comes to e.g. quarterly reports.
Above the table there are six buttons; five download buttons and one Back button. Clicking the Back button will simply
take you back to the previous screen. The function of the five download buttons, are presented below the screenshot:
86
Setting up report functionality Standard reports
Downloads a generated .csv file. CSV stands for Comma Separated Values. It's a text file with the file ending .csv.
Each line in the file corresponds to a row in the table, while the columns are separated with semi colons (;). The file
can be opened in a text editor as well as in a spread sheet program (such as Excel).
• Download as PDF:
Downloads a generated pdf file. The data will be presented in a similar layout as the generated table you are already
viewing in DHIS 2.
• Download as Report:
Downloads a "styled" pdf file. In addition to present the data in a table layout, this file also presents a chart, showing
the aggregated data from all the chosen periods and the parent organisation unit chosen for the report table. The
report is generated using the Jasper report engine.
• Download as JRXML:
Downloads the design file for the generated Report described in the previous bullet. The design file (with the file
ending .jrxml) can be opened in the Jasper iReport Designer software. If you plan to design standard reports, this
is the starting point.
A standard report can present any value from any table in the DHIS 2 database, but for the report design, we want
the reports to be flexible, so we want to connect the reports to tables that changes through time. The report tables are
therefore ideal for the report design.
If you want to preview your report during the design in iReport, you actually have to upload your file to DHIS 2 to
see how it looks.
These four steps will be describe in detail in the coming sections. In general, when you are making standard reports
you should have a clear idea of how it should look before you even make the report table, as how the report table
is designed has implications for how the report can be formatted in iReport. For example, what crosstab dimensions
87
Setting up report functionality Designing Standard reports in iReport
are selected in the report table has consequences for what crosstabs are available for the standard report, and it has
consequences for what types of charts you can make.
Locate your desired report table and run it by clicking the green circle with a white arrow inside. When the report is
shown, click the "Download as JRXML" button to download the design file. Then open that file in the Jasper iReport
Designer software.
Note: If you cannot see the Palette or Properties sidebar, you can enable them from the menu item called "Window"
on the menu bar.
The iReport document is divided into seven main bands, divided by layout separators (the blue lines). These lines are
used to decide how big each of the areas should be on the report.
By default you will see that only the Title, Column Header and the Detail 1 bands have data. For most reports this is
OK. The Title band is suitable for a title and e.g. a chart. Data fields entered into the Detail 1 area will be iterated over
to create a table. For example, if a field called "datalementname" is placed in the Detail 1 band, all data elements in
the report table will be listed here. We'll come back to data fields management just a little below.
The unused bands in the report are shrinked to add more space for your report data. You can however increase/decrease
the band height as you like. There are two ways to do that. The first way is simply to drag the blue band-line as shown
below.
The other way to adjust the band height is to select a band in the "Report Inspector", and then adjust the "Band height"
value in the "Detail 1 - properties" area in the lower right corner.
As the fields are already present on the report, you probably don't want to do anything than just fix the layout and drag
fields around. You can also resize the fields by dragging the side, top or bottom lines. If you want to change the text
in the column headers, you simply double click the field and change the text.
To add the a field to the table, we simply drag it to the Detail 1 band from the "Report Inspector". The column header
will be added automatically.
By double clicking the box, the text can be edited. The format of the text, such as size, font and alignment, can be
adjusted with the tools above the document.
88
Setting up report functionality Designing Standard reports in iReport
NOTE: Fields starting with "$F" present values that are retrieved from the database every time the report is run.
The values here will vary, so do not change these fields unless you want a static value here!
[Link]. Text
There are two types of text in iReport: «Text labels» and «Text fields» (data fields). They work in different ways,
and should be used for different purposes. The main point is that text fields are just placeholders that will be filled
with the correct text from the report table when the report is run, while text labels will stay the way they are when
the report is run.
Static text are text plain text labels that can be edited normally. There are two ways to edit text labels:
• By double clicking in the text box
• By using the Static text properties in the Properties panel
Text fields are formulas that will be filled from the report table when the report is run. Unlike static text, these can not
be edited in a normal way. However, they can be manipulated in various ways to ensure that the desired output will
be produced. There are three ways to edit the text fields:
Text fields can represent either numbers or text, so that they can be used both for showing for example names of district
or for numeric values. It is therefore important the the Expression class, seen in the Text field properties matches the
Text field expression. For the default text fields in the .jrxml file downloaded from DHIS 2 this is not a problem,
but it is important when making new text fields. The two most important Expression classes are [Link] for
numbers and [Link] for text.
[Link].2.1. Example
For example, let us say you have a quarterly report where you would like to add a new column with the yearly total.
You therefore add a new Static text field to the column header band, and a Text field to the details band in. By default,
new Text fields are set to [Link] (text). However, the yearly total column will be filled with numbers. We
therefore have to change the Expression class for the new text field to [Link]:
When we edit the text field expression, we see the Expression editor window with all the available columns from the
report table. We can see here that each of these are marked with what type they are - text or number. What we need to
make sure of is therefore that the expression class we choose for the text field matches the actual expression.
In the default table exported from DHIS 2, there are some rows that it might be better to leave out of the table, and
some that it would be preferable to have at the end. For example, when making a table based on a report table with the
«parent organisation unit» parameter, the default table might have a row with the national level somewhere in between
89
Setting up report functionality Designing Standard reports in iReport
all the regions. In iReport, this can be changed so that the «parent organisation unit» appears at the bottom of the table.
This involves two steps that will be explained below. Note that this will not work where there is only one organisation
units, and it is therefore most useful when using the «parent organisation unit» or «grand parent organisation unit»
parameters in the report table.
We exclude the "paramter organisation unit" from the table by using a property in the Details band called "Print when
expression". To set a Print when expression, start by selecting the Detail band in the Report inspector, then edit the
Print when expression in the properties panel.
The Expression editor window should now appear. What we must do is to create an expression that checks if the row
being generated is the row with the organisation unit given as a parameter. The report table contains a column that we
can use for this called organisation_unit_is_parent. To exclude the row with the parameter organisation unit, double
click on organisation_unit_is_parent in the list to copy it to the expression area, then add .equals("No") at the end
so that the code is:
$F{organisation_unit_is_parent}.equals("No")
This tells the report engine to only print table rows where the organisation unit is not the parent organisation unit.
[Link].2. Putting the "param organisation unit" at the bottom of the table
Instead of removing the "param organisation unit" from the table entirely, it is also possible to put it at the bottom (or
top) of the table. This is done by using the sort functionality explained in the next section, and choosing to sort first by
"organisation_unit_is_parent". Other sorting options can be added in addition to this, for example to make a list where
the param organisation unit is at the bottom of the table, with the other organisation units listed alphabetically above it.
Using the expression editor it is also possible to exclude other rows from the table, in addition to the parent organisation
unit as was explained above. In Ghana, for example, all regions have a «fake district» which is the name of the region
in square brackets. This can also be excluded from the table using the Print when expression that was introduced above.
To to this, follow the instructions above to bring up the Expression editor window. Then, we use Java expressions to
test whether or not the row should be hidden.
($F{organisationunitname}.charAt( 0 ) != '[')
This makes the report skip any rows where the first character of the organisation unit name is [.
It is also possible to combine several of these expressions. To do this we put the expressions in a parenthesis with the
two characters && in between. For example, to make a table that leaves both organisation units whose name starts
with [ and the parent organisation unit, we can use the following expression:
($F{organisationunitname}.charAt( 0 ) != '[')&&$F{organisation_unit_is_parent}.equals("No")
[Link]. Sorting
Often you will be making reports where the first column is organisation unit names. However, it can be a problem that
the list of organisation units are not sorted alphabetically. This can be fixed in iReport through a few simple steps.
In the report inspector, right click on the name of the report (by default this is dpt) and select Edit query.
90
Setting up report functionality Designing Standard reports in iReport
A Report query window will appear. Click on the Sort options button.
A Sorting window as show below will appear. Here, we can add our sorting options. Click the Add field button. Another
small window will show up, with a drop down menu where you can choose Sort by organisationunitname to have the
table sorted alphabetically by name.
Click OK - Close - OK to close the three windows. The table should now be sorted.
To change the names of an indicator or data element, we have to edit its «expression» or formula, for example by right
clicking the text box and choosing Edit expression to bring up the Expression editor.
Next, we have to insert some Java code. In the following example, we will be replacing the shortname of three indicators
with their proper names. The code searches for the shortname, and then replaces it with a proper name.
$F{indicatorname}
From this, we can see a pattern that is reusable for more general cases.
• For each indicator or data element we want to change the name for, we need one line
• Each line is separated by a colon :
• We finish the expression with a «regular» line
Each line has the same format, where the red text is the shortname, the blue text is what we want to insert instead.
The same expressions can be used for example when having indicator names along the category axis of a chart.
We start by dragging a text label into the table header and changing its text to "Total", and dragging a text field into
the details row.
91
Setting up report functionality Designing Standard reports in iReport
As was discussed in the section on "Text field", we have to change the properties of the new text field so that it can
display numbers. To do this, change the "Expressions Class" in the properties panel to "[Link]".
Right click the text field and choose "Edit Expression". This will bring up the "Expressions editor". As the expression,
we want to sum up all the columns. In this case we have three value expressions we want to sum up: "September",
"October 2010", "November 2010". The name of these fields will vary depending on the crosstab dimension you have
chosen in the report table. In our case, the expression we make is "$f{September}+$f{October 2010}+$f{November
2010}":
In our example, the .jrxml file downloaded from DHIS 2 will by default have one column for organisation unit and on
for indicators (assuming we have chosen periods as the only crosstab dimension). We start by removing the indicator
column, since this in not needed in our case, and realign the other fields to fit the report.
Next, we create out Report group. Go to the report insepctor, right click on the report name (dpt is the default) and
choose Add Report Group.
A window will appear, with a report group wizard. Select a name for the group, in this case we choose «Indicator».
In the drop down menu, we can select what columns in the report table we want the groups to be based on. So, if we
wanted one table for each organisation unit, we would choose organisation unit name as the report object to group
according to. However, since we are grouping by indicators in this example, we choose indicatorname. Then click next.
The next step is to select whether or not we want a separate Group header and Group footer band for each report group.
In this case, we choose to include both. Click Finish, and the group bands should appear in the report.
If you upload and run the report, it will now create one table for each indicator. However, it will not look very good
as there will be no header row over each table - only one header at the top of each page. Also, there is no indication
as to which table is showing which indicator. In the following, we will fix this.
Instead of having the title row in the column header, we can instead move it to the Group header. This will make the
heading show up above each individual table. Furthermore, we can add a heading to each table with the name of the
indicator.
Move the column headers from the Column header band to the Indicator group header band.
Next, add a text field to the Indicator group heading band, and edit it’s expression to display the indicator name.
The report should now have three tables, one for each indicator. Each table will have a heading with the name of the
indicator, and also a table header row.
When using grouping, some precautions must be taken with regards to sorting. Notably, when adding sorting
parameters, whatever parameter is used as basis for the grouping must come first. Thus if you are grouping the report
92
Setting up report functionality Designing Standard reports in iReport
by indicator, and want sort the organisation units alphabetically, you have to choose to sort first by indicator, then by
organisation unit name as shown below. For instructions on how to add sorting, see the sorting section above.
[Link]. Charts
By default, a 3D bar chart is included in the .jrxml file that is downloaded from DHIS 2. This is set up so that only
data from the «parameter orgnisation unit» (often the parent or grand parent) is used. Usually, this is a good solution.
Since it is the default, we will start by looking at bar charts, before looking at line charts.
Bar charts are the default chart type in DHIS 2. In this section, we will look at how to make a bar charts like the one
above, comparing the value of one inidcator in several districts. To edit the default chart in iReport, right click on it
and choose Chart data.
A window will appear. By default, the Filter expression is filled in so that only data for the parent organisation unit
will be displayed. If for some reason you do not want this, simply delete the text in the text box. In this case we do
NOT want the filter, as we are making a chart showing a comparison across districts. To continue, click the details tab.
Under details, you see the list of series for the chart. By default, one series is created per crosstab column. In this case,
we are looking at data for one indicator for the whole of 2010, for a number of districts. The indicator is along the
crosstab dimension.
To make changes to a series, select it and click modify. Another window will appear where there are four areas that
can be edit. The three first are required, but it is sufficient to add an empty quote («») in one of the first two.
The first box is a text field where the name of the series can be inserted or edited. This is the field that will be used
to fill the text in the legend box (shown below).
However, if you want to have the name of each bar along the x-axis of the chart instead of using the legend, this can
be done by adding whatever text you want to present in the Category expression field, or by inserting an expression
to have it filled automatically when the report is run. In this case, we want to have one bar for each organisation unit.
We therefore edit the category expression by clicking on the button to the right.
When we are finished, the series editor should look like below. Click OK, then Close to close the Chart Details window.
If you add a good description in the Category expression area, you can leave out the legend box. This is done in the
Report properties panel of iReport, where you can also edit many other details of the chart.
We can also add a title to the chart, for example the name of the indicator. This is also done in the Chart properties
panel, under Title expression.
The Expression editor window will appear, where you can enter the title. Note that the title must be in quotes, as
shown below.
93
Setting up report functionality Designing Standard reports in iReport
Line charts can be useful in many circumstances. However, to make line charts the report data (report table) must be
suited for it. Thus if you want to make a line chart, it is important that the report table does not have periods in the
crosstab dimension. Examples where this is useful is if you are making a report for a single organisation unit with one
or more indicators, or if you are making a report with one indicator and one or more organisation units.
Below, we will go though the steps needed to make a report with a line chart showing the development of three
indicators over one year, for one organisation unit. We start by making a report table with the choices shown below:
When we open the resulting .jrxml-file in iReport, the default line chart is included. Since we want to make a line chart,
we delete this chart and drag a new chart element into the report from the Palette panel.
As soon as we drag the Chart element into the report, a window will appear. We choose the Line chart, as shown below.
A chart wizard will appear. Click next in the first step, then Finish in the next - we will add the data later.
Next, adjust the size and position of the chart in your report. Then, we will add one data series for each of our three
indicators. Right-click on the chart and choose Chart data. If you are making a chart with one indicator and several
organisation units, you probably want to make a filter expression so that only data from the paramter/parent organisation
unit is used in the chart. To do this, add this line to the Filter expression area:
$F{organisation_unit_is_parent}.equals("Yes")
In our example, we only have on organisation unit, so this is not necessary. Next, click the details tab to see a list of
the series in the chart. For now, this list is empty, but we will add one series for each of our three indicators. To add
a series, click the Add button.
In the window that appears, enter the name of the first of the indicators in the Series expression window. Remember
to put the name in quotes. In the category expression (along the x-axis) we want the months, so we use the button next
to the field to open the Expression editor and add periodname.
In the value expression, we add the actual data values for our first indicator. Use the Expression editor again to do this.
When we are finished, the window should look like the one below, only with different names according to the indicator.
You can then Click OK to close the window. Follow the same steps to add a series for the other indicators.
Close the window, and the data for the line chart should be ready. However, some additional adjustments might be
needed - most of these can be found in the Line chart properties panel. For example, when making a month by month
chart as we have in example, there is often not enough space for the month names along the category axis. This can be
fixed by rotating the labels by for example -40 degrees, by using the property Category Axis Tick Label Rotation.
Many other options are available to give the chart the desired look.
94
Setting up report functionality Designing Standard reports in iReport
In the following screen, there are several actions we need to take. First, enter a name for the new "Standard Report".
Second, for design, click "Choose File" and find the .jrxml-file you have edited in iReport. Then we select the report
table that we used as a basis for the report in iReport. Click add, and it should move to the "Selected report tables"
area. Finally, click save.
95
Utilizando el Visualizador de Datos Un vistazo al Visualizador de Datos
El visualizador de datos está diseñado en primer lugar para ser fácil de usar: podemos seleccionar los indicadores,
elementos de datos, periodos y unidades organizativas que queramos incluir y pinchar en "Actualizar" para obtener
una visualización. En segundo lugar, ha sido diseñado para ser rápido y lograr un buen funcionamiento incluso con
conexiones lentas a Internet: los gráficos se generan en el navegador web y muy pocos datos se envían realmente por
la red.
97
Utilizando el Visualizador de Datos Seleccionando series, categorías y filtros
5. Gráfico lineal: es un gráfico que muestra la información en forma de series de puntos conectados mediante lineas
rectas. También se conoce con el nombre de series temporales. Es útil por ejemplo para visualizar la tendencia de
datos de un indicador a lo lardo de múltiples periodos de tiempo.
6. Diagrama de área: es un gráfico basado en el gráfico lineal, donde el espacio entre los ejes y la línea aparece
rellenado en color, y las líneas para cada elemento representado se apilan unas sobre otras. Resulta útil para comparar
tendencias entre indicadores relacionados.
7. Gráfica circular: es un gráfico con forma de tarta dividida en sectores (o rodajas). Es útil por ejemplo para visualizar
la proporción de datos de elementos de datos infividuales en comparación con la suma total de todos los elementos
de datos en el gráfico.
El módulo de visualización nos permite usar estas dimensiones de forma totalmente flexible en el sentido de que
aparezcan como series, categorías o filtros. Para comprender mejor su funcionamiento observemos la captura de
pantalla siguiente:
98
Utilizando el Visualizador de Datos Seleccionando tasas de reporte
juntos en el gráfico. Podemos seleccionar los indicadores pinchando en el encabezado de "Indicadores" y seleccionando
un grupo de indicadores del listado que aparece debajo. Esto hace que los indicadores en el grupo seleccionado se
muestren en la lista bajo "Indicadores disponibles" a la izquierda. En esta lista podemos pinchar doble en cualquier
indicador para seleccionarlo, y entonces se moverá a la lista de "Indicadores seleccionados". Otra forma de hacerlo es
marcar uno o varios indicadores y pinchar a continuación en el botón de flecha simple. Si queremos seleccionar todos
los indicadores pincharemos en el botón de flecha doble. Para desmarcar los indicadores podremos hacer esto mismo
en el listado de "Indicadores seleccionados"
Para seleccionar elementos de datos pincharemos en el encabezado de "Elementos de Datos". Aquí seguiremos el
mismo procedimiento explicado arriba para marcar y desmarcar indicadores.
Este panel tiene también dos casillas de verificación. Seleccionando la casilla "Unidad Organizativa del usuario" se
desactivará el árbol de todas las unidades organizativas y nos mostrará únicamente la unidad organizativa asociada
al usuario logueado actualemente en el sistema. Esta funcionalidad es útil para los administradores, ya que pueden
crear un "sistema" coherente predeterminado con esta opción activada, de modo que todos los usuarios encontrarán
su respectiva unidad organizativa cuando abran esta sección. El funcionamiento es idéntico para la casilla de "Hijos
de la Unidad Organizativa del usuario".
99
Utilizando el Visualizador de Datos Seleccionando grupos de unidades
organizativas
Es importante tener en cuenta que podemos ocultar y mostrar series individuales de datos en el gráfico pinchando
directamente en la etiqueta de series del gráfico - que aparece ya sea arriba o a la derecha del gráfico.
Si queremos ampliar el gráfico en nuestra pantalla podemos pinchar en el botón de flecha triple en el menú superior
central. Esto hace que se pliegue el menú del lado izquierdo. Podremos volver a desplegarlo pinchando en este mismo
botón de nuevo.
100
Utilizando el Visualizador de Datos Descargando una gráfica como imagen o
PDF
Estas gráficas favoritas se pueden incluir posteriormente en nuestro panel de control personal. Después de guardarlas,
navegamos al módulo de panel de control (dashboard) y pinchamos en el enlace "Insertar" sobre las áreas de gráficas
y seleccionamos nuestra gráfica preferida.
101
Utilizando el Visualizador de Datos Saliendo del módulo de visualización de
datos
Cuando hayamos terminado, pinchamos en el botón de "Compartir" en la esquina derecha de la ventana. La ventana
se cerrará automáticamente y, si la interpretación se compartió con éxito, encontraremos una notificación en la barra
de herramientas inferior.
102
Utilizando el Sistema de Información Un vistazo al módulo SIG
Geográfica (SIG)
En el lado derecho hay un panel nombrado "Capas". Hay tres "capas básicas": mapa de fondo, OpenStreetMap y Google
Maps. Pincharemos en el texto para abrir un menú contextual que nos permita ajustar la opacidad/transparencia del
fondo. Las otras capas se describen con detalle más adelante en este capítulo. Las cuatro capas superiores son capas de
vectores que el usuario tiene a su disposición para el mapeado temático. Podemos usar este árbol de capas para mostrar/
ocultar capas si marcamos/desmarcamos la casilla correspondiente. El panel siguiente, llamado "Posición de Cursos"
nos indica a qué longitud y latitud está situado el puntero del mouse. El panel de "Destacar datos" ofrece información
rápida sobre las unidades organizativas sobre las que colocamos el puntero en nuestros mapas temáticos. Y finalemnte,
hay un panel de leyenda para todas las capas temáticas.
Los botones de "Mapas" en el lado izquierdo son: "Ampliar", "Reducir, "Ampliar extensión visible" (todos los datos
del mapa temático se cuadran en la página principal).
Los botones de "Capas" en el lado izquierdo son: "Capa Temática 1", "Capa Temática 2", "Capa de Establecimientos",
"Capa de Símbolos".
Los botones de "Herramientas" en el lado izquierdo son: "Vistas favoritas de mapa", "Predefinir sets de leyenda",
"Exportar mapa a PNG", "Medir distancias en mapa".
103
Utilizando el Sistema de Información Mapeado temático
Geográfica (SIG)
Los dos paneles de capas temáticas nos permiten incorporar nuestros datos al mapeado temático. Para ello,
seleccionamos una combinación de indicador/elemento de datos - periodo - mapa, luego el nivel de unidad organizativa
y finalmente la unidad padre para definir el límite. Si nuestra base d edatos tiene coordenadas de estas unidades
organizativas, entonces estas aparecerán en el mapa.
Podremos elegir entre varios tipos de leyenda:automática y predefinida. La leyenda automática significa que la
aplicación creará un set de textos leyenda en base al métido, número de clases, color superior y color inferior que
elegiamos. El método se refiere al tamaño de las clases de leyenda. Para Intervalos regulares contendrá el valor más
grande y más pequeño del mapa dividido entre el número de clases. Para Conteo de grupos iguales el generador de
leyendas tratará de distribuir las unidades organizativas uniformemente. Para Límites fijos deberemos definir nuestros
propios valores de corte de clases, por ejemplo "20,40,60" utilizando una coma para separar cada valor. La leyenda
aparecerá como una gradación uniforme del color inicial al color final. Los conjuntos de leyendas predefinidos se
describen en Sección 15.3.2, “Registro de sets de leyendas” .
Los radios grande y pequeño solo tienen efecto en los establecientos (puntos del mapa) y resuelven los radios circulares
para los puntos con el valor mayor y el valor menor.
El cuadro de combinaciones en la vista de mapa lista todas las vistas de mapa (favoritas) guardadas por el usuario.
La configuración se guarda en la vista del mapa y se aplica automáticamente al panel de mapa temático. Las vistas
favoritas de mapas se explican más en Sección 15.3.1, “Registro de vistas favoritas de mapa” .
Todas las opciones disponibles de capas están ahora agrupadas en el menú de capa temática, como se observa en la
figura abajo..
104
Utilizando el Sistema de Información Capa temática 1 y 2
Geográfica (SIG)
Editar capa: Abre la ventana de configuración de la capa, como la que se observa en la captura d epantalla de mapeado
temático.
Refrescar: Recarga los datos, límites y leyenda del mapa. Generalmente no es necesario usarlo.
Limpiar: Vacía la capa completa, por ejemplo la ventana de configuración, el mapa y el panel de leyenda.
Filtrar: Abre la ventana de filtros y permite filtrar unidades organizativas del mapa por valor. Veamos la figura
siguiente.
Buscar: abre la ventana de búsqueda y nos permite buscar y localizar unidades organizativas en el mapa, como muestra
la imagen siguiente.
Etiquetas: abre la ventana de etiquetas y nos permite añadir etiquetado a las unidades organizativas en el mapa, como
muestra la imagen.
Transparencia: ajusta la capa de opacidad/transparencia al 10, 20, 30, 40, 50, 60, 70, 80, 90 ó 100%. Los valores grandes
de transparencia hacen la capa más transparente, de modo que la capa subyacente se hace más visible. Un nivel de
transparencia cero nos da una capa totalmente opaca.
Historial: facilita una lista de nuestras 10 selecciones y mapas más recientes. El listado es temporal y se borra cuando
salimos de la aplicación.
105
Utilizando el Sistema de Información Capa de establecimientos
Geográfica (SIG)
106
Utilizando el Sistema de Información Herramientas
Geográfica (SIG)
15.3. Herramientas
Esta sección describe las herramientas disponibles en el Sistema de Información Geográfica, que se encuentran en la
sección "Herramientas" de la barra de herramientas del mapa.
107
Setting up GIS Context
16.1. Context
Setting up the GIS simply means storing coordinates for the organisation units you want to show on the map in the
database. Coordinates are often distributed in proprietary formats and will need to be converted to a format which
DHIS2 understands. ESRI shapefiles are the most common geospatial vector data format for desktop applications.
You might find shapefiles for your country here or in many other geospatial data repositories on the web. Some
amount of work needs to be done in order to use these coordinates in DHIS 2 GIS, namely transforming the data into
a suitable format and ensuring the name which are contained in the geospatial data match exactly with the names of
the organization units which they should be matched to.
If you go to the organisation unit module and edit one of the units, you can see a text field called Coordinates. Here
you may fill in its coordinates directly (geojson format) which is useful if you just want to update a couple of units.
[29.341,-11.154]
[[[[29.343,-11.154],[28.329,-11.342],[28.481,-10.239],[29.833,-10.412]]]]
However, if you are going to e.g. add coordinates for all units at a certain level you don't want to do that manually. This
is where the automatic GML import comes into play and the following section explains the preferred way of using it.
Importante
The only co-ordinate reference system supported by DHIS2 is EPSG:4326, also known as geographic
longitude/latitude. Coordinates must be stored with the longitude (east/west position) proceeding the latitude
(north/south position). If your vector data is in a different CRS than EPSG 4326, you will need to reproject
the data first before importing into DHIS2.
The boundaries in geographical data files are usually very accurate, too much so for the needs of a web-based GIS.
This usually does not affect the performance when using GIS files on a a local system, but it is usually necessary to
optimize the geographical data for the web-based GIS system of DHIS2. All geographical data needs to be downloaded
from the server and rendered in a browser, so if the data is overly complex, the performance of the DHIS2 GIS will be
negatively impacted. This optimization process can be described as follows:
Coordinates: The number of significant decimal digits (e.g. 23.02937874993774) should be shortened to fewer digits
(e.g. 23.03). Although this will result in some inaccuracies on the map, given the usual scale at which maps in DHIS2
are produced (> 1:50,000), the loss of precision should not be noticeable. Normally, no more than four significant
digits after the decimal point should be necessary.
Polygons: In addition to shortening the number of significant digits, the actual number of points should also be reduced
to an optimal level. Finding this optimal level may take a bit of experimentation. Decreasing the precision of the points
as well as the number of points through generalization, will lead to degradation of the polygon. However, after a bit
of experimentation, an optimal level of generalization can be found, where the accuracy of the polygon is visually
acceptable, and the performance of the GIS is optimal.
For polygons, we need to make the boundary lines less detailed by removing some of the line points. One possible
method is the use of MapShaper which is an online tool which can be used to generalize geographical data. To use
109
Setting up GIS Importing coordinates
MapShaper, simply upload your shapefile to the site. Then, at the center bottom you see a slider that starts at 0%. It is
usually acceptable to drag it up to about 80%. In the left menu you can check "show original lines" to compare the result
and you may want to give a different simplification method a try. When you are happy with the result, click "export"
in the top right corner. Then check the first of the four options called "Shapefile - polygons", click "create" and wait
for the download buttons to appear. Now, download the two files to your local computer (being sure to rename the file
so that you do not overwrite your existing, original data). Move on to the next step with your new simplified shapefile.
The recommended tool for geographical format conversions is called "ogr2ogr". This should be available for most
Linux distributions sudo apt-get install gdal-bin. For Windows, go to [Link] and download
"FWTools", install it and open up the FWTools command shell. During the format conversion we also want to ensure
that the output has the correct coordinate projection (called EPSG:4326 with geographic longitude and latitude). For
a more detailed reference of geographic coordinates, please refer to this site. If you have already reprojected the
geographic data to the geographic latitude/longitude (EPSG:4326) system, there is no need to explicitly define the
output coordinate system, assuming that ogr2ogr can determine the input spatial reference system. Note that most
shapefiles are using the EPSG:4326 system. You can determine the spatial reference system by executing the following
command.
Assuming that the projection is reported to be EPSG:27700 by ogrinfo, we can transform it to EPSG:4326 by executing
the following command.
If the geographic data is already in EPSG:4326, you can simply transform the shapefile to GML by executing the
following command.
You will find the created GML file in the same folder as the shapefile.
Unfortunately, the GML file is not ready for importation yet. Open it in a robust text editor like Geany (Linux) or
Notepad++ (Windows). GML is an XML based format which means that you will recognize the regular XML tag
hierarchy. In the GML file an organisation unit is represented as a <gml:featureMember>. Inside the feature members
we usually find a lot of attributes, but we are just going to import their coordinates. In order to do this DHIS 2 will
match the name of the feature members to the organisation unit names in the database. To get the name of the feature
members in the GML file the importer will look for a property called "ogr:Name". Figure out what property that is
holding the name of the feature members (could be "ogr:DISTRICT_NAME", "ogr:NAME_1" or whatever, this differs
from shapefile to shapefile) and rename it to "ogr:Name". Ensure that both the start and the end tags are renamed
properly. They are supposed to look like e.g.: <ogr:Name>Moyamba District</ogr:Name>
Note that the name of the feature members in the GML file must be spelled exactly the same as the organisation units
in the database. Otherwise the importer will not recognize it and thus not transfer any coordinates. E.g. "Moyamba"
in the GML file might be called "Moyamba District" in the database. Creative use of the "rename all" function in the
text editor is usually of great help in these situations, as you do not want to edit numerous feature members manually.
Have a brief look at the names and compare them to the names in the database. If they seem to match fairly good, it
is about time to do a preview in the import-export module.
Go to Services -> Import-Export, select "Preview", select the GML file and click "Import". Look for new/updated
organisation units. Our intention is to add coordinates to already existing organisation units in the database, so we want
as many updates as possible and 0 new. Those listed as new will be created as root units and mess up the organisation
unit trees in DHIS 2. If any listed as new, click the number and the organisation units in question will appear in the list
below. If there are any slight misspellings compared to the organisation unit names in the database - fix them and do the
preview again. Otherwise, click the "discard all" button below the list and then the "Import all" button above the list.
If the import process completes successfully, you should now be able to utilize the geographical data in the DHIS2
GIS. If not, check the log for hints and look for common errors such as:
110
Setting up GIS Importing coordinates
- Name duplicates in the GML file. The name column in the database is unique and does not accept two organisation
units with the same name.
- The "shortname" column in the organisationunit table in your database has a too small varchar definition. Increase
it to 100.
- Special name characters in the GML file. Be sure to convert these to appropirate XML equivalents or escape
sequences.
111
Import and export What is import and export?
The exported data values are stored in an ‘xml file’. The file name is defined by the name of the source organisation
unit and the period to allow the receiving organisation unit to identify the source and the period of the export file. The
XML is placed in your home directory (On Windows this is normally C:\Documents and Settings\ under the
sub-directories /dhis / import-export.
A pop-up save option will appear on the displayed screen (see picture below) prompting the saving of the exported
data. You may save the export folder on your desktop or any other folder by selecting the ‘Save to Disk’ option from
the pop-up prompt.
113
Import and export Exporting metadata to other DHIS 2 systems
Metadata is "data about data". In the context of DHIS 2, metadata consists of definitions of data elements, indicators,
the structure and names contained in the organizational hierarchy, and other options. Click on the "Metadata export"
link from the main "Data export" screen in order to access this. Just select the feature that you wish to export and
click "Export". This metadata file can then be transmitted just like a data file, except it will contain information on the
definitions of the various features, as opposed to the values of the data themselves.
The "Detailed metadata" function will allow you to export specific data element and indicator definitions. Just click
"Detailed Metadata Export" and select the data elements and indicators that you wish to export. Click "Export" and
save the file to a desired location. This file can then be transmitted via email or USB key to other DHIS 2 installations.
The default data import menu can be accessed by clicking the "Import" from the main Import-Export screen.
By clicking the "Browse" button, you can select a file from you local file system. This file may have been received
by email, copied from another users system, or received on a CD for example. Simply select the file that you wish
to import.
114
Import and export Importing data from DHIS 1.4
If new:
If there are new data elements, indicators, or orgunits, first make sure whether they really are new or not. Data elements
are rarely new, most of the time they are the old name of something that has been changed in the destination database
(e.g. a master db at the national level). If you have changed some data elements names at the national level and these
have not yet been updated in the district database, the old names that are in the district export files will appear as new
data elements in your import preview. It is very important that you tell the DHIS that these are only just old names of
a data element that already exists in your database, if not you will have two data elements meaning the same thing and
both with an incomplete set of data. Use the ‘match new to existing’ button to link the new data elements (that really
are old) to the updated names in your national database, and make sure that the source database updates its metdata
before the next data export.
If updates:
Only the newer updates are shown in the preview. This means the record has been updated more recently in the district/
hospital than in the zonal/national database you are importing into. If you are not sure whether you want to import the
update or not, you can select the record and click on the compare to existing button to see exactly which changes that
have been made in the updated object.
It is critical that all data integrity violations which are present in the DHIS 1.4 database be fully resolved before
attemtping an import into DHIS 2. You can check the data integrity of DHIS 1.4 through the CORE Module-
>Advanced->Data integrity checks. A report will be generated of all data integrity violations which should be resolved
prior to importing into DHIS 2.
115
Import and export Importing data from DHIS 1.4
Before you can start the 1.4 file import you need to provide a few details about the 1.4 database:
Datafile(#): Here you put the full path to the DHIS 1.4 data file you want to import from, e.g. C:
\DHIS14\DHIS_#LR_LIBERIA.mdb.
Username: Leave blank (unless you have set up extra security measures on the file)
Password: Leave blank (unless you have set up extra security measures on the file)
Levels: Provide the number of levels in the orgunit hierarchy in your 1.4 database, e.g. 5.
Click "Save" and you will return to the DHIS 1.4 File Import window.
Import Type:
As with other imports you have the options to Import (directly), Preview, or Analyse the import. We recommend using
the Analyse option first to check that the 1.4 database is OK and ready to be imported.
When importing a large database into a new blank DHIS 2 database we recommend using the Import option to save
time.
Last Updated:
If you want the full import, all the data in the 1.4 database you leave this field blank.
If you only want to do an incremental import into an already existing DHIS 2 database you can use this field to filter
which data values to import. Only values added or edited after the date you specify will be imported. This filter makes
use of the LastUpdated column in the RoutineData table in the DHIS 1.4 data file.
Import process:
When you are done selceting Method, and LastUpdated you can begin the import by clicking on the Import button.
This process might take a long time, depending on how many data values you are importing. On a reasonable spec.
computer the import takes about 2 million records per 30 minutes.
It is also important that the aggregation operator defined in DHIS 1.4 be set to the correct value. Some data, such as
population, should have their aggregation operator set to "Average" in DHIS 2, as this controls how the aggregation
of data is handled over time (but not within the organisational unit hierarchy).
116
Import and export Importing CSV data
To import a CSV data exchange file navigate to the CSV Data Import item in the left-side menu. Upload the exchange
file and click Import.
The following section describes the CSV format used in DHIS 2. The first row is assumed to be a header row and
will be ignored during import.
The following is an example CSV file which can be imported into DHIS 2. It can be imported both as plain text file
or as compressed ZIP file archive.
"dataelelement","period","orgunit","categoryoptioncombo","value","storedby","timestamp","comment"
"DUSpd8Jq3M7","201202","gP6hn503KUX","Prlt0C1RF0s","7","bombali","2010-04-17",,"false"
"DUSpd8Jq3M7","201202","gP6hn503KUX","V6L425pT3A0","10","bombali","2010-04-17",,"false"
"DUSpd8Jq3M7","201202","OjTS752GbZE","V6L425pT3A0","9","bombali","2010-04-06",,"false"
If you need to manually produce such XML files please refer to the Web API chapter where you can find detailed
documentation of the DXF format.
117
Data Administration Data browser
• Data sets
• Organisational units
Each of these options can be accessed by selecting the desired option from "Browse by" drop-down menu.
In order to produce a summary of submitted data for a given period and grouped by data sets, the user should follow
this procedure. Begin by selecting a given periodicity type (e.g. Weekly, monthly, yearly, etc) and then a "From date"
and "To date". (e.g. January 2009 to March 2009). Select the type of summary to be produced (e.g. Dataset) from the
"Browse by" drop-down menu. Click the "Browse" button to view the summary.
A summary of the number of data element values that have been submitted over the user selected time period is shown
below.
119
Data Administration Data browser
By clicking on the name of the individual dataset, a more detailed summary of each data element can be obtained as
shown below. A cross-tab table summarising each time period will be shown.
The functionality of the grouping by Datasets, Data element groups, and Organisational groups is essentially the same.
The functionality of grouping by organisation units will be discussed below. Begin by selecting "Organisation units"
from the "Browse by" drop-down menu. The organisational hierarchy present in the database will now be displayed.
Organisational units can be expanded by clicking on the plus symbol in the organisational tree view.
120
Data Administration Data browser
By clicking on an organisational unit, and the clicking the "Browse" button, a summary of submitted data elements
present in the database is returned for all immediate children of the selected organisational as shown below:
121
Data Administration Data integrity
By clicking on one of the organisational units, two drill down modes are presented to the user.
• Summary drill down- Drill down to the selected organisational units children to see the count of data elements.
• View raw data at this level: View the actual raw data at the selected organisational unit. A typical view of the raw
data export can be seen below.
Data can be exported into Excel, CSV and as a PDF report by clicking the appropriate button.
122
Data Administration Data elements without data set
Each of the data integrity checks that are performed by the system will be described, along with general procedures
that can be performed to resolve these issues.
18.2.4. Data elements assigned to data sets with different period types
Data Elements should not be assigned to two separate data sets whose period types differ. The recommended approach
would be to create two separate data elements (for instance a monthly and yearly data element) and assign these to
respective datasets.
123
Data Administration Invalid indicator denominators
124
Data Administration Validation rules without groups
To archive data, first enter a start date and an end date for the time span of the data which should be archived. Then
press the archive button. The operation might take a few minutes.
To unarchive data, first enter a start date and an end date for the time span of the data which should be unarchived.
Then press the unarchive button. The operation might take a few minutes.
In some cases you might end up with overlapping data. For instance one might archive data for a given timespan, then
later enter data for a period in that timespan. In such cases the system will automatically overwrite the oldest of the
overlapping values with the newest during the archive or unarchive operation.
To archive beneficiary data, first enter a start date and an end date for the time span of the data which should be
archived. Then press the archive button. The operation might take a few minutes.
To unarchive beneficiary data, first enter a start date and an end date for the time span of the data which should be
unarchived. Then press the unarchive button. The operation might take a few minutes.
In some cases you might end up with overlapping data. For instance one might archive beneficiary data for a given
timespan, then later enter data for a period in that timespan. In such cases the system will automatically overwrite the
oldest of the overlapping values with the newest during the archive or unarchive operation.
125
Data Administration Maintenance
18.5. Maintenance
The data maintenance module has five options, each described below.
• Clear data mart (aggregated datavalues)
The data mart is where DHIS 2 stores aggregated data produced during the export to data mart process. This function
clears the database table which contains aggregated data element values.
• Clear data mart (aggregated indicatorvalues)
The data mart is where DHIS 2 stores aggregated data produced during the export to data mart process. This function
clears the database table which contains aggregated indicator values.
• Clear zero values
This function removes zero data values from the database. Values registered for data elements with aggregation
operator average is not removed, as such values will be significant when aggregating the data, contrary to values
registered for data elements with aggregation operator sum. Reducing the number of data values will improve system
performance.
• Clear dataset completeness
This function removes aggregated dataset completeness values. This data is produced and used by report tables.
• Prune periods
This function removes all periods which have no registered data values. Reducing the number of periods will improve
system performance.
This table should be regenerated any time there have been any changes made to the organisational unit hierarchy.
This table provides information about the organisation unit hierarchy. It has one row for each organisation unit, one
column for each organisation unit level and the organisation unit identifiers for all parents in the lineage as values.
• Exclusive organisation unit groupset structure normalized (orgunitgroupsetstructure)
This table provides information about the which organisation units are member of which organisation unit group sets.
• Data element group set structure (_dataelementgroupsetstructure)
This table provides information about which data elements are members of which data element group sets. The table
has one row for each data element, one column for each data element group set and the names of the data element
group as values.
• Indicator group set structure (_indicatorgroupsetstructure)
This table provides information about which indicators are members of which indicator group sets. The table has
one row for each indicator, one column for each indicator group set and the names of the indicator group as values.
• Organisation unit group set structure (_organisationunitgroupsetstructure)
This table provides information about which organisation units are members of which organisation unit group sets.
The table has one row for each organisation unit, one column for each organisation unit group set and the names
of the organisation unit groups as values.
• Category structure (_categorystructure)
126
Data Administration SQL View
This table provides information about which data elements are members of which categories. The table has one row
for each data element, one column for each category and the names of the category options as values.
This table should be regenerated any time there have been changes made to the category combination names. It
contains readable names for the various combinations of categories.
The SQL View functionality of DHIS2 will store the SQL view definition internally, and then materialize the view
when requested.
The "Name" attribute of the SQL view will be used to determine the name of the table that DHIS2 will create when
the view is materialized by the user. The "Description" attribute allows one to provide some descriptive text about
what the SQL view actually does. Finally, the "SQL statement" should contain the SQL view definition. Only SQL
"SELECT" statements are allowed and certain sensitive tables (i.e. user information) are not accessible Press "Save"
to store the SQL view definition.
In order to utilize the SQL views, simply press the "Execute query" button from the "SQL View management
page. Once the process is completed, you will be informed that a table has been created. The name of the table will be
provided, and is composed from the "Description" attribute provided in the SQL view definition. Once the view has
127
Data Administration Organisation unit merge
Start by selecting the organisation unit to eliminate from the tree and click confirm. Then select the organisation unit
to keep and click confirm again. Finally, verify the selection and click merge.
In the sitation where data exist for the organisation unit to eliminate and not for the one to keep, the data will be
moved to the one to keep. When data exists for both organisation units, the data will be summarized and moved to
the one to keep. When data exists only for the one to keep, no action is taken. The organisation unit to eliminate will
eventually be deleted.
Start by selecting the data element to eliminate from the list and click confirm. Then select the data element to keep
and click confirm again. Finally, verify the selection and click merge.
In the situation where data exists for the data element to eliminate and not for the one to keep, the data will be moved
to the one to keep. When data exists for both data elements, the data which was updated last will be used. When data
exists only for the one to keep, no action will be taken. The data element to eliminate will eventually be deleted, except
when it is a multidimensional data element and has other data registered.
128
Data Administration Lock exceptions
The total number of each type of object is presented in a table, as well as a graph.
In the example above, a data lock exception would be created for "ab Abundant Life Organization" and "ab Seventh
Day Hospital" for the "Care and Support" dataset for "February 2012".
129
Data Administration Constant
18.15. Constant
Constants are static values which can be made available to users for use in data elements and indicators. Some
indicators, such as "Couple year protection rate" depend on constants which usually do not change over time. Simply
press "Add" and provide a name in the "Name" field and define it's value in the "Value" field. Press "Add" . The
constant will now be available to users for use in their expressions.
130
Data Administration Scheduling
To create a new attribute, assign it a name. Each attribute should have a unique name. Check the tick-box "Mandatory"
if the object should always have the dynamic attribute. Next, select which object (or objects) the attribute should
be assigned to. Lastly, select the value type. You can choose from "Text", "Yes/No", "Date", "Number", "Integer",
"Positive integer" and "Negative integer". If the value supplied for the attribute does not match the value type, an error
will result. Finally, click "Save" to save the attribute.
The dynamic attribute will now be present in the object which you assigned it to in the respective "Edit" screen of
each the object.
18.19. Scheduling
Data mart jobs can be automatically scheduled to run on regular intervals. Simply select the aggregation period types,
organisation unit group set aggregation level, and strategy to configure how the scheduled job should run. Pressing
"Start" will enable the scheduled job to run at a pre-determined time or can be run immediately by pressing "Execute
now"
131
Settings User settings
This strategy requries that those data mart tables are populated with the relevant data before the reports are requested.
This can preferrably be done using nightly scheduled jobs or manually through the data mart user interface. A
potential downside is that users will have to wait to the next day to view their reports after doing data entry. This
approach is the recommended for large online deployments where there are medium to high user concurrency.
Real-time means that aggregated data is generated and retrieved on-the-fly every time a report is requested. This
implies that there is no delay after doing data entry before the data is accessible in reports. Performance will not
scale adequately and hence this strategy is suitable for small, typically offline, deployments.
133
Settings System appearance settings
• Infrastructural data elements: This setting defines a data element group where the member data elements should
describe data about the infrastructure of organisation units. Examples of such infrastructural data elements could be
population, doctors, beds, internet connectivity and climate. This infrastructural data can currently be viewed in the
GIS module in the facility information sheet.
• Infrastructural period type: Sets the frequency for which the data elements in the infrastructural data elements group
are captured. This will typically be yearly. When viewing the infrastructual data you will be able to select the time
period of the data source.
• Feedback recipients: This setting defines a user group where the members will recieve all messages being sent
through the function for writing feedback in the dashboard module. This will typically be members of the super user
team who are ablet to support and answer questions coming from end-users.
• Completeness notification recipients: This setting defines a user group where the members will receive messages as
notifications when a form has been marked as complete. A typical use of this is when the forms are considered to
be an order of some commodity and a group of users want to be notified when such orders are placed.
• Omit indicator values with zero numerator value in data mart: Defines whether aggregated indicator values with
zero as the numerator value should be written to the indicator data mart table. Having such values written is required
for instance when connecting Excel pivot tables to the data mart as Excel will need the numerator data to correctly
aggregate up in the organisation unit hierarchy. If third-party tools like Excel are not used with the application this
will reduce the total number of values written to the data mart (which again will improve performance) and could
safely be set to omit.
• Disable data entry when data set completed: This setting defines whether the data entry forms should be disabled
and prevent from futher entry after they have been marked as complete.
• Data analysis std dev factor: Sets the number of standard deviations for use in the outlier analysis performed on
the captured data in the data entry module. The default value is 2; a high value will catch less outlier values than
a low value.
• Days after period end to qualify for timely data submission: Sets the number of days after the end of a period in
which a data entry form must be marked as complete in order to be considered timely. This affects the "reporting
rate" tool in the reporting module which lists forms marked as complete as well as marked as complete in time.
The default value is 15.
134
DHIS Mobile Introduction
20.1. Introduction
DHIS2 provides a range of options to allow data entry from mobile devices, including a dedicated GPRS/3G J2ME
client, a SMS based client, and a version of DHIS2 which has been optimized specifically for mobile browsers. Each
of these solutions will be described in detail in the following sections.
Collection of data in the field can be technically challenging and expensive. Mobile phone solutions has the potential
to significantly reduce the complexity of deploying a distributed data collection system. Using a simple Java client
installed on a mobile phone or a web browser which works on the mobile phone, field workers can report directly to
the DHIS2 database through their mobile device.
While mobile phone solutions have a great potential, it is also an area that can be difficult to "get right". Phones lack
processing power and have a small display, need to be charged and often makes the most sense in areas where mobile
network coverage is weak and patchy.
There are currently three main mobile solutions for DHIS2, and we continue to evolve these as well as look at other
possible solutions:
This module allows for data entry directly with the browser of the mobile device. A wide range of devices and
mobile browsers are supported including: Opera mini 3 & 4 (basic and advanced) - Opera mini 4, Nokia S40
mobiles ,Windows Phone 7, Window Mobile 6, Palm Pre, Blackberry (v5 and v6), Firefox mobile, iOS devices
(iPhone) and Android devices. This client does not have offline-support, and an active GPRS/3G connection is
required. It does not require a new application installation on the phone to support new features, but does require a
stable data connection for use. This solution is described in Sección 20.2, “Mobile browser based data entry”
• J2ME GPRS/3G client (one client for facility reporting and one for program tracking)
DHIS-mobile includes two separate J2ME clients supporting GPRS as a transport. One clients supports facility
aggregate reporting and the second client supports name-based program tracking. These clients are split into separate
applications to make deployment easier. Some health workers may have both applications installed on their phone.
Both of these clients support offline-storage of data. Sección 20.3, “J2ME GPRS/3G Client”
An active GPRS/3G connection is required in order to send data to the DHIS2 database, but data can be entered
offline and transmitted when a connection is present. This client is intended primarily for low-end devices which
support J2ME applications, although the offline-supports adds some memory requirements which limits the handset
selection. While the solution is primarily tested on Nokia phones, it also works on several other J2ME capable
handsets.
The facility reporting J2ME client is described in Sección 20.3.2, “J2ME GPRS 3G facility reporting client”
The name-based program tracking J2ME client is described in Sección 20.3.3, “J2ME GPRS 3G program reporting
client”
DHIS2 can also be used with an earlier J2ME-client that uses SMS as a transport. This client requires some manual
configuration on the server side, and is not supported by the standard build of DHIS2. The client is a custom built
J2ME mobile application. The SMS-support is separate from the SMS support used in other parts of DHIS2. The
solution has mainly been deployed using GSM modems, which are not good for high-volume applications, but can
also be used as a basis for a more reliable SMSC-connection. Using SMS as a transport would be an appropriate
solution where GPRS/3G is not available, but GSM coverage is available. Updating of forms to the client is not
supported at this point in time, and new data sets require a new application install. This solution is described in
Sección 20.4, “Legacy J2ME client with SMS transport”
135
DHIS Mobile Mobile browser based data entry
The DHIS-mobile team is working on a hybrid GPRS and SMS solution that is based on the newer J2ME-client and
the new SMS-support within the platform.
• SMS connection
When deploying SMS solutions, the quality and stability of the SMS link is critical for the overall service quality. For
small demos and tests, one can use phone modems to send and receive SMS, but our experience is that for any larger
installation, one should connect to the mobile operator SMS infrastructure (SMSC) via more robust interfaces. We
can either connect directly to the mobile operator SMSC (typically through a protocol called SMPP but sometimes
using HTTP or other protocols) or via a service provider called an SMS gateway provider.
When connecting directly to the operator, for receiving SMS, one has to connect to all the operators whose
subscribers should be able to send us messages. The typical scenario is that the operator assigns a short number (4
or 5 digits) to our service, and forward the messages sent to this number to our/your server. The best is to have all
operators assign the same number, but this isn't necessarily automatic.
If connecting via an SMS gateway company, they connect to all operators for us and typically put some additional
charge on the message price. Since there is a cost per number and per operator, this may sometimes still be price
efficient. SMS gateway providers typically connect via HTTP or SMPP.
The simplest and cheapest would be if you already have some SMS connection greement that we could leverage. I
would be useful to get this interface up and running as soon as possible, as this really might be the most complex
integration point (though in principle it really is quite simple to do when everything runs smoothly). If you do not
yet have such an agreement, we can help you in the process.
Note that some operators offer long numbers as a service in addition to short numbers. Then you get what looks like
a real mobile number, and it can be accessed by all other operators' customers also. This is often a very simple way
of offering SMS as you do not need to connect to all operators. But not many operators offer this.
It is quite relevant for the deployment if the users have subscriptions from a single operator or if many operators
are used. One operator is simpler.
- Aggregate Reporting: Entries for aggregate data with defined/assigned dataset by organisation-units
- Tracking:
• Find Person: find person based on Name, Phone Number or ID, and Organization unit.
• Activity Plan: Entries data for the persons by organisation-units, persons and programs/program-stages
• Person Registration: Registry a new person
• Anonymous: Entries for anonymous person based on programs
- Messages: Manage the messages and discussions from the server. Message reply is available. User can send feedback
message in Messages.
136
DHIS Mobile Getting started with mobile browser data
entry
- Reports: The output reports from the server.
- Settings: User-information (e.g: First-name, Surname, Phone number, E-mail) and the Interface language.
- Desktop version: navigate to the desktop version of DHIS2 for administration. This require a lot of resources from
the client mobile, for example: the sufficient memory to load the pages. Not recommended for the normal GPRS/3G/...
phones.
Click on the "Aggregate Reporting", then choose an Organisation Unit from the list and the list of the datasets will
be appeared for entering aggregate data. See the below example:
Step 3: Select a period (based on the period type of the chosen dataset) from the list
Step 5: Save the data entered after completing the data, choose the option for data completeness if having.
2.1 Find/Add Person : find person based on Name, Phone Number or ID, and Organization unit.
• Step 1: insert Name, Phone Number or ID and select the Organization Unit, then click Search.
To view all the program stages, click on the name of that program (Child Heath Program as the screen shot)
• Current Activity Plan: the list of the beneficiaries registered, enrolled, not yet finish/complete a/many program
and there is at least a program-stage open for data-entry.
+ Step 2: Choose a current and active program-stage for entering the data
You can also see the person's information (ID, gender, Date of Birth, and Blood Group) by clicking on the Details
(on top of the list appeared)
• All Activity Plan: the list of all beneficiaries registered, enrolled, not yet finish/complete a/many program.
• Single Event:
• Step 2: Enroll program for the person just been registered, then click "Enroll".
• Step 3: Entry required information for the chosen program, then click "Enroll"
3. Messages: Manage the messages and discussions from the server. Message reply is available.
The number showed is the unread messages. Click on that to view the list of the messages (the unread messages
are in bold and dark blue color):
Then you can pick up the message/topic for the discussions by leaving the reply message, see this example:
User can create and send a feedback to server in messages section. After sending out the new feedback, the message
(feedback) will be listed under "Messages" for further following up.
5. Settings: User-information (e.g: First-name, Surname, Phone number, E-mail) and the Interface language.
Here is the form for setting the user account/access and the interface language. Click on "SAVE" for completing
the settings, see the example below:
Here is the GUI of the desktop version (which require much memory for loading), not recommended for normal
mobile. The example with DHIS2 Demo (from [Link])
1.
After clicking on the "Namebased Data Entry", the next will guiding to the selections in the following steps:
+ "Current Activity Plan": the list of the beneficiaries registered, enrolled, not yet finish/complete a/many program
and there is at least a program-stage open for data-entry.
+ "All Activity Plan": the list of all beneficiaries registered, enrolled, not yet finish/complete a/many program.
Step 4: Choose a current and active program-stage for entering the data
(the screen-shot with an example with "16-24 months after birth" option)
You can also see the beneficiary's information (ID, gender, Date of Birth, and Blood Group) by clicking on the
Details (on top of the list appeared)
139
The details information of the chosen beneficiary:
DHIS Mobile Getting started with mobile browser data
entry
There necessary information: Full Name, Gender, Date of Birth (and Blood Group).
A message "Successfully Saved" will appear when the beneficiary is created/registered successfully.
Before enrolling a beneficiary to a program, the search function for a beneficiary is provided:
If the beneficiary is found, the result will be listed. The simply click on the beneficiary name for navigating to the
programs in which the beneficiary enrolled:
The below screen-shot example describes the beneficiary named "Nguyen Van A":
The list of the available programs for enrollment will be listed. Just click on the program for enrollment by specifying
the date of enrollment and the date of incident. See the example:
After clicking on the "ENROLL" button, if successful, the program enrolled will be listed under "Enrolled Programs
for" + <Name of the beneficiary>, see the example:
4. Messages: Manage the messages and discussions from the server. Message reply is available.
The number showed is the unread messages. Click on that to view the list of the messages (the unread messages
are in bold and dark blue color):
Then you can pick up the message/topic for the discussions by leaving the reply message, see this example:
140
DHIS Mobile J2ME GPRS/3G Client
(will be updated)
6. Settings: User-information (e.g: First-name, Surname, Phone number, E-mail) and the Interface language.
Here is the form for setting the user account/access and the interface language. Click on "SAVE" for completing
the settings, see the example below:
7. Feedback: the extra function for creating a new message to send to the server. The new created feedback from
this will be listed under "Messages"
After clicking on the "Feedback", there will be a form for editing/sending out a new message/discussion. See the
example below:
After sending out the new feedback, the message (feedback) will be listed under "Messages" for further following up.
Here is the GUI of the desktop version (which require much memory for loading), not recommended for normal
mobile. The example with DHIS2 Demo (from [Link])
The solution relies on the mobile phone having a data connection available (i.e. GPRS, Edge, 3G), over which it
communicates with a DHIS2 instance which must be publicly available on the internet, as any other web server. The
client application on the phone downloads the data entry forms to the phone from the server, and the forms can therefore
be updated without installing a new application. This is also a crucial feature for community reporting, which relies
on regularly downloading activity plans from the server.
• Facility reporting, for data entry and reporting of regular DHIS2 aggregate data,
• Activity reporting, for supporting individual activity reporting with the Community module.
141
DHIS Mobile J2ME GPRS 3G facility reporting client
required for communication between the server and the mobile phone, it is only required when initializing or updating
the mobile application and when sending reports to the server. The phone stores all entered data locally, so it it can
work fine with only temporary access to a data connection on a regular basis.
In order to configure the DHIS2 web-based mobile reporting, you should follow the following steps.
• Set the "Available for Mobile Reporting" flag for the data sets you want reported: Under Maintenance->DataSet-
>Edit mark the “Available for Mobile Reporting” check box and save.
• Create a user role for the mobile user. Select Maintenance->Users->User Role->Add new. Add a user role name
and description. Add the desired data sets for the role. The mobile user role will need to have at least privileges for
DHIS Web API. Save the user role by clicking "Save".
• Create a user which will be used by the client to login from Maintenance->Users->User ->Add new. Fill in all of
the required details, keeping in mind that the password must be at least 8 digits long, contain one capital letter,and
one digit. Assign the desired user role to the user which was created in the previous step.
Importante
Assign the user to exactly one organisation unit. Each mobile reporting client will need their own user name
and password.
Basically, server side setup for activity does not require any additional step. The mobile application use the same user
name and password as the web-based application. Make sure that the user is assigned to the correct organization unit.
In short, if a user is able to enter data for activity reporting in DHIS2 web-based application, he/she is able to download
and enter data in mobile application.
Tabla 20.1.
142
DHIS Mobile Mobile application setup
DataSet and DataElement are translated through web-based function. Default language on server is used on mobile in
cases requested language from mobile is not available.
[Link].1. Installation
+ Facility reporting
+ Program Tracking
[Link].2. Initialization
Initialization should be performed before the phones are delivered end-users. Given the large variation in possible
phone configurations, it is impossible to describe the exact steps which are required in order to enable the client on the
phone. However, for most phones, simply copying the DHIS Web Mobile client "JAR" file to the phone with a USB
cable or via Bluetooth is sufficient. Of course, GPRS/3G connectivity must be enabled. Contact your mobile service
provider for exact details on the configuration of the phones and networks.
143
DHIS Mobile Mobile application setup
Once the client has been installed ot the phone, an initialization process must occur by providing a user name, password
and server URL.
1. Logging into the server for the first time.
The first time the client logins to the server, or if the client is reinitialized, the username, password and server URL
must be entered.
If the client is unable to login, there could be several possible error messages which you see.
• Connection Not Found: The specified server URL is not correct. Check the server address, ensure that the server
is actually reachable, and try again.
• Invalid User Name Or Password: the username or password is incorrect
• Application not authorized to access restricted APIe : The server can be contacted, but the user does not have the
necessary permissions to access the mobile reporting module
2. Setting the PIN number: After the initial login process, a PIN number can be entered by the user. This will make
the login process much easier, as the user only has to remember the four digit pin number, as opposed to typing in
the user name and password each time. The PIN number can be preset if the phone is initialized prior to delivery,
or it can be set by the users themselves if they have been provided with usernames and passwords.
If the user has been configued to report on aggregate datasets, a list of appropriate datasets will be displayed. If the
user is responsible for community based reporting, the list of assigned activities is displayed.
Notes: If the Health Worker is responsible for both Facility Reporting and Community Reporting, DHIS server will
send all forms of both Facility Reporting and Community Reporting to mobile and on mobile, there will be a screen
to choose whether displaying Facility Reporting or Community Reporting.
Errors:
After selecting an aggregate dataset from the "Select report form" window, the user will need to select an appropriate
time period. A list of available time periods is automatically generated.
1. After the user has entered their PIN, they can select from a list of available datasets. Select the appropriate dataset
and press "Next".
2. Choosing periods: A list of available periods will be automatically displayed to the user. They can select the
appropriate period from the list.
3. Fill in values: After choosing the period, the form can be displayed in two modes, depending on the
• Form with sections
144
DHIS Mobile Mobile application setup
Each form section is displayed in a single screen with the name of the section in the title window.
All fields are displayed on one screen with the title that is the name of DataSet
The user simply fills in each data element with the appopriate value.
After finishing data entry, the user can choose to save the data locally on the phone or to upload the data directly
to the DHIS2 server.
If the user saves the data form, they can edit the form at a later point in time if they need [Link] selecting a period
once again, the period will be marked as "Saved' as seen in the next screen shot.
If the user selects "Complete", and the data entry form is not complete, the user will be asked if they are certain they
wish to submit the form as incomplete. Once the form has been submitted, a message should be displayed informing
the user that the transmisison was successful.
[Link].2. Notes
1. Period list:
Periods marked with an asterisk (*) is the period that is completed or saved, depending on the status of the data entry.
All periods that are not in period list are considered old and will be deleted automatically.
2. Storing values duration
The number of saved forms on mobile are limited only by the effective amount of storage of the moble device.
Forms are saved for limited period only, depending on the frequency of collection of the particular dataset.
• Daily Forms: 2 months (current and previous month)
• Weekly Forms: 4 weeks (current and 3 previous week)
• Monthly Forms: 2 months (current and previous month)
• Quarterly Forms: 2 quarters (current and previous quarter)
• Yearly Forms: 2 years (current and previous year)
3. Completed forms - Uneditable forms
If the form has been completed, the user can view the form on their phone, but they cannot make any subsequent
edits to the form. Each field is greyed out and inactive for editing.
4. Re-Edit completed forms
If the user wishes to edit data which has already been submitted to the server, they can do so by pressing the "Edit"
button. They are allowed to do this assuming that the dataset has not been locked for the period in question. If
they attempt to upload the data, the user will be informed that the dataset has been locked, and it is not possible
to upload the data.
5. Update Forms:
This function is used to synchronize the forms on mobile and on server. The process is automatically triggered after
entering PIN number.
145
DHIS Mobile Mobile application setup
Note: Checking and downloading updated forms process run in background. After finished, prompt is displayed to
ask user whether refresh form list or stay where they are.
6. Multi-Language Support:
This function help user to choose language of mobile's GUI (graphical user interface) and content's language
(Forms).
Default language of first login is English. Change language in Setting menu will affect both interface and content.
Multi-Language Interface: In Setting menu, there are list of supported language (downloaded from server).
Language of GUI is only changed after restart application.
Multi-Language Content (forms): Form's language is change after click "Save". In case there are many forms, it
take several minutes to save setting.
[Link].3. Troubleshooting
• Data has been entered on the phone but does not appear on the server
This usually occurs when users enter data on the phone, but cannot send it to the server. This may be because of the
configuration of the phone, lack of credit on the phone, or lack of coverage. Usually an error message is displayed
as shown below.
Users should be informed that if they see this error, then it means that their data has not been transmitted.
• Current Activity Plan: Contain all new activities that need to be completed.
• Sent Activity Plan: Contain all the activities that have been completed and sent to server. This list is for review
only.
2. Choose Village or Location
From Activity main menu, select “Current Activity Plan”. You will be navigated to “Grampanchayat Name” screen
where you can select the village. Use the “Up” or “Down” button on your mobile phone to focus on a village. Use
“Select” button to select a village.
3. Choose Beneficiary
In a village, beneficiary name will be display in a list. User can use the "Select" button to view the activities of
the selected name.
146
DHIS Mobile Mobile application setup
4. Choose Activity
Each Activity is represented by the name of the Beneficiary. Select the name of the beneficiary you want to view.
Note that the name start with “*” means that this is a late Activity.
5. Beneficiary Detail
Select the "Detail" command on the left of the activity screen , a Beneficiary Detail screen will be displayed. The
detail screen may contain personal information and some additional information of the Beneficiary (depends on the
setting from server). Select “OK” to go back to activity screen.
6. Fill in values (Entry screen)
On the top of the screen is the name of the Program Stage. Below is the form, a form include many fields for user to
input data. Focus on a field by press the “Up” or “Down” button on your mobile phone. After the field is focused,
you can start entering data. Press the “Up” or “Down” button to go to the next field. At the bottom is the menu with
"Save", "Complete" and "Back" command.
*Notes:
• For the field with Yes/No value: press the select button on a focused field to open the popup menu then you can
select “Yes”, “No” or “Select Option”. Select “Select Option” means that you have no data for that field.
• For the field with pre-suggested values: press the select button to open the popup menu then you can choose one
of the options. Select “Select Option” means that you have no data for that field..
• For date-type value:
- If server Date is available, application will take server Date as default value.
- If server Date is not available, date filed will be leave blank for user to input manually.
7. Saving/Completing.
After finish step [4], you can choose either “Save” or “Complete” to finish your work.
• Save: you may want to use this option if you have not finished your work yet and you want to store the data
to continue later.
• Select “Menu” or “Option” at the bottom of your screen (The name “Menu” or “Option” depend on your
mobile phone) and then select “Save”. A success message (“Form Saved”) will be display. Select “Done” or
“Dismiss” to go back to Entry Screen.
• Your data will not be sent to server. It is stored in the Record Store of your mobile phone. To see the data
again. Go back to step [2] and select the name of the Beneficiary that you have just entered data. Repeat step
[3] and [4]. If you feel that you are ready to send data to server. Select “Complete”.
• Complete: you may use this option when you fill the entire field on the form and make sure that your data is
correct.
• Select “Menu” or “Option” at the bottom of your screen (The name “Menu” or “Option” depend on your mobile
phone) and then select “Complete”.
• If you did not fill all the field in the form, a warning message will be display “x fields is not filled. Do you
147
want to complete anyway?” With x is the number of empty field(s). Select “Yes” if you want to send data to
server, select “No”, if you do not want to send and go back to Entry screen again.
DHIS Mobile Legacy J2ME client with SMS transport
• After select “Yes”, a security message will appear and inform that the application will connect to server. Select
“Yes” to give the permission for the application to do so.
• A finished activity (activity that is completed and data is send to server) will be move to "Completed Activity"
and it will be display as "Uneditable Form". User can go to "Completed Activity" at "Activity Main Menu"
to review.
8. Sent Activities
From "Activity Main Menu" screen, select "Sent Activities" to go to the list of all activities you sent to server. The
structure of this screen is exactly the same as "Activity Plan List". Select "Detail" to see the detail of the activity
of select "Select" to go to the "Uneditable Screen".
In this screen, user can only review the form they sent to server. No edit or change is allowed. Select "Back" to
go back to "Sent Activities" screen.
After some days, weeks or months, new Activities may automatically generated from server, some Program Stage Data
Element may be removed from original form. In order to update these new changes, we have a "Automatic Update
Activity Plan and Program" function.
1. This function is completely automatic. After user start the application and enter PIN, a requested to be sent to server
to update new data.
2. While this function perform, the "Current Activity Plan" is temporarily blocked and it will be open again as soon
as the updating process complete.
3. This function update both "Activity Plan" and "Program Form".
“Update Completed” message will appear on the screen after the update process finish. Select ”Dismiss” to close
this window and go back to Activity Main Menu. Your Current Activity Plan is now updated.
4. When a data element removed due to the changing of form structure, all data value that related to that data element
will be hiding also. You are no longer seeing the value in the form.
By default, DHIS2 does not ship with the DHIS SMS Mobile web module. You will need to build in these modules
yourself. You also need to modify the client side application with your own data elements.
148
DHIS Mobile Install the GSM modem
<dependency>
<groupId>[Link]</groupId>
<artifactId>dhis-web-mobile</artifactId>
<version>${version}</version>
<type>war</type>
</dependency>
• Build the portal ( mvn clean install in the dhis-web-portal folder)
• Copy the [Link] file from dhis-web-portal\target to the tomcat\webapps folder. Rename it if you want.
Plug in your modem and install the drivers. You might have to use the manufacturer's provided drivers from a CD
or their web page. You might need administrator privileges to do this. If you still can't do it, try starting Windows
in Safe Mode.
• [Link]
Copy it to your java\jreX\lib\ext folder. If you've got multiple installations of JRE, you can find the path to the
installation used by DHIS 2 by right clicking the Monitor Tomcat icon in the system tray, then Configure -> Java.
• [Link]
Note: You might need administrator privileges to do this. If you still can't do it, try starting Windows in Safe Mode.
• [Link]
Copy it to your DHIS2_HOME folder (the folder where [Link] is located). The settings in this file can
also be modified from the Settings page in the mobile module in DHIS 2.
In this file the manufacturer and the model of the GSM modem are specified. Also, make sure the PIN code for the
SIM card in the GSM modem is turned off, and set [Link]=0000 in the [Link], or use the Settings
page in the mobile module in DHIS 2 to set the pin to 0000.
The port of the modem also needs to be specified in this file. After the drivers are successfully installed and the
modem is installed in a usb port, you can find the port of the modem by opening Device Manager, locate your
modem and right click on it, click on Properties and navigate to the Modem tab. There you'll see which port is
assigned to the modem.
Important: Note that if you install the modem into another usb port another time, the port will change, and you will
have to update the settings. If you for some reason need to take the modem out of your computer, make sure you'll
install it in the same usb port as last time, or else you'll have to update the [Link] file.
• [Link]
Copy it to your DHIS2_HOME\mi folder. If you have not yet deployed your latest build of DHIS2, you'll have to
create the mi folder manually.
This file specifies which data elements are to be imported. There's one line for each different mobile application
in use. The lines start with a mobile application's id, then followed by comma separated data element ids and their
categoryoptioncombo ids. The lines will be on the form
149
DHIS Mobile Register users
E.g.
Note: If the same mobile application is installed on several phones, the id for each application is the same! The
[Link] file should thus only have one line, starting with 1 = .
The phone number must include the regular phone number as well as the country code without + or 00 . E.g. for
a Norwegian number, having the country code 47 and phone number 98765432 , the phone number to store is
4798765432 .
Once the mobile application is installed on the phone, open it and navigate to the last page in the application. Select
settings, and enter the number of the SIM card in the GSM modem. This works both with and without country code.
If there are several GSM modems installed on several computers running DHIS 2 and you want to report to all of
these, you can enter the numbers of the SIM cards installed in these GSM modems as well in the remaining fields in
your mobile application. When clicking send, the application will now send the registered data to all the registered
numbers at the same time.
If having no gateway registered, clicking on the "Reload Configuration" or "Start SMS Service" will have no use and
a warning message appeared, see this screen-shot example:
150
DHIS Mobile Using the system
Then fill in the information for the gateway (the screen-shot example with BulkSMS Gateway):
After adding successfully the gateway, the service will automatically started.
At this moment (DHIS version 2.8), this is the one-way sending out the SMS messages from the servers to the recipients
(with mobile phone numbers).
See the below example form to send out the messages to the recipients' numbers individuals or mobile number of
registered Organisation Unit or by mobile number of the users assigned with Organisation Unit.
Below is an example screen-shot with listing of phone numbers (using ";" between the numbers in the list):
When SMSs are sent from the phones while the SMS Service is running, the messages will be processed automatically,
and the data will automatically be imported and stored in the database.
If SMSs are sent from the phones to the SIM card in the GSM modem while the SMS Service is inactive, the messages
will be stored as xml files in the folder DHIS2_HOME\mi\pending short time after the service is started. On the
Receive Data and Import page it will say how many SMSs are pending. These can be imported by pressing the "Import
All Pending" button.
151
Data dimensions in DHIS2 The core building blocks describing the data
Tabla 21.1.
Given the example of Measles vaccination, if you want to know whether these vaccines were given at the facility
(fixed) or out in the community as part of the outreach services then you could add a dimension called e.g. "Place of
service" with the two possible options "Fixed" and "Outreach". Then all data collected on measles immunisation would
have to be disaggregated along these to options. In addition to this you might be interested in knowing how many of
these children who were under 1 year or above 1 year of age. If so you can add an Age dimension to the data element
with the two possible options "<1 y" and ">1 y". This implies further detail on the data collection process. You can also
apply both categories Place of service and Age and combine these into a data element category combination e.g. called
"EPI disaggregation" and thereby you would be able to look at 4 different more detailed values in stead of only 1 as
in the example above for the data element "Measles doses given": 1) "Fixed and <1 y, 2) Fixed and >1 y, 3) Outreach
and <1 y, and 4) Outreach and >1 y. This adds complexity to how data is collected by the health facilities, but at the
same time opens up for new possibilities of detailed data analysis of Measles immunisation.
Tabla 21.2. Example of detailed storage of data values when using data element categories "Place of Service"
and "Age" (simplified for readability compared to the actual database table)
153
Data dimensions in DHIS2 Data element group sets
Indicators can be grouped into indicator groups and further into indicator group sets (dimensions) in exactly the same
way as data elements.
Tabla 21.3.
154
Data dimensions in DHIS2 Organisation unit group sets and groups
that is possible to use in data analysis, and the organisational levels define the available levels of aggregation along
a geographical dimension.
[Link]. Alternative orgunit hierarchies - advanced use of group sets and groups
A more advanced use of orgunit group sets and groups is to create alternative hierarchies e.g. use administrative borders
from other ministries. In Sierra Leone that could mean an alternative hierarchy of 1:MoHS, 2:Districts, and 3: Local
councils, instead of the 4 level hierarchy with chiefdoms and PHUs. E.g. if all PHUs where linked to a specific local
council it would be possible to look at data aggregated by local council instead of chiefdom. Then you would first need
to create a group set called "Local council" and then create one orgunit group for every local council, and finally link
all PHUs to their corresponding local council group.
Tabla 21.4.
It is also recommended to have one group set that is used for the major organising of all data in e.g. a pivot table, e.g
use health programs or other larger themes for data elements or indiactors that together cover all the data. That will
provide a nicely organised overview of all your raw data or indicator data.
The resource table gives all groupsets as columns with groups as rows, and 1 DE per row. This means that all groupsets
are joined in when e.g. creating a view to a pivot table. Resource tables have to be generated from the Mainteance-
>Data Administration->Resource Table window, and more information on this is available in a later chapter called
Data Administration in DHIS2 or from the inline help text in that window.
155
Data dimensions in DHIS2 Period Types
As a rule of thumb all organisation units should collect the same data using the same frequency or periodicity, so first
of all the periods play an important role in standardising data collection across the country. A data entry form therefore
needs to know its period type to make sure data is always collected according to the correct and same periodicity
across the country.
It is possible however to collect the same data elements using different period types by assigning the same data elements
to multiple data sets with different period types, however then it becomes crucial to make sure no orgunit is collecting
data using both data sets/period types as that would create overlap and duplication of data values. If set up correctly the
aggregation service in DHIS2 (through datamart and report tables) will aggregate the data together, e.g. the monthly
data from one part of the country woth quarterly data from another part of the country into a national quarterly report.
For simplicicty and to avoid data duplication we stronly advice to use the same period type for all orgunits for the
same data elements when possible.
A slightly more advanced use case is when you want to make a monthly summary report for immunisation and want
to look at the data from the current (reporting) month together with a cumulative value for the year so far. The relative
period called "So far this year" provides such a cumulative value relative to the reporting month selecting when running
the report. Other relative periods are the last 3,6, 9 or 12 months periods which are cumulative values calculated back
from the selected reporting month. If you want to create a report with data aggregated by quarters (the ones that have
passed so far in the year) you can select "Individual quarters this year". Other relative periods are described under
the reporting table section of the manual. Common for all the relative periods is that they are relative to a selected
reporting month. Even quarterly or annual reports need to know their reporting month to derive the year, the quarter
and so on. The reporting month then becomes one of the report parameters the users have to select when running a
report based on relative periods.
Tabla 21.5.
Organisation Unit Data Element Reporting month So far this year Reporting month
name
Gerehun CHC Measles doses given 15 167 Oct-09
Tugbebu CHP Measles doses given 17 155 Oct-09
156
Data dimensions in DHIS2 Data collection vs. data analysis
Most of the data collected on a routinely basis should be aggregated by summing up the months or weeks, e.g. you
create a quarterly report on Measles immunisation by summing up the three monthly values for "Measles doses given".
Other types of data that are more permanently valid over time like "Number of staff in the PHU" or an annual population
estimate of "Population under 1 year" need to be aggregated differently. These values are static for all months as long
as there are valid data. E.g. the estimated population under 1 calculated from the census data is the same for all months
in a year, or the number of nurses working in a PHU is the same for every month in the 6 months period the number
is reported for.
This difference e.g. becomes important when calculating an annual value for the indicator morbidity service burden
for a PHU. The monthly headcounts are summed up for the 12 months to get the annual headcount while the number
of staff for the PHU is calculated as the average of the two 6-monthly values reported through the 6-monthly staff
report. So in this example the data element "OPD heahcount" would have the aggregation operator "sum" and the data
element "Number of staff" would have it set to "average".
Another important feature of average data elements is the validity period concept. Average data values are standing
values for any period type within the borders of the period they are registered for. E.g. an annual population estimate
following the calendar year will have the same value for any period that falls within that year no matter what the period
type. E.g. if the population under 1 for a Tugbebu CHP is 250 for the year of 2009 that means that the value will be 250
for Jan-09, for Q3-09, for Week 12 of 2009 and for any period within 2009. This has implications for how e.g coverage
indicators are calculated as the full annual population will be used as denominator value even when doing monthly
reports. If you want to look at an estimated annual coverage value for a given month then you will have the option of
setting the indicator to "Annualised" which means that a monthly coverage value will be multiplied by 12, a quarterly
value by 4 etc. The annualised indicator feature can therefore be used to mimic the use of monthly population estimates.
Another benefit of only linking data to data elements and not to forms is the flexibility of creating indicators and
validation rules based on data elements, and also in providing any kind of output report (in pivot tables, charts, maps
etc) that can combine data individually or across forms, e.g. to correlate data from different health programs. Due to
this flexibility of enabling integration of data from various programs (forms) and sources (routine and semi permanent
(population, staff, equipment)) a DHIS database is used as an integrated data repository for many or all parts of the
aggregated data in a larger HIS. The figure below illustrates this flexibility.
157
Data dimensions in DHIS2 Some more examples
This output table combines the two data element categories HIV_Age and Gender with the data element group set ART
Group. The group enables subtotals for staging and entry points summing up the data elements in that group. Subtotals
for either age groups and gender would be other possible columns to easily include here.
Using the example of morbidity and mortality data, a pivot table can show how the dimensions can be used to view
data for different aggregation levels.
The completely aggregated number is viewed when none of the pivot fields are arranged in the table area, as column
or row fields, but are listed above the table itself as page field (filter).
Here we have selected to look at the Morbidity total. The various data elements on morbidity have been ordered into
the main_de_groups Morbidity (we will get back to Mortality later). The fields above the table itself are all set to "All",
meaning that the totals in the table will contain data from all Countries, Districts, Chiefdom, ou_type, year, months,
the various categories as listed in the red fields, and all data elements in the Morbidity group.
As we have seen, this is not a very useful representation, as Morbidity is organized into new cases, follow-ups, referrals,
and then again in age groups. Also, we do not see the various diagnoses. The first step is to include the diagnoses
field (which is a group set), which is done by dragging the "diagnosis" field down to be a row field, as shown in the
figure below, and to add the group set called "morbiditymortality" in the column field to display new cases, follow-
up, and referrals.
They both show the same data (some of teh rows have been cut in the screenshot due to image size), albeit in a different
way.
• The "dataelement" field, used in the bottom figure, displays each diagnosis as three elements; one follow-up, one
new, and one referrals. This is the way the data elements have been defined in DHIS, as this makes sense for
aggregation. You would not like to aggregate follow-ups and new, thus these have not been made as categories, the
whole point of is to ease aggregation and disaggregation.
• The "diagnosis" group set has instead been made to lump these three (follow-up, new, referrals) together, which
can then be split with another group set, namely the one called "morbiditymortality". This allows us to organize
the data as in the first of the two figures, where we have the single diagnosis per row, and the groups new, follow-
up, referrals as rows.
158
Data dimensions in DHIS2 From paper for to multidimensional datasets
- lessons learned
The idea of using group sets is that you can combine, in any set, different data elements. Thus, if we add the
mortality data (by checking it from the drop-down menu of the main_de_groups field, and moving this field out of
the table) we can see also the deaths, since the mortality data elements have been included as a "death" group in the
"morbiditymortality" group set. The result is shown below.
The result is a much more user-friendly pivot table. Now, another figure shows the relationship between the group sets
and elements (these are fake data values).
This small detail of the pivot table show how the actual data elements link to the group sets:
• The four data elements, as defined in DHIS, are Measles death, Measles follow-up, Measles new, and Measles
referrals
• They all belong to the group set "diagnosis", where they have been lumped together in the group Measles
• The group set "morbiditymortality" contains the groups New cases, Follow-up, Referrals, and Deaths.
• Only the data element Measles deaths has data related to the group Deaths, thus this is where the data value (20) is
shown, at the upper right corner. The same for Measles new; the value (224) is shown at the intersection of the data
element Measles new and the group New cases (in the group set morbiditymortality)
• All the intersections where the data element does not link with the groups in morbiditymortality are left blank. Thus
in this case we would get a nice table if we excluded the dataelement from the table, and just had diagnosis and the
group set morbiditymortality, as in the figure shown earlier
Now lets see how the data element categories can be used. In the data entry form for Morbidity the new cases and
follow-ups use one age category, the referral data another,, and the mortality data a third age breakup, so these are
available as three individual age group fields in the pivot tables called morbidity_age, referrals_age and mortality_age.
It doesn't make sense to use these while looking at these data together (as in the examples above), but e.g. if
we only want to look at the only the new cases we can put the MobidityMortalityGroups field back up as a page field
and there select the New cases group as a filter. Then we can drag the Morbidity_age field down to the column area
and we get the following view:
The following table illustrates the benefits of reusing data element categories across datasets and catecorycombinations.
The VCCT, ART and PMTCT data are collected in three different datasets, the first two with both gender and age
breakdown, and the PMTCT only age (gender is given). All three share the same age groups and therefore it is possible
to viev data elements from all these three datasets in the same table and use the age dimension. In the previous example
with morbidity and mortality data this was not possible since new cases, referrals and deaths all have different age
groups.
In the table below PMTCT data has been removed from the table and the gender category added to the column area
so that you can analyse the data for VCCT and ART by age and gender. An optional subtotal for gender has also been
added, as well as a grand total for all age and gender.
159
Data dimensions in DHIS2 From tables to category combinations -
designing multidimensional data sets
Another important thing to have in mind while designing datasets is that the dataset and the corresponding data entry
form (which is a dataset with layout) is a data collection tool and not a report or analysis tool. There are other far more
sophisticated tools for data output and reporting in DHIS than the data entry forms. Paper forms are often designed with
both data collection and reporting in mind and therefore you might see things such as cumulative values (in addition to
the monthly values), repetition of annual data (the same population data reported every month) or even indicator values
such as coverage rates in the same form as the monthly raw data. When you store the raw data in DHIS every month
and have all the processing power you need within the computerised tool there is no need (in fact it would be stupid
and most likely cause inconsistency) to register manually calculated values such as the ones mentioned above. You
only want to capture the raw data in your datasets/forms and leave the calculations to the computer, and presentation
of such values to the reporting tools in DHIS.
1. Identify the different tables (or sub datasets) in the paper form that share the same dimensions
2. For each table identify the dimensions that describe the data fields
3. Identify the key dimension, the one that makes most sense to look at in isolation (when the others are collapsed,
summed up). This is your data element dimension, the starting point and core of your multidimensional model (sub
dataset). The data element dimension can be a merger of two or more dimensions if that makes more sense for data
analysis. The key is to identify which total that makes most sense to look at alone when the other dimensions are
collapsed.
4. For all other/additional dimensions identify their options, and come up with explanatory names for dimensions and
their options.
5. Each of these additional dimensions will be a data element category and their options will be category options.
6. Combine all categories for each sub dataset into one category combination and assign this to all the data elements
in your table (or sub dataset if you like).
7. When you are done with all the tables (sub datasets), create a new dataset and add all the data elements you have
identified (in the whole paper form) to that dataset.
8. Your dataset will then consist of a set of data elements that are linked to one or more category combinations.
160
Data dimensions in DHIS2 From tables to category combinations -
designing multidimensional data sets
In order to better explain the approach and the possibilities we present an example paper form and will walk through
it step by step and design data elements, categories, category options and category combinations.
This form has many tables and each of them potentially represent a data element category combination (from now on
referred to as a catcombo). As such there is no restriction on a dataset to only have one set of dimensions or catcombo,
it can have m For any and as we see above this is necessary as the dimensions are very different from table to table.
We will walk through this table by table and discuss how to represent it in the DHIS.
ANC table. This table in the top left corner is one the simpler ones in this form. It has two dimensions, the first column
with the ANC activity or service (1st visit, IPT 2nd dose etc) and the 2nd and 3rd column which represent the place
where the service was given with the two options fixed and outreach. Since the ANC service is the key phenomena to
analyse here and often there is a need for looking at e.g. total of ANC 1st visits no matter where (fixed+outreach) it
makes a lot of sense to use this dimension as the data element dimension. So all items on the first column from 1st ANC
visit to 2nd IPT dose given by TBA are represented as individual data elements. The place dimension is represented
as a data element category (from now on referred to as category) with the name "fixed/outreach" with the two data
element category options (from now on catoptions) "fixed" and "outreach". There is no other dimension here so we
add a new catcombo with the name "Fixed/Outreach" with one category "Fixed/Outreach". Strictly speaking there is
another dimension in this table, and that is the at PHU or by TBA dimension which is repeated for the two doses of
IPT, but since none of the other ANC services listed have this dimension it does not seem like a good idea to separate
out two data elements from this table and give them another catcombo with both fixed/outreach and at PHU/by TBA.
reusing the same catcombo for all the ANC services makes more sense since it will be easier to look at these together
in reports etc. and also the fact that there is not much to loose by repeating the at PHU or by TBA information as part
of the data element name when it is only for four data elements in a table of totally 11 data elements.
DELIVERY table. This table is more tricky as it has a lot of information and you can see that not all the rows have
the same columns (some columns are merged and a one field is grayed out/disabled.). If we start by looking at the first
column "Deliveries assisted by" that seems to be one dimension, but only down to the "Untrained TBA" row, as the
remaining three rows are not related to who assisted the delivery at all. Another dimension is the place of delivery,
either In PHU or in Community as stated on the top column headings. These deliveries are further split into the outcome
of the delivery, whether it is a live or still birth, which seems to be another dimension. So if we disregard the three
bottom rows for a moment there seems to be 3 dimensions here, 1) assisted by, 2) place of delivery, and 3) delivery
outcome. The key decision to make is what to use as the data element, the main dimension, the total that you will
most often use and want easily available in reports and data analysis. We ended up using the outcome dimension as
total live births is a very commonly used value in many indicators (maternal mortality ratio, births attended by skilled
health personnel etc.). In this case the Assisted By dimension could also have been used without any problem, but the
added value of easily getting the total live births information was the decisive point for us. This means that from this
table (or subtable of row 1 to 6) there are only two data elements; "Live births" and "Still births". Then there are two
more dimensions, the "PHU/Community" with its two options and a "Births attended by" with options ("MCH Aides",
"SECHN", "Midwives", "CHO", "Trained TBA", "Untrained TBA"). These two categories make up the catcombo
"Births" which is assigned to the two data elements "Live births" and "Still births". Considering the final three rows
of the delivery table we can see that "Complicated Deliveries" does not have the assisted by dimension, but has the
place and the outcome. "Low birth weight" also does not have the assisted by dimension and not the outcome either.
The LLITN given after delivery does not have any additional dimension at all. Since not any of the three rows can
share catcombo with any other row we decided to represent these fields as so called flat data elements, meaning data
elements with no categories at all, and simply adding the additional information from the column headings to the data
element name, and therefore ended up with the following data elements with the default (same as none) catcombo;
"Complicated deliveries in PHU live birth", "Complicated deliveries in PHU still births", "Complicated deliveries in
community live birth", "Complicated deliveries in community still births", "Low birth weight in PHU", "Low birth
weight in community", and "LLITN given after delivery".
POST-NATAL CARE table This table is simple and we used the same approach as for the ANC table. 3 data elements
listed in the first column and then link these to the catcombo called "fixed/outreach". Reusing the same category fixed/
outreach for these data elements enables analysis on fixed/outreach together with ANC data and other data using the
same category.
TT table This is a bit more tricky. We decided to use "TT1", "TT2" ... "TT5" as data elements which makes it easy
to get the total of each one of these. There is fixed/outreach dimensio here, but there is also the In school place that
161
Data dimensions in DHIS2 From tables to category combinations -
designing multidimensional data sets
is only applied to the Non-Pregnant, or more correctly to any of the two as the school immunisation is done whether
the girls are pregnant or not. We consulted the program people behind the form and found out that it would be ok to
register all school TT immunisations as non-pregnant, which simplifies the model a bit since we can reuse the "TT1" to
"TT5" data elements. So we ended up with a new category called "TT place" with the three options (Fixed, Outreach,
In School), and another category called "Pregnant/Non-pregnant" with two options. The new catcombo "TT" is then a
combination of these two and applied to the 5 TT data elements. Since we agreed to put all In Schools immunisations
under Non-pregnant in means that the combination of options (Pregnant+In School) will never be used in any data
entry form, and hence become a passibe optioncombo, which is ok. As long as the form is custom designed then you
can choose which combinations of options to use or not, and therefore it is not a problem to have such passive or unused
catoptions. Having school as one option in the TT place category simplifies the model and therefore we thought it was
worth it. The alternative would be to create 5 more data elements for "TT1 in school" ... "TT5 in school", but then it
would be a bit confusing to add these together with the "TT1" ..."TT5" plus TT catcombo. Having school as a place in
the TT place category makes it a lot easier to get the total of TT1.. TT5 vaccines given, which are the most important
numbers and most often used values for data analysis.
Complications of early and late pregnancy and labour tables We treat these two tables as one, and will explain
why. These two tables are a bit confusing and not the best deisgn. The major data coming out of these tables are the
pregnancy complications and the maternal deaths. These are the major things for data analysis. And then there is further
detail on the cause of the complication or death (the first column in both tables), as well as a place of death (in PHU or
community), and a outcome of the complication (when its not a death) that can be either Managed at PHU or Referred.
We decided to create two data elements for these two tables; "Pregnancy complications", and "Maternal Deaths", and
two category combinations, one for each of the data elements. For the Pregnancy Complications data element there
are two additional dimensions, the cause of the complication (the combined list of the first column in the two tables)
and the outcome (managed at PHU or Referred), so these are the categories and options that make up that category
combination. For the "Maternal deaths" data element the same category with the different causes are used and then
another category for the place of death (in PHU or In community). This way the two data elements can share one
category and it will be easy to derive the total number of pregnancy complications and maternal deaths. While the list of
complications on the paper form is divided into two (early and late/labour) you can see that e.g. the malaria in 2nd and
3rd trimester are listed under early, but in fact are for a later phase of the pregnancy. There is no clear divide between
early and late complications in the form, and therefore we gave up trying to make this distinction in the database.
Family Planning Services table This table has 2 dimensions, the family planning method (contraceptive) and whether
the client is new or continuing. We ended up with one data element only "Family planning clients" and then added
two categories "FP method" with all the contraceptives as options, and another category "FP client type" with new or
continuing as options. This way it will be easy to get the total number of family planning clients which is the major value
to look at in data analysis, and from there you can easily get the details on method or how many new clients there are.
162
DHIS TRACKER Introduction
22.1. Introduction
For example, the aggregate report will show that 300 pregnant women registered for ANC and 120 women given IFA
tablets or 90 women given TT injection. In an aggregate system, it is not possible to ascertain that if a particular pregnant
woman registered for ANC, has also been given IFA and TT, as data only shows aggregate numbers. To understand the
quality of services given to each pregnant woman registered for ANC, immunization cycle of each child or treatment of
each leprosy person, etc. it is important that treatment information of each person is maintained as an individual case.
The DHIS tracker module ( also known as DHIS Community Module ) is an integrated module in DHIS2, built
to support community health systems and facilitate a smooth integration between the community health data and
aggregated data management.
The module supports management of community health programs, such as child immunization, maternal health and
e.g. allows tracking of individuals enrolled in various programs and activity planning for community health workers.
The data in primary registers at sub-center level is recorded and maintained by individual data or treatment cases, and
sent up-wards as aggregate reports.
163
DHIS TRACKER User guide
The process starts with the person registration. Then she/he can be enrolled in the program for which registered. The
application will guide the health provider the services required for her/him through activity plan and the services from
time to time can be updated into his/her profile. The working process is described in steps depicted in picture below -
Nota
For programs without registration (e.g. In-Patient Morbidity and Mortality program), users only need to input
treatment case and then export reports.
The system supports for creating identifier type for the registration, such as Passport number, PAN, driving license,
health identifier, UID. However, a system unique identifier is created automatically after registration and used to track
the person.
For identification a person, the health worker is first identified through any of the identifiers or name of patient in the
system and the person is identified through identifiers for receiving a health service. After identification, the individual
case history can be viewed or a treatment case can be updated for the new visit that they have received.
[Link]. Reports
The module provides two functions for viewing the reports to get an overview of the services provided for a program
or a program stage.
When the ‘Persons and Programs’ options is chosen from the main Maintenance menu, the following screen appears
-
2. Individual records module - Support main functions for person registration, tracking information and individual
reports.
When the ‘Individual Records’ options is chosen from the main Services menu, the following screen appears -
164
DHIS TRACKER Persons and Programs maintenance
Each of the options for the maintenance will be described in the following section. The options for the maintenance
will be described in the following section -
• Person Attribute
Create, modify and view Person attributes. An attribute can be used to register extra information for a Person.
• Person Attribute Group
Create, modify and view Person attribute groups. Groups makes it more convenient to add attributes to a Person.
• Person Identifier Type
Create, modify and view Person identifier types. Any type and multiple identifiers can be registered.
• Relationship Type
Create, modify and view relationship types. A relationship is typically wife and husband or mother and child.
• Program
Create, modify and view programs. A program has program stages and defines which actions should be taken at
each stage.
• Person Aggregation Query Builder
Define formulas, expressions, rules for aggregation data from tracker to aggregation module
• Validation Criteria
Create, modify and view validation criteria. A criteria is used for validation of Person data.
• Schedule Message
Configure message reminders to be automatically sent to enrolled persons XX days before scheduled appointments
and/or XX days after a missed visit.
• Schedule Automated Aggregation
Schedule an automated person aggregation process, e.g. to run all pre-defined aggregation queries every midnight.
From Maintenance menu, go to Persons and Programs option and click on it. Select Person Attribute option to create
a new attribute for persons.
After, click on Add button into Person Attribute Management window to go to Add New Person Attribute Management
window.
Basic information
• Name - Name of person attribute.
• Description - Description of person attribute.
• Mandatory - Entering value for this attribute is required or not.
• Inherit - When to registry a new person for relationship with an available person, all inherit person attribute values
of the person will be pre-filled in the registration form.
• Value Type - Data type of value inputed. In addition to supporting basic data such as Number, Text, Yes/No, Date, the
system support a value type as Predefined value for defining attribute values. Users only can select on value in the
165
DHIS TRACKER Persons and Programs maintenance
defined list for each person registered. E.g code values which record the information on access to HIV prevention
services can be pre-defined, include T, TR, TRR, TRRD, TRRDm, TRRDmDb as PMTCT Code attribute.
To create a new attribute group, click the Add button into Person Attribute Group window to go to Add New Person
Attribute Group window , click the Add new button. Fill in the Name and Description fields and then select attributes
that should belong to the group from the left panel.
Click the Move selected items button to add the selected attributes to the attribute group. Click the Remove selected
items button to remove attributes from the group that have been selected in the right panel.
Finally, click the Add button to save changes, or the Cancel button to discard any [Link] created attribute members
will be displayed by the attribute groups into person registration form.
To sort order of attribute groups for displaying in person registration form, click Move up and Move down button next
to Selected attributes section.
To creating a new identifier type, click the Add button into Person Identifier Type Management window to go to Add
New Person Identifier Type window.
Basic information -
• Name - Name of identifier type.
• Description - Description of identifier type.
• Mandatory - Entering value for the identifier is required or not.
• Related - Representative re-uses the identifier of person.
• Number of characters - Maximum number of characters for value inputed.
• Type - Data type of value inputted, includes Text, Number and Letter Only.
To access the relationship type maintenance module, from Maintenance menu, go to Persons and Programs option
and click on it. Select Relationship Type option to create a new relationship type.
To define a new relationship type, click Add button into Relationship Type Management window to go to Add new
Relationship Type window.
[Link].1. Program
To access the program maintenance module, from Maintenance menu, go to Persons and Programs option and click
on it. Select Program option.
To define a new program, click the Add new button on the main page. Fill all fields with read asterisk, and then click
the Add button.
166
DHIS TRACKER Persons and Programs maintenance
Basic information -
• Name - The name of the program
• Description - Descriptions, meanings, explanation, etc. of/about the program.
• Type - There are three types of program: multi events with registration, single event with registration and single
event without registration.
• Events generated by enrollment date - Check on it for auto-generating due dates of events from program-stages of
this program based on the enrollment date. If it is not checked, the due dates are generated based on incident date.
• Show provided elsewhere - Set show/hide provided elsewhere column in data entry form.
• Show incident date - Set show/hide incident date field when a person enroll in this program.
• Description of incident date - The date when the person got the disease or he/she has just been committed to an
equivalent program for being followed-up. E.g. In the Immunization program for child under 1yr old, the incident
date is the birthday; in the maternal program, the incident date is the date of last menstrual period (LMP).
• Description of enrollment date - The date in which a person is registered to the system. For example: the date in
which a person enrolls to the system.
• Identifiers / attributes section - Select identifier-types and person attributes which belong to the program. Check
Displayed in list checkboxes of identifier types to display its value in person list instead of person's full-name.
To assign a program for organisation units, click Assign program to organisation units icon, the first icon under
Operations, corresponding to the program you would like and select organisation units where provide the program.
To create validation rules for programs, click Program validation rule management icon, the second icon under
Operations, corresponding to the program you would like. There are two types of validation rules -
• Single validation rule is used for defining validation for only one condition. E.g Weight must be greater then zero,
or the date of admission is before the date of discharge. To define a validation, click Add single rule button and
enter values for the fields in form.
1. Enter description of program validation rule.
2. In Validation section, select an program stage in list to load data elements belong to the selected stage the field
below.
3. Double-click on a data element in list, a formula text of the selected data element is created and displayed into
the condition area.
4. Click the comparing operations (+, <, <=, >, >=, =, !=, !=NULL ) below to set operation for the formula.
5. Click Add button to add the new validation rule.
• Multiple validation rule is used for defining validation for two conditions. E.g in PMTCT program, if the blood
test result of a pregnant is HIV positive, the pregnant must test WHO Stage/CD4. To define a validation, click Add
multi rule button. The form is have two part - left side and right side. Fill values for the fields in each part is the
same Single validation rule function.
Nota
Validation rules for DATE date elements are created for a program automatically. It's used for defining
formulas related the DATE data elements of each program stage. To define this validation rule, click Edit icon
of Validation for date date elements. Select a program stage, the DATE data elements will be shown with
corresponding conditions as follows -
• Before current date
• After current date
• Before or equals to current date
• After or equals to current date
• Before due-date
• After due-date
167
DHIS TRACKER Persons and Programs maintenance
To define a program stage, click the Program Stage Management icon, the forth icon under Operations, corresponding
to the program you would like and then Add new button. Fill in the Name and Description fields and then select the
data elements that should belong to the group from the left panel. Click the Move selected button to add the selected
data elements to the right panel. Click the Remove selected button to remove data elements that have been selected in
the right panel. Finally, click the Add button to save changes, or the Cancel button to discard any changes.
Basic information -
• Name - Name of the program stage
• Description - The description of the program stage
• Description of report date - The description for report date which is displayed in case entry form.
• Auto-generate event - Un-check this to prevent for creating an event of this program stage automatically when a
person enroll into the program.
• Scheduled days from start - The minimum number of days to wait for starting the program stage.
• Repeatable - specify the program stage as repeatable or not.
• Standard interval days - Specify the number of days to repeat the repeatable program stage.
• Data elements section - Select person data elements which belong to the program stage
• Template reminder message section - Define template reminder messages which are used for sending messages for
person automatically. There are two params -
1) Days before/after due date - Enter a positive number of days if sending process happens after due-date of events
which are generated from this program stage. Enter a negative number of days if sending process happens before
due-date of events.
2) Parameters - Provide parameters which are used for generating a message for each person. The parameters include
person's first name, program's name, program stage's name, due date of event, interval between current date and due
date and organisation unit's name.
3) Message - Content of template message. E.g Dear {patient-name}, please come to your appointment at {due-date}.
Nota
Click Add more... button to add more template reminder messages.
To search program stages by scheduled days, click Sort by scheduled days button.
168
DHIS TRACKER Persons and Programs maintenance
To access Aggregation Query Builder module, from the Maintenance menu, go to the Persons and Programs option.
Select Aggregation Query Builder option on left menu to proceed.
Basic information -
• Name - Provide name of query, this name is usually same with the name of aggregate data element. For example
Number of mothers got VAT, Number of children got BCG vaccine,...
• Dataset - Select dataset contains data elements which will be used to link with individual data.
• Data element - Select aggregate data element which will be used to link with individual data.
• Operator - Select Number of persons if aggregate based on persons, or Number of visits if aggregate data based on
times that persons received services.
• Program - Select program needed for aggregation.
• Program Stage - Select program stage from the selected program above.
Next section included 3 tabs: Data elements, Person attributes and Program. Depend on the requirement of data
aggregation, data element, person attributes, and number of programs are selected.
Data elements tab: List all available data elements from selected program stage. To create a formula related to each
data element, double click on the data element. The formula of the data element is filled on the condition field, like
[DE:1.2.3], in with:
• 1 - id of the selected program.
• 2 - id of the selected program stage.
• 3 - id of the selected data element.
Nota
The formula can be created without any program stage, like [DE:1.*.3]
Person attribute tab - List all available fixed attributes, such as gender, DOB type, Age (days), .. and user-defined
attributes. Besides, provide a formula for calculating number of persons who registered in system. However, if a
program without registration is selected, person attributes aren't displayed.
Program tab - Provide formulas for calculating data value related to the selected program and program stage -
• The number of persons who enrolled the selected program.
• The number of persons / times that ( Date of enrollment - Date of incident ) is greater then a certain number.
• The number of persons who visited the selected program stage OR the number of visits what are registered in the
system.
• The number of persons by age at the report-time.
169
DHIS TRACKER Persons and Programs maintenance
Condition section - This section contains comparing operations (<, <=, >, >=, =, != ), calculation operation (+),
priority operation ( ( ) ), boolean values (Yes, No), status operations (=NULL, != NULL), relation operations (AND,
OR). These operations are used for supporting in setting condition for query.
E.g To get number of girls who got Vitamin A dose 6 enrolled Child Health program on January 2012. Then query
is created as in the figure below. Note that January 2012 is period parameter which user will select when generate
report. It is not set in the query.
E.g. Find the number of the children vaccinated BCG by defining a linking rule between the data elements of aggregate
dataset named Number of children - BCG and the data element of a program stage named BCG dose given.
1. From Maintenance menu, go to Data Element and Indicators option and click on it. Select Data Element option
to define two new data elements -
1) Define a new data element named Number of children - BCG with Aggregate option for Domain Type.
2) Define a new data element named BCG dose give date with Patient option for Domain Type.
2. From Maintenance menu, go to Datasets option and click on it. Select Dataset option to create a new dataset named
BCG Report and add Number of children - BCG data element into the dataset.
3. From Maintenance menu, go to Persons and Programs option and click on it. Select Program option to create a
program named Child Health Program with a stage named Birth Details and add the BCG dose given data element
into this stage.
4. Create a new aggregation query builder named Number of children - BCG Builder to linking between the data
elements.
5. From Services menu, go to Individual Records option and click on it. Select Person option below Registration
header in the left menu to register three persons named Micheal, Alice and Tom in Ngelehun CHC and enroll them
into Child Health Program.
1) For Micheal, open the Birth Details stage into Child Health Program. Enter value for BCG dose give date data
element as "2012-01-18".
2) For Alice, open the Birth Details stage into Child Health Program. Enter Enter value for BCG dose give date
data element as "2012-01-18".
3) For Tom, no enter any data value for Birth Details stage.
Aviso
Before entering data value for the stage, choose Report Date as "2012-01-18".
6. From Services menu, go to Individual Records option and click on it. Select Manual person aggregation option to
run Number of children - BCG Builder to get data value and save it into database.
To access the validation criteria maintenance module, from Maintenance menu, go to Persons and Programs option
and click on it. Select Validation Criteria option to create a new program.
To create a new validation criterion, click the Add new button. Fill all fields with read asterisk, and click Add button.
You can assign facilities to a validation criterion in the Validation Criteria Management (list of available validation
criteria are shown) by clicking the blue folder icon, the first icon under Operations, corresponding to the validation
170
DHIS TRACKER Individual records module
criterion you would like to assign. Click the Move selected button to add the selected programs to the validation
criterion. Click the Remove selected button to remove programs from the group that have been selected in the right
panel. Finally, click the Save button to save changes, or the Cancel button to discard any change.
This function is used for scheduling message reminders to be automatically sent to enrolled persons XX days before
scheduled appointments and/or XX days after a missed visit. When the schedule is started, messages for each person
are generated based on templates defined in each stage at midnight. On the time, the scheduled messages are sent.
Click Execute button to generate and send each message for each person at the time the button clicked.
Message reminders can be automatically scheduled to run on regular intervals. Click Start button will enable the
scheduled job to run the task. Messages are generated based on templates defined in each stages at mid-night and sent
at a pre-determined time or can be run immediately by pressing Execute button.
The aggregation query builder jobs can be automatically scheduled to run on regular intervals. Simply select
organisation unit group set aggregation level, and strategy to configure how the scheduled job should run. Click Start
button will enable the scheduled job to run at mid-night or can be run immediately by pressing Execute button.
Create, modify and search for persons. Any type of data can be registered for a person by including attributes.
• Visit Schedule
Visit Schedule provides for the user at a facility or in an area a list of upcoming visits to better plan for daily/weekly
activities.
• Program Tracking
Support the work practices around tracking persons within a health program that have not shown up for a scheduled
visit (stage), e.g. that are lost to follow-up.
• Multiple Individual records
Enter data for multiple program stages and persons for a program. The entry screen gives an overview of the stage
status.
• Single event with registration
Register Single events without registration. The data to register is defined by a single event without registration
program.
• Program summary
View the summary report to get an overview of the services provided for a program.
• Tabular report
Use an interactive reporting tool for tracker-data using tabular presentation with dynamic filters for each person
attribute/data element.
• Person aggregation
171
DHIS TRACKER Individual records module
Generate routine data values from patient data by month (or other intervals if desired) and organisation unit.
Aviso
No matter what program persons need to enroll, they must register into the system first. Then health providers
will enroll the persons into relevant programs. E.g. every pregnant women and the child need to be registered
first as a person, then they will be enrolled in Mother Care program or Child Health program.
For the registration process, the details - which are related to the personal information, identification, contact and
location details, and health provider details, are entered.
1. To register a person, go to the Services menu, select option Individual Records.
2. Click the Find/Add person option below Person header to go to Person management window.
3. Select a facility from the facilities hierarchy displayed on the left side of the screen. Then click the Add new button
on the right side.
4. Start process of registration by providing name, location details, identification details, contact details and other
details like child contact name and child contact type. The click the Add button to complete to process of registration
or click the Person management to navigate to previous page.
To check the duplicated person or to avoid double registration, after providing name and demographic details, click
the Check duplicate button. Checking process bases on full name, gender and birthday of the registering person to
look for the available persons with the similar information in the database. The result list will be displayed if the
system finds out the same persons. Now health providers can cancel the registration process and update the existing
person or continue the process of registration.
To register representative for the registering person, check on the Has guardian/caretaker checkbox in Register
new person form. The sub-function has two tab -
• Search existing person tab is used for searching available persons and users can select one person in the result
list to set relationship. The criteria to search is based on identifier, attribute and name of persons.
• Add new person tab is used for registering a new person for relationship. When adding a person in this form, you
need to select one user-defined relationship type in the list. Finally, click Add button.
The function is intended to provide quick access to individual data of person. Dashboards consist of several sections,
some of which provide links to activity programs or relationships of the person . Other sections of the dashboard allow
users to enter data values for data entry form, reschedule and set status for each events of activity plan; show messages
and report of the program.
The dashboard of the person is opened after register successfully or click the first icon under Operations, corresponding
to the person who you would like.
The Demographics section provides links for editing profile and changing other location of the person. Click on Edit
profile link to update individual information of person. Click on Change location link to change other location for
the person
172
DHIS TRACKER Individual records module
The Active programs section provides links for activity program and the next visit of person for this program.
Click on a program link to open the data entry form for the next visit of the selected program. A form is open below
with five tab -
1. Data entry screen tab - Where data is manually registered for each person. Click on a event box in tab. Then fill a
report date to open data entry form of the selected event.
After entering data values into the data entry form, user should click on Run validation button before clicking on
Complete button to check reality of data. The event is only completed successfully if all validation is valid.
2. Identifier / Attribute tab - Load identifier-types and person-attributes which belong to the selected program for users
to enter values for this program.
3. Reschedule and set status tab - Provides function for re-scheduling, setting status and sending messages/comments
or deleting for each events.
After entering a message in the field, click on (+) button in Message column to add a comment for the event. For
sending a reminder message, click on (>>) button.
Nota
Only allow to edit due dates of events with status as overdue or scheduled in future.
4. Comments and messages tab - Displays a comment/message list of the program.
5. Program report tab - Summary report for the program.
The Active programs section consists of active programs of the person. Click on a program to show detail information
below. Besides, there are two link in this tab -
1. To display completed program list of the person, click Completed programs link. Select a program to show detail
information below.
2. To enroll the person into a program, click Enroll link.
The Relationship section consists of relationships of the person. Click on a person in list to open his/her dashboard.
Besides, there are two link in this tab -
1. To open Relationship management section, click Management link.
2. To register new person for relationship, click Register new person link.
Besides, the system audits user's information who accessed on the dashboard. Click on the History link in the header
to display this information.
After the registration, the person needs to be enrolled in any available program. To enroll :
1. Click on Enroll link from Dashboard of the person to open the Enrollment form.
2. Select a program from the list.
1) Date of enrollment ( the second field ) - The date when person enrolls into the selected program.
2) Date of incident ( the third field ) - The date when the person got the disease or he/she has just been committed
to an equivalent program for being followed-up.
Aviso
If the selected program has any identifier-types and person-attributes, they are displayed below. Users can
enter values for them at this time.
173
DHIS TRACKER Individual records module
The date of incident are important to generate the activity plan for each person. Health provider needs to
ensure recording and reporting date of incidence with each case of multi events with registration. However,
when to define a program, if it can be set Generated by enrollment date property as true, the activity plan
is generated based on the enrollment date, not incident date.
The system will automatically calculate due-date for each event of program and will show it in the Re-schedule
and set status tab. In health programme, a person registered and enrolled, needs to be checked from time to time by
health providers. The case update is designed in the same manner so that services which are received by the persons
can be updated from time to time when they visit the facility or whenever the health providers need to track.
The system will automatically calculate due-date for each the program stage and will show same the below
enrollment. In health program, a person registered and enrolled, needs to be checked from time to time by health
providers. The case update is designed in the same manner so that services which are received by the persons can
be updated from time to time when they visit the facility or whenever the health providers need to track.
After enrolling a person to a certain program, you can edit profile for that person.
1. Click the second icon under Operations, corresponding to the person you would like to edit. Or click the Edit profile
link in Dashboard of person.
2. Then a dialog box may appear to require you verify the date of birth if it is not verified. You just simply click OK
to go to the edit page.
3. Click Update button to update data and go to his/her dashboard.
Now you can add relationships for person. To do that, you have to click on the Relationship management icon under
Operations or click on the Management link on Relationships section in Dashboard. Then, the management page
appears...
To add relationship for a person, you have to click on Search available person link to navigate to search page.
To register a new person and create relationship with the selected person, click Register new person link.
[Link].5. Change person location and View person details and history
You can change person location by clicking the Change person location icon under Operations or click on Change
location link on Demographics section in Dashboard.
In addition, you can view all person details and history by click on Person details and history icon under Operations.
Furthermore, you can download all person details and history in the format of XLS or PDF by clicking Download as
Excel or Download as PDF button.
The Search function is used for searching persons based on full-name, identifiers and person attributes.
To access Search function, from the Services menu, go the the Individual Records option and click on it. Select Find/
Add Person option on the left menu to proceed. Then, after selecting organisation unit, click on the Search button on
the right side.
A search form is appeared after clicking. User has to select criteria and input values into the function.
174
DHIS TRACKER Individual records module
After selecting search type, entering keyword and clicking on Search button, the search result will display on the
screen, and then user can interact with these persons.
[Link]. Tracking
This function supports the work practices around tracking persons within a health program that have not shown up for
a scheduled visit (stage), e.g. that are lost to follow-up.
This will be used to provide the user at a facility or in an area with a list of upcoming visits to better plan for daily/
weekly activities. This can also be used as quick navigation to the data entry screen when using the system as a live/
real-time data entry system.
Clicking on an event to open the data entry screen, and plan is updated when closing data entry form. The plan (expected
visits for the upcoming period) will typically be a mix of recently overdue stages and stages that are non-completed
and scheduled for the coming days/week.
After selecting organisation unit on the left panel, select a program in list. Then status which you would like. Select
show events since ( if any) and Show events up to ( if any ). Finally, click Show Event List button to get events which
are satisfied with searching criteria.
This function supports the work practices around tracking persons within a health program that have not shown up for
a scheduled visit (stage), e.g. that are lost to follow-up.
After selecting organisation unit on the left panel, select a program in list. And click on List All Person button to load
all over-due events of persons.
Click on an event box to re-schedule and set status for the selected event or see all tracking history for this event.
To search events by status and some criteria such as name, identifiers or attributes, click on Search button next to List
All Persons. A advanced search criteria is shown. After to fill search key values, click on Search button on this form
to display result or click on Send message button to send a reminder message for person in result.
The multiple individual records function is where individual data is manually registered in the DHIS database. A list
events for each person who enrolled into the selected program after clicking a multi events with registration.
To access the multiple individual records function, from the Services menu, go to the Individual Records option and
click on it. Select Multiple individual records option on left menu to proceed.
To start enter data, the first step is to open a list events of person who enrolled a certain program by selecting a program
in the list on the main page. Follow these steps:
1. Locate the organisation unit you want to register data for in the tree menu to the left. Expand and close branches
by clicking on the +/- symbols. A quick way to find an organisation unit is to use the search box just above the tree
(the green symbol), but you need to write in the full name to get a match.
175
DHIS TRACKER Individual records module
The system loads multi events with registration which belong to the selected organisation unit.
2. Select a program in the list and click on List All Person button. An event list of persons who enrolled into the
selected program is shown.
After filling and selecting data for a form. You have to click on Run validation button to check whether your inputs
are valid. Then, click on Complete button to finish the entry.
The data to register is defined by a single event with registration program. The functionality supports health providers
to register person information and input data values for a program into one form.
In order to register an event, from the Services option, go to the Individual Records option and click it. Then select
Single event with registration option on left menu to proceed.
To list all persons in the selected facility, click List All Persons button.
To add new event, select a program in the combo box. And then click Add new button.
To register an event, from the Services option, go to the Individual Records option and click it. Then select Single event
without registration option on left menu to proceed.
To list all events in the selected facility, click List All Events button.
To remove empty events of the selected program, click Remove empty events button.
To update an event -
1. Click Search button. Then enter criterion for searching person. The person list are displayed below.
2. Click on Data entry icon - the first icon, to update value for the event.
[Link]. Reports
The sub module provides two functions for individual reports -
• Program summary - View the summary report to get an overview of the services provided for a program.
• Tabular report - An interactive reporting tool for tracker-data using tabular presentation with dynamic filters for
each person attribute and data element.
The function provides a tool for generating summary list of individual information with color shown on program stages
to identify status of receiving services in each stage.
To access the program summary report, choose Services -> Individual Records > Program summary.
176
DHIS TRACKER Individual records module
Select a organisation unit which provides services on the left menu. Then on the main page, select Program, Start
date, End date to get period. After, select Use data from level(s). There are three levels Selected, Children Only and
All. Finally, click Generate button.
The result is get based on the date of enrollment of each person who registered the selected organisation unit and
enrolled in the selected program in the interval from start-date and end-date what health provider entered.
Click on the person box to display the details and history of the selected person.
This is an interactive reporting tool for tracker-data using tabular presentation with dynamic filters for each person
attribute/data element.
To access the tabular report function, from the Services menu, go to the Individual Records option and click on it.
Select Tabular report option below Reports header on left menu to proceed.
To start, the first step is to select a program in the list. Follow these steps:
1. Select a program from list in the left panel. The system will be load person attributes and identifiers which belongs
to the selected program and not belong to any program.
2. Choose start-date and end-date. The event list is loaded with report-date between the two dates.
3. Select one or many organisation units.
4. In Identifiers and Attributes tab, select options to show it into the result.
5. In Data element tab, Select a program stage. Double-click data elements which you need to show into the result
to move it from Availablefield to the Selected field
Nota
If the selected program has only one stage, this field is hidden and data element list of the stage is shown
in the Available field.
6. In the Options tab, there are two options -
• Use data from level(s): Specify the level which you need to get events -
1) Children only: Individual data from the children of the selected organisation unit will be aggregated.
2) Selected: Individual data from the selected organisation unit will be aggregated.
3) All: Individual data from both selected organisation unit and its children will be aggregated.
• Show hierarchy from level: The level of organisation units which you want to show. E.g. If an event belongs to an
organisation unit in district level and this option is selected as province level, the result is shown with the name
of province.
7. Click Update button on toolbar. The result is shown on the main page.
To filter data by person attributes, identifiers or data elements, click on the DOWN button on the column corresponding
to field which you want to filter. Click Filter button and enter value in the field shown.
177
DHIS TRACKER Individual records module
To save parameters on the left panel, click Favorites button on toolbar. The select Manage favorites option. A form
is shown to enter name for favorite and click Save button.
To export the result to excel file, click Download button, select XLS option.
- All: Individual data from both selected organisation unit and its children will be aggregated.
- Children only: Individual data from the children of the selected organisation unit will be aggregated.
- Selected: Individual data from the selected organisation unit will be aggregated.
4. Click on the Aggregate button to execute aggregate function. The Person aggregation resultpage is shown after
running successfully.
178
Web API Introduction
23.1. Introduction
The Web API adheres to many of the principles behind the REST architectural style. To mention some few and
important ones:
1. The fundamental building blocks are referred to as resources. A resource can be anything exposed to the Web,
from a document to a business process - anything a client might want to interact with. The information aspects of a
resource can be retrieved or exchanged through resource representations. A representation is a view of a resource's
state at any given time. For instance, the reportTable resource in DHIS represents a tabular report of aggregated
data for a certain set of parameters. This resource can be retrieved in a variety of representation formats including
HTML, PDF, and MS Excel.
2. All resources can be uniquely identified by a URI (also referred to as URL). All resources have a default
representation. You can indicate that you are interested in a specific representation by supplying an Accept HTTP
header, a file extension or a format query parameter. So in order to retrieve the PDF representation of a report table
you can supply a Accept: application/pdf header or append .pdf or ?format=pdf to your request URL.
3. Interactions with the API requires correct use of HTTP methods or verbs. This implies that for a resource you must
issue a GET request when you want to retrieve it, POST request when you want to create one, PUT when you want to
update it and DELETE when you want to remove it. So if you want to retrieve the default representation of a report
table you can send a GET request to e.g. /reportTable/iu8j/hYgF6t, where the last part is the report table identifier.
4. Resource representations are linkable, meaning that representations advertise other resources which are relevant to
the current one by embedding links into itself. This feature greatly improves the usability and robustness of the API
as we will see later. For instance, you can easily navigate to the indicators which are associated with a report table
from the reportTable resource through the embedded links using your preferred representation format.
While all of this might sound complicated, the Web API is actually very simple to use. We will proceed with a few
practical examples in a minute.
23.2. Authentication
In order to interoperate with the Web API you will have to authenticate using Basic authentication. Basic authentication
is a technique for clients to send login credentials over HTTP to a web server. Technically speaking, the username is
appended with a colon and the password, Base64-encoded, prefixed Basic and supplied as the value of the Authorization
HTTP header. More formally that is Authorization: Basic base64encode(username:password) An
important note is that this authentication scheme provides no security since the username and password is sent in plain
text and can be easily decoded. Using it is recommended only if the server is using SSL/TLS (HTTPS) to encrypt
communication between itself and the client. Most DHIS 2 deployments typically use SSL today - consider it a hard
requirement to provide secure interactions with the Web API.
yyyy-MM-dd
For instance, if you want to express March 20, 2012 you must use 2012-03-20.
179
Web API Working with the meta-data API
By default, talking to /api/metaData will give you everything, rendered as XML. But just as we can define what we
want in the general API, we can also do that with /api/metaData.
Content-Type Description
application/xml Returns the meta-data in XML representation
application/json Returns the meta-data in JSON representation
180
Web API Example: Sending data values
Example: Get a filtered set of meta-data that was updated since August 1st 2012
As described in the last section, there is a number of options you can apply to /api/metaData to give you a filtered
view. The use-case we will be looking into here, is the case where you want a nightly job that synchronizes organisation
units. We will be using cURL as the HTTP client.
This example will just the default assumeTrue setting, along with getting the last updates from february 2012. This
means that every single type that has been updated will be retrieved.
The entry point for the Web API running on the demo instance is [Link] The entry point
provides a convenient HTML page with links to all of the available resources in the Web API. The resource which is
most appropriate for our purpose of sending data values is the dataValueSets resource. A data value set represents a set
of data values which have a logical relationship, usually from being captured off the same data entry form. We follow
the link to the HTML representation which will take us to [Link] The default
representation is a HTML page which provides us with useful instructions on how to interact with this resources. It
tells us that we can use the POST verb to send values using a XML format defined by the [Link]
dxf/2.0 namespace:
Note: We have omitted the categoryOptionCombo attribute as it is optional and not needed for this example. Please
refer to the date and period section above for time formats.
181
Web API Example: Sending data values using SDMX-
HD
From the example we can see that we need to identify the period, the data set, the org unit (facility) and the data
elements for which to report. The dataValueSets resource description tells us that the identifier for monthly periods
should be on the format yyyyMM which means that we will use 201201 for January 2012.
To obtain the identifier for the data set we return to the the entry point at [Link] and follow
the embedded link pointing at the dataSets resource located at [Link] From there we
find and follow the link to the Mortality < 5 years data set which leads us to [Link]
pBOMPrpg1QX. What we did was effectively to retrieve the HTML representation of our data set of interest, and from
it we can easily see the identifier, which is pBOMPrpg1QX. The resource representation for the Mortality < 5 years
data set conveniently advertises links to the data elements which are members of it. From here we can follow these
links and obtain the identifiers of the data elements. For brevity we will only report on three data elements: Measles
with id f7n9E0hX8qk, Dysentery with id Ix2HsbDMLea and Cholera with id eY5ehpbEsB7.
What remains is to get hold of the identifier of the facility (org unit). Again the dataSet representation conveniently
provides link to org units which report on it so we search for Ngelehun CHC and follow the link to the HTML
representation at [Link] which tells us that the identifier of
this org unit is DiszpKrYNg8.
From our case-based data we assume that we have 12 cases of measles, 14 cases of dysentery and 16 cases of cholera.
We have now gathered enough information to be able to put together the XML data value set message:
To perform functional testing we will use the cURL tool ([Link] which provides an easy way of transferring
data using HTTP. First we save the data value set XML content in a file called [Link] . From the directory
where this file resides we invoke the following from the command line:
The command will dispatch a request to the demo Web API, set application/xml as the content-type and authenticate
using admin/district as username/password. If all goes well this will return a 200 OK HTTP status code. You can verify
that the data has been received by opening the data entry module in DHIS 2 and select the org unit, data set and period
used in this example.
The API follows normal semantics for error handling and HTTP status codes. If you supply an invalid username or
password, 401 Unauthorized is returned. If you supply a content-type other than application/xml, 415 Unsupported
Media Type is returned. If the XML content is invalid according to the DXF namespace, 400 Bad Request is returned.
If you provide an invalid identifier in the XML content, 409 Conflict is returned together with a descriptive message.
In this example, cURL will authenticate to the server through Basic authentication using our supplied username and
password as credentials through the -u flag.
In a real-world scenario, looking up identifiers, constructing and dispatching XML messages would be the task of the
client software application. This software would probably interact with the more machine-friendly XML and JSON
resource representations and not the human-friendly HTML representations like we did in this example. Developing
creative and robust consumers of the Web API services begins here.
182
Web API Example: Sending large bulks of data values
<Header>
<ID>OpenMRS-Export</ID>
<Test>false</Test>
<Prepared>2012-03-21</Prepared>
<Sender id="DDU"/>
</Header>
</ns:DataSet>
</CrossSectionalData>
One thing to note is that the SDMX-HD metadata for dataelements, orgunits and datasets are identified using codes
rather than uids. Assuming these coded datasets are present in the DHIS2 server then this can be posted, for example
using the curl command below.
Again we will interact with the with [Link] resource. This time we will not
specify the dataSet and completeDate attributes. Also, we will specify the period and orgUnit attributes on the
individual data value elements instead of on the outer data value set element. This will enable us to send data values
for various periods and org units:
<dataValueSet xmlns="[Link]
<dataValue dataElement="f7n9E0hX8qk" period="201201" orgUnit="DiszpKrYNg8" value="12"/>
<dataValue dataElement="f7n9E0hX8qk" period="201201" orgUnit="FNnj3jKGS7i" value="14"/>
<dataValue dataElement="f7n9E0hX8qk" period="201202" orgUnit="DiszpKrYNg8" value="16"/>
<dataValue dataElement="f7n9E0hX8qk" period="201202" orgUnit="Jkhdsf8sdf4" value="18"/>
</dataValueSet>
The data value set resource provides an XML response which is useful when you want to verify the impact your request
had. The first time we send the data value set request above the server will respond with the following import summary:
<importSummary>
183
Web API Example: Reading data values
This message tells us that 3 data values were imported, 1 data value was updated while zero data values were ignored.
The single update comes as a result of us sending that data value in the previous example. A data value will be ignored
if it references a non-existing data element, period, org unit or data set. In our case this single ignored value was caused
by the last data value having an invalid reference to org unit. The data set complete element will display the date of
which the data value set was completed, or false if no data element attribute was supplied.
All parameters are optional and can be supplied as query parameters in the request URL like this:
[Link]
orgUnitIdScheme=name&dryRun=true&importStrategy=new
They can also be supplied as XML attributes on the data value set element like below. XML attributes will override
query string parameters.
Regarding the id schemes, by default the identifiers used in the XML messages refer to the DHIS stable object
identifiers. In certain interoperability situations we might experience that the external system decides the identifiers
of the objects. In that case we can use the code property of the organisation unit and data element objects to set fixed
identifiers dictated by the other system. When importing data values we hence need to reference the code property
instead of the uid property, and can do so using the dataElementIScheme and orgUnitIdScheme paramaters.
Parameter Description
dataSet Data set identifier
184
Web API Example: Reading aggregated data values
Parameter Description
period Period identifier in ISO format
orgUnit Organisation unit identifier
It is assumed that we have posted data values to DHIS according to the previous section called "Sending data values".
We can now put together our request and send it using cURL:
curl "[Link]
dataSet=pBOMPrpg1QX&period=201201&orgUnit=DiszpKrYNg8" -H "Accept:application/xml" -u
admin:district -v
HTTP/1.1 200 OK
Content-Type: application/xml
The header tells us that the request was processed successfully and that we are receiving a response in XML format.
The XML message looks familiar - it is the data values we sent in the previous section.
The resource we need to interact with when sending and reading messages is the messageConversations resource. We
start by visiting the Web API entry point at [Link] where we find and follow the link to the
messageConversations resource at [Link] The description tells us that
we can use a POST request to create a new message using the following XML format:
<message xmlns="[Link]
<subject>This is the subject</subject>
<text>This is the text</text>
<users>
<user id="user1ID" />
<user id="user2ID" />
<user id="user3ID" />
</users>
185
Web API Example: Writing interpretations
</message>
Since we want to send a message to our friend the mobile user we need to look up her identifier. We do so by going to
the Web API entry point and follow the link to the users resource at [Link] We continue
by following link to the mobile user at [Link] where we learn that her
identifier is PhzytPW3g2J. We are now ready to put our XML message together to form a message where we want to
ask the mobile user whether she has reported data for January 2012:
<message xmlns="[Link]
<subject>Mortality data reporting</subject>
<text>Have you reported data for the Mortality data set for January 2012?</text>
<users>
<user id="PhzytPW3g2J" />
</users>
</message>
To test this we save the XML content into a file called [Link]. We use cURL to dispatch the message the the
DHIS 2 demo instance where we indicate that the content-type is XML and authenticate as the admin user:
If all is well we receive a 201 Created HTTP status code. Also note that we receive a Location HTTP header which
value informs us of the URL of the newly created message conversation resource - this can be used by a consumer
to perform further action.
We will now pretend to be the mobile user and read the message which was just sent by dispatching a GET request to
the messageConversations resource. We supply an Accept header with application/xml as the value to indicate that we
are interested in the XML resource representation and we authenticate as the mobile user:
<messageConversations xmlns="[Link]
link="[Link]
<messageConversation name="Mortality data reporting" id="ZjHHSjyyeJ2"
link="[Link]
<messageConversation name="DHIS version 2.7 is deployed" id="GDBqVfkmnp2"
link="[Link]
</messageConversations>
From the response we are able to read the identifier of the newly sent message which is ZjHHSjyyeJ2. Note that the
link to the specific resource is embedded and can be followed in order to read the full message. From the description
at [Link] we learned that we can reply directly to an existing message
conversation once we know the URL by including the message text as the request payload (body). We are now able
to construct a URL for sending our reply:
curl -d "Yes the Mortality data set has been reported" "[Link]
api/messageConversations/ZjHHSjyyeJ2" -H "Content-Type:text/plain" -u mobile:district -
X POST -v
If all went according to plan you will receive a 200 OK status code.
186
Web API Example: Embedding reports in web pages
We will start by writing an interpretation for the chart with identifier EbRN2VIbPdV. To write chart interpretations we
will interact with the [Link] resource. The interpretation will
be the request body. Based on this we can put together the following request using cURL:
Second we will write a comment on the interpretation we just wrote. By looking at the interpretation response you will
see that a Location header is returned. This header tells us the URL of the newly created interpretation and from that
we can read its identifier. This identifier is randomly generated so you will have to replace the one in the command
below with your own. To write a comment we can interact with the [Link]
{interpretationId}/comment like this:
You can also write interpretations for report tables in a similar way by interacting with the [Link]
api/interpretations/reportTable/{reportTableId}. For report tables you can also provide an optional ou query parameter
to supply an organisation unit identifier in the case where the report table has an organisation unit report parameter:
The Web API contains several resources which are useful for data analysis: report, reportTable, chart, map and
document. Dispatching GET requests to the mentioned resources will return meta-data information such as name and
the date it was last updated. All these resources have an associated data resource which produces a data view of related
aggregated data - also known as reports, charts and maps. You can follow the links or simply append /data to the URL
to arrive at it. This information can be represented in a variety of formats including HTML, PDF, Excel, PNG and
Jasper, as we will see in the next section.
We start as usual at the Web API entrypoint at [Link] We look for a relevant report table by
following the reportTables link to [Link] We assume that we are interested in
the "District Maternal Health" report and follow the link to [Link]
This resource provides meta-data information about the report table. From here we can follow the link to the default
data view of aggregated data, which leads us to [Link] As we
can see we are provided with a report table in HTML format, which is the default representation format for report tables.
As stated in the introduction there are three ways of indicating which resource representation format you prefer for the
response. The most suitable alternative for direct use in web pages is to append a file suffix to the URL. We assume
that we are interested in the PDF representation and indicate that by appending .pdf to our URL: [Link]
demo/api/reportTables/xIWpSo5jjT1/[Link]. Go ahead and try out all valid extensions for this resource which are
.html, .pdf, .xls and .csv.
The report table can be parameterized with an organisation unit and a period by supplying a ou and pe query parameter
accompanied with an organisation unit identifier and period string in the URL. If not provided the Web API will use
the top-most organisation unit in the hierarchy and the last period for the report table content. The organisation unit
identifier can be looked up by going to the Web API entrypoint and follow the link to the organisationUnits resouce. For
our example we will use Bo district whith identifier O6uvpzGd5pu as the organisation unit: [Link]
api/reportTables/xIWpSo5jjT1/data?ou=O6uvpzGd5pu. From the HTML representation we can see that the report now
contains data for Bo district. These URLs can simply be used in links embedded in the web page like this:
<a href="[Link]
187
Web API Example: Embedding charts with the
Visualizer chart plug-in
ou=O6uvpzGd5pu">Maternal Health Bo District 2012</a>
There are many ways to authenticate over the Web and each method has its advantages and disadvantages. For this
example we will use an approach where we emulate a login from the web-based login form. To help us we will use the
jQuery JavaScript library. This JavaScript code should be embedded in the head section of the Web page:
jQuery(document).ready(function() {
$.post( "[Link] {
j_username: "admin", j_password: "district"
}
);
});
In this code block we ask jQuery to send a POST request to the standard authentication point with two name-value
pairs containing the username and password information. We assume that the user has the necessary authorities to view
reports in the DHIS 2 Web API. If authentication was successful the server will send a HTTP cookie in the response
with a session identifier. This will make sure that the current user is authorized to view reports for up to 60 minutes.
Caveat: The username and password will be present in the web page in plain text. Make sure you create a dedicated user
in DHIS 2 for this purpose provided only with the minimum authorities required. For a more robust way of exposing
resources without requiring authentication see the the section on reverse proxy setup in the installation chapter.
For a full example visit [Link] and view the page source in a browser. Note that the example web
page is hosted within the same domain ([Link]) as the demo DHIS 2 instance. This is done to avoid issues
related to the "same origin policy", a concept which prevents scripts hosted on one domain to access resources running
on another. While one can circumvent this through techniques such as CORS, there are none which have wide browser
support at the moment. Therefore we recommend hosting web pages and portals on the same domain. Techniques using
reverse proxies described in the "installation" chapter can be useful in this regard. Finally we provide some sample
URLs pointing to various data resources for your inspiration:
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
We start by including three required Javascript files in the header section of the HTML document. The first file is the
Ext JS Javascript library (we use the Google content delivery network in this case). The third file is the Visualizer
plug-in. Make sure the path is pointing to your DHIS server installation.
<script type="text/javascript"
src="[Link]
</script>
<script type="text/javascript"
src="[Link]
</script>
188
Web API Example: Embedding charts with the
Visualizer chart plug-in
To authenticate with the DHIS server we use the same approach as in the previous section. In the header of the HTML
document we include the following Javascript inside a script element. The setLinks method will be implemented later.
Make sure the base variable is pointing to your DHIS installation.
[Link]( function() {
[Link]({
url: base + "dhis-web-commons-security/[Link]",
method: 'POST',
params: { j_username: "admin", j_password: "district" },
success: setLinks
});
});
Now let us have a look at the various options for the Visualizer plug-in. If you want to refer to pre-defined charts
already made inside DHIS you should use the uid parameter. If you want create dynamic charts you shoud include the
indicators and/or dataelements parameter and omit the uid parameter. Asterisk (*) indicates that a parameter is required
only when the uid parameter is not used.
189
Web API Example: Embedding charts with the
Visualizer chart plug-in
We continue by including two pre-defined charts and to dynamic charts to our HTML document. You can browse the
list of available charts using the Web API here: [Link]
function setLinks() {
190
Web API Example: Creating a chart carousel with the
carousel plug-in
[Link]({ uid: 'R0DVGvXDUNP', el: 'chartA1', url: base });
Finally we include some div elements in the body section of the HTML document with the identifiers referred to in
the plug-in Javascript.
The first file is the CSS stylesheet for the chart plug-in. The second file is the CSS stylesheet for the carousel widget.
The third file is the Ext JavaScript framework which this plug-in depends on. The fourth file is the carousel plug-in
JavaScript file. The fifth file is the chart plug-in JavaScript file. The paths in this example points at the DHIS 2 demo
site, make sure you update them to point to your own DHIS 2 installation.
Please refer to the section about the chart plug-in on how to do authentication.
To create a chart carousel we will first render the charts we want to include in the carousel using the method described
in the chart plug-in section. Then we create the chart carousel itself. The charts will be rendered into div elements
which all have a CSS class called chart. In the carousel configuration we can then define a selector expression which
refers to those div elements like this:
191
Web API Example: Embedding report tables with the
table plug-in
[Link]({ uid: 'X7PqaXfevnL', el: 'chartA4', url: base });
The first argument in the configuration is the id of the div element in which you want to render the carousel. The
autoPlay configuration option refers to whether we want the carousel to start when the user loads the Web page. The
interval option defines how many seconds each chart should be displayed. The showPlayButton defines whether we
want to render a button for the user to start and stop the carousel. Finally we need to insert the div elements in the
body of the HTML document:
<div id="chartCarousel">
192
Web API Example: Embedding report tables with the
table plug-in
In the following are examples on how the table plug-in can be used.
[Link]({
indicators: ['Uvn6LCg7dVU'],
periods: ['last12Months'],
orgunits: ['ImspTQPwCqd'],
crosstab: ['periods'],
orgUnitIsParent: true,
useExtGrid: false,
callbackName: 'table1',
hiddenCols: [0],
el: 'table1',
url: base
});
[Link]({
dataelements: ['s46m5MS0hxu', 'YtbsuPPo010', 'xc8gmAKfO95', 'UOlfIjgN8X6'],
periods: ['last4Quarters'],
orgunits: ['ImspTQPwCqd'],
crosstab: ['data'],
useExtGrid: false,
callbackName: 'table2',
el: 'table2',
url: base
});
Finally we insert in the Web page the div elements which are referred to in the table configuration and used to render
the tables.
<div id="table1"></div>
<div id="table2"></div>
You can also choose to provide a link to the report table instead of rendering it directly on the web page. The
configuration of the link function is very similar to the table function and shares the indicators, dataelements, datasets,
193
Web API Example: Working with SQL views
periods, orgunits, orgUnitIsParent, crosstab and url properties. There is only one additional parameter which is listed
in the table below.
Below is an example on how to use the link function. The link URL is retrieved from the getUrl function and later
set as target for a link the HTML document.
[Link]('link1').set({href: url1});
The link HTML element can be defined in the body section of the document like below.
We will use curl to first execute the view on the DHIS2 server. This is essentially a materialization process, and ensures
that we have the most recent data available through the SQL View when it is retrieved from the server.
curl "[Link]
dhis-web-maintenance-dataadmin/
[Link]?id=1150154"
-u admin:district -v
This curl command simply has the internal ID of the view as a single parameter.
194
Web API Example: Working with SQL views
The next step in the process is the retrieval of the [Link] basic structure of the URL is as follows
http(s)://{server}/api/sqlViews/{uid}/data(.csv)
The {server} parameter should be replaced with your own server. The next part of the URL /api/sqlViews/
should be appended with the specific unique identifier (not the internal ID of the view). Append either data for XML
data or [Link] for comma delimited values. As an example, the following URL would retrieve XML data for the
SQL view defined above.
curl
"[Link]
-u admin:district -v
195
Integration Engine Introduction
24.1. Introduction
The integration engine is configured by defining routes. A route defines a particular message flow from an external
system into DHIS2. Routes may consist of timers, http client requests, transformations, message processors, loggers etc.
Routes can be defined in XML or in Java. XML routes have the advantage that they can be easily configured and loaded
into a running DHIS2 instance. More complex routes might require the greater expressiveness of the Java language.
Routes written in Java need to be made available on the classpath of the web application on application startup.
Some sample routes are shown in the sections following. Disclaimer: please do not experiment with these routes on
a production server. Be sure to test routes thoroughly on a test instance before deploying to production. These routes
update metadata and data automatically.
The unavoidable long lines in the route listing may not render well in the DHIS2 user manual. This and other sample
routes can be found in the resources section of the DHIS2 source code.
197
Integration Engine Loading an XML route
• Camel components are configured using urls. The trigger expression for the quartz URL should be cron=0+0+*+*
+*+?" but the "?" character cannot appear unencoded in the XML route, hence the escaped "%3F". Similarly, the
"&" is replaced in the query string with "∓"/
• Additional parameters to the URL such as "authenticationPreemptive" etc are documented for the Camel http
component [Link] These are consumed by the camel processor and not sent to the server
as part oif the request.
• The dhis2:metadata endpoint is not part of the camel core. It is a DHIS2 specific component which is available to
the author of DHIS2 routes as a destination for importing DXF2 metadata.
DHIS2 also provides a means to automatically load a set of XML routes on application startup. When the application
starts it will look for a directory called "routes" under the DHIS2_HOME directory. Any XML routes found in that
directory will be loaded into the running application.
package [Link];
[Link]( desc );
[Link]( "internal-sdmx-input" );
}
}
198
Guía para la Documentación de DHIS2 Una panorámica del sistema de
documentación de DHIS 2
A.2. Introducción
Una de las principales ventajas de DocBook es que hay una separación total entre el contenido y la presentación.
DocBook es un formato puro XML, y está bastante documentado. En realidad con solo un pequeño conjunto de sus
funcionalidades se podría lograr mucho mayor calidad de documentación para DHIS. Hay cerca de 400 elementos de
marcado distintos que cubren prácticamente todos los niveles de necesidades en la documentación técnica, pero en
realidad, con unas pocas docenas de estos elementos se puede lograr una buena calidad de documentación en DHIS2,
tanto para formatos impresos como para formatos digitales como HTML o sistemas integrados de ayuda en la propia
aplicación. Entonces, hay un amplio margen de posibilidades en términos de qué editor se puede usar para crear ficheros
DocBook. Aquí hay una lista muy completa de posibilidades. Actualmente recomendamos utilizar Syntext Serna Free
para editar los ficheros fuente de DocBook con un editor amigable WYSIWYG. En principio, cualquier programa de
edición de texto o XML también es capaz de manejar y crear ficheros para DocBook.
Nota
No recomendamos utilizar el editor XMLmind XML Editor Personal Edition (también conocido como XXE
Personal), ya que el editor coloca "imperceptiblemente" espacios en blanco innecesarios y otros adornos en la
fuente DocBook que dificultan la edición colaborativa de documentos.
Uno de los conceptos clave a tener en mente al escribir documentación en DocBook, o en otros formatos neutrales de
presentación, es que el contenido del documento debería ser lo prioritario. La presentación del documento se realizará
en una fase separada, donde se renderiza a diferentes formatos como HTML o PDF. Por tanto, es importante que el
documento esté organizado y estructurado, con las etiquetas apropiadas de DocBook y los elementos estructurales
necesarios.
Es bueno practicar dividiendo el docmento en varias secciones utando el elemento "section". Los elementos de
sección pueden anidarse, como "Sección 1" y "Sección 2". Este concepto es esencialmente el mismo que utilizan
Microsoft Word™ u otros programas de procesado de textos. DocBook automáticamente anota los números de
sección por nosotros al momento de generar el documento. Otros dos elementos importantes son las listas guionizadas
("itemizedlist") y las listas numeradas ("numberedlist"). Otros elementos clave son la captura de pantalla ("screenshot")
y las tablas ("table").
199
Guía para la Documentación de DHIS2 Obtención de la fuente de documentos
Para comenzar añadiendo o editando la documentación, lo primero es sincronizar el código fuente. Si no disponemos
aún de un identificador para loguearnos en Launchpad, necesitaremos obtener uno. Esto podemos hacerlo aquí. Una
vez nos hemos registrado en Launchpad, podemos solicitar acceso al archivo de documentadores de DHIS aquí. La
solicitud deberá esperar a ser aprobada por el grupo de administradores. Cuando nos hayan concedido acceso al grupo,
podemos subir los cambios al archivo de documentación y enviar y recibir emails de la lista de correo del grupo.
Cuando tenemos instalado bzr en el sistema, necesitaremos descargar la fuente de documentación. Simplemente
seguiremos este procedimiento:
1. Nos aseguraremos de que Bazaar está instalado.
2. Arrancamos Bazaar haciendo click con el botón derecho del ratón en una carpeta si estamos manejando Windows™
y seleccionamos Bzr aquí. Si usamos Linux, podemos simplemente crear una carpeta para que contenga los fuentes.
Podemos colocar los fuentes de documentación en la carpeta que deseemos.
3. Para descargar la última revisión del proyecto de documentación de DHIS2 tipeamos en el terminal de comandos:bzr
checkout lp:~dhis2-documenters/dhis2/dhis2-docbook-docs desde Linux o MacOSX, o si usamos Windows™
escribiremos la URL del repositorio de código fuente "lp:~dhis2-documenters/dhis2/dhis2-docbook-docs"
4. El proceso de descarga debería empezar en este momento y se descargarán todos los ficheros fuente de la
documentación a la carpeta especificada.
<screenshot>
<screeninfo>DHIS2 Login screen</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="dhis2_login_screen.jpg" format="JPG" width="80%"/>
</imageobject>
200
Guía para la Documentación de DHIS2 Cómo enlazar documentos
</mediaobject>
</screenshot>
Para otras imágenes pueden precisarse valores distintos dependiendo de su tamaño. Si no tenemos una anchura
específica para las imágenes y el tamaño real es mayor que el ancho de pantalla, la imagen puede desbordar algunos
tipos de documento con anchura fija, como los PDF.
Si queremos enlazar muchos artículos en un libro, DocBook ofrece un mecanismo para asignar un identificador a cada
sección. En el ejemplo siguiente, cada sección tiene asignado un identificador ("id"). Este identificador debe ser único
en todo el documento.
<section id="mod2_1">
<title>Getting started with DHIS2</title> ....
In order to include an article into a book, an Xinclude statement must be used. The following example shows how.
<chapter>
<title>Getting started with DHIS2</title>
<xi:include xmlns:xi="[Link] href="dhis2_user_man_mod2.xml"
xpointer="mod2_1" encoding="UTF-8"/>
...
Notemos que el nombre del dichero y el identificador se asignan en el documento padre, con referencia al fichero actual
(href) y a un fragmento concreto del documento hijo que debería referenciarse en el documento padre (xpointer).
En este caso no hay necesidad de referenciar explícitamente una parte del documento, a menos que solo queramos
incluir una parte del capítulo. Si queremos utilizar una sección del capítulo, podemos asignar un "id" a esa sección,
y luego referenciarla mediante un "xpointer".
201
Guía para la Documentación de DHIS2 Generar la documentación con Apache
maven
capaces de realizar esta transformación. Básicamente las páginas XML fuente se transforman utilizando las páginas
de estilo XSL de DocBook en el formato deseado. No hemos incluido aquí la lista completa de herramientas capaces
de transformar DocBook, pero a continuación damos algunos ejemplos.
Las últimas generaciones de documentación están disponibles en el sitio web de DHIS2. La últimas versiones están
disponibles mediante el servidor de integración continua ubicado aquí.
Si hay conflictos, Bazaar nos notificará esto. Los conflictos se pueden listar usando el comando bzr conflicts. Si hay
conflictos en un fichero, Bazaar creará tres versiones de ese fichero :
• [Link]
• [Link]
• [Link]
Estos ficheros corresponden a partes comunes del fichero, a la versión local y a la versión del servidor respectivamente.
Los ficheros contendrán marcadores para indicar las áreas en conflicto. Después de resolver los conflictos editando
cada fichero y eliminando los marcadores de conflicto, utilizaremos el comando bzr resolve. Esto indica a Bazaar que
el conflicto ha sido resuelto, y eliminará los ficheros BASE, THIS, OTHER.
Cuando nuestro código fuente está actualizado y se han resuelto los conflictos que hubiese, podemos subir los cambios
incluyendo un mensaje informativo acerca de los cambios realizados:
Importante
No debemos nunca subir el código utilizando el comando bzr push, que sobreescribe todos los cambios en el
repositorio, y el historial de revisión se perdería.
Si tienes alguna duda sobre cómo utilizar la documentación, o no consigues saber cómo empezar, envía un email con
tus preguntas a <dhis2-documenters@[Link]>.
202
Glosario de DHIS2
Glosario de DHIS2
A
Agregar En el contexto de DHIS2, agregar se refiere a cómo se reúnen y combinan los elementos
de datos en una determinada relación jerárquica. Por ejemplo, todos establecimientos de
salud de un determinado distrito contribuyen al valor total de dicho distrito en cuestión.
La aplicación DHIS2 permite diferentes tipos de operadores de agregado, tales como
SUMA, PROMEDIO y CONTEO.
Agregado de datos En el contexto de DHIS2, se entiende por datos agregados los elementos de datos o los
indicadores generados a través de otras fuentes jerárquicas de datos. Por ejemplo, los
datos agregados de un establecimiento de salud son el resultado de los totales agregados
de todos los pacientes que fueron atendidos en ese establecimiento para un servicio de
atentión determinado. Los datos agregados de un distrito son el resultado de los totales
agregados de todos los establecimientos de salud que pertenecen a ese distrito.
C
Categoría Las categorías se utilizan para desagregar elementos de datos. Como ejemplo, el
elemento de datos "Número de casos confirmados de malaria" puede desagregarse en
la categoría "Edad", que a su vez alberga las opciones de "Menor de 1 año", "De 1 a 5
años" y "Mayor de 5 años". Las opciones de categoría se utilizan en la entrada de datos
para simplificar el número de elementos de datos que es preciso crear. En el análisis de
datos, las categorías funcionan básicamente como dimensiones del análisis.
D
Datamart Es un conjunto de las tablas de bases de datos en DHIS2 que contiene valores procesados
de elementos de datos e indicadores, generados en base a reglas de agregado, cálculo
de elementos de datos y fórmulas de indicadores. Las tablas datamart se utilizan en el
análisis de datos y la generación de reportes. Generalmente, los usuarios no trabajan
directamente con valores de datos no agregados, sino con valores que son ya el resultado
de una exportación de datamart lista para el análisis.
Denominador El divisor de un indicador. Puede estar formado por varios elementos de datos
combinados en una fórmula (utilizando a su vez operaciones de suma, sustracción,
multiplicación y división).
Diccionario de datos Es un conjunto de elementos de datos e indicadores que pueden intercambiarse con otros
sistemas DHIS. Generalmente se utilizan para definir un set de elementos de datos y de
indicadores al configurar inicialmente el sistema DHIS.
Dimensión Las dimensiones son los criterios de clasificación de elementos de datos en el análisis.
Las dimensiones proporcionan un mecanismo para agrupar y filtrar datos en base a
características comunes. Generalmente podremos agregar o filtrar elementos de datos
relacionados entre sí durante el análisis utilizando dimensiones. Las dimensiones pueden
ser parte también de una jerarquía. Por ejemplo, la dimensión "Periodo" puede a su vez
dividirse en "Día->Mes->Trimestre->Año".
DXF Ver Formato de intercambio de datos, por sus siglas en inglés, "Data exchange format".
E
Elemento de datos El elemento de datos es la piedra angular de DHIS2. Es una unidad atómica de datos
con un significado propio y bien definido. Básicamente es un valor de datos que se
203
Glosario de DHIS2
F
Formato de intercambio de En el contexto de DHIS2, el "Formato de intercambio de datos" se refiere a un esqueleto
datos XML que permite trasladar datos y metadatos entre instancias desconectadas de DHIS,
así como entre diferentes aplicaciones que soportan formatos DXF.
G
Grupo de elementos de datos Los grupos de elementos de datos se utilizan para clasificar los múltiples elementos
de datos de acuerdo a un tema común, como por ejemplo "Inmunización" o "TARV".
Generalmente, se utilizan para los reportes o análisis con el fin de poder analizar
conjuntamente elementos de datos relacionados entre sí.
I
Indicador Un indicador es un valor obtenido de los datos de salud y calculado mediante una
fórmula, generalmente un cociente. Los indicadores se utilizan para el análisis de datos,
ya que aportan mayor información que los propios datos en bruto.
(1)
N
Nivel de una unidad Es el nivel de profundidad en una jerarquía organizativa. Normalmente cada país tiene
organizativa diferentes niveles administrativos, como 1) Nacional 2) Departamental 3) Distrital 4)
Establecimientos de salud. En el contexto de DHIS2, los establecimientos de salud son
normalmente los niveles más bajos en la jerarquía. Desde aquí, los datos son agregados
hacia arriba desde el nivel más bajo hasta el nivel más alto.
O
Unidad Organizativa Una unidad organizativa es normalmente también una unidad geográfica, que existe
en una determinada jerarquía. Por ejemplo, en Colombia, "Cauca" sería considerada
una unidad organizativa a nivel de "Departamento". Las unidades organizativas pueden
utilizarse también para especificar una unidad administrativa, como puede ser una
sección específica en un hospital. La dimensión de una unidad organizativa especifica
esencialmente "dónde" se encuentra un valor de dato determinado.
204
Glosario de DHIS2
P
Periodo Un periodo es un intervalo de tiempo concreto conformado por una fecha de inicio y
una fecha de fin. Por ejemplo, "Enero 2012" sería el periodo comprendido entre el 1 de
enero de 2012 y el 31 de enero de 2012.
S
Set de grupo de elementos de Los grupos de elementos de datos sirven para clasificar múltiples grupos de elementos
datos de datos en torno a un criterio común.
Sistema de Información Es una aplicación de visualización y edición de mapas que permite introducir, almacenar,
Geográfica manipular y analizar información geográficamente referenciada. Por ejemplo, la
aplicación DHIS2 incorpora algunas funcionalidades de SIG que permiten la ubicación
de unidades organizativas en mapas y la visualización de indicadores por regiones
geográfico-administrativas tales como distritos, provincias, etc.
Sistema de Gestión de la Generalmente es un sistema digital de bases de datos utilizado para registrar datos
Información de Salud agregados de provisión de servicios de salud, incidencia de enfermedades, recursos
humanos y otra información utilizada para evaluar el funcionamiento de la provisión de
servicios de atención de salud. Normalmete un SGIS no contiene datos muy detallados
de sistemas de registro de historia clínica electrónica o de datos individuales de paciente.
La aplicación DHIS2 es un Sistema de Gesitón de Información de Salud con alguna
capacidad extra para incorporar datos de paciente.
205
Índice
Índice
O
orgunitstructure, 126
207
DHIS2 utiliza un sistema de registros individuales que incluye la creación y búsqueda de personas. Cada individuo tiene un identificador único para evitar duplicaciones, y los proveedores de atención médica pueden inscribir a los individuos en diferentes programas. El módulo también permite planificar visitas, gestionar eventos y emitir resúmenes programáticos, asegurando un seguimiento eficiente de cada caso registrado .
Utilizar combinaciones de categorías y conjuntos de datos compartidos en DHIS2 permite combinar y comparar datos de diferentes fuentes. Por ejemplo, se pueden ver datos de VIH divididos por edad y género en una sola tabla, lo que sería imposible si los conjuntos de datos usaran diferentes grupos de edad . Esto facilita un análisis más exhaustivo y detallado de los datos agregados de salud a través de varias dimensiones .
DHIS2 ofrece una solución integral para los sistemas de información de salud (SIS) basada en un almacenamiento modular de datos que facilita la personalización según las necesidades locales sin necesidad de programar código. Proporciona herramientas para la entrada de datos que pueden personalizarse, validación para mejorar la calidad de los datos y reportes intuitivos con un solo clic. Además, incluye análisis de datos en tiempo real, gestión de metadatos sin necesidad de programación y un módulo de gestión de usuarios para la seguridad y acceso controlado. Estas características permiten que DHIS2 se adapte y facilite su implementación en diferentes niveles de la jerarquía de salud de un país .
DHIS2 distingue entre los elementos de datos y sus formularios de entrada, lo que permite modificar los formularios sin alterar los datos subyacentes siempre que los elementos de datos permanezcan inalterados. Esto ofrece flexibilidad para crear indicadores y reglas de validación basadas en elementos de datos, así como en la integración de datos de diferentes programas para análisis dentro del software .
Las "interpretaciones" en DHIS2 permiten compartir vínculos a recursos de análisis junto con textos que expresan observaciones sobre los datos analizados. Estas interpretaciones son visibles para todos los usuarios del sistema, facilitando la discusión y evaluación colaborativa de los hallazgos. Los usuarios pueden escribir comentarios adicionales sobre estas interpretaciones, promoviendo un análisis continuo y mayor comprensión de los datos .
DHIS2 permite la integración de datos de diferentes programas, tanto de rutina como semi-permanentes, en un único repositorio. Esto se logra a través de la arquitectura flexible del sistema que desacopla los elementos de datos de los formularios de entrada, permitiendo el uso compartido y la correlación de datos de diversos programas de salud en análisis complejos .
DHIS2 utiliza el recurso "dataValueSets" para manejar la entrada de datos y los informes. Este recurso permite agrupar valores de datos relacionados lógicamente capturados de un formulario de entrada. A través de identificadores como "dataSetID" y "orgUnitID", estos grupos de datos se pueden reportar y manipular usando verbos HTTP como POST para enviar valores a través de XML estructurado .
La migración de formularios en papel a conjuntos de datos en DHIS2 implica capturar cada campo del formulario como un elemento de datos atómico, eliminando referencias visuales como encabezados de columnas. Esto asegura que los datos almacenados representen con precisión la información del formulario sin las limitaciones del formato físico, permitiendo así un procesamiento eficiente en herramientas computarizadas de DHIS2 .
Para visualizar informes en el portal web de DHIS2 de forma segura, se recomienda utilizar un usuario dedicado con los mínimos permisos necesarios. También se deben evitar credenciales en texto plano en páginas web. Se sugiere considerar técnicas de proxy inverso para limitar la exposición de recursos sin requerir autenticación explícita, mitigando riesgos de seguridad .
Después de registrar a una persona, DHIS2 utiliza un método de inscripción de programa basado en fechas. Es necesario proporcionar la fecha de inscripción y la fecha de incidente del programa seleccionado. Estas fechas son cruciales para generar planes de actividad personalizados para cada persona inscrita, asegurando su seguimiento y cumplimiento dentro de los programas de salud .