Skip to content

NPM module to convert FHIR Questionnaire JSON to JSON Schema for form rendering.

License

Notifications You must be signed in to change notification settings

dermatologist/fhirformjs

Repository files navigation

fhirformjs

npm version npm Build Known Vulnerabilities Documentation

About

Creating, maintaining and using forms for health data capture is vital, and FHIRForm is a framework for that. FHIRFormJS is one of its components (an npm module) that helps create input forms corresponding to a FHIR questionnaire. FHIRFormJS does not render forms but converts FHIR questionnaire into a schema and lets other libraries (such as react-jsonschema-form ) do the heavy lifting. An output mapper that maps the output from a react-jsonschema-form to a QuestionnaireResponse is also available. Checkout this example React app to see how it is used. This is a modern alternative to LHC-Forms

FHIRFormJS is WIP (not production ready). Pull requests are welcome (See CONTRIBUTING.md) and add issues and feature requests by clicking on the 'issues' tab. ☝️

Installation

npm i --save fhirformjs

Usage example (In a React component)

  • FHIRFormJS is framework independent and can be used with other frameworks such as Vue / Angular.
  • Testq1 is a FHIR Questionnaire object
import { FhirJsonForm, FhirJsonResp } from 'fhirformjs'
import Form from "@rjsf/core"
  const resp = FhirJsonForm(Testq1)
  let formData = {}
  let respData = {}
  function handleSubmit(data){
    respData = FhirJsonResp(resp.model, data, resp.schema)
    console.log(JSON.stringify(respData))
  }
  return (
    <div className="App">
      <header className="App-header">
        <Form schema={resp.schema}
        uiSchema={resp.uiSchema}
        formData={formData}
        onSubmit={e => handleSubmit(e.formData)}
        />
      </header>
    </div>
  );

Update

since v0.8.0: Backend API

import { FhirBackend } from 'fhirformjs'
const backend = new FhirBackend('https://lforms-fhir.nlm.nih.gov/baseR4');
console.log(backend.getTableOfContents())
console.log(backend.getQuestionnaire('2050148'))

Give us a star ⭐️

If you find this project useful, give us a star. It helps others discover the project.

Author

Contributor(s)