Skip to content

Latest commit

 

History

History
117 lines (98 loc) · 3.47 KB

README.md

File metadata and controls

117 lines (98 loc) · 3.47 KB

typescript-fhir-types

Typescript / Javascript object model for FHIR standard Model follows FHIR R4 specifications.

npm version Build Status codecov Known Vulnerabilities Project dependencies overview(Beta) License: GPL v3

Definitions are io-ts based interfaces. See io-ts github project for further details. This means you can check your types at runtime.

Installation

npm i -S @ahryman40k/ts-fhir-types

or

yarn install @ahryman40k/ts-fhir-types

articles

A medium article: Handle FHIR objects with Typescript

Examples

let imagine you server or your application is receiving a FHIR Resource like an observation from a server or any external system

{
   "resourceType":"Observation",
   "id":"f001",
   "text":{
      "status":"generated"
   },
   "identifier":[
      {
         "use":"official",
         "system":"http://www.bmc.nl/zorgportal/identifiers/observations",
         "value":"6323"
      }
   ],
   "status":"final",
   "code":{
      "coding":[
         {
            "system":"http://loinc.org",
            "code":"15074-8",
            "display":"Glucose [Moles/volume] in Blood"
         }
      ]
   },
   "subject":{
      "reference":"Patient/f001",
      "display":"P. van de Heuvel"
   },
   "valueQuantity":{
      "value":6.3,
      "unit":"mmol/l",
      "system":"http://unitsofmeasure.org",
      "code":"mmol/L"
   },
   "interpretation":[
      {
         "coding":[
            {
               "system":"http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation",
               "code":"H",
               "display":"High"
            }
         ]
      }
   ],
   "referenceRange":[
      {
         "low":{
            "value":3.1,
            "unit":"mmol/l",
            "system":"http://unitsofmeasure.org",
            "code":"mmol/L"
         },
         "high":{
            "value":6.2,
            "unit":"mmol/l",
            "system":"http://unitsofmeasure.org",
            "code":"mmol/L"
         }
      }
   ]
}

There is 2 points:

  • You would like to have strongly typed types (typescript)
  • You would validate data returned from server and test their validity against FHIR standard
// Import requested objects
import { R4 } from  '@ahryman40k/ts-fhir-types';

// validation succeeded
const  validationResult = R4.RTTI_Observation.decode(/*json response*/) // => Right if good, Left if not
ThrowReporter.report( validationResult);
const  obs: R4.IObservation = <R4.IObservation> schemaValidationResult.value;

FHIR resources are also provided as interface, so you can inherit and implement your own object implementation.

Please don't hesitate to give me advice and feedback !