Performing Document Query/Retrieve and Transforming to/from Documents
The eHealth Infrastructure provides integrations to the Danish national document sharing infrastructure.
The national document sharing infrastructure is based on Integrating the Health Enterprise (IHE) Cross-enterprise Document Sharing (XDS-b) profiles and makes use of Danish profiles for document metadata. While XDS-b is content-agnostic, currently shared documents are XML documents (ideally) adhering to Danish profiles of Clinical Document Architecture (CDA) document types.
Queries for document metadata and retrieve of documents can be performed through the healthcare domain National Service Platform (NSP) Document Sharing Service (Danish: Dokumentdelingsservice DDS). Acting as a front, the DDS encapsulates details about the topology of XDS-b components, whether this is one or more XDS Registry containing document metadata or one or more XDS Repository containing documents.
The eHealth Infrastructure:
Performs registering of measurement data to the KIH XDS Repository (see Registering of documents)
Performs registering of appointments to the XDS Repository fronted by NSP Document Registering and Update Service (see Registering of documents)
Provides a FHIR wrapping for performing querying for document metadata and retrieving documents on the NSP DDS (see Performing Document Query and Document Retrieve below)
The eHealth Infrastructure provides transformations between FHIR resources and Danish profiles of Clinical Document Architecture (CDA) XML documents. The transformations to CDA documents are used (see details below) when the eHealth infrastructure uploads documents and metadata to document sharing infrastructure . The transformations to FHIR resources can be used by a client performing XDS-b document metadata query and document retrieving.
Performing Document Query and Document Retrieve
The Danish National Service Platform (NSP) in Healthcare provides a Document Sharing Service (Danish: Dokumentdelingsservice DDS) which provides the following operations described in https://profiles.ihe.net/ITI/TF/Volume1/ch-10.html:
Registry Stored Query (known as XDS-b transaction ITI-18) which given query parameters such as patient identification and time period (and more), returns matching document metadata, possibly zero, one or more.
Retrieve Document Set (known as XDS-b transaction ITI-43) which given parameters identifying the document (based on document metadata), returns possibly zero, one or more documents.
Further details on how the NSP DDS processes ITI-18 and ITI-43 requests, including possibly withholding data due to patient’s consents (Danish: Min Spærring) are described in Danish at https://www.nspop.dk/x/WJC6.
Use of these operations is fronted by the following eHealth infrastructure operations provided by the document-query service:
DocumentReference?<query>
(see https://docs.ehealth.sundhed.dk/latest-released/ig/ehealth-documentreference-search.html)Binary/$retrieve-document
(see https://docs.ehealth.sundhed.dk/latest-released/ig/OperationDefinition-Binary-t-retrieve-document.html)
Document metadata query is a precursor for actually retrieving a document.
While the XDS-b transaction ITI-43 Retrieve Document Set supports retrieval of multiple documents, the $retrieve-document
supports retrieve of a single document only.
Provided Transformations between FHIR resources and Danish CDA Profiles
Details on the transformations are included in the table below containing references to Danish CDA profiles for which further details are given in the table further below.
The transformations are:
idempotent (except for generated identifiers such as CDA document id in output)
provide no access to any FHIR resources - they require that the client provides the necessary FHIR resources as input. This is by design in order to prevent security breach.
Transformation | Source (XML document in FHIR DocumentReference) | Target (XML document in FHIR DocumentReference) | Comment |
---|---|---|---|
| Bundle of FHIR resources. Primary source of information is a FHIR Observation. | PHMR v1.3 XML document.
| Used in assembly, transformation and upload of FHIR Observation transformed to PHMR to XDS-based document sharing infrastructure as described in Sharing through Registering Documents in National Document Sharing Infrastructure. |
| Bundle of FHIR resources. Primary source of information is a FHIR QuestionnaireResponse. | QRD v1.3 XML document | Used in assembly, transformation and upload of FHIR QuestionnaireResponse transformed to QRD to XDS-based document sharing infrastructure as described in Sharing through Registering Documents in National Document Sharing Infrastructure. |
| Bundle of FHIR resources. Primary source of information is a FHIR Questionnaire. | QFDD v1.1 XML document |
|
| Bundle of FHIR resources. Primary source of information is a FHIR Appointment. | APD v2.0 XML document | Used in assembly, transformation and upload of FHIR Appointment transformed to APD to XDS-based document sharing infrastructure as described in Sharing through Registering Documents in National Document Sharing Infrastructure. |
| PHMR v1.3 XML document. | Bundle of FHIR resources. Most significant information is within a FHIR Observation. | The resulting Observation(s) is not guaranteed to be a valid FHIR Observation. |
| QRD v1.3 XML document | Bundle of FHIR resources. Most significant information is within a FHIR QuestionnaireResponse. | The resulting QuestionnaireResponse is not guaranteed to be a valid FHIR QuestionnaireResponse. |
Please note that the description of the operation is valid as of v3.0.0 of the eHealth Infrastructure Implementation Guide (IG) even though the link is to the IG continuous build. Please refer to the latest released version of the IG for all other purposes. | QRD v1.3 XML document | Bundle of FHIR resources Most significant information is within a FHIR QuestionnaireResponse with a structure matching the Questionnaire given as input. The QuestionnaireResponse will have linkIds matching the corresponding Questionnnaire. | The resulting QuestionnaireResponse is not guaranteed to be a valid FHIR QuestionnaireResponse. |
| QFDD v1.1 XML document | Bundle of FHIR resources. Primary source of information is a FHIR Questionnaire. |
|
| APD v2.0 XML document | Bundle of FHIR resources. Primary source of information is a FHIR Appointment. | The resulting Appointment is not guaranteed to be a valid FHIR Appointment. |
HL7 DK CDA Profile | Description | Specification |
---|---|---|
PHMR v1.3 | HL7 Implementation Guide for CDA Release 2.0, Release 1.3 31. March 2014, | http://svn.medcom.dk/svn/releases/Standarder/HL7/PHMR/Dokumentation/PHMR-DK-Profile-v1.3.pdf (Note: The available v1.3 is now updated as per March 2, 2020) |
QRD v1.3 | HL7 Implementation Guide for CDA Release 2.0, Release 1.3 February 11th 2022 | https://svn.medcom.dk/svn/drafts/Standarder/HL7/PRO/QRD/Dokumentation/DK-QRD-v1.3.pdf |
QFDD v1.1 | HL7 Implementation Guide for CDA Release 2.0, Draft, | http://svn.medcom.dk/svn/releases/Standarder/HL7/PRO/QFDD/Dokumentation/DK-QFDD-v1.1.pdf (Note: The available v1.1 is now updated as per June 11, 2021) |
APD v2.0 | HL7 Implementation Guide for CDA Release 2.0, Draft for Trial Use, | http://svn.medcom.dk/svn/releases/Standarder/HL7/Appointment/Dokumentation/DK-APD-v2.0.pdf |
Preparing Transformations by Assembling Required FHIR Resources
As described above, the transformations to CDA XML documents require that the client provides all the required FHIR resources. What FHIR resources must be part of the assembled FHIR bundle depends on the transformation.
When the eHealth infrastructure assembles FHIR resources in order to transform and upload to XDS-based document sharing infrastructure, the assembled resources are fetched from the various eHealth services. Whether this is the case for a client’s possible use is up to the client, that is, they could in principle be provided as in-memory FHIR resources that are not stored in the infrastructure.
Assembling FHIR Resources for Transformation to PHMR
A FHIR Bundle in-memory is prepared with the resources described below, based on a ClinicalImpression approving document sharing of the FHIR Observation. Typically, the assembly (and subsequent transformation and upload) is triggered by creation of the ClinicalImpression, but might otherwise be triggered by a ServiceRequest update reflecting a Practitioner’s registering of the citizen’s decision to change sharing policy.
FHIR Resource | Logical Part in Transformation | Comment |
---|---|---|
Observation (referenced from ClinicalImpression) | Observation Details | The Observation is the primary driver of the information contained in the generated PHMR document, including observation code, measured value, reference ranges and so on. |
DocumentationOf (CDA Header) | ||
Device (referenced from | Medical Equipment Section | Possible details about device(s) used. |
Patient (referenced from | Patient Identification | Patient identifier (CPR-number), name (given & family), gender, birth date, telecom |
EpisodeOfCare (referenced from | See Author Organization below |
|
Organization (referenced from | Custodian Organization | SOR id, name, telecom, address |
Practitioner (possibly referenced from | Author, Author Individual |
|
Organization (referenced from | Author, Author Organization |
|
Composition (created as part of the assembly) | Document header (CDA Header) | The FHIR Composition resource represents the document and has fixed values as follows:
|
Practitioner/Patient/RelatedPerson/Organization | Author of observation note | When the |
Practitioner (possibly referenced from | Observation performer | If the observation performer is of type Practitioner it must be included in the bundle. |
Assembling FHIR Resources for Transformation to QRD
A FHIR Bundle in-memory is prepared with the resources described below, based on a ClinicalImpression approving document sharing of the FHIR QuestionnaireResponse. Typically, the assembly (and subsequent transformation and upload) is triggered by creation of the ClinicalImpression, but might otherwise be triggered by a ServiceRequest update reflecting a Practitioner’s registering of the citizen’s decision to change sharing policy.
FHIR Resource | Logical Part in Transformation | Comment |
---|---|---|
QuestionnaireResponse (referenced from ClinicalImpression) | Question/answer details | The QuestionnaireResponse is the primary driver of the information contained in QRD. |
DocumentationOf (CDA Header) | effectiveTime = | |
Patient (referenced from | Patient identification | identifier (CPR-number), name (given & family), gender, birth date, telecom |
EpisodeOfCare (referenced from | See Author Organization below |
|
Organization (referenced from | Custodian Organization | SOR id, name, telecom, address |
Practitioner (referenced from | Author Individual | A consequence is that the Practitioner will appear as working in context of the Author Organization (which is not necessarily the case). |
Organization (referenced from | Author organization | The the origin of this Organization is dependent on sharingApprovalPolicy in the
If the FHIR Organization has no SOR type identifier, it is checked if it contains a SOR-relation in |
Composition (created as part of the assembly) | Document header (CDA Header) | FHIR Resource to represent document fixed values
|
Questionnaire (referenced from | Used in Document header (CDA Header) above |
Note on prerequisites for document registering:
|
DocumentReference (soft reference from | QFDD |
|
Transformation Details
CDA Header Transformation Details
It is described in the following table how logical parts in the transformation map to the header part of the CDA document. The CDA header part is common for all the Danish profiles with a few variations. Certain elements of the mapping is specific to the document type (marked as <specific to document type>). The details for these elements are specified in the sections on transformation of specific document types below.
Source (typically FHIR Resource) | Logical Part in Transformation | CDA Document | Details |
---|---|---|---|
Random UUID and details from the Infrastructure’s NamingSystem | Document id | /ClinicalDocument/id
|
|
<specific to document type> | Document title | /ClinicalDocument/title |
|
System time at time of transformation | Time of document creation | /ClinicalDocument/effectiveTime |
|
<specific to document type> | DocumentationOf (CDA Header) | /ClinicalDocument/documentationOf[0, 1, …] | Code(s) and datetime |
| Patient identification | /ClinicalDocument/recordTarget/patientRole | CPR-number (identification), name (given & family), gender, birth date, telecom |
<specific to document type> | Author, Author Individual | /ClinicalDocument/author/assignedAuthor/assignedPerson | Name (given & family), prefix |
| Author, Author Organization | /ClinicalDocument/author/assignedAuthor/id /ClinicalDocument/author/assignedAuthor/addr /ClinicalDocument/author/assignedAuthor/telecom /ClinicalDocument/author/assignedAuthor/representedOrganization/name | If If |
| Custodian Organization | /ClinicalDocument/custodian/assignedCustodian/representedCustodianOrganization |
|
<specific to document type> | Legal Authenticator | /ClinicalDocument/legalAuthenticator | (Not generally used but depends on document type) |
n/a | Information Recipient | /ClinicalDocument/informationRecipientOptional | Not used |
n/a | Authenticator | /ClinicalDocument/authenticator | Not used |
n/a | Optional Participant | /ClinicalDocument/participantOptional | Not used |
n/a | Optional In Fulfillment Of | /ClinicalDocument/inFulfillmentOfOptional | Not used |
PHMR Transformation Details
The PHMR transformation entails transformation of the CDA Header (see above) as well as PHMR-specific parts described below.
Source (typically FHIR Resource) | Logical Part in Transformation | CDA Document | Details |
---|---|---|---|
| Document title | /ClinicalDocument/title | “Hjemmemonitorering for “ concatenated with Danish CPR, that is, |
| DocumentationOf (CDA Header) | /ClinicalDocument/documentationOf[0, 1, …] | One DocumentationOf entry for time: effectiveTime = ( |
| One DocumentationOf for each Observation.code | ||
| One DocumentationOf for each Observation.component.code | ||
| Author, Author Individual | /ClinicalDocument/author/assignedAuthor/assignedPerson | Name (given & family), prefix |
| Legal Authenticator | /ClinicalDocument/legalAuthenticator |
|
The following table details how logical parts in the transformation map to specific areas of the body part of a PHMR document.
Source (typically FHIR Resource) | Logical Part in Transformation | CDA Document | Details |
---|---|---|---|
n/a | Observation(s) Section - Results | /ClinicalDocument/component/structuredBody/component[2]/section (title=Results) | Grouping of zero, one or more Observations/Observation components |
Observation | Per Observation (or Observation and Observation.component) | /ClinicalDocument/component/structuredBody/component[2]/section/entry/organizer/component/observation/ |
|
(if an |
| /ClinicalDocument/component/structuredBody/component[2]/section/entry/organizer/component/ovservation/id | id@extension is set to id@root is set to OID value resolved from Resolving as OID type system is either (in order):
|
A random UUID ( | id@extension is set to random UUID id@root is set to | ||
|
| /ClinicalDocument/component/structuredBody/component[2]/section/entry/organizer/effectiveTime | Start date of observation. If |
|
| /ClinicalDocument/component/structuredBody/component[2]/section/entry/organizer/component/observation/code | SNOMED CT system with value set to nullFlavor. |
/ClinicalDocument/component/structuredBody/component[2]/section/entry/organizer/component/observation/code/translation |
| ||
|
| /ClinicalDocument/component/structuredBody/component[2]/section/entry/organizer/component/observation/value | Value and unit in percent are converted to unitless decimal (fraction). |
|
| /ClinicalDocument/component/structuredBody/component[2]/section/entry/organizer/component/observation/methodCode | The details for deciding the two method codes can be found in the table below. |
| |||
|
| /ClinicalDocument/component/structuredBody/component[2]/section/entry/organizer/component/observation/referenceRange | FHIR ranges are inverted to PHMR representation. Only Other |
n/a | Observation(s) Section - Vital Signs | /ClinicalDocument/component/structuredBody/component[x]/section (title=Vital Signs) | Grouping of zero, one or more Observations/Observation components. Not used. Empty section created as specified in PHMR profile. |
n/a | Medical Equipment Section | /ClinicalDocument/component/structuredBody/component[3]/section (title=Medical Equipment) | Grouping of one or more Device details |
Device | Per Device in use | /ClinicalDocument/component/structuredBody/component[3]/section/entry/organizer |
|
|
| /ClinicalDocument/component/structuredBody/component[3]/section/entry/organizer/participant/participantRole/id | If a serial number or lot number is present on the Device, the id is set to the number with assigningAuthority being the the number type and the root: “1.2.208.184“
|
the determined device type code (see below | When no | ||
|
| /ClinicalDocument/component/structuredBody/component[3]/section/entry/organizer/participant/participantRole/playingDevice/code/translation | If a MedCom Instrument Code matching: can be found, it is used. Otherwise set to the nullflavor NI |
|
| /ClinicalDocument/component/structuredBody/component[3]/section/entry/organizer/participant/participantRole/playingDevice/manufacturerModelName | Encoded string comprised of:
|
|
| /ClinicalDocument/component/structuredBody/component[3]/section/entry/organizer/participant/participantRole/playingDevice/softwareName | Encoded string, comprised of |
n/a | External References |
| Not used |
Determining MethodCodes
FHIR Observation.performer | FHIR Observation.quality | MethodCode 1 PerformerType | MethodCode 2 ProvisionMethod |
---|---|---|---|
|
| POT (performed by citizen) | AUT (electronically) |
| PNT (performed by healthcare professional) | AUT (electronically) | |
| PCG (performed by caregiver) | AUT (electronically) | |
|
| POT (performed by citizen) | TPD (typed in by citizen) |
| PNT (performed by healthcare professional) | TPH (typed in by healthcare professional) | |
| PCG (performed by caregiver) | TPC (typed in by caregiver) |
Transforming Reference Ranges
Reference ranges (aka measurement ranges) are supported as regular, sensible ranges in the eHealth Infrastructure. In the PHMR, they are expressed as alarm thresholds. Oddly, the PHMR uses a range construct to carry the lower and higher threshold values, respectively, in effect describing an inverted range where the alarm is not in effect. Furthermore, the PHMR can contain zero, one or two alarm thresholds per observation. As shown in the figure below, the measurement range(s) in a FHIR Observation are transformed to such alarm thresholds for the PHMR document.
There need not be both yellow and red type measurement ranges and they need not be symmetrical as in the figure above. There are, however, certain constraints on which measurement ranges are supported due to the representation as alarm thresholds:
at most two yellow and two red measurement ranges are supported and they cannot be interleaved (for instance red, yellow, red, yellow)
the outermost measurement range cannot have both high and low value (because the alarm threshold is open-ended)
the outermost measurement range cannot be yellow if it is preceded by a red measurement range
In the example above, measurement ranges are overlapping (for instance yellow high value is equal to red low value) which the Clinical Administration Application prevents by requiring non-overlapping intervals. In reality, the measurement ranges will be non-overlapping by use of exclusiveness. This is accounted for in the transformation to alarm threshold through use of the PHMR inclusive=false | true construct.
Error situations
The transformation terminates in the error situations given below.
Situation | Error message |
---|---|
| Method codes for performerType and provisionMethod for observation with id {observationId} could not be established |
| Method codes for performerType and provisionMethod for observation with id {observationId} could not be established |
| Invalid Observation.effective, expecting DateTime, Period or Instant |
| Value should be Quantity type and not null |
| Observation ranges should not have both High and Low set when transforming to PHRM, but High is: {high}, and Low is: {low} |
| Value should have no more than 7 decimals, but is: {value} |
| CPR is mandatory for patient but not present in fhir bundle |
| Unknown author type: {authorType} |
| Composition.author should either be a Patient or Practitioner |
| Composition.authorOrganization must contain SOR identifier |
| Composition.attester.party must contain SOR identifier |
| Custodian organization must contain SOR identifier |
| Composition.authorOrganization is mandatory for transformation |
| Custodian is mandatory for transformation |
| Identifier on composition is mandatory |
| Composition.confidentiality is mandatory |
| Composition.subject should be a Patient
|
Narrative in Results section and/or Medical Equipment section cannot be generated due to unexpected issues. | Can't generate narrative for: medical equipment OR Can't generate narrative for: results |
QRD Transformation Details
The QRD transformation entails transformation of the CDA Header (see above) as well as QRD-specific parts described below.
Matching between FHIR Questionnaire, FHIR QuestionnaireResponse and QFDD
Just like the FHIR QuestionnaireResponse must be structurally consistent with the FHIR Questionnaire, the QRD must be structurally consistent with the QFDD. It follows that transformation of a FHIR QuestionnaireResponse to a QRD implies that the FHIR Questionnaire must be an approximation of the QFDD.
The following are prerequisites for a FHIR Questionnaire (shortened Questionnaire and covering both the ehealth-questionnaire and ehealth-questionnaire-advanced profiles) to be an approximation of a QFDD:
At root level of the FHIR Questionnaire, the number of question groups (
Questionnaire.item
withitem.type
set togroup
) shall match the number of QFDD sections for all but QFDD copyright section.Rationale: Copyright is placed in
Questionnaire.copyright
.
For each QFDD section except Information Only sections, the number of FHIR Questionnaire subgroups (
Questionnaire.item.item
withitem.type
set togroup
) shall match the number of QFDD organizers inside the section.The
Questionnaire.item
.item.externalIdentifier
(on a subgroup) shall match the QFDD organizer id.
For each QFDD question within an organizer there shall be a FHIR Questionnaire question item (
Questionnaire.item.item.item
)The
Questionnaire.item
.item.item.externalIdentifier
shall match the QFDD question id.A QFDD question with associated text shall have the associated text represented as a separate FHIR Questionnaire question item (
Questionnaire.item.item.item
)
Calculation type
Questionnaire.item
at any level are allowed in the FHIR Questionnaire without counterpart in the QFDDRationale: Calculations and formulas are not represented in QFDD.
Overall these prerequisites for approximation of QFDD ensures that the FHIR Questionnaire is structurally compatible with QFDD. In addition, groups, subgroups and questions must have the same ids and the same order. Also, the use of coded values for questions, answer options, and possibly subgroups must be identical.
The QFDD organizer/question id is matched to the corresponding item in a FHIR Questionnaire by item.item.item.extension.externalIdentifier
. The Questionnaire.item.linkId
is compared with QuestionnaireResponse.item.linkId
(at any level, that is also for Questionnaire.item.item and .item.item.item) to locate the same item in the QuestionnaireResponse.
Validation
As part of the transformation from FHIR QuestionnaireResponse to QRD, validation of the QFDD approximation prerequisites is performed.
Information Only Section
Logical Part | QRD Document | Details |
---|---|---|
Information Only Section | /ClinicalDocument/component/structuredBody/component/section |
|
Title | …/component/section/title | From root item |
Narrative | …/component/section/text | QFDD text (…/component/section/text) |
Language | languageCode |
|
Questionnaire Response Section
Logical Part | QRD Document | Details |
---|---|---|
Questionnaire Response Section | /ClinicalDocument/component/structuredBody/component/section | A root item on |
Title | …/component/section/title | From root item |
Narrative | …/component/section/text | QFDD text (…/component/section/text) The narrative (QFDD text) from the QFDD section is updated with answers before being assigned to the QRD section text. |
Language | languageCode |
|
Response Organizer
Logical Part | QRD Document | Details |
---|---|---|
Response Organizer | /ClinicalDocument/component/structuredBody/component/section/entry/organizer | An item of type Only items of type OBS: Items with calculated expression are allowed but is ignored during transformation. |
Id | …/section/entry/organizer/id | QFDD id (…/section/entry/organizer/id). Validating if item( |
Code | …/section/entry/organizer/code | Uses code from Questionnaire item Code: CodeSystem: if CodeSystemName: is fetched from CodeSystem in Questionnaire Terminology. Value is taken in the following order: codeSystem.title, codeSystem.name, codeSystem.url or “Unknown“. Display: OriginalText: Question text ( |
Numeric Response Pattern Observation
Logical Part | QRD Document | Details |
---|---|---|
Numeric Response Pattern Observation | /ClinicalDocument/component/structuredBody/component/section/entry/organizer/component/observation | An item inside a subgroup
Numeric Response if
|
Id | …/observation/id | Uses Id from QFFD question Validating if Questionnaire item( |
Code | …/observation/code | Uses code from Questionnaire item Code: CodeSystem: if CodeSystemName: is fetched from CodeSystem in Questionnaire Terminology. Value is taken in the following order: codeSystem.title, codeSystem.name, codeSystem.url or “Unknown“. Display: OriginalText: Question text ( |
Answer | …/observation/value | Value: For For For QRD Type:
|
Help text Image | …/observation/entryRelationship | Is added if Questionnaire item has one or more extensions: |
External reference | …/observation/reference | The QFDD unique id. From id element and the property 'extension' |
Range | …/observation/referenceRange | If |
Analog Slider Response Pattern Observation
Logical Part | QRD Document | Details |
---|---|---|
Analog Slider Response Pattern Observation | /ClinicalDocument/component/structuredBody/component/section/entry/organizer/component/observation | An item inside a subgroup
Analog Slider Response if
Properties: id, code, value, entryRelationship and reference is the same configuration as for numeric Response |
Id | …/observation/id | Uses Id from QFFD question Validating if Questionnaire item( |
Code | …/observation/code | Uses code from Questionnaire item Code: CodeSystem: if CodeSystemName: is fetched from CodeSystem in Questionnaire Terminology. Value is taken in the following order: codeSystem.title, codeSystem.name, codeSystem.url or “Unknown“. Display: OriginalText: Question text ( |
Answer | …/observation/value | Value: For For Type:
|
Help text Image | …/observation/entryRelationship | Is added if Questionnaire item has one or more extensions: |
External reference | …/observation/reference | The QFDD unique id. From id element and the property 'extension' |
Range | …/referenceRange/observationRange/ | Denominator: Head: Increment: |
Text Response Pattern Observation
Logical Part | QRD Document | Details |
---|---|---|
Text Response Pattern Observation | /ClinicalDocument/component/structuredBody/component/section/entry/organizer/component/observation | An item inside a subgroup
Test Response if
|
Id | …/observation/id | Uses Id from QFFD question Validating if Questionnaire item( |
Code | …/observation/code | Uses code from Questionnaire item Code: CodeSystem: if CodeSystemName: is fetched from CodeSystem in Questionnaire Terminology. Value is taken in the following order: codeSystem.title, codeSystem.name, codeSystem.url or “Unknown“. Display: OriginalText: Question text ( |
Answer | …/observation/value | Value: For Type: ST |
Help text Image | …/observation/entryRelationship | Is added if Questionnaire item has one or more extensions: |
External reference | …/observation/reference | Value from QFDD. From id element and the property 'extension' |
Multiple Choice Response Pattern Observation
Logical Part | QRD Document | Details |
---|---|---|
Multiple Choice Response Pattern Observation | /ClinicalDocument/component/structuredBody/component/section/entry/organizer/component/observation | An item inside a subgroup
Multiple Choice Response if
|
Id | …/observation/id | Uses Id from QFFD question Validating if Questionnaire item( |
Code | …/observation/code | Uses code from Questionnaire item Code: CodeSystem: if CodeSystemName: is fetched from CodeSystem in Questionnaire Terminology. Value is taken in the following order: codeSystem.title, codeSystem.name, codeSystem.url or “Unknown“. Display: OriginalText: Question text ( |
Answer | …/observation/value | Value: from For Code: CodeSystem: if CodeSystemName: is fetched from CodeSystem in Questionnaire Terminology. Value is taken in the following order: codeSystem.title, codeSystem.name, codeSystem.url or “Unknown“. Display: |
Help text Image Associated text question | …/observation/entryRelationship | Is added if Questionnaire item has one or more extensions:
And if QFDD has associated text question and preconditions are fulfilled. Structure for associated text question in FHIR Questionnaire:
OBS: Supported precondition for Associated text question:
|
External reference | …/observation/reference | The QFDD unique id. From id element and the property 'extension' |
Range | …/observation/referenceRange | If |
Discrete Slider Response Pattern Observation
Logical Part | QRD Document | Details |
---|---|---|
Discrete Slider Response Pattern Observation | /ClinicalDocument/component/structuredBody/component/section/entry/organizer/component/observation | An item inside a subgroup
Multiple Choice Response if
|
Id | …/observation/id | Uses Id from QFFD question Validating if Questionnaire item( |
Code | …/observation/code | Uses code from Questionnaire item Code: CodeSystem: if CodeSystemName: is fetched from CodeSystem in Questionnaire Terminology. Value is taken in the following order: codeSystem.title, codeSystem.name, codeSystem.url or “Unknown“. Display: OriginalText: Question text ( |
Value | …/observation/value | Value: from For Code: CodeSystem: if CodeSystemName: is fetched from CodeSystem in Questionnaire Terminology. Value is taken in the following order: codeSystem.title, codeSystem.name, codeSystem.url or “Unknown“. Display: |
Max occurrence Min occurrence Help text Image | …/observation/entryRelationship | Low: http://hl7.org/fhir/StructureDefinition/questionnaire-minOccurs High: http://hl7.org/fhir/StructureDefinition/questionnaire-maxOccurs always 1 (1 only allowed value for Discrete Slider type) Is added if Questionnaire item has one or more extensions: |
QFDD reference | …/observation/reference | The QFDD unique id. From id element and the property 'extension' |
Copyright Section
Logical Part | QRD Document | Details |
---|---|---|
Copyright Section | /ClinicalDocument/component/structuredBody/component/section | Copyright section is copied directly from the QFDD |
Supported types
FHIR Questionnaire.item.type | QRD Response Pattern Observation |
---|---|
text, string, openchoice | Text Response Pattern Observation |
choice | Multiple Choice Response Pattern Observation Discrete Slider Response Pattern Observation (when |
decimal, integer | Numeric Response Pattern Observation Analog Slider Response Pattern Observation (when |
datetime | Numeric Response Pattern Observation |
QFDD Transformation Details
The QFDD transformation entails transformation of the CDA Header (see above) as well as QFDD-specific parts described below.
Overall and except for certain details described below, the structure of the Questionnaire must match the structure of the QFDD.
This means that the structure rules below must be adhere to and that information sections/groups and questions must be in the same order.
QFDD Element | FHIR Questionnaire | Comment |
---|---|---|
Information Only Section | A A single child item |
|
Question Section (with one or more Question Organizer) | A For each QFDD Question Organizer: A single child item For each question in the group/QFDD Question Organizer: A single child item |
|
Not transformed as algorithms and expressions are not supported in QFDD. | A | A Calculated expression within the questionnaire, see |