FHIR Core / OpenSRP 2 is a Kotlin application for delivering offline-capable, mobile-first healthcare project implementations from local community to national and international scale using FHIR and WHO Smart Guidelines on Android.
Collect all the requisite information required to generate a vaccine certificate as defined by the FHIR International Patient Summary (IPS) being defined by the WHO Covid-19 Digital certificate working group. (The required resources will be made available via a FHIR API to be consumed by a program like DIVOC that is able to generate vaccine certificates.)
Applies to the mADX project for measure reporting. How do we go about defining a measure, running the measure operation to be able to generate a report of measures for tracking different defined indicators
Ability to search from a list of patients (eg. pre-enrolled) in a FHIR datastore on the device or against the entire access permitted patient list on the health information system.
For the Covid app, we can add a filter in the search for
[Overdue](Filter patients whose second dose is overdue #176) - Missed appointment for/next jab
Record Jab - Start the care plan
Partially vaccinated - If had the first dose, the due date of 2nd dose
Vaccinated - If completed vaccination, view the certificate
We need a mechanism to support changing the app language based on preference by the app user. The SDK does this by checking the global setting of the phone and then setting the translation of the FHIR resource
Add translation for different languages for LTR Locale
Add translation for different languages for RTL Locale
User story :
As a CHW, I want to register a patient so that they can be enrolled on the platform.
The patient details will be based on the FHIR resource as a Questionnaire
Acceptance criteria :
On the landing page, you can view a list of already enrolled patients on the platform. - Design mocks will be required issue
The patient list should show details of the patient (ID, Firstname, Lastname, Gener, DOB)- Design mocks will be required issue
On clicking a patient you can view the patient profile (details here)
Click on the add patient button to be presented with a form to fill in patient details.
Provide an option to save the response which will be saved as an FHIR QuestionnaorResponse
As we look to a migration to FHIR there are several things we need to explore on the web front.
First, we will need to potentially support two versions of OpenSRP web. One that we can use to support current projects and one that runs fully off a FHIR backend like HAPI.
Current Functionality
User management - need to work on both OpenSRP web and HAPI
Locations - need to work on both OpenSRP web and HAPI
User permissions - ??
Patient Data View
We will use FHIR to view data for all OpenSRP projects. This mean patient views will be powered by a FHIR backend (eg. HAPI).
For existing projects, we will create a beam process to extract data from OpenSRP and into HAPI.
For the patient view we should explore multiple strategies:
IHRIS - This is a Vue app developed by intrahealth that is able to view provider data pointing at a HAPI server. They use SDC configs to configure views I believe. We should evaluate if we want to borrow from this approach or potentially even build off their app (note would require us switching to Vue). Here is a writeup Craig did on this.
We roll on own. There are a number of interesting FHIR react libraries
Data Editing and form collection - Need to fill this out but there is a smart on fhir app that links data lookup to web FHIR questionnaires.
Reveal
If we migrate Reveal to the FHIR SDK - we we'll need to evaluate how plan definitions would work in the future and if we would need to rebuild the UI for those.
we need to verify how team assignment would work and if the current opensrp web interface would support the plan location assignment.
How will we run the apply operation from HAPI FHIR Server which is currently not supported to generate the plan/activity definitions?
Alternaternatives
Add the CQF ruler lib (CQF Ruler provides clinical reasoning on top of Hapi) - Can be part of the core codebase. If so who will be tasked to write that code base? (Google or Ona)
How to be able to go about saving locally stored FHIR resources from the SQLite DB to the HAPI FHIR server. MIght be done on the Android FHIR SDK. Link to similar issue in Android FHIR SDK
We expect to have non-general functionality that we would want specific users to be able to load into the single app.
For example, we will implement an image processing engine that is only used by specific users completing questionnaires with a call out to image interpretation.
Conceptually, this is similar to app-store-like apps, e.g. the Roblox app, which is a single app that can load specific games that are not predefined or compile into the app.
User story :
As a CHW, I want to register a patient so that they can be enrolled on the platform.
The patient details will be based on the FHIR resource as a Questionnaire
Acceptance criteria :
On the landing page, you can view a list of already enrolled patients on the platform.
The patient list should show details of the patient (ID, Firstname, Lastname, Gener, DOB)
Click on the add patient button to be presented with a form to fill in patient details.
On clicking a patient you can view the patient profile (details here)
We shall be mainly working on the following FHIR resources
Patient
Related Person (Optional ?)
Questionnaire
QuestionnaireResponse
Encounter
Observation
ServiceRequest
DiagnotsticReport
CarePlan
Location (Optional)
Later on, we can circle back and then link the ML kit portion
At the FHIR SDK the application will rely on the following :
Data Access API - Set of APIs for performing CRUD operations on FHIR resources in the SQLite DB
Search API - On-device fluent search API allows the application to compose complex search queries to filter FHIR resources and build lists
Data Capture API - SDC specification implementation
Sync API - Provides sync capabilities between a FHIR server and the local DB
NB. support for displaying forms and submitting (via Questionnaire/QuestionnaireResponse) and support for clinical decision support may also be core features
This is broad but includes validating that data rules for fields are not broken e.g. a number-only field should not allow text, some fields cannot be left blank etc.
Save questionnaire resource to SQLite DB and ensure it syncs to FHIR server
Sync offline data for patient registration and vaccine administration automatically sync to the FHIR server.
Check for new patients/updates associated with that vaccine site or worker.
For ANC App
The application will be able to support all key workflows offline including patient registration and ANC visit administration. The app will be able to automatically sync with a FHIR server. This will include checking for new patients/updates associated with that.
From the discussion on hapi FHIR Authentication refer to document here
We need to extend the hapi fhir Authorization Interceptor to allow us talk to keycloak and obtain a login attempt response
Use the Android FHIR SDK to represent a real-world care journey without requiring Smart Guidelines
Ability to easily author / adapt the ANC enrollment form using SDC/FHIR questionnaires. This form when completed will be programmed to automatically update the appropriate FHIR resources (eg. Patient and CarePlan). A form builder will not be included in the work but these forms can easily be authored with a tool like https://lhcformbuilder.nlm.nih.gov
This is a broad issue but includes encrypting data on the device, server and when transmitting it over the wire. This is supported in the current OpenSRP core and is part of the G6PD requirements.
Enrol a patient in a Covid-19 vaccine care plan and record-related vaccinations
Capture the required information to generate a vaccine certificate for the international patient summary.
Easily author / adapt the vaccination form using SDC/FHIR questionnaires. This form when completed will be programmed to automatically update the appropriate FHIR resources (eg. Immunization). A form builder will not be included in the work but these forms can easily be authored with a tool like (https://lhcformbuilder.nlm.nih.gov)
Generate a Care Plan - When the patient has registered a care plan for Covid-19 will be set-up with tasks created for a single or multi-dose administration (depending on the vaccine being administered).
This is a broad issue that includes support for login on the device, ACLs for users and general user administration support. This is supported on OpenSRP core through OAuth/Keycloak. This is a requirement on G6PD.