EtherCIS (Ethereal Clinical Information System) is an Open Source platform compatible with the openEHR standard. It is design to allow simple interactions with clients using RESTful API and persist clinical data in a separate DB engine. Clinical data are exchanged using different formats:
FLAT JSON: which is a flatten representation of access path along with the corresponding field value
Canonical XML: representing an openEHR composition in standard XML
For more details on data representation in openEHR see this page
The core component of the architecture is a persistence engine that leverage new capabilities introduced recently in several RDBMS in particular the support of relational and NoSQL. datatypes in the single table structures. Although EtherCIS is flexible in term of choice of DB, in this implementation, we use PostgreSQL 9.4 and JSONB datatype. This is key feature since clinical data can be used with standard data query/mining tools in the context of clinical studies for instance. The persistence layer is using extensively jOOQ 3.5. This library supports various RDBMS and allows very neat SQL coding in Java. It allows to migrate the persistence layers to suit a target production environment, for example to deploy with Oracle or DB2.
Clinical records are automatically versioned by the platform following an update or a delete. To retrieve a specific version, the request adds a version number to a record id (in openEHR terms, this is done by appending a version number to a composition Id).
Security is an important feature of the platform and compliance with ISO18308 and most national medico-legal regulations (HIPAA, ASIP etc.) has been a key driver of this system design. Patient data privacy, security and controls of accesses as well as auditing user activities are built-in functions of the platform.. We use a flexible framework provided by Apache Shiro supporting environment specific policies. Depending on the requirements, fine grained security accesses can be implemented to support for example a patent's informed consent.
EtherCIS implement a service model based on a component architecture allowing simple system modification and fine grained runtime administration via JMX. The platform can be scaled to larger settings as various mechanisms can be used to allow distributed caches to support session tokens across multiple instances, database clustering, foreign data integration, clinical model caching etc.