This project has moved. For the latest updates, please go here.

Software Architecture

The Immunization Management System (IMS) portion of OpenIZ is based heavily upon the micro-services architecture. In this architecture, a series of pluggable services implement a series of contracts. Whenever a function unit wishes to perform a unit of work it will ask the host context (IServiceProvider) to get the currently configured service provider.

image

 

Each service is described in more detail in the following with those services provided by the MARC-HI Service Core framework marked in red.

Service

Contract

Description

Messaging

IMessageHandlerService

The message handler service is started upon application start/stop and is used to receive messages, parse them into a canonical form.

IMessagePersistenceService

The message queue service allows messaging services to queue inbound messages that need re-processing.

Auth

IAuthService

Auth services are used to expose authorization schemes to OpenIMS applications, and offer centralized user credentialing.

ServiceCore

IServiceOrchestratorService

The service orchestrator is the bridge between the messaging interface services and the persistence/auditing/bre/forecasting/etc. services and is responsible for service orchestration, etc.

IConceptService

The concept management service is responsible for managing the internal concept dictionary found within the OpenIZ database.

IStockService

The stock management service is responsible for managing stock operations in the OpenIZ database.

ITimerService

The timer service is responsible for executing, and registering timer jobs that are those jobs within the OpenIZ system that operate on a schedule (database pruning, etc.)

 

IDaemonService

The base service definition for all services that are daemons (start/stop with application context).

Consent

IPolicyDecisionService, IPolicyInformationService

The consent service contract identifies a service that has the ability to apply consent rules (enforcement) against a set of results before prior to being disclosed.

Audit

IAuditorService

The audit service is responsible for handling audits generated from the IMS and either persisting them locally, or sending them to a central audit service.

Security/Roles

IIdentityProviderService, IRoleProviderService

The role provider service is responsible for determining user action permissions based on claims given by OpenIZ applications. It is also responsible for handling maintenance of the roles/users/devices/applications/etc.

Patient ID

IPatientIdentityService

The patient identity service is responsible for establishing patient identity, performing demographics searches etc.

Clinical Data

IClinicalDataService

The clinical data service is responsible for the consumption and publication of clinical data to/from OpenIZ’s IMS.

Terminology

ITerminologyService

The terminology service is responsible for communicating with centralized terminology services to resolve terminologies when no internal concept dictionary candidate is found.

HMIS

IHealthManagementInformationService

The HMIS integration service is responsible for communicating data to a central HMIS system.

Data Store

IDataPersistenceService

The data persistence service is responsible for taking the internal canonical model of the OpenIZ IMS and translating that data into the physical data storage unit.

Business Rules (BRE)

IBusinessRulesService

The business rules service is fired in a series of places and allows deployments to easily extend the OpenIZ IMS behavior’s business logic.

Forecasting

IForecastingService

The forecasting service is used primarily by the immunization management service and is focused on the forecasting of vaccine schedules. Forecasters operate in a slightly different manner than pure BRE in that Forecasting services are permitted access to make decisions on the entire patient context whereas BREs are executed on a single message interaction context.

Workflow

IWorkflowService

The workflow service is a planned service which can be used to manage and execute workflows based on a series of triggers. The workflow service is primarily hooked in on relevant events from the datastore.

Notification

INotificationService

The notification service is used to alert other systems of real-time data storage events. This is the hook that will most likely be used when implementing pure ODD in OpenIZ IMS or when merges or patient registrations occur.

Last edited Jan 13, 2016 at 7:11 PM by jf03cg, version 1