Next steps in CORE-MIS Migration
Comparison | Data Model | |
Insuree | Individual | |
Model |
| |
Model with its dependencies | Higher Resolution Image: [LINK]
| |
Data Fields | Many fields in the Insuree model, such as
Moreover data structure field compulsoriness is not reflected on the frontend level. Several fields (chf_id, gender) are marked as mandatory on frontend but on database level they’re optional. Properties like this are essential for claim processing, however are not needed for any social protection activities. Using Insuree as a base for social protection could lead to potential data inconsistencies (e.g. in scenario where person was added for purpose of social protection and there was attempt to reuse this entity for insurance, then unexpected errors could occur).
The Insuree model has many fields and relationships, making it quite large. Managing such a model can be challenging, as it already involves dealing with a large number of columns, each of which needs to be understood and maintained. Using insuree in another context than health protection could result in even more complexity.
From Data Fields perspective the biggest drawback is complexity of understanding and maintenance. With so many fields and relationships and shifting requirements across the application, understanding the Insuree model and how it interacts with other parts of the system requires a significant investment of time, especially from new developers. If there were fewer fields, each only included where necessary, the model could be easier to understand and maintain.
| Individual come with simplified data structures. It only includes three necessary fields:
Relying only on
As the Individual model is defined, there should be no unnecessary null values, as all fields are defined as non-nullable (
The Individual model is simpler and thus easier to understand. Maintenance should also be easier due to the small number of fields and the flexibility provided by
|
Business Use | Business requirements of Insuree model that are problematic from perspective of Social Protection:
Family model has it’s own requirements regarding the location. Location structure is also strict and has an inflexible 4 level location hierarchy with parent-child relationships and users binded to district level. While it’s working for the current requirements, existing location logic may require rework in the future, new features created for core-mis purposes doesn’t have location restrictions, and therefore no changes are proposed for the time being.
Based on that it would be hard to use existing Insuree as source for personal information without either:
Insuree module dependencies:
| Individual is providing flexible information about a person, and has no real business use, except for being a core for all beneficiaries in the system (Insurees and Social Protection ones). Therefore the amount of stored information and dependencies are reduced to a minimum.
Module dependencies:
|
Current Data Structure Use in the System |
|
Similarities and differences for Social Protection and Health Insurances
| Health Insurance | Social Protection |
Data Collection and Data Requirements | Data Requirements for health insurance data is related to health and demographic data. Requirements for eligibility and claim categorization are known ahead and refer to gender, age, family relations, imis identifier (chfID). | Data requirements are known for single program and there are barely any common points. Data can refer to very specific like “Number of elderly or disabled dependents” or “Proximity to disaster-prone areas”. Sometimes those values are not even known from the survey and data might require transforming (like determining the number of disabled dependents is based on answers from each dependent in the household). |
Financing and Risk management | Can rely on pooled funding that might be a premium paid by insurees. | Also can rely on pooled funding. No premiums, might be public funding or donations. Note: financing is not part of the MVP, it is mentioned because there are similarities between Benefit Program definition and IMIS Product. |
Stakeholders Management | Variety of stakeholders. These might include the individual participants, service providers, funding sources, and regulatory bodies. These depend on the implementation. | |
Benefit Provision | Benefits are provided when a specific event occurs - could be hospital visit, injury. Benefit is not paid directly to the individual, but to the service provider. | Usually provided regularly not tied to events, provision is provided directly to the individual. |
Regulation and standardization | Heavily regulated, good standards for handling of claims, data structures and processes. Global standards for data and requirements exist (FHIR, openHIE). Easier interoperability of systems. | Subject to different regulations, might depend on the implementation and program. No acknowledged global standards are in place. |
Approach for aligning existing data structures with new business requirements
Based on the information we have, we’d like to continue going with the approach in which existing openIMIS structures would be adjusted for utilization of new models. There are several possible approaches which vary in complexity and time required to make adjustments.
Overhaul solution
This solution would necessitate significant alterations to the Insuree and other existing entities to increase flexibility. The changes would include:
Data Migration: We would need to extract shared data (first and last name, dob) from the existing Insurees and move it to the Individual model. Similar migration would be done for Families/Groups.
Change in Insuree Creation Process: We would need to revise the way Insurees are created. They would no longer be treated as a base entity for beneficiaries in the system but rather as a type of beneficiary.
Individual-Based Approach: A single Individual entity would be created for various use cases like health insurance, formal sector insurance, social protection benefit, and more. This would enable us to provide multiple features and meet different stakeholder needs without relying on complex data structures.
Updated Workflow: The new flow would require creating an Individual while registering/uploading the insuree.
Insuree Data Structure Revision: We would need to change the data structure of the Insuree. This could involve moving identifiers like CHFID, national ID, functional ID, social security number, etc. to a separate table related to the individual, improving interoperability with different systems. As well as introducing other changes, described in next points.
Configurable Field Options: We could introduce configurable Insuree parameterization for optional fields. Through the use of django-config, implementers could define schemas for the insuree. This would reduce the need for direct changes to the Insuree module or coding extensions.
Removal of Optional Fields: Optional fields could be removed from the “base” Insuree and moved to a configurable schema. This would simplify the model and not require coding for hiding them on the frontend.
Removal of the isHead Flag: The isHead flag, which indicates the role in the family, could be removed from the Insuree. This eliminate the circular dependency between the Insuree and Family entities.
Centralization of Individual Information: The "Individual" view should provide comprehensive information about the person in the system, including insurances, policies, groups, and other provisions.
Moreover, existing Families/Groups could be replaced with InsuranceGroups (based on Groups consisting of individuals, not insurees), providing more comprehensive information. We would no longer need a bridge between the Insuree and policy, as the actual Insurees could store information about provisions the user is receiving. This structure could also accommodate cases where a person is part of more than one family without having to remove them from existing ones.
In the long term, we could aim for a benefit plan structure where we have:
Individual - Beneficiary (which is actual benefit consumption) - Benefit Program (Social Benefit)
For Insurees, we would have:
Individual - Insuree (actual program consumption) - Program (Health Protection Benefit)
While the business life cycles of Insurance and Benefit Plan differ significantly, it's feasible to create an abstraction to cover many similarities. From there, we could consider a standard structure for provisions in IMIS, operating on flexible and relatively simple entities. This structure would be:
Individual - Benefit Consumption - Benefit Definition
In this way, the extension of openIMIS could manage health financing and social protection more easily. Each new extension should be easier to introduce, streamlining future developments.
This option is likely to be the most time-consuming as it necessitates modifications in almost every module. However, in the long term, it's arguably the most sustainable and easy-to-maintain approach among those proposed. Simplifying and standardizing the structure should also positively affect the codebase, system configuration, and new developers' onboarding process. As business fields would be more configurable, it will be easier to comprehend their existence within the system and assess the impact of new changes on existing logic. This strategy could also be advantageous from the perspective of new users, as it will simplify the creation of instances containing only relevant information. For instance, the current Product definition includes plenty of information that might be specific to particular instances but might be irrelevant or extraneous from the perspective of developers or implementers.
Did you encounter a problem or do you have a suggestion?
Please contact our Service Desk
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. https://creativecommons.org/licenses/by-sa/4.0/