UNPKG

handlebars-helpers-fhir

Version:

Helper functions for the Handlebars templating engine using fhirpath to reference HL7 FHIR resources from within templates.

129 lines (105 loc) 3.72 kB
![Handlebars](https://raw.githubusercontent.com/BlackPearSw/handlebars-helpers-fhir/develop/logo.png) # handlebars-helpers-fhir Helper functions for the [Handlebars](https://handlebarsjs.com/) templating engine using [fhirpath](https://github.com/jmandel/fhirpath.js) to reference [HL7 FHIR](http://hl7.org/fhir/) resources from within templates. ## Prerequisites Handlebars! $ npm install handlebars --save ## Installation Install package $ npm install handlebars-helpers-fhir --save Register helpers with handlebars const Handlebars = require('handlebars'); require('handlebars-helpers-fhir').registerWith(Handlebars); ## Use ### #if-fhir The `if-fhir` block helper will conditionally render a block based on a fhirpath expression. If the fhirpath expression returns an empty array, Handlebars will not render the block. ```` {{#if-fhir . expression='Patient.address.where(use=\'temp\')'}} <p>Patient has a temporary address.</p> {{/if-fhir}} ```` The helper can render an `{{else}}` section. ```` {{#if-fhir . expression='Patient.address.where(use=\'temp\')'}} <p>Patient has a temporary address.</p> {{else}} <p>Patient does not have a temporary address.</p> {{/if-fhir}} ```` ### #unless-fhir The `unless-fhir` block helper will conditionally render a block based on a fhirpath expression. If the fhirpath expression returns an empty array, Handlebars will render the block. ```` {{#unless-fhir . expression='Patient.address.where(use=\'temp\')'}} <p class="button">Add temporary address</p> {{/unless-fhir}} ```` ### #each-fhir The `each-fhir` block helper will render a block for each item found using a fhirpath expression. ```` {{#each-fhir . expression='Patient.address'}} <p>{{use}}: {{text}}</p> {{/each-fhir}} ```` You can optionally supply an `{{else}}` section which will render only if evaluating the fhirpath expression returns no matches. ```` {{#each-fhir . expression='Patient.address'}} <p>{{use}}: {{text}}</p> {{else}} <p>No address found</p> {{/each-fhir}} ```` The `each-fhir` block helper supports the `@index`, `@key`, `@first` and `@last` loop variables. The `each-fhir` block helper does not support block parameters. ### #with-fhir The `with-fhir` block helper will render a block after switching context to the *first* item found using a fhirpath expression. ```` {{#with-fhir . expression='Patient.address.first()'}} <p>{{text}}</p> {{/with-fhir}} ```` You can optionally supply an `{{else}}` section which will render only if evaluating the fhirpath expression returns no matches. ```` {{#with-fhir . expression='Patient.address.first()'}} <p>{{text}}</p> {{else}} No address {{/with-fhir}} ```` ### #resolve-fhir The `resolve-fhir` block helper will render a block after switching context to the *first* FHIR resource from the first reference found by evaluating the fhirpath expression. ```` {{#resolve-fhir . expression='Patient.managingOrganization.reference'}} <p>Healthcare provider is {{name}}</p> {{/resolve-fhir}} ```` You can optionally supply an `{{else}}` section which will render when with the fhirpath expression returns no matches OR the referenced FHIR resource cannot be found. ```` {{#resolve-fhir . expression='Patient.managingOrganization.reference'}} <p>Healthcare provider is {{name}}</p> {{else}} <p>Healthcare provider unknown</p> {{/resolve-fhir}} ```` The `resolve-fhir` block helper suppports only internal references (_i.e._ within @root.entry and @root.contained). License ------- handlebars-helpers-fhir is free software: you can redistribute it and/or modify it under the terms of the MIT license. Acknowledgements ---------------- Supported by [Black Pear Software](www.blackpear.com)