NHDR Implementation Guide Release 1.0
0.1.0 - ci-build

NHDR Implementation Guide Release 1.0, published by NHDR. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/UP-Manila-SILab/PhilHealth-NHDR-IG-Review/ and changes regularly. See the Directory of published versions

Resource Profile: PH Questionnaire

Official URL: https://nhdr.gov.ph/fhir/StructureDefinition/PH-Questionnaire Version: 0.1.0
Standards status: Draft Computable Name: PH_Questionnaire

Copyright/Legal: Used by permission of HL7 International, all rights reserved Creative Commons License

A structured set of questions intended to guide the collection of answers from end-users. Questionnaires provide detailed control over order, presentation, phraseology and grouping to allow coherent, consistent data collection.

Usages:

  • This Profile is not used by any profiles in this Implementation Guide

You can also check for usages in the FHIR IG Statistics

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Questionnaire C 0..* Questionnaire A structured set of questions
Constraints: que-0, que-2
... status ?!Σ 1..1 code draft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Questionnaire.status Base required PublicationStatus 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error Questionnaire If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Questionnaire If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Questionnaire If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Questionnaire If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Questionnaire A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
que-0 warning Questionnaire Name should be usable as an identifier for the module by machine processing applications such as code generation name.matches('[A-Z]([A-Za-z0-9_]){0,254}')
que-2 error Questionnaire The link ids for groups and questions must be unique within the questionnaire descendants().linkId.isDistinct()

