Summer Edition 06/07/2015 3:54:43 PM: AQL support
(see changes at: examples
A brief introduction to Ethercis is given here
To allow various deployment and integration, the project is partitioned in two parts:
- core components: this part deals with OpenEhr object handling, serialization, deserialization, knowledge management and persistence
- service wrappers: this part encapsulate core components into a service framework with a REST API and JMX instrumentalization.
Core Components
The core modules are located in the repository ehrservice:
- core: fundamental operations and encoding of OpenEhr entities
- ehrdao: persistence of OpenEhr entities using a mixed model (relational/NoSql)
- knowledge-cache: caching of OpenEhr knowledge models (operational templates in particular)
- aql-processor: two passes SQL translation and query execution
- jooq-pg: utility module, binds ethercis table to jOOQ/Postgresql 9.4
Service Wrappers
The services and framework are located in VirtualEhr
ServiceManager
service management frameworkVEhrService
Query gateway of a running instanceResourceAccessService
a common service to access external resources (DB, knowledge etc.)PartyIdentifiedService
wrapper to interact with OpenEhr PartyIdentified entitiesLogonService
controls user login/logout and sessionsAuthenticationService
wrap a security policy providerCacheKnowledgeService
wrapper of knowledge-cache to allow user queriesEhrService
deals with user queries on OpenEhr Ehr and Ehr Status objectsCompositionService
deals with user queries on Composition objects
Please refer to the respective component's README for more details on the above
Database
The database is based on bi-temporal tables keeping records history. See pgsql_ehr.ddl for more details on the actual structure and triggers.
The DB can be generated by running the above ddl script. Schema ethercis
should exist.
Tables TERRITORY, LANGUAGE and CONCEPT should be populated from openEHR local terminology definition contained in terminology.xml
. Script populate-concept
is provided to perform this task (see ethercis/examples/scripts)
######Required extensions
<title></title>plpgsql | 1.0 | |
jsquery | 1.0 | https://github.com/postgrespro/jsquery |
ltree | 1.0 | https://www.postgresql.org/docs/9.4/static/ltree.html |
temporal_tables | 1.0.2 | http://pgxn.org/dist/temporal_tables/ |
uuid-ossp | 1.0 | https://www.postgresql.org/docs/9.5/static/uuid-ossp.html |
-
You need to compile each module as indicated in their respective README. A global setting for the assembly of uber jars should be done in your
settings.xml
. An example is given at ethercis/examples/ -
The sample launch script (ecis-server) assumes some jar assemblies to simplify the classpath. At the moment, there is no assembly provided in the pom's.
-
Locally, you should install the 'exotic' libraries required by Maven. These jars are located in directory 'libraries'. Local installation can be achieved with the following command for example:
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=/Development/Dropbox/eCIS_Development/eCIS-LIB/compositionTemplate.jar -DgroupId=org.openehr -DartifactId=org.openehr.openEHR.v1 -Dversion=1.0.0 -Dpackaging=jar -DlocalRepositoryPath=/Development/Dropbox/eCIS_Development/eCIS-LIB/local-maven-repo
##How To Run It?
- Script
ecis-server
should be adapted to get the right classpath, path to required configuration, network parameters etc. - Ditto for all configuration files.
The scripts and configuration samples are in directory examples
Script ecis-server
uses uber jars to keep the modularity of the platform as well as to ease the production of patches. The jars are posted at libraries until a better file repository is identified.
In this section you will find:
- examples scripts and configuration files to run ethercis on a Linux box. Scripts can be adapted to launch the server on Windows if required.
- libraries some pre-compiled libraries to make life a bit easier (mostly xml bindings classes and one to avoid conflicts with the patches from the core module
- installation documentation and readme's, mostly to install a system
- REST API and [FLAT JSON] (https://github.com/ethercis/ethercis/blob/master/doc/flat%20json.md)
- Composition Serialization and Query