Skip to content

Commit

Permalink
EA-182 - Update minimum OpenMRS version to 2.2.1 and consolidate lega…
Browse files Browse the repository at this point in the history
…cy code

* Increase OpenMRS version requirement to 2.2.1 (minimum required by code in web-2.2)
* Update reporting module dependencies to reflect increased OpenMRS platform dependency
* Removed api-1.10 which was only loaded used for 1.10
* Removed api-1.11 which was only loaded used for 1.11
* Removed api-pre2.2, which was only loaded for versions < 2.2.0
* Removed fhir-condition, which was only loaded for versions 2.0-2.1
* Moved / consolidated code from api-1.12 and api-2.2 into api
* Moved / consolidated code from web-2.2 into omod
* Consolidated different versions of EmrOrderService, ObservationMapper, ObsBuilder, DrugMapper, OrderMapper that were only needed to support Order API differences between 1.9 and 2.2
* Update REST supported versions
* Removed provider name tests that are not supported in OpenMRS 2.2+
* Fix failing unit tests and upgraded for compatibility with 2.2+
* Removed/conslidated EmrVisitService in favor of DiagnosisService as all methods are diagnosis related
* Ignore out unit test that fails due to multi-threading and configuration
* Remove custom CareSettingType in favor of the core version
  • Loading branch information
mseaton authored May 23, 2024
1 parent 6c5fa60 commit f036038
Show file tree
Hide file tree
Showing 149 changed files with 1,760 additions and 9,249 deletions.
144 changes: 142 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,145 @@
openmrs-module-emrapi
====================

Higher-level APIs to support building EMR functionality in OpenMRS, to supplement the data-level APIs
in the OpenMRS core.
Higher-level APIs to support building EMR functionality in OpenMRS, to supplement the data-level APIs in the OpenMRS core.

# Dependencies

## Required core version

* 2.2.1

## Required modules

* reporting (+ serialization.xstream, htmlwidgets, calculation)
* providermanagement
* metadatamapping
* event
* webservices.rest

## Aware of modules

* fhir2
* metadatasharing

# Configuration

* EmrApiProperties + EmrApiConstants wraps much of the configuration, much of which is in GPs and metadata mappings

# Startup

* Creates a role named "Privilege Level: Full", if it doesn't exist, and ensures it has every privilege that does not start with "App:" or "Task:"
* Creates a role named "Privilege Level: High", if it doesn't exist, and ensures it has every privilege that does not start with "App:" or "Task:" and is not in a list of "unsafe" privileges
* Creates metadata source, metadata mappings, and metadata sets that are required for the configuration
* Creates an "Unknown Provider" provider if it does not exist
* Sets default visit assignment handler via global property
* Sets up the patient viewed event listener subscription
* Ensures the person image folder exists

# API

## account

* AccountDomainWrapper - wrapper for Person + User + Provider with methods for getting and manipulating account-related data
* AccountService - CRUD operations for AccountDomainWrapper and opinionated methods for getting roles and privileges
* AccountValidator - validates an AccountDomainWrapper
* ProviderIdentifierGenerator - interface for generating a provider identifier

## adt

* Provides higher level APIs around Admission, Discharge, and Transfer
* These are based on the "Disposition" configuration in DispositionService / DispositionDescriptor and metadata in EmrApiProperties
* A/D/T based around specific encounter type and optional form
* Provides an implementation of automatically creating visits and assigning encounters to visits with appropriate visit types, if no visit is associated with the encounter
* Provides an implementation of closing "stale" visits and a scheduled task to automate this
* Provides additional service methods to manage visits, ensure active visit, deal with overlapping visits, manage visit locations, enter retrospective visits
* Provides implementations for merging patients and merging visits
* Provides APIs for creating checkin encounters, adt encounters, and identify and get inpatient visits

* (reporting module) definitions and evaluators for getting:
* AwaitingAdmissionVisitQuery - any Visits that are in the state of "awaiting admission"
* MostRecentAdmissionRequestVisitDataDefinition - data from a Visit relevant for "admission request"

## concept

* Provides additional service methods for getting and searching for concepts

## db

* Various utility classes for dealing with DB and Hibernate queries and access and DAO implementations in support of other services

## descriptor

* Utilities for working defining concept sets and members and creating and manipulating obs groups

## diagnosis

* Diagnosis and CodedOrFreeTextAnswer wrapper classes to represent a diagnosis as a concept set / obs group
* Deprecated services and utility classes (is core as of 2.2) related to Diagnosis

## disposition

* Concept Set / Obs Group specification for modeling a disposition
* Configuration relating disposition to Admission / Discharge / Transfer
* Json parsing and handling specification for reading in a dispositionConfig.json that determines how disposition obs behave
* Services and DispositionAction interface and implementations for performing operations as a result of a disposition

## domainwrapper

* Utility classes for creating and manaing domain wrapper classes

## encounter

* EncounterTransaction that provides a json model object for encounter, obs, order, diagnosis, disposition, providers, and additional extensions and context
* Mappers to convert to/from data and EncounterTransaction / json
* Matcher interface and base implementations to find an existing Encounter given a set of parameters
* Processor interface for reading and saving Encounter and EncounterTransaction
* Service methods to leverage the other entities to enable saving/finding/retrieving encounters based on the EncounterTransaction construct
* Logic for handling evolution of Orders through to OpenMRS 1.9

## event

* Basic interface and implementation for publishing events with the event module whenever a user views a patient
* Event listener on patient view events to track in the user's property of emrapi.lastViewedPatientIds

## exitfromcare

* Service with methods to close/reopen programs, visits, patient death information

## merge

* Interfaces for PatientMergeAction and VisitMergeAction, used within the merge methods in the adt package
* Should really have this and the service methods in the adt package together

## metadata

* Utility classes for mds import specifications, likely no longer used

## patient

* PatientDomainWrapper - convenience methods around Patient and related tables, including primary identifier, telephone number, unknown patient, and test patient
* EmrPatientProfileService - allows associating a patient with a PersonImage
* EmrPatientService - methods to find patients by visit location or primary identifier
* (reporting module) definitions and evaluators for getting patient Primary Identifier

## person

* Services and convenience entities for saving person images to a configurable directory

## test

* Convenience classes for constructing concepts, concept data types, and obs

## utils

* Utility classes / functions in support of the other packages as needed

## visit

* Service and parameter objects to find visits and return associated EncounterTransactions in that visit
* Service methods to get diagnoses obs and patients with particular diagnoses
* VisitDomainWrapper - convenience wrapper to get info around active / open status, encounters contained, diagnoses, dispositions, ADT status

# condition-list

This provides an implementation of condition list functionality, but condition was added to core in 2.2, so this is likely no longer needed
99 changes: 0 additions & 99 deletions api-1.10/pom.xml

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Loading

0 comments on commit f036038

Please sign in to comment.