DYNAMIC WEB FORMS
WITH FHIR® AND XRX
HL7 WGM // AID Session // 2015-05-10
Ben Kraufmann
APPLICATION DOMAIN // DEMIS
Support public health in coping with epidemics
2
© Fraunhofer FOKUS
TECHNICAL FRAMEWORK
•
FHIR for modeling and messaging
•
Dynamic web forms with W3C XForms
•
Transform FHIR profiles by means of an XProc/XSLT pipeline
3
© Fraunhofer FOKUS
FIRST STEP: AUGMENT FHIR PROFILE
•
Flat structure to deep structure
•
Inline XSD details
•
Inline XPath expressions
to identify slices, and
to apply constrains
<f:element>
<f:path value="Patient.details.name"/>
<d:children>
<f:element>
<f:path
value="Patient.details.name.use"/>
<d:name value="use"/>
<d:enum>
<d:item value="usual"/>
<d:item value="official"/>
<d:item value="temp"/>
<d:item value="nickname"/>
<d:item value="anonymous"/>
<d:item value="old"/>
<d:item value="maiden"/>
</d:enum>
<d:predicate xpath="..."/>
</f:element>
4
© Fraunhofer FOKUS
SECOND STEP: GENERATE WEB FORMS
•
Templates for FHIR documents
•
XForms Views with input fields
•
Bindings that link Templates with Views
•
Data validators, i. e. bindings constraints
•
Actions, that load vocabularies from CTS2-store or FHIR server
5
© Fraunhofer FOKUS
APPLY TYPE CONSTRAINTS
<element>
<path value="Patient.details.birthDate" />
<definition>
<min value="0" />
<max value="1" />
<type>
<code value="dateTime" />
</type>
</definition>
</element>
<xf:bind
nodeset="instance('i-main')/../f:Patient/f:details/f:birthDate/@value"
type="xs:dateTime" />
<xf:input ref="instance('i-main')/../f:Patient/f:details/f:birthDate/@value">
6
© Fraunhofer FOKUS
MULTIPLICITY AND SLICING
<xs:element
name="family"
type="string"
minOccurs="0"
maxOccurs="unbounded">
<xf:trigger>
<xf:label>+</xf:label>
<xf:action ev:event="DOMActivate">
<xf:insert
at="last()"
nodeset="instance('i-main')/../f:Patient/f:details/f:name/f:given"
position="after"/>
</xf:action>
</xf:trigger>
7
© Fraunhofer FOKUS
VALUE SETS AND CODE SYSTEMS // 1
<definition>
<type>
<code value="CodeableConcept" />
</type>
<binding value="ConditionEvidenceCode"/>
</definition>
<binding>
<name value="ConditionEvidenceCode" />
<type value="reference" />
<referenceUri value="urn:oid:1.2.276.0.76.3.1.163.11.100145"/>
</binding>
8
© Fraunhofer FOKUS
© Copyright 2026 Paperzz