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.
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. |