2. ● Introduction
● OpenMRS data model
● SmartMRS technology stack
● Why not Pentaho?
● Easy OLAP
● Demo
Overview
3. ● OpenMRS is a widely used open source medical record system.
● SmartMRS is a business intelligence solution for OpenMRS.
● A typical OpenMRS installation accumulates large amounts of data.
● This combined with the complexity of the medical domain makes it a hard
task to extract intelligence from OpenMRS manually.
● But OpenMRS can provide very useful and critical insights for society if
used correctly.
Introduction
5. OpenMRS data model is complex but centered around few main entities,
● Concept: Concepts are defined and used to support strongly coded data throughout the system
● Encounter: Contains the meta-data regarding health care providers interventions with a patient.
● Form: Essentially, the user interface description for the various components.
● Observation: This is where the actual health care information is stored. There are many
observations per Encounter.
● Order: Things/actions that have been requested to occur.
● Patient: Basic information about patients in this system.
● User: Basic information about the people that use this system.
● Person: Basic information about person in the system.
● Business: Non medical data used to administrate openmrs
● Groups/Workflow: Workflows and Cohort data
OpenMRS data model
7. ● Python based - Because of simplicity, ad hoc style of
programming and great data analysis tools etc.
● Connects directly to backend MySQL db of OpenMRS for
now.
● Uses Cubes library for OLAP and data warehouse
functionality.
● Uses CubesViewer frontend for online user interface
● Can choose among the likes of ScikitLearn, Orange for
Data Mining.
SmartMRS technology stack
9. Pentaho is the natural choice for open source BI solutions.
Which I also investigated for SmartMRS solution. But it has
some disadvantages compared to the Python/Cubes based
solution.
1. Complexity and sophistication of Pentaho makes it
harder to customize.
2. Pentaho documentation is lacking for solution
implementers(intentionally?).
3. Python vs Java
Why not Pentaho?
10. ● Start with Cubes model definition(check IDE),
● We use Observation(obs table) as fact table.
● Location(location table) as dimension table.
● Use country, province, area as drill down levels.
● Also define observation time as a dimension.
● Can drill down definitions of observations using concept
dimension.
● Many other cube definitions possible.
● With cubes you get a REST API for all cube queries as
well.
Easy OLAP