The OpenHMIS team is working on a new module that will display lists of patients; a module we are calling the patient list module. In this post we are asking for feedback from the community on our design before we start the development of the module. Please note, this module is not intended to be a solution for patient queueing as we see that as beyond the scope of this module.
The content below come from a more detailed module specification which can be found here.
Overview
The patient list module provides the ability to create customizable lists of patients that can be viewed from the Patient Lists page. A patient list is a named list with:
- One or more selection rules
- (Optional) Display templates for the patient list items
- (Optional) List ordering rules.
The selection rules utilize patient information (that is patient details, patient attributes, visit details, and visit attributes) along with a comparison value and an optional value to compare against. For example, a list can be created to show all patients with an active visit that have a last name starting with “br”. The patient list item display templates (header and body) can use patient information along with basic HTML tags to customize the appearance of the patient list items. Lastly, the ordering of the patient list can be set by using any of the patient information fields.
Patient List Functionality
A patient list is a dynamically populated list of patients that meet some set of selection rules. These lists are viewable on the Patient Lists page and are generated on-demand, when a list is requested. Administrators create and manage the patient lists via the Manage Patient Lists page. Each list must have a unique name one or more selection rules. The list can optionally have a description, item header template, item body template, and ordering fields.
Selection Rules
A list selection rule is used to select which patients will appear in the list and has three parts:
- The patient information field
- The comparison type (equals, not equals, starts with, contains, is defined, is not defined, etc)
- An optional comparison value or field
The Add/Edit Patient List page will provide a simple UI to create selection rules and have dropdowns populated with all the patient information fields. When calculating the patients to include in a list, the selection rules will be transformed into HQL that will return the appropriate patients.
Display Templates
The appearance of each patient item on the patient list is customizable via display templates. Each list can define a header and body display templates. The header template is used to set the appearance of the single-line patient item header while the body template is used to set the appearance of the patient item body. If no display templates are defined the default templates will be used. The template can use basic HTML tags along with any of the patient information fields to create the format needed. Each patient list item has two parts:
- List Item Header
- Optional List Item Body
The template will use a common (yet-to-be-determined) web template language.
Ordering
The ordering of the patient list can optionally be defined as part of the list definition by adding one or more ordering fields using the patient information fields. If no patient list order is defined the default ordering will be used.
Patient Information
The patient information fields can reference any of the following fields:
- Patient Details
- Patient Attributes
- Patient Visit Details
- Patient Visit Attributes
The patient and visit schema’s will be simplified (flattened) as much as possible. The patient information field syntax:
- Patient Details:
p.<field_name>
p.given_name
p.family_name
p.gender
p.birth_date
- Patient Attributes:
p.attr.<attribute_name>
p.attr.birthplace
p.attr.civil_status
- Visit Details:
v.<field_name>
v.start_date
v.end_date
v.note.primary_diagnosis
v.vitals.weight
- Visit Attributes:
v.<attribute_name>
v.attr.new_patient
v.attr.ward
- Special Fields:
p.hasActiveVisit
v.hasDiagnosis
Patlient list Page Mockup
Potential Future Features
- Real-time list updates
- User/Role-specific lists
- Selection Rule Grouping
- List Exclusion Rules
- User-specific lists
- List Patient Removal
- Remove a patient from a list, can be timed or permanent
- Custom Patient Field Support
- Utilize patient-related information from other modules