node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org ยป



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).

Build Status


  • q 1.4.1
  • underscore 1.8.3
  • path 0.12.7
  • xml-js 1.6.2


npm install fhir

To use in a node.js application, require the "fhir" module.

var Fhir = require('fhir');

To use in a browser application, reference dist/bundle.js.

<script type="text/javascript" src="node_modules/fhir/dist/bundle.js"></script>


npm test

Basic Usage

var resource = {
  resourceType: 'Patient',
var fhir = new Fhir();
var xml = fhir.objToXml(resource);
var obj = fhir.xmlToObj(xml);
var results = fhir.validate(xml, { errorOnUnexpected: true });
results = fhir.validate(obj, {});


API documentation can be found at

Implementation Notes

  • 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.