Reference Implementation Server + Libraries for the FHIR Specification.
This is a set of FHIR applications written in Delphi. It is also the home of the pascal reference implementation for FHIR. Included in this project:
- The Delphi reference implementation for FHIR (/reference-platform)
- A set of tests for the delphi reference implementation
- The FHIR reference server (supports the entire FHIR functionality, along with OAuth, OpenID.Connect, and SCIM)
- The FHIR toolkit - a set of utilities for developers
- The FHIR Notepad++ plug-in - a set of useful utilities for FHIR developers
- A VCL demo program that shows how to connect to to an argonaut interface (contributed by Wellsoft, thanks)
For binary releases of this content, see http://www.healthintersections.com.au/FhirServer
This project is maintained by the FHIR Project lead. The server runs in multiple locations, including http://test.fhir.org, and other places.
In form, this a middleware tool to help applications exchange data via a repository. It also shows how to implement a generic FHIR server against an SQL database. The server is specifically written as an reference server - it implements all parts of the specification as defined, and is co-developed with the specification. It is not well optimised for hosting/supporting very large repositories efficiently.
The open source FHIR Server includes delphi/pascal implementations of:
- Xml/XPath/XML Patch + XML Digital Signature
- JSON/JSONPointer/Json Patch + JSON Digital Signature (+ JWT/JWK support)
- OAuth/openID Connect (including google/facebook clients)
- Turtle format (RDF)
- HL7 V2
- Liquid Templating language
- CQL (Clinical Query Language)
- Graphical Components
- simple quick graphing library
- De Novo word processor
- FHIR FMX Components
- All of FHIR + FHIRPath + smart all launch + cds-hooks, of course
The full source base has many dependencies on other github projects, and many tools operate across the github projects. In order to properly compile and execute the tests and applications, the following git repositories must be put in these places:
- https://github.com/grahamegrieve/fhirserver in C:\work\fhirserver
- https://github.com/grahamegrieve/delphi-markdown in C:\work\markdown
- http://github.com/hl7/fhir in C:\work\org.hl7.fhir\build
- https://github.com/hapifhir/org.hl7.fhir.core in C:\work\org.hl7.fhir\org.hl7.fhir.core
This is pascal code that (in principle) compiles under Delphi XE3+ (any edition, personal will do). Note that in practice, various subtle but breaking changes have been introduced to the runtime library (Streams, Indy) that mean that some fiddling with IFDEFs may be necessary.
Support for Free Pascal(/Lazarus) would be good, and is in progress, but depends on future bug fixes in free pascal. Contributions are welcome
The FhirServer depends on the following other GitHub repositories:
- TreeView + SynEdit for the GUI programs
You need to get a copy of these and fix the paths for the markdown processor units in the .dprs. You also need to get a copy of the latest version of the Indy components, since the server depends on some recent fixes to Indy. note you don't need to install them to delphi - just put them in your system path. (Tools...Options)
And also you need to install https://bitbucket.org/sglienke/testinsight/wiki/Home (all delphi users should have this installed!)
After that, compiling should be simple: open one of the .groupproj in the root folder in your version of delphi, and compile
Design Time support
For design time support for the GUI applications, you need to install treeview and synedit (see in dependencies folders), then open and compile the packages in /packages, and install the 2 design time packages.
Note that the FHIRServer is a big compile. You may have problems compiling in resource constrained environments.
Bulding an actual release has a long list of dependencies, including several versions of the FHIR specification, and the following tools
- Innosetup + InnoSetup download plug-in
All the dependencies are free, though assmebly is a pain.
- Notepad++ plug-in. Either run the installer, or change the compile location to compile the plug-in to the notepad++ plug-in directory for your systems
- Server: See install\readme.txt, and also, you need a copy of the full specification for the same version as the generated reference implementation code (see the downloads page for that version)