This is the Georgia Tech FHIR Server. It is built on top of Hapi Fhir (v1.1) Fhir spec implementation. Currently the objects model is built in conformance to Fhir spec DSTU2 - some features in DSTU1 are not supported. For the Data Access Layer, this server uses a modified version of Hapi Fhir JpaServer-Base project, which is implemented to provided support for any database schema, so we can focus on the creation of Resources from the data on the databases.
Server Structure and Communication
This project contains part of the business layer and the presentation layer, with the controller/servlets. It contains the providers for each resource and their DAO classes. It uses Spring framework, with CORS filter. The configuration files are found in the 'WEB-INF' folder. The providers are generated by using Tinder plugin and then modified to match the operations and search params provided by the server - which are defined in gt-fhir-entities project.
This project contains the object model representing the schema for the database used by the server. The server is connected to a database which follows the Omop v4.0 specification for its basic tables - some extension tables are added in order to provide more information The model is built to represent the database schema. The relationship between the Entity Fields and its respective Fhir Resource Fields are expressed in the methods 'getRelatedResource' and 'constructEntityFromResource', or in the javadocs where applicable. Tables' names and columns' names are specified under javax.persistence annotations, as well any constraints. Javax Bean Validation annotations are specified as well.
This overlay has a user interface - which follows the design of Hapi Fhir's Example interface, being our default client for Fhir server.
importing the sources as a maven project in IntelliJ seems to work well for testing
$ cd gtFHIR
$ mvn clean
$ cd ..
$ rm -rf gtFHIR
It may be worthwhile rm
ing old deployment files from [/var/lib/
]tomcat/webapps
too
$ git clone https://github.gatech.edu/cdchealthyweight/gtFHIR.git
startup intelliJ
import project -> import from external model -> Maven
check 'search for projects recursively", "Import Maven projects automatically", "create module groups for multi-module projects"
allow intelliJ to overwrite .idea directory during project creation
then back to the console
$ cd gtFHIR
$ git checkout -- .idea/runConfigurations/fhir_webapp_local.xml
create a mysql database called fhir_omop
with user devuser@localhost
, no password, listening on default port 3306
then from intelliJ run->run "fhir_webapp_local"
[gtFHIR]$ mvn clean install
$ cp gt-fhir-webapp/target/gt-fhir-webapp.war [/var/lib/]tomcat/webapps/
restart tomcat
NB need to update tests; currently jpabase module is building with skipTests=true