Introduction

As part of building services for e-health, we have to consider what a comprehensive services landscape would look like, as a guide to future work in openEHR and elsewhere. This page makes a new proposal, based on recent perspectives, notably: cloud; clinical process; universal terminology.

The following illustrates an initial version of this landscape. In this diagram, all labelled boxes represent logical transactional services (i.e. the concrete interfaces may be REST, SOAP, messages or multiple). Cylinders denote important persistence services. This diagram does not attempt to identify all or even most possible services - just some important ones. It is more intended to suggest a services 'space' in which different kinds of service can be situated, according to various dimensions of the service.

Things that are not on this diagram but are assumed to exist:

The approach here is meant to be future-looking, and goes beyond current specifications, including the Conformance 'System under test', the Platform Abstract Service Model, and the REST APIs.

There is no intention here to define precise APIs, nor to imply a specific API technology such as REST, SOAP, RPC etc. These are questions for dedicated standardisation and implementation activities.

Published References

Other reference architectures / maps for services in e-health are as follows:

Readers who know of other such resources, please post in comments below and we'll add them.

Feedback

If you would like to react by proposing adjusted versions of this diagram, feel free to do so - the original .xml file for draw.io is here. Otherwise, feel free to add to this page, or comment below.

Landscape Structure

The following illustrates the landscape structure on its own.

What is a 'service'?

In the sense intended here, a 'service' is an exposed software component with a defined API consisting of logical functions and procedures required for the purpose of the service. For example, the EHR service in the diagram below corresponds to the notion of a generic service for creating and accessing persisted clinical data, with functions of the following kind:

A single logical function or procedure has the following form:

Type someFunction (Type arg1, Type arg2, ...)
    pre-conditions: <boolean expression>
    post-conditions: <boolean expression>
    exceptions: {<exception>}

someProcedure (Type arg1, Type arg2, ...)
    pre-conditions: <boolean expression>
    post-conditions: <boolean expression>
    exceptions: {<exception>}

Generally speaking, the Types are assumed to come from relevant reference information model(s), although they may also be defined as part of the API itself.

Many services can be understood as a transactional interface to data. For example, the logical API procedure createEhr() above causes a change in underlying persistence store (a new EHR), while the logical function hasEhr() enables the persistent store to be interrogated for presence of an EHR. This kind of interface is a CRUD level interface. Higher level interfaces are also useful, and usually more interesting to application developers. For example, the 'Medications List' service in the diagram below may be designed in terms of transactions on a logical medication list, such as:

Such higher-level services normally implement their functions in terms of calls to lower-level services, eventually CRUD services.

Levels of deployment

The following levels of deployment are proposed:

It is proposed that ideally, shareable patient data exists at a regional level - i.e. supporting a 'single-source of truth' model of patient data and transactional interfaces to things like medication list. Where wider access is needed, e.g. cross-border etc, it is assumed that relevant services at the National level (or even super national level) provide federated views of regional services and data, as well as applying relevant legislation-based rules for data sharing.

Currently, regional or city systems are relatively rare, and many services that ultimately should exist at regional level exist only at the Provider level. In terms of the landscape diagram shown here, one can imagine the dividing line between Provider org and regional levels as starting where the regional/national dividing line is, and moving up over time.

Semantic levels

A breakdown into key semantic levels is as follows:

Focal Entity

Services are also separated with respect to their different 'focal entity' - what kind of entity do they primarily deal with?

Partially Populated

The following shows a partially populated form of the above, with some of the key openEHR, terminology and IHE services. It is not meant in any way to be 'complete' - no single diagram could achieve that - but the idea is to get the key common services on the map, in the right places. This particularly applies to working out services that apply at different levels, and appropriate federation relationships, e.g. an appointments service inside a healthcare facility will need to connect to a national booking service.

Service Descriptions

Name

Focal Entity

Deployment level

Description

Notes






Task Planning

patient plan

Provider org, regional

Add, retrieve and obtain current status of Task Plans







Medications list

patient medication list

Provider org, regional

Transactons and queries on patient single source of truth medication list







EHR

patient clinical data

Provider org, regional

CRUD-level operations on EHR data