MEDIC Client Registry - MARC-HI Everest - marc

Transcription

MEDIC Client Registry - MARC-HI Everest - marc
MEDIC Client Registry
Operations and Deployment Guide
Version 1.0.1
Justin Fyfe
2/11/2015
Table of Contents
1.
2.
Introduction .......................................................................................................................................... 4
1.1.
Purpose ......................................................................................................................................... 4
1.2.
About the MEDIC Client Registry .................................................................................................. 4
1.3.
Data Paradigm............................................................................................................................... 4
1.4.
Standards ...................................................................................................................................... 5
Deployment........................................................................................................................................... 7
2.1.
Planning your Client Registry Deployment ................................................................................... 7
2.1.1.
Assigning Authorities ............................................................................................................ 7
2.1.2.
Security ................................................................................................................................. 8
2.1.3.
Planning for Scale .................................................................................................................. 9
2.2.
Installation .................................................................................................................................. 11
2.2.1.
Obtaining the Software ....................................................................................................... 11
2.2.2.
Basic Configuration ............................................................................................................. 11
2.2.3.
Advanced Configuration ..................................................................................................... 14
2.2.4.
Auditing Configuration ........................................................................................................ 24
2.2.5.
Messaging Configuration .................................................................................................... 25
2.3.
Verifying Your Deployment ......................................................................................................... 28
2.3.1.
2.4.
3.
Verifying Security ................................................................................................................ 28
Administrative Interface ............................................................................................................. 29
2.4.1.
Setup the CR Service ........................................................................................................... 29
2.4.2.
Setup an IIS Site................................................................................................................... 29
2.4.3.
Configure the Website ........................................................................................................ 30
Administering the Client Registry ....................................................................................................... 32
3.1.
Reviewing Patient Data ............................................................................................................... 32
3.2.
Conflict View ............................................................................................................................... 34
3.2.1.
3.3.
Resolving Conflicts .............................................................................................................. 35
Obtaining Diagnostic Information............................................................................................... 37
3.3.1.
Versions............................................................................................................................... 37
3.3.2.
Obtaining Log Files .............................................................................................................. 38
3.3.3.
Reviewing Assigning Authorities ......................................................................................... 39
Operations and Deployment Guide
Page 2 of 39
Operations and Deployment Guide
Page 3 of 39
1.
Introduction
This section seeks to introduce the client registry reference implementation, the history of the project as
well as the architecture of the reference implementation.
1.1.
Purpose
This guide is intended to serve as a deployment and operations manual for the MEDIC Client Registry
reference implementation. The guide does not discuss specific details of integration with the client
registry beyond mentioning of base standards.
1.2.
About the MEDIC Client Registry
The MEDIC Client Registry (previously known as MCAAT CR) began as a reference implementation of the
pan-Canadian Standards (pCS) Client Registry messages in early 2010. It was part of the reference
implementation revamp project which sought to improve the performance, flexibility, reuse and
standards compliance of several early reference implementations.
The MEDIC CR is based on, and heavily leverages the MEDIC service core framework. This framework
provides a series of plugins which allow a particular piece of software to “act as” a reference
implementation. The service core provides an application host which loads a series of “service
providers”, each implementing a particular contract or interface. Figure 1 provides a high level overview
of the service classifications implemented in the Client Registry.
Figure 1 - Client Registry Components
This architecture has allowed the client registry to evolve over time and it has since grown to support a
multitude of features and standards.
1.3.
Data Paradigm
The MEDIC Client Registry (and Shared Health Record) sees the world in an interesting manner. Instead
of storing data in a model which is tied to one particular messaging format or information model, it
instead breaks apart data into a series of components. Using this component model, the client registry
Operations and Deployment Guide
Page 4 of 39
expresses data as a hierarchy of component types who participate in their container through as site
relationship. For example: An encounter where a physician “observes” a patient’s estimated date of
delivery would be interpreted as : An Event occurred, an observation (estimated delivery date) was
made which is the subject of the event, an observation of last menstrual period supports the primary
observation, and a health worker is the author of the event.
Figure 2 - Component Pattern
By viewing data through this lense, MEDIC is able to reuse not only application components between
reference implementations, but also the data model components between them.
This component architecture is then normalized into a series of relational tables stored in PostgreSQL.
1.4.
Standards
The MEDIC CR supports a variety of standards, some of which have been validated at the IHE North
American 2015 Connectathon. Table 1 provides a list of standards which the MEDIC CR officially
supports and the options implemented.
Table 1 - Client Registry Interfaces
Standard
HL7v3 pCS
Actor
CR-001 – Add/Revise Client
Fulfiller
IHE PIX
PAT_ID_X_REF_MGR – PIX
HL7v2
Manager
PAT_IDENTITY_SRC – Patient
Identity Source
IHE PDQ
PDS – Patient Demographics
HL7v2
Supplier
IHE PIX
PAT_ID_X_REF_MGR – PIX
HL7v3
Manager
PAT_IDENTITY_SRC – Patient
Identity Source
IHE PDQ
PDS – Patient Demographics
HL7v3
Supplier
Operations and Deployment Guide
Verified As
R02.04.02
Options
None
Module
Messaging > Everest
NA2015
None
Messaging > NHAPI
NA2015
None
NA2015
Continuation Messaging > NHAPI
Not Tested
Pediatric
Not Tested
None
Not Tested
Continuation Messaging > Everest
Pediatric
Page 5 of 39
Messaging > Everest
IHE PDQm
PDS – Patient Demographics
Supplier for Mobile
Operations and Deployment Guide
NA2015
Continuation Messaging > FHIR
Pediatric
Page 6 of 39
2.
Deployment
This section seeks to discuss the steps required to deploy the MEDIC Client Registry in a variety of
environments. It describes the basic considerations that should be undertaken prior to installing the
Client Registry in a production environment including hardening.
2.1.
Planning your Client Registry Deployment
Prior to deploying the Client Registry it is important to understand the environment into which it is
being deployed. Operationalizing a Client Registry takes much time and consideration and rushing this
process can lead to greater issues during maintenance and migration.
2.1.1. Assigning Authorities
The first task for planning is the assigning authorities and security configuration. In a client registry, an
Assigning Authority is a device or organization which holds authority over identifiers within that domain.
It is important to gather an understanding of organizations which will be the sources of identities as well
as the domain for which they will contribute identifiers and demographics.
To assist in the organization of this, it is useful to maintain a list of domain identifier and assigning
authority information. While this can be done within the CR, it is recommended that implementers use a
spreadsheet or table for tracking authority and domain information. The following step-by-step guide
can be used as a method for doing this work, it is not, by any means the only way to assign OIDs.
Root
Suffix
Use
Device
Notes
The steps for completing this pre-setup task are:
1. Register a Root: You should register a root OID which you can subdivide for the Client Registry.
If you’re deploying an HIE, you should have a root authority for the HIE which you can subdivide
into the CR components. To register a root OID, you can contact IANA’s Private Enterprise
Number (PEN) service.
Root
1.3.6.1.4.1
Suffix
0000
Authority
PROJECT
Device
Notes
Our ROOT OID for Project
2. Subdivide your OID for each system: Create a root OID for each of the systems in your
infrastructure including the Client Registry. Typically the Client Registry will have its own “root”
which it can subdivide.
Root
Suffix
Authority
Device
Notes
1.3.6.1.4.1
0000
PROJECT
N/A
Our ROOT OID for Project
1.3.6.1.4.1.0000
10
CR
CR
Client Registry’s OID
1.3.6.1.4.1.0000.10
1
Hosts
N/A
Cluster – Physical Devices
1.3.6.1.4.1.0000.10.1
1
CR
CR1
Application Host 1
Note that this example assumes you may want to have multiple App Servers, in which case
you’d subdivide again for each physical host.
3. Subdivide your OID for logical identifiers: You will also have to subdivide OIDs for your logical
identifiers used within the client registry:
Operations and Deployment Guide
Page 7 of 39
Root
1.3.6.1.4.1
1.3.6.1.4.1.0000
1.3.6.1.4.1.0000.10
1.3.6.1.4.1.0000.10.2
1.3.6.1.4.1.0000.10.2
Suffix
0000
10
2
1
2
Authority
PROJECT
CR
CR
ECID
EVT
Device
N/A
CR
N/A
CR
CR
Notes
Our ROOT OID for Project
Client Registry’s OID
Logical identifiers
Enterprise Client IDs
Event Identifiers
4. Obtain third party OIDs for each Assigning Authority: Finally the client registry will need to
know of other assigning authorities for identifiers which it won’t have authority over. These can
be assigned under different root OIDs (for example PHN or SSN in a jurisdiction) or can be
assigned out of your own pool of OIDs.
Root
Suffix
Authority
Device
Notes
1.3.6.1.4.1
0000
PROJECT
N/A
Our ROOT OID for Project
1.3.6.1.4.1.0000
99
PROJECT
N/A
Other Client Identifiers
1.3.6.1.4.1.0000.99
1
CLINIC1
OSCAREMR
OSCAR Clinic 1 Identifiers
2.16.840.1.113883.4
59
anyone
CA-ON
Ontario Personal Health #s
This example illustrates OSCAR EMR local identifiers from CLINIC1 will have an OID of
1.3.6.1.4.1.0000.99.1, opposed to a an Ontario PHN which can be assigned by anyone. This is
important to distinguish as you’ll need to configure the CR to use these identifiers.
The MEDIC CR uses the “Golden Record” paradigm which means that each patient is assigned an internal
client registry identifier (the CR_CID or CR Client ID) and that identity will have one set of demographics
for that patient. The MEDIC CR is the only recognized assigning authority for that domain, and it is the
only actor which can register identifiers and/or merge identifiers.
2.1.2. Security
Another important note is the installation and obtaining of security certificates and auditing tools. The
MEDIC CR distinguishes between log events and audit events. Log events are recorded via application
logs and deal primarily with application information which is useful for debugging problems, whereas
audits are records of clinical and security events. The MEDIC CR relies on third party audit tools for
collecting audit information, if you haven’t already done so, you’ll have to install and configure one.
The following security questions should be answered prior to deploying the CR.
1. Is the Client Registry physically segregated from public traffic? i.e. Will I rely on the firewall to
block access to the CR? If the answer is no, you’ll need to setup TLS.
2. Does my environment already have a certification authority? If yes, you’ll have to obtain a
signed certificate from that authority, otherwise you’ll have to set one up.
3. Is there a need to know which machines (CN from certificate) are accessing records? If the
answer is yes, you’ll have to use TLS.
4. Does my audit record repository reside on a separate machine? If yes, you’ll most likely have to
setup TLS.
Additionally you should consider governance principals surrounding access to the physical machines
where the client registry application server and databases are located. Consider using a centralized
authentication service such as Active Directory as it will make your access controls easier to maintain.
Operations and Deployment Guide
Page 8 of 39
2.1.3. Planning for Scale
The MEDIC CR is broken into a series of components which can be scaled out quite easily. There are four
types of deployments of the CR supported.
2.1.3.1. Single System
In this deployment the Client Registry is deployed on a single machine. This is the deployment supported
by the bundled installers from the Technology Exchange and is the easiest of the three to setup.
Logically this setup is pictured in Figure 3.
Figure 3 - Single Server Deployment
This type of deployment is recommended for development machines, test environments and small
environments (< 50,000 patients and < 4 simultaneous transactions).
2.1.3.2. Separate Application / Database Host
In this deployment the Client Registry Service (Application) is deployed on one physical machine whilst
the database is deployed on another. This separation allows an implementer to scale up each system
separately.
Figure 4 - Separate application and database
This type of deployment is recommended for small to medium (between 100,000 and 1,000,000
patients) production deployments.
Operations and Deployment Guide
Page 9 of 39
2.1.3.3. Separate Application / Component Database Hosts
In this deployment, the Client Registry Service (Application) is deployed on a physical machine whilst the
primary patient store and ancillary data sources scaled to separate database hosts. This allows the Client
Registry service to quickly access patient information while offloading more mundane tasks such as
message persistence, query persistence and code lookups to another server.
This type of deployment is recommended for medium production deployments where high transaction
volumes are common, as it is typically these that cause contention on query and message persistence
tables.
2.1.3.4. Clustered Deployment
Perhaps the most complex deployment, this option sees the client registry application services deployed
across multiple hosts with the primary datastore separated from ancillary services and replicated in a
master/slave configuration. In this configuration all new patient data is written to the master database
(say master.db.project.com) and all reads / queries are performed against the slaves setup in a
streaming replication scheme (say slave1.db.project.com, slave2.db.project.com). It may also be
possible to balance the load further by performing round-robin DNS for each of the slaves and each of
the application hosts. This deployment is illustrated in Figure 5.
Figure 5 - Clustered deployment option
Operations and Deployment Guide
Page 10 of 39
This deployment is recommended for large production deployments with high transaction volumes. The
MEDIC’s demonstration service (http://cr.marc-hi.ca) uses this configuration with two primary slaves
and one database for ancillary services and one application server. It is capable of servicing query
responses under 1,000 ms and has a population size of 250,000.
2.2.
Installation
2.2.1. Obtaining the Software
The MEDIC CR software can be obtained from the Mohawk College Applied Research Centre’s
Technology Exchange (http://te.marc-hi.ca). There are two options available for download:


Bundled – Use this installer if you’re deploying the MEDIC CR on a single server for development
or testing purposes. This setup includes PostgreSQL 9.2 and handles setup of the database
infrastructure.
Standalone – Use this installer for any other type of installation as it only includes the client
registry code.
Note: When installing the MEDIC CR on Windows 8 or Server 2012 you may receive a Windows
Defender alert. This is due to the setup package being unsigned and can be fixed by right clicking on the
setup executable and “Unblocking” the installer.
Figure 6 - Unblock Installer
After installing the MEDIC CR it will have to be configured. The “Client Registry Configuration” tool
provides an opportunity to do this configuration in a graphical manner and is well suited for basic
configuration tasks. There may be times when manual configuration is required. Implementers are
advised that they may use the configuration tool even after hand-editing the configuration file.
2.2.2. Basic Configuration
The basic configuration of the Client Registry will deploy the necessary schema and application services
to start a basic Client Registry. To perform a basic configuration select “Basic Configuration” from the
configuration tool:
Operations and Deployment Guide
Page 11 of 39
Figure 7 - Easy installation option
You may create a new database for the client registry if you haven’t already done so by clicking the
“New…” button next to the database name field.
To create a new database in the tool supply the server name, a super user’s credentials, the database
name and owner of the client registry database schema.
Operations and Deployment Guide
Page 12 of 39
Figure 8 - Creating a database
After deploying the basic services the configuration tool will open the main configuration interface. This
will allow you to further configure the instance. The Client Registry, by default, only has the
administrative interface enabled. To configure other interfaces see the section related to messaging
configuration.
Operations and Deployment Guide
Page 13 of 39
Figure 9 - Client Registry after Basic Configuration
2.2.3. Advanced Configuration
The “Advanced Configuration” option in the configuration tool will not setup any data schemas or
services in the client registry. It is intended to be used for production deployments with more complex
database server architectures.
After selecting “Advanced Configuration” and pressing “Continue” the main configuration window is
opened. This allows you to configure each component individually.
Operations and Deployment Guide
Page 14 of 39
Figure 10 - Client Registry with no Configuration
2.2.3.1. Core Service Configuration
The first step of configuring your Client Registry instance is to setup the Service Configuration. If this
step is performed first, it will make the rest of the configuration process simpler. Start by selecting the
“Service Core > OID Registrar” node in the tool. You will be presented with a list of default OIDs for the
client registry.
It will make your job easier if you setup a new OID for your project called “PROJECT” or “ROOT” with
your root OID in the OID field.
Operations and Deployment Guide
Page 15 of 39
Figure 11 - Creating an OID
Now you can configure the OIDs used by the CR. This task is performed by selecting an OID and pressing
the edit button. The fields on the Object Identifier form are as follows:





Name: An informative name for the identifier, should have no spaces
OID: The object identifier you had created in your OID plan
Note: Human readable sentence describing the oid
URL: The url where the identifier is described. This is a mandatory field and may be a URN in the
form : urn:oid:xxxxx
Extension Attributes: One or more additional attributes about the OID which assist the client
registry in determining how to OID should be used. They are as follows:
o AssigningAuthorityName: The CX.4 in HL7v2.x messages which maps to the OID
o OIDType: The CX.4.3 of the OID, this is usually fixed to ISO
o AssigningDevFacility: The MSH-3|MSH-4 of an HL7v2.x which is allowed to assign
identifiers (if not present no one may issue identifiers from HL7v2 messages in this
domain)
o IsMergeSurvivor: Indicates that the identifier survives a merge. This controls the way
that the identifier is returned in queries after a merge. If set to false then the victim
identifiers continue to be reported in responses to queries. Not recommended if
IsUniqueIdentifier = true, however in some cases it may be beneficial to do this.
o IsUniqueIdentifier: Indicates whether the identifier is unique or if communities of
patients can share the identifier (example: Cohort number)
o GloballyAssignable: Indicates whether the identifier can be assigned by a system
outside of its authority (example: driver’s license numbers or SSN)
o CustodialDeviceId: Indicates the OID of the device which is allowed to assign the
identifier from HL7v3 messages.
Operations and Deployment Guide
Page 16 of 39
o
o
o
CustodialDeviceName: Indicates the name of the device which is allowed to assign the
identifier from HL7v3 messages
CustodialOrgName: Indicates the name of the organization which is responsible for
custodianship of the identifier
CustodialOrgContact: Indicates a contact method (phone number, email, etc.) of the
organization which is responsible for the custodianship of the identifier.
A sample of an ECID OID configured is found in Figure 12.
Figure 12 - Setting up the CR_CID OID
You may also edit the OIDs using the configuration file. The Client Registry configuration file is located in
“%InstallDir%\ClientRegistry.exe.config” and should be configured as follows:
<add name="TEST" oid="2.16.840.1.113883.3.72.5.9.1" desc="OHIE Integration Tests
Domain">
<attribute name="AssigningAuthorityName" value="TEST"/>
<attribute name="OIDType" value="ISO"/>
<attribute name="AssigningDevFacility" value="TEST_HARNESS|TEST"/>
<attribute name="IsUniqueIdentifier" value="true"/>
</add>
When this step is complete, select the “Configuration Options” button and press “Ok”.
After your OIDs are configured you will configure the service attributes. These are attributes which
dictate how audit messages are formulated and general service settings. To configure this select
“Service Core” from the navigation tree. The options presented are as follows:

Service Language: Dictates the language of messages the service uses.
Operations and Deployment Guide
Page 17 of 39






Device ID: Identifies the device (physical machine) of the current application instance. In a
cluster these should be unique.
Group ID: Identifies the cluster (logical identifier) of systems. If in standalone mode then this is
not needed.
Name: Identifies the device identifier (MSH-3 in v2) that this application host sends
Jurisdiction Id: A unique identifier of the jurisdiction to which the client registry serves
Jurisdiction Name: The name that appears for the jurisdiction (MSH-4 in v2)
Other fields: Are not used by the client registry
Figure 13 - Configuring the ServiceCore
After configuring the service core, you may wish to customize other features such as application logging
and auditing.
2.2.3.2. Windows Service Configuration
The MEDIC CR can be run from the command line as an application with the following command:
ClientRegistry.exe --console
Operations and Deployment Guide
Page 18 of 39
However in production you would typically run the Client Registry as a windows service. This can be
done under the “Client Registry > Service” configuration panel. This panel allows you to configure the
credentials and startup mode of the ClientRegistry service.
Figure 14 - Setting up the Windows Service
“Configure Options” will install the service.
2.2.3.3. Data Persistence, Merging and Duplicate Detection
The client registry’s persistence service is a plugin and must be configured for clients to be persisted and
retrieved from the database. Configuring the persistence mode used for the client registry is similar to
that done at the “welcome” screen.
Note: If deploying to a cluster you will have to point this connection string to the “master”. In the
application configuration section of the config file you can setup a pointer to the readonly slaves:
<marc.hi.ehrs.cr.persistence.data>
<connectionManager connection="PSQL" readOnlyConnection="CLUSTER">
</connectionManager>
</marc.hi.ehrs.cr.persistence.data>
After configuring persistence you may continue to configure the core service behavior of the persistence
layer. The configuration options are as follows:



Permit Duplicate Registrations: Should be selected and true, this is an underlying service core
framework option that allows the HL7v2 EVN / v3 controlAct to be persisted and updated.
Query Control: Controls the default algorithms used for querying, note that a consumer may
override this in their request message, however these are the defaults if none are specified.
Registration of Duplicate Patient Causes Update: This option will handle cases where identity
sources send registration events for existing patients instead of proper update messages.
Matching is performed on the primary identifier in the request message (that which the sender
has identified authority over).
Operations and Deployment Guide
Page 19 of 39


Automerge Duplicates: This option instructs the client registry to automatically resolve
duplicate records when they’re received. If false the client registry only marks duplicate records
and does not merge them.
Duplicate Detection: Identifies the fields which are used to detect duplicate registrations. By
default the Minimum Matching Criteria elements option controls the number of selected fields
which at minimum, exactly match to result in a duplicate.
Figure 15 - Setting up match criteria
Note: The duplicate detection setup by the user interface can be quite primitive, to setup more complex
rules you may edit the persistence configuration section in the ClientRegistry.exe.config file. The options
are as follows:



@autoMerge = “true|false” – Instructs auto-merging to occur
@updateIfExists = “true|false” – Instructs the update on registration behavior
@minimumAutoMergeCriteria = number – Identifies the minimum number of exactly matching
criterion which must be met
Operations and Deployment Guide
Page 20 of 39

mergeCriterion/@field = “string” – Indicates a field which must be matched to trigger a merge. If
a mergeCriterion element has child mergeCriterion elements it indicates an “or” condition, and
the entire “or” condition counts as a hit towards the @minimumAutoMergeMatchCriteria.
The following example illustrates a client registry setup to perform an autoMerge if a new client
matches an existing client which :




Has a name exactly matching the name of an existing patient,
Has a gender matching the existing patient,
Has a birthTime matching the existing patient,
Has either “OtherIdentifiers” or “Addresses” matching
<marc.hi.ehrs.cr>
<registration autoMerge="true" updateIfExists="true"
minimumAutoMergeMatchCriteria="3">
<mergeCriterion field="Names"/>
<mergeCriterion field="GenderCode"/>
<mergeCriterion field="BirthTime"/>
<mergeCriterion>
<mergeCriterion field="OtherIdentifiers"/>
<mergeCriterion field="Addresses"/>
</mergeCriterion>
</registration>
</marc.hi.ehrs.cr>
Also note that the merge algorithms can be customized by implementing the
“IClientRegistryMergeService” interface and registering the service with the service host
2.2.3.4. Query Persistence & Retention
Query Persistence is used to keep track of stateful queries executed by clients against the client registry.
This functionality is vital to supporting query continuation required by HL7v3 or HL7v2 systems and
without it enabled, the CR does not support that functionality.
Operations and Deployment Guide
Page 21 of 39
Figure 16 - Configuring Query Persistence
The user interface does not setup culling and merely indicates the maximum length of time for queries
to be persisted. In order to enable culling you’ll have to setup the clean up timer job manually. This is a
bug in the 1.0 configuration tool.
To setup query culling with the timer add the following line to the <configSections> element in
ClientRegistry.exe.config:
<configSections>
...
<section name="marc.hi.svc.core.timer"
type="MARC.HI.EHRS.SVC.Core.Timer.Configuration.TimerConfigurationSectionHandler,
MARC.HI.EHRS.SVC.Core.Timer, Version=1.0.0.0"/>
...
</configSections>
Then register the timer service in <marc.hi.svc.core>:
<marc.hi.ehrs.svc.core>
...
<serviceProviders>
<add type="MARC.HI.EHRS.SVC.Core.Timer.TimerService, MARC.HI.EHRS.SVC.Core.Timer,
Version=1.0.0.0"/>
</serviceProviders>
...
</marc.hi.ehrs.svc.core>
Finally configure the timer job to run at a specified interval. Note that the max age parameter is still
adhered to.
Operations and Deployment Guide
Page 22 of 39
<marc.hi.svc.core.timer>
<job timer="1:00:00" type="MARC.HI.EHRS.QM.Persistence.Data.QueryPersistenceCleanJob,
MARC.HI.EHRS.QM.Persistence.Data, Version=1.0.0.0"/>
</marc.hi.svc.core.timer>
2.2.3.5. Message Persistence
Message persistence is a feature of the client registry which allows it to detect if it has already executed
a transaction and what the original response for that action was. This is desirable if you’re debugging
message traffic or if it is desired to only execute any write transaction once.
Note: While testing client systems you may receive complaints about failed messages continuing to be
failed due to this feature (i.e. the CR is not actually executing the new message). This can be remedied
by changing the message identifier or by turning off the feature.
2.2.3.6. Notifications
Notifications provide a capability for the MEDIC CR to send messages to other systems whenever a client
is created, updated, merged. To configure notifications enable the “PIXv3 Notifications” panel (note: the
CR supports v2 as well through this interface). You may add as many targets for as many domains as you
wish.
The “Add PIX Notification Target” window has the following fields:







Name: Identifies a unique name for the target which appears in the logs
Address: The address of the notification target. This can be one of the following schemes:
o http:// : For HTTP traffic
o https:// : For secure HTTP traffic
o llp:// : For HL7v2 Lower-Layer protocol traffic
o sllp:// : For HL7v2 Lower Layer protocol traffic secured with TLS
Node Id: Identifies the receiver information in the message sent. For HL7v2 this should be in the
format DEVICE|FACILITY for HL7v2 it should be an OID.
Authority: The authority with which the Client Registry is reporting the identifier. This is usually
the ECID but can be any client identifier registered in the CR.
Send As: Identifies the actor which should be send. The following configurations apply
Actor
Create
Update
Merge
PAT_IDENTITY_SRC
ADT^A04
ADT^A08
ADT^A40
PAT_IDENTITY_SRC_HL7v3
PRPA_IN201301UV PRPA_IN201302UV PRPA_IN201304UV
PAT_ID_X_REF_MGR
ADT^A34
ADT^A34
ADT^A34
PAT_ID_X_REF_MGR_HL7v3 PRPA_IN201302UV PRPA_IN201302UV PRPA_IN201302UV
Service Requires Client Authentication: Will force the CR to send a client certificate to the
remote service
Validate Service’s Certificate Against A Trusted Issuer: Restricts the CAs that the CR will accept
as valid CAs for the services certificate.
Operations and Deployment Guide
Page 23 of 39
Figure 17 - Adding a notification target
2.2.4. Auditing Configuration
The client registry’s audit functionality is configured via the “Service Core > Auditing” control panel. This
panel controls the mechanism and destination of the audit.
Figure 18 - Configuring an Audit Repository
Note: The MEDIC CR supports both DICOM and RFC3881 audits. By default the CR sends RFC-3881 audits
to the audit repository, however it can be configured to send DICOM format audits by editing the
following flag in the configuration file:
<marc.hi.ehrs.svc.auditing.atna messagePublisher="..." format="DICOM">
Operations and Deployment Guide
Page 24 of 39
Note: Selecting “BSD Syslog over Secured TCP” requires an additional parameter for the certificate hash
of the local certificate with which to secure traffic.
<destination endpoint="142.222.45.74:514" certificateThumbprint="hashgoeshere"/>
2.2.5. Messaging Configuration
2.2.5.1. HL7v3 Messaging
HL7v3 Messaging in the MEDIC CR is handled by the MARC-HI Everest Framework 1.2.6. This framework
allows the Client Registry to receive, parse, and respond with HL7v3 messages. All HL7v3 message traffic
is supported by the MARC-HI Everest Messaging interface implementation (configuration for which is in
the <marc.hi.ehrs.svc.messaging.everest> section). You can configure which messages are received and
interpreted by editing this configuration by hand, however it is recommended to stick to the user
interface for this configuration.
Each interface (pCS messages, PIX and PDQ) can be enabled or disabled separately. To configure set the
options as follows:




Address: The HTTP endpoint on which the service should be enabled. It is recommended that
this be set to 0.0.0.0 with HTTPS enabled if you plan on allowing external systems to access the
client registry.
Enable Debugging on this endpoint: Instructs WCF to return stack traces to clients when an
internal server error occurs.
Enable meta-data publishing on this endpoint: Instructs WCF to return a WSDL and additional
connection information when a GET is performed against the URL.
Security Configuration: Allows you to select a server certificate to be used for the service host.
Figure 19 - Enabling an Everest based endpoint
Note: Everest services use WCF for web services handling, this means that you can setup additional WCF
functions outside of the realm of what is available in the configuration tool.
Operations and Deployment Guide
Page 25 of 39
Note: The WSDLs produced by Everest are very minimal (basically <xs:any/>), and it is recommended
that you provide the WSDLs in the %InstallDir%\WSDL directory to any consumers wishing to
communicate with the HL7v3 services.
2.2.5.2. HL7v2 Messaging
HL7v2 messaging is supported by the nHAPI framework and represents socket based configuration of
HL7v2 endpoints within the CR. The MEDIC CR can listen to any number of ports for HL7v2 messages and
it is possible to mimic the functionality of OpenEMPI (separate ports for PIX and PDQ).
To configure HL7v2 messaging select “New…” and configure the endpoint as follows:






Name: A friendly name for the endpoint
Transport: The transport to be used for receiving messages, can be:
o ER7 over TCP: Accepting ER7 encoded messages over plain TCP sockets
o ER7 over LLP: Accepting ER7 encoded messages using standard LLP header/trail bytes
o ER7 over Secured LLP: Accepting ER7 encoded messages using LLP with TLS
Bind Address/Port: The IP Address to bind to
Timeout: Indicates the length of time the connection should remain open. By default the client
registry will keep the channel open for a client to stream HL7v2 messages
Handlers: Indicates the types of messages which should be handled at the specified endpoint.
Transport Options: Any additional options for transport, currently SLLP only supports this for
certificate options. Options are as follows:
o CheckCrl : When true, indicates that the CR should check client certificates for
revocation
o Enable Client Cert Negotiation: When true, requires clients to send a certificate prior to
sending messages
o ServerCertificateFile: A path to a P12 file which contains the server’s private key and
certificate
o ServerCertificatePassword: Identifies the password for the certificate file
o TrustedCaCertificateFile: Identifies a PEM file which contains the certificate of the CA
which should be trusted for clients.
o Server Certificate: Can be used in lieu of the file and configures the endpoint against the
windows central certificate store.
o Trusted Client Certificate: Used in lieu of TrustedCaCertificateFile and uses the windows
central certificate store.
Operations and Deployment Guide
Page 26 of 39
Figure 20 - Adding an LLP endpoint
2.2.5.3. Fast Health Interoperability Resources (FHIR)
HL7 FHIR is RESTful based interchange format which can be used to communicate patient data with the
MEDIC CR. The MEDIC CR supports the IHE PDQm profile, however also supports creation of patients
using FHIR in either JSON or XML formats. To configure the FHIR interface simply select “Messaging ->
FHIR” and configure as follows:






Address: The binding address, port and path of the FHIR service
Enable debugging on this endpoint: Instructs WCF to send stack traces in HTTP 500 error pages
Enable metadata publishing on this endpoint: Enables the WCF help page on the endpoint
specified.
Security Configuration: Allows the selection of a server certificate and, if required, enabling of
client side certificates as well.
Landing Page Index: An HTML file which can be served at the endpoint provided in the Address
field. If not populated the default “You’ve Discovered FHIR” page appears
Resource Handlers: Enables or disables the servicing of particular resources on the FHIR
endpoint.
Operations and Deployment Guide
Page 27 of 39
Figure 21 - Enabling the FHIR endpoint
2.3.
Verifying Your Deployment
2.3.1. Verifying Security
You may verify security of the endpoints you’ve configured from any Linux based client by using the
following command:
openssl s_client -connect <host>:<port> -debug
If configured properly you should see your server certificate and challenge returned:
Acceptable client certificate CA names
/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Assured ID Root CA
/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./CN=Go Daddy Root Certificate A
uthority - G2
/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - Fo
r authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority
- G5
Operations and Deployment Guide
Page 28 of 39
/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
/C=IE/O=Baltimore/OU=CyberTrust/CN=Baltimore CyberTrust Root
/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
/C=TZ/ST=Arusha/O=BID/OU=IZ/CN=atna.bid.ecg.marc-hi.ca/emailAddress=info@bidtest
.org
/OU=Copyright (c) 1997 Microsoft Corp./OU=Microsoft Corporation/CN=Microsoft Roo
t Authority
/DC=com/DC=microsoft/CN=Microsoft Root Certificate Authority
/CN=NT AUTHORITY
---
Note: To reduce this list of acceptable certificate names, simply remove root certificate authorities from
the Client Registry’s service account. This can be done via the Microsoft Management Console (mmc).
2.4.
Administrative Interface
The Client Registry Administrative interface is provided as a separate download to the MEDIC CR
program. This section will discuss the setup of the administrative interface.
2.4.1. Setup the CR Service
First, the Client Registry service must be configured to accept administrative traffic. This is done by
enabling the administrative interface in the configuration tool. Because this service has access to client
registry internal functions it is recommended it be bound to localhost only, setup with HTTPS and client
certificates required.
Figure 22- Enabling the Administrative Service
2.4.2. Setup an IIS Site
Download the administrative interface ZIP file from the Technology Exchange, and unzip it somewhere
on the hard drive ensuring that the IUSR (or application pool account has access).
Operations and Deployment Guide
Page 29 of 39
Next, ensure that you have created a Windows group named “CR Administrators” and a windows user
“cradmin” with appropriate password in that group.
Configure an IIS site to run against the directory where you’ve unzipped the administrative interface
being sure to select the ASP.NET 4.0 application pool with HTTPS selected as the transport and your
server certificate selected
Figure 23 - Configuring the IIS administration site
After the site is created enable Windows Authentication on the site:
Figure 24 - Enabling Windows Authentication
Finally it is a good idea to require client side SSL certificates:
Figure 25 - Enabling client certificates in IIS
2.4.3. Configure the Website
The final step is to ensure the configuration of the administrative website is correct. Open the
Web.Config file in the IIS site directory and ensure that Windows mode authentication is enabled
Operations and Deployment Guide
Page 30 of 39
<authentication mode="Windows">
</authentication>
And that the administrative service is bound to the appropriate IP address and port.
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IClientRegistryAdminInterface"
maxReceivedMessageSize="10293293" >
<security mode="None"/>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:9999/admin" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IClientRegistryAdminInterface"
contract="ClientRegistryAdminService.IClientRegistryAdminInterface"
name="BasicHttpBinding_IClientRegistryAdminInterface" />
</client>
</system.serviceModel>
If configured appropriately the welcome site should appear when navigation to https://<host> is
performed and a client certificate provided.
Figure 26 - Administrative Interface Landing Page
Operations and Deployment Guide
Page 31 of 39
3.
Administering the Client Registry
3.1.
Reviewing Patient Data
The Client Registry stores data using a component model. In this pattern, data is broken into containers
and components related by a site role. For example; a patient with a mother would be interpreted as a
Patient (Container) having a mother (Component) related via “Relationship” role.
The viewer for client registry data will format the client registry’s component model into a hierarchy of
data element for you to browse. The general view screen is pictured below:
Figure 27 - Patient Summary View
This is the “interpreted” view, that is to say the Client Registry administrative interface has interpreted
the components and extracted the most important data. The detail view of the patient is as follows:
Operations and Deployment Guide
Page 32 of 39
Figure 28 - Patient Detail View
This is a rendered view of the component model and it illustrates that the current version of the patient
record came into being because of an administrative merge (ADMIN_MRG), the person associated with
the event is Active and has a full name of Scott, Isabella Isabella. This view can be used to track the
history of an item, for example, we can view that the event revised the older version of the patient
394601 record (version from 516287 -> 516291) and also replaced (subsumed) patient 392382 at version
516288.
Operations and Deployment Guide
Page 33 of 39
Figure 29 - Viewing Patient Record History
3.2.
Conflict View
The current version of the client registry auto-detects merges on a series of parameters and can be
configured to merge on these automatically. However, if not configured this way, or if a match is
ambiguous, the CR will mark the merge as a conflict and you (the administrator) may view them:
Figure 30 - Viewing flagged conflicts
Operations and Deployment Guide
Page 34 of 39
This page shows the Source (patient who is conflicting) as well as conflicts (the patient(s) who the CR has
detected a conflict with).
3.2.1. Resolving Conflicts
Reviewing conflicts must be taken with care as these are irreversible. To resolve a conflict, select the
conflict record which will provide details about the conflicting patients.
Figure 31 - Resolving patient conflicts
The Client Registry uses a component model to store information about conflicts. This information is
displayed for each patient and can be reviewed by expanding the “Components”:
Operations and Deployment Guide
Page 35 of 39
Figure 32 - Patient Detail View
You may review this data with the detected conflicts on the right hand side:
Figure 33 - How to compare Patient Demographic Data
Operations and Deployment Guide
Page 36 of 39
If the data is determined to be a match check the box next to the title of the section.
Figure 34 - Indicating a Merge Target
When the appropriate merge instructions are indicated selecting the “Resolve” button will provide a
summary of the actions to be taken. Note: If you do not select any candidate (all conflicts are marked
“ignore”) then the records are not merged.
Figure 35 - Confirm conflict resolution
Confirming will perform the actions listed. It is important to note that once a merge is complete there is
no way to un-merge the clients.
3.3.
Obtaining Diagnostic Information
3.3.1. Versions
You can determine what version of the Client Registry RI you’re running via the Admin menu. This will
also display the current version of components and services installed in the Client Registry.
Operations and Deployment Guide
Page 37 of 39
Figure 36 - Obtaining Service Information
3.3.2. Obtaining Log Files
You may also obtain log files from the Client Registry. Please note that these log files may contain PHI
and should be secured appropriate if downloading them.
Figure 37 - Viewing Service Logs
Operations and Deployment Guide
Page 38 of 39
3.3.3. Reviewing Assigning Authorities
Assigning authorities are OIDs that are understood by the Client Registry. You may review the assigning
authorities currently configured on the Client Registry through the web interface, however you can only
modify them through the administrative “Configurator” interface locally installed on the server. This is
because modifying an AA presents a security risk and should not be performed after initial configuration
is performed (unless adding a new actor to your infrastructure).
Figure 38 - Reviewing registered OIDs
You may also get further details about the OID configuration by selecting the OID:
Figure 39 - Viewing OID details
Operations and Deployment Guide
Page 39 of 39