Node.JS library for serializing/deserializing FHIR resources between JS and XML, and validating FHIR resources. The library uses technologies that are safe for use in browser-only applications (node.js is not required).
- Serialization between XML and JSON
- Validation against core spec and custom profiles
- Evaluation of FhirPath
- Support for multiple FHIR versions (>= STU3)
- Loading from specific downloadable definitions
- q 1.4.1
- underscore 1.8.3
- path 0.12.7
- xml-js 1.6.2
npm install fhir or bower install fhir-js
To use in a node.js application, require the "fhir" module.
var Fhir = Fhir;
To use in a browser application, reference dist/bundle.js.
var resource =resourceType: 'Patient'...;var fhir = ;var xml = fhir;var json = fhir;var obj = fhir;var results = fhir;results = fhir;
FHIR.js currently supports FHIR version 3.4.0.
If your implementation needs to support a more recent FHIR version, you may download the "FHIR Definitions" from the FHIR Downloads page in JSON format and load them into the FHIR.js module.
var ParseConformance = require('fhir').ParseConformance; var FhirVersions = require('fhir').Versions; var Fhir = require('fhir').Fhir; // Get the data var newValueSets = JSON.parse(fs.readFileSync('..path..to..valuesets.json').toString()); var newTypes = JSON.parse(fs.readFileSync('..path..to..profiles-types.json').toString()); var newResources = JSON.parse(fs.readFileSync('..path..to..profiles-resources.json').toString()); // Create a parser and parse it using the parser var parser = new ParseConformance(false, FhirVersions.STU3); // don't load pre-parsed data parser.parseBundle(newValueSets); parser.parseBundle(newTypes); parser.parseResources(newResources); var fhir = new Fhir(parser); fhir.xmlToJson(...); fhir.objToXml(...); fhir.validate(...); // etc.
Custom-loading a version like this may not work if the FHIR spec includes changes to the StructureDefinition resource that are not accounted for in this version of the FHIR.js module. For example, recently StructureDefinition.element.binding.valueSetReference#Reference was changed to StructureDefinition.element.binding.valueSet#canonical. The FHIR.js module had to be updated to respect this change before it could properly validate value sets referenced by the StructureDefinition.
Note: For validation to validate a value set referenced by a StructureDefinition, the ValueSet resource must be loaded into the parser before the StructureDefinition is loaded.
API documentation can be found at http://lantanagroup.github.io/FHIR.js/
xmlToJsonconverts decimals to JSON numbers, obeying the specification. Consider using it instead of
- When parsing FHIR JSON strings, such as those produced by
xmlToJsonor other FHIR libraries, consider using an alternative to
JSON.parsesuch as https://github.com/josdejong/lossless-json. This issue is mentioned in the FHIR specification: https://www.hl7.org/fhir/json.html#decimal
- Compatible with FHIR Release 4 Candidate v3.2.0
- FHIR profiles (within the "profiles" directory) are used to determine whether properties should be arrays, the data type and cardinality of each property, etc.. The profiles are first combined using packageProfiles.js into a single bundle of all profiles. A second pass over the profiles is performed to create a hierarchy (rather than a flat list) of the properties, and only includes information that validation is concerned about. The result of the second pass is stored in profiles/types.json and profiles/valueSets.json.