This structure is derived from Questionnaire

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Questionnaire 0..* Questionnaire A structured set of questions
... meta
.... Slices for extension Content/Rules for all slices
..... extension:hfRecordedDate 0..1 dateTime The recorded date indicating when the record was uploaded by the health facility.
URL: https://nhdr.gov.ph/fhir/StructureDefinition/HFRecordedDate
..... extension:hfLastUpdated 0..* dateTime The date indicating when the record was last updated by the health facility.
URL: https://nhdr.gov.ph/fhir/StructureDefinition/HFLastUpdated
.... lastUpdated 0..1 instant When the resource was uploaded to the NHDR.
... implicitRules 0..0
... language 0..0
... text 0..0
... contained 0..0
... extension 0..0
... modifierExtension 0..0
... url 0..0
... identifier 0..0
... version 0..0
... name 0..0
... title 0..0
... derivedFrom 0..0
... experimental 0..0
... subjectType 0..0
... date 0..0
... publisher 0..0
... contact 0..0
... description 0..0
... useContext 0..0
... jurisdiction 0..0
... purpose 0..0
... copyright 0..0
... approvalDate 0..0
... lastReviewDate 0..0
... effectivePeriod 0..0
... code 0..0
... item
.... id 0..0
.... extension 0..0
.... modifierExtension 0..0
.... definition 0..0
.... code 0..0
.... prefix 0..0
.... enableBehavior 0..0
.... required 0..0
.... repeats 0..0
.... readOnly 0..0
.... maxLength 0..0
.... answerValueSet 0..0
.... answerOption 0..0
.... initial 0..0
.... item 0..0

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Questionnaire C 0..* Questionnaire A structured set of questions
Constraints: que-0, que-2
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
.... id 0..1 string Unique id for inter-element referencing
.... Slices for extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... extension:hfRecordedDate 0..1 dateTime The recorded date indicating when the record was uploaded by the health facility.
URL: https://nhdr.gov.ph/fhir/StructureDefinition/HFRecordedDate
..... extension:hfLastUpdated 0..* dateTime The date indicating when the record was last updated by the health facility.
URL: https://nhdr.gov.ph/fhir/StructureDefinition/HFLastUpdated
.... versionId Σ 0..1 id Version specific identifier
.... lastUpdated Σ 0..1 instant When the resource was uploaded to the NHDR.
.... source Σ 0..1 uri Identifies where the resource comes from
.... profile Σ 0..* canonical(StructureDefinition) Profiles this resource claims to conform to
.... security Σ 0..* Coding Security Labels applied to this resource
Binding: All Security Labels (extensible): Security Labels from the Healthcare Privacy and Security Classification System.
.... tag Σ 0..* Coding Tags applied to this resource
Binding: CommonTags (example): Codes that represent various types of tags, commonly workflow-related; e.g. "Needs review by Dr. Jones".
... status ?!Σ 1..1 code draft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.
.... linkId 1..1 string Unique id for item in questionnaire
.... text 0..1 string Primary text for the item
.... type 1..1 code group | display | boolean | decimal | integer | date | dateTime +
Binding: QuestionnaireItemType (required): Distinguishes groups from questions and display text and indicates data type for questions.
.... enableWhen ?!C 0..* BackboneElement Only allow data when
Constraints: que-7
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... question 1..1 string Question that determines whether item is enabled
..... operator 1..1 code exists | = | != | > | < | >= | <=
Binding: QuestionnaireItemOperator (required): The criteria by which a question is enabled.
..... answer[x] C 1..1 Value for question comparison based on operator
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
...... answerBoolean boolean
...... answerDecimal decimal
...... answerInteger integer
...... answerDate date
...... answerDateTime dateTime
...... answerTime time
...... answerString string
...... answerCoding Coding
...... answerQuantity Quantity
...... answerReference Reference(Resource)

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Questionnaire.meta.security Base extensible SecurityLabels 📍4.0.1 FHIR Std.
Questionnaire.meta.tag Base example Common Tags 📍4.0.1 FHIR Std.
Questionnaire.status Base required PublicationStatus 📍4.0.1 FHIR Std.
Questionnaire.item.type Base required QuestionnaireItemType 📍4.0.1 FHIR Std.
Questionnaire.item.enableWhen.​operator Base required QuestionnaireItemOperator 📍4.0.1 FHIR Std.
Questionnaire.item.enableWhen.​answer[x] Base example Questionnaire Answer Codes 📍4.0.1 FHIR Std.
Questionnaire.item.answerOption.​value[x] Base example Questionnaire Answer Codes 📍4.0.1 FHIR Std.
Questionnaire.item.initial.​value[x] Base example Questionnaire Answer Codes 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error Questionnaire If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Questionnaire If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Questionnaire If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Questionnaire If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Questionnaire A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
que-0 warning Questionnaire Name should be usable as an identifier for the module by machine processing applications such as code generation name.matches('[A-Z]([A-Za-z0-9_]){0,254}')
que-1 error Questionnaire.item Group items must have nested items, display items cannot have nested items (type='group' implies item.empty().not()) and (type.trace('type')='display' implies item.trace('item').empty())
que-2 error Questionnaire The link ids for groups and questions must be unique within the questionnaire descendants().linkId.isDistinct()
que-3 error Questionnaire.item Display items cannot have a "code" asserted type!='display' or code.empty()
que-4 error Questionnaire.item A question cannot have both answerOption and answerValueSet answerOption.empty() or answerValueSet.empty()
que-5 error Questionnaire.item Only 'choice' and 'open-choice' items can have answerValueSet (type ='choice' or type = 'open-choice' or type = 'decimal' or type = 'integer' or type = 'date' or type = 'dateTime' or type = 'time' or type = 'string' or type = 'quantity') or (answerValueSet.empty() and answerOption.empty())
que-6 error Questionnaire.item Required and repeat aren't permitted for display items type!='display' or (required.empty() and repeats.empty())
que-7 error Questionnaire.item.enableWhen If the operator is 'exists', the value must be a boolean operator = 'exists' implies (answer is Boolean)
que-8 error Questionnaire.item Initial values can't be specified for groups or display items (type!='group' and type!='display') or initial.empty()
que-9 error Questionnaire.item Read-only can't be specified for "display" items type!='display' or readOnly.empty()
que-10 error Questionnaire.item Maximum length can only be declared for simple question types (type in ('boolean' | 'decimal' | 'integer' | 'string' | 'text' | 'url' | 'open-choice')) or maxLength.empty()
que-11 error Questionnaire.item If one or more answerOption is present, initial[x] must be missing answerOption.empty() or initial.empty()
que-12 error Questionnaire.item If there are more than one enableWhen, enableBehavior must be specified enableWhen.count() > 2 implies enableBehavior.exists()
que-13 error Questionnaire.item Can only have multiple initial values for repeating items repeats=true or initial.count() <= 1

This structure is derived from Questionnaire

Summary

Prohibited: 41 elements

Extensions

This structure refers to these extensions:

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Questionnaire C 0..* Questionnaire A structured set of questions
Constraints: que-0, que-2
... status ?!Σ 1..1 code draft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Questionnaire.status Base required PublicationStatus 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error Questionnaire If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Questionnaire If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Questionnaire If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Questionnaire If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Questionnaire A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
que-0 warning Questionnaire Name should be usable as an identifier for the module by machine processing applications such as code generation name.matches('[A-Z]([A-Za-z0-9_]){0,254}')
que-2 error Questionnaire The link ids for groups and questions must be unique within the questionnaire descendants().linkId.isDistinct()

Differential View

This structure is derived from Questionnaire

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Questionnaire 0..* Questionnaire A structured set of questions
... meta
.... Slices for extension Content/Rules for all slices
..... extension:hfRecordedDate 0..1 dateTime The recorded date indicating when the record was uploaded by the health facility.
URL: https://nhdr.gov.ph/fhir/StructureDefinition/HFRecordedDate
..... extension:hfLastUpdated 0..* dateTime The date indicating when the record was last updated by the health facility.
URL: https://nhdr.gov.ph/fhir/StructureDefinition/HFLastUpdated
.... lastUpdated 0..1 instant When the resource was uploaded to the NHDR.
... implicitRules 0..0
... language 0..0
... text 0..0
... contained 0..0
... extension 0..0
... modifierExtension 0..0
... url 0..0
... identifier 0..0
... version 0..0
... name 0..0
... title 0..0
... derivedFrom 0..0
... experimental 0..0
... subjectType 0..0
... date 0..0
... publisher 0..0
... contact 0..0
... description 0..0
... useContext 0..0
... jurisdiction 0..0
... purpose 0..0
... copyright 0..0
... approvalDate 0..0
... lastReviewDate 0..0
... effectivePeriod 0..0
... code 0..0
... item
.... id 0..0
.... extension 0..0
.... modifierExtension 0..0
.... definition 0..0
.... code 0..0
.... prefix 0..0
.... enableBehavior 0..0
.... required 0..0
.... repeats 0..0
.... readOnly 0..0
.... maxLength 0..0
.... answerValueSet 0..0
.... answerOption 0..0
.... initial 0..0
.... item 0..0

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Questionnaire C 0..* Questionnaire A structured set of questions
Constraints: que-0, que-2
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
.... id 0..1 string Unique id for inter-element referencing
.... Slices for extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... extension:hfRecordedDate 0..1 dateTime The recorded date indicating when the record was uploaded by the health facility.
URL: https://nhdr.gov.ph/fhir/StructureDefinition/HFRecordedDate
..... extension:hfLastUpdated 0..* dateTime The date indicating when the record was last updated by the health facility.
URL: https://nhdr.gov.ph/fhir/StructureDefinition/HFLastUpdated
.... versionId Σ 0..1 id Version specific identifier
.... lastUpdated Σ 0..1 instant When the resource was uploaded to the NHDR.
.... source Σ 0..1 uri Identifies where the resource comes from
.... profile Σ 0..* canonical(StructureDefinition) Profiles this resource claims to conform to
.... security Σ 0..* Coding Security Labels applied to this resource
Binding: All Security Labels (extensible): Security Labels from the Healthcare Privacy and Security Classification System.
.... tag Σ 0..* Coding Tags applied to this resource
Binding: CommonTags (example): Codes that represent various types of tags, commonly workflow-related; e.g. "Needs review by Dr. Jones".
... status ?!Σ 1..1 code draft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.
.... linkId 1..1 string Unique id for item in questionnaire
.... text 0..1 string Primary text for the item
.... type 1..1 code group | display | boolean | decimal | integer | date | dateTime +
Binding: QuestionnaireItemType (required): Distinguishes groups from questions and display text and indicates data type for questions.
.... enableWhen ?!C 0..* BackboneElement Only allow data when
Constraints: que-7
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... question 1..1 string Question that determines whether item is enabled
..... operator 1..1 code exists | = | != | > | < | >= | <=
Binding: QuestionnaireItemOperator (required): The criteria by which a question is enabled.
..... answer[x] C 1..1 Value for question comparison based on operator
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
...... answerBoolean boolean
...... answerDecimal decimal
...... answerInteger integer
...... answerDate date
...... answerDateTime dateTime
...... answerTime time
...... answerString string
...... answerCoding Coding
...... answerQuantity Quantity
...... answerReference Reference(Resource)

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Questionnaire.meta.security Base extensible SecurityLabels 📍4.0.1 FHIR Std.
Questionnaire.meta.tag Base example Common Tags 📍4.0.1 FHIR Std.
Questionnaire.status Base required PublicationStatus 📍4.0.1 FHIR Std.
Questionnaire.item.type Base required QuestionnaireItemType 📍4.0.1 FHIR Std.
Questionnaire.item.enableWhen.​operator Base required QuestionnaireItemOperator 📍4.0.1 FHIR Std.
Questionnaire.item.enableWhen.​answer[x] Base example Questionnaire Answer Codes 📍4.0.1 FHIR Std.
Questionnaire.item.answerOption.​value[x] Base example Questionnaire Answer Codes 📍4.0.1 FHIR Std.
Questionnaire.item.initial.​value[x] Base example Questionnaire Answer Codes 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error Questionnaire If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Questionnaire If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Questionnaire If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Questionnaire If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Questionnaire A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
que-0 warning Questionnaire Name should be usable as an identifier for the module by machine processing applications such as code generation name.matches('[A-Z]([A-Za-z0-9_]){0,254}')
que-1 error Questionnaire.item Group items must have nested items, display items cannot have nested items (type='group' implies item.empty().not()) and (type.trace('type')='display' implies item.trace('item').empty())
que-2 error Questionnaire The link ids for groups and questions must be unique within the questionnaire descendants().linkId.isDistinct()
que-3 error Questionnaire.item Display items cannot have a "code" asserted type!='display' or code.empty()
que-4 error Questionnaire.item A question cannot have both answerOption and answerValueSet answerOption.empty() or answerValueSet.empty()
que-5 error Questionnaire.item Only 'choice' and 'open-choice' items can have answerValueSet (type ='choice' or type = 'open-choice' or type = 'decimal' or type = 'integer' or type = 'date' or type = 'dateTime' or type = 'time' or type = 'string' or type = 'quantity') or (answerValueSet.empty() and answerOption.empty())
que-6 error Questionnaire.item Required and repeat aren't permitted for display items type!='display' or (required.empty() and repeats.empty())
que-7 error Questionnaire.item.enableWhen If the operator is 'exists', the value must be a boolean operator = 'exists' implies (answer is Boolean)
que-8 error Questionnaire.item Initial values can't be specified for groups or display items (type!='group' and type!='display') or initial.empty()
que-9 error Questionnaire.item Read-only can't be specified for "display" items type!='display' or readOnly.empty()
que-10 error Questionnaire.item Maximum length can only be declared for simple question types (type in ('boolean' | 'decimal' | 'integer' | 'string' | 'text' | 'url' | 'open-choice')) or maxLength.empty()
que-11 error Questionnaire.item If one or more answerOption is present, initial[x] must be missing answerOption.empty() or initial.empty()
que-12 error Questionnaire.item If there are more than one enableWhen, enableBehavior must be specified enableWhen.count() > 2 implies enableBehavior.exists()
que-13 error Questionnaire.item Can only have multiple initial values for repeating items repeats=true or initial.count() <= 1

This structure is derived from Questionnaire

Summary

Prohibited: 41 elements

Extensions

This structure refers to these extensions:

 

Other representations of profile: CSV, Excel, Schematron