Data Type Profiles
This version of the PS-CA Implementation Guide has been superseded by a newer version.
Other releases of the PS-CA Implementation Guide may be found on a table on the Home Page of this Project.
There are four data types that are profiled in PS-CA Version 1.
Data types are profiled in order to enforce constraints on what elements within the data type are required and/or are expected for systems to be able to demonstrate support.
CodeableConcept
This profile represents the constraint applied to the CodeableConcept data type by the PS-CA project to use the Coding-ca-ps data type profile in a way that is informed by the constraints of the CodeableConcept-UV-IPS profile but removes the overarching expectation that all patient summary creators must demonstrate they can support codings for conformance.
CodeableConcept | | | CodeableConcept | There are no (further) constraints on this element Element IdShort description Concept - reference to a terminology or just text Definition A concept that may be defined by a formal reference to a terminology or ontology or may be provided by text.
Comments Not all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination.
Data Type CodeableConcept Constraints- ele-1:All FHIR elements must have a @value or children
hasValue() or (children().count() > id.count())
Mappings- rim:n/a
- v2:CE/CNE/CWE
- rim:CD
- orim:fhir:CodeableConcept rdfs:subClassOf dt:CD
|
coding | Σ | 0..* | Data Type: Coding (PS-CA) | Element IdShort description A reference to a code defined by a terminology system Definition A reference to a code defined by a terminology system.
Requirements Allows for alternative encodings within a code system, and translations to other code systems.
Comments While the IPS-UV specification considers this a MS element, some systems will not have the ability to support codings for every codeableConcept, further feedback is required on whether these systems are still expected to be able to demonstrate they can construct this element when developing the patient summary instance.
Implementors that support codings should still send the codings for codeable concepts if they are available and receivers should not produce failures or rejections if codings are included in the patient summary in the first release (a base tenet of FHIR).
Additionally vendors should expect that some jurisdictions may further constrain support of this element within the context of their own jurisdictional content
Data Type Data Type: Coding (PS-CA) Constraints- ele-1:All FHIR elements must have a @value or children
hasValue() or (children().count() > id.count())
Mappings- rim:n/a
- v2:CE/CNE/CWE subset one of the sets of component 1-3 or 4-6
- rim:CV
- orim:fhir:Coding rdfs:subClassOf dt:CDCoding
- v2:C*E.1-8, C*E.10-22
- rim:union(., ./translation)
- orim:fhir:CodeableConcept.coding rdfs:subPropertyOf dt:CD.coding
|
text | S Σ | 0..1 | string | There are no (further) constraints on this element Element IdShort description Plain text representation of the concept Definition A human language representation of the concept as seen/selected/uttered by the user who entered the data and/or which represents the intended meaning of the user.
Requirements The codes from the terminologies do not always capture the correct meaning with all the nuances of the human using them, or sometimes there is no appropriate code at all. In these cases, the text is used to capture the full meaning of the source.
Comments Very often the text is the same as a displayName of one of the codings.
Data Type string Constraints- ele-1:All FHIR elements must have a @value or children
hasValue() or (children().count() > id.count())
Mappings- rim:n/a
- v2:C*E.9. But note many systems use C*E.2 for this
- rim:./originalText[mediaType/code="text/plain"]/data
- orim:fhir:CodeableConcept.text rdfs:subPropertyOf dt:CD.originalText
|
Note: This profile makes a significant change from the IPS-UV data type profile by removing the must support flag from the coding element.
- While coding is not currently considered must support in Version 1.0.0, implementers that support codings should still send the codings for codeable concepts if they are available/appropriate and receivers should not produce failures or rejections if codings are included in the patient summary in the first release (a base tenet of FHIR).
- Additionally vendors should expect that some jurisdictions may further constrain support of this element within the context of their own jurisdictional content
- Implementors should also be aware that this constraint will be under consideration to be re-applied in PS-CA Version 2 .
Coding
This profile extends the capabilities of the coding data type to support multi-language designations (display). It relies on the Translation extension. This profile is informed by the constraints of the Coding-UV-IPS profile.
Coding | | | Coding | There are no (further) constraints on this element Element IdShort description A reference to a code defined by a terminology system Definition A reference to a code defined by a terminology system.
Comments Codes may be defined very casually in enumerations or code lists, up to very formal definitions such as SNOMED CT - see the HL7 v3 Core Principles for more information.
Data Type Coding Constraints- ele-1:All FHIR elements must have a @value or children
hasValue() or (children().count() > id.count())
Mappings- rim:n/a
- v2:CE/CNE/CWE subset one of the sets of component 1-3 or 4-6
- rim:CV
- orim:fhir:Coding rdfs:subClassOf dt:CDCoding
|
system | S Σ | 0..1 | uri | There are no (further) constraints on this element Element IdShort description Identity of the terminology system Definition The identification of the code system that defines the meaning of the symbol in the code.
Requirements Need to be unambiguous about the source of the definition of the symbol.
Comments The URI may be an OID (urn:oid:...) or a UUID (urn:uuid:...). OIDs and UUIDs SHALL be references to the HL7 OID registry. Otherwise, the URI should come from HL7's list of FHIR defined special URIs or it should reference to some definition that establishes the system clearly and unambiguously.
Data Type uri Constraints- ele-1:All FHIR elements must have a @value or children
hasValue() or (children().count() > id.count())
Mappings- rim:n/a
- v2:C*E.3
- rim:./codeSystem
- orim:fhir:Coding.system rdfs:subPropertyOf dt:CDCoding.codeSystem
|
version | S Σ | 0..1 | string | There are no (further) constraints on this element Element IdShort description Version of the system - if relevant Definition The version of the code system which was used when choosing this code. Note that a well-maintained code system does not need the version reported, because the meaning of codes is consistent across versions. However this cannot consistently be assured, and when the meaning is not guaranteed to be consistent, the version SHOULD be exchanged.
Comments Where the terminology does not clearly define what string should be used to identify code system versions, the recommendation is to use the date (expressed in FHIR date format) on which that version was officially published as the version date.
Data Type string Constraints- ele-1:All FHIR elements must have a @value or children
hasValue() or (children().count() > id.count())
Mappings- rim:n/a
- v2:C*E.7
- rim:./codeSystemVersion
- orim:fhir:Coding.version rdfs:subPropertyOf dt:CDCoding.codeSystemVersion
|
code | S Σ | 0..1 | code | There are no (further) constraints on this element Element IdShort description Symbol in syntax defined by the system Definition A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).
Requirements Need to refer to a particular code in the system.
Comments Note that FHIR strings SHALL NOT exceed 1MB in size
Data Type code Constraints- ele-1:All FHIR elements must have a @value or children
hasValue() or (children().count() > id.count())
Mappings- rim:n/a
- v2:C*E.1
- rim:./code
- orim:fhir:Coding.code rdfs:subPropertyOf dt:CDCoding.code
|
display | S Σ | 0..1 | string | There are no (further) constraints on this element Element IdShort description Representation defined by the system Definition A representation of the meaning of the code in the system, following the rules of the system.
Requirements Need to be able to carry a human-readable meaning of the code for readers that do not know the system.
Comments Note that FHIR strings SHALL NOT exceed 1MB in size
Data Type string Constraints- ele-1:All FHIR elements must have a @value or children
hasValue() or (children().count() > id.count())
Mappings- rim:n/a
- v2:C*E.2 - but note this is not well followed
- rim:CV.displayName
- orim:fhir:Coding.display rdfs:subPropertyOf dt:CDCoding.displayName
|
extension | S I | 0..* | Extension | Element IdShort description Additional content defined by implementations Alternate names extensions, user content Definition May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
Comments There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.
Data Type Extension Sliced: Unordered, Open, by url(Value) Constraints- ele-1:All FHIR elements must have a @value or children
hasValue() or (children().count() > id.count()) - ext-1:Must have either extensions or value[x], not both
extension.exists() != value.exists()
Mappings |
translation | S I | 0..* | Extension(Complex) | Element IdCoding.display.extension:translation Short description Language Translation (Localization) Alternate names extensions, user content Definition Language translation from base language of resource to another language.
Comments There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.
Data Type Extension(Complex) Extension URL http://hl7.org/fhir/StructureDefinition/translation Constraints- ele-1:All FHIR elements must have a @value or children
hasValue() or (children().count() > id.count()) - ext-1:Must have either extensions or value[x], not both
extension.exists() != value.exists()
Mappings- rim:n/a
- rim:N/A
- rim:ST.translation
|
userSelected | Σ | 0..1 | boolean | There are no (further) constraints on this element Element IdShort description If this coding was chosen directly by the user Definition Indicates that this coding was chosen by a user directly - e.g. off a pick list of available items (codes or displays).
Requirements This has been identified as a clinical safety criterium - that this exact system/code pair was chosen explicitly, rather than inferred by the system based on some rules or language processing.
Comments Amongst a set of alternatives, a directly chosen code is the most appropriate starting point for new translations. There is some ambiguity about what exactly 'directly chosen' implies, and trading partner agreement may be needed to clarify the use of this element and its consequences more completely.
Data Type boolean Constraints- ele-1:All FHIR elements must have a @value or children
hasValue() or (children().count() > id.count())
Mappings- rim:n/a
- v2:Sometimes implied by being first
- rim:CD.codingRationale
- orim:fhir:Coding.userSelected fhir:mapsTo dt:CDCoding.codingRationale. fhir:Coding.userSelected fhir:hasMap fhir:Coding.userSelected.map. fhir:Coding.userSelected.map a fhir:Map; fhir:target dt:CDCoding.codingRationale. fhir:Coding.userSelected\#true a [ fhir:source "true"; fhir:target dt:CDCoding.codingRationale\#O ]
|
Note: This profile makes no changes to the cardinality or placement of must support flags from IPS-UV, but has carried those constraints over into a unique PS-CA data type profile to ensure that implementers have clarity and consistency in the expectations this guide puts forth when must support is claimed.
Extensions
This profile uses the following extensions:
Quantity
This profile represents the constraint applied to the Quantity data type by the PS-CA project to use UCUM as the code system for units. Informed by the constraints of the Observation-Quantity-UV-IPS profile.
Quantity | I | | Quantity | Element IdShort description A measured amount using UCUM Definition A measured amount (or an amount that can potentially be measured). Note that measured amounts include amounts that are not precisely quantified, including amounts involving arbitrary units and floating currencies.
This profile imposes that the code system for units be UCUM.
Comments The context of use may frequently define what kind of quantity this is and therefore what kind of units can be used. The context of use may also restrict the values for the comparator.
Data Type Quantity Constraints- ele-1:All FHIR elements must have a @value or children
hasValue() or (children().count() > id.count()) - qty-3:If a code for the unit is present, the system SHALL also be present
code.empty() or system.exists()
Mappings- rim:n/a
- v2:SN (see also Range) or CQ
- rim:PQ, IVL<PQ>, MO, CO, depending on the values
|
value | Σ | 0..1 | decimal | There are no (further) constraints on this element Element IdShort description Numerical value (with implicit precision) Definition The value of the measured amount. The value includes an implicit precision in the presentation of the value.
Requirements Precision is handled implicitly in almost all cases of measurement.
Comments The implicit precision in the value should always be honored. Monetary values have their own rules for handling precision (refer to standard accounting text books).
Data Type decimal Constraints- ele-1:All FHIR elements must have a @value or children
hasValue() or (children().count() > id.count())
Mappings- rim:n/a
- v2:SN.2 / CQ - N/A
- rim:PQ.value, CO.value, MO.value, IVL.high or IVL.low depending on the value
|
comparator | Σ ?! | 0..1 | codeBinding | There are no (further) constraints on this element Element IdShort description < | <= | >= | > - how to understand the value Definition How the value should be understood and represented - whether the actual value is greater or less than the stated value due to measurement issues; e.g. if the comparator is "<" , then the real value is < stated value.
Requirements Need a framework for handling measures where the value is <5ug/L or >400mg/L due to the limitations of measuring methodology.
Comments Note that FHIR strings SHALL NOT exceed 1MB in size
Meaning When Missing If there is no comparator, then there is no modification of the value
Data Type code Binding How the Quantity should be understood and represented. QuantityComparator (required)Constraints- ele-1:All FHIR elements must have a @value or children
hasValue() or (children().count() > id.count())
Mappings- rim:n/a
- v2:SN.1 / CQ.1
- rim:IVL properties
|
unit | Σ | 0..1 | string | There are no (further) constraints on this element Element IdShort description Unit representation Definition A human-readable form of the unit.
Requirements There are many representations for units of measure and in many contexts, particular representations are fixed and required. I.e. mcg for micrograms.
Comments Note that FHIR strings SHALL NOT exceed 1MB in size
Data Type string Constraints- ele-1:All FHIR elements must have a @value or children
hasValue() or (children().count() > id.count())
Mappings- rim:n/a
- v2:(see OBX.6 etc.) / CQ.2
- rim:PQ.unit
|
system | S Σ I | 1..1 | uriFixed Value | Element IdShort description UCUM system for units Definition The identification of the system that provides the coded form of the unit.
Requirements Need to know the system that defines the coded form of the unit.
Comments see http://en.wikipedia.org/wiki/Uniform_resource_identifier
Data Type uri Constraints- ele-1:All FHIR elements must have a @value or children
hasValue() or (children().count() > id.count())
Fixed Value
http://unitsofmeasure.org Mappings- rim:n/a
- v2:(see OBX.6 etc.) / CQ.2
- rim:CO.codeSystem, PQ.translation.codeSystem
|
code | S Σ | 1..1 | code | There are no (further) constraints on this element Element IdShort description Coded form of the unit Definition A computer processable form of the unit in some unit representation system.
Requirements Need a computable form of the unit that is fixed across all forms. UCUM provides this for quantities, but SNOMED CT provides many units of interest.
Comments The preferred system is UCUM, but SNOMED CT can also be used (for customary units) or ISO 4217 for currency. The context of use may additionally require a code from a particular system.
Data Type code Constraints- ele-1:All FHIR elements must have a @value or children
hasValue() or (children().count() > id.count())
Mappings- rim:n/a
- v2:(see OBX.6 etc.) / CQ.2
- rim:PQ.code, MO.currency, PQ.translation.code
|
Note: This profile makes no changes to the cardinality or placement of must support flags from IPS-UV, but has carried those constraints over into a unique PS-CA data type profile to ensure that implementers have clarity and consistency in the expectations this guide puts forth when must support is claimed.
Ratio
This profile represents the constraint applied to the Ratio data type by the PS-CA project to use UCUM as the code system for units in a way that is informed by the constraints of the Ratio-UV-IPS profile.
Ratio | I | | Ratio | There are no (further) constraints on this element Element IdShort description A ratio of two Quantity values - a numerator and a denominator Definition A relationship of two Quantity values - expressed as a numerator and a denominator.
Comments The Ratio datatype should only be used to express a relationship of two numbers if the relationship cannot be suitably expressed using a Quantity and a common unit. Where the denominator value is known to be fixed to "1", Quantity should be used instead of Ratio.
Data Type Ratio Constraints- ele-1:All FHIR elements must have a @value or children
hasValue() or (children().count() > id.count()) - rat-1:Numerator and denominator SHALL both be present, or both are absent. If both are absent, there SHALL be some extension present
(numerator.empty() xor denominator.exists()) and (numerator.exists() or extension.exists())
Mappings |
numerator | S Σ I | 0..1 | Data Type: Quantity (PS-CA) | Element IdShort description A measured amount using UCUM Definition A measured amount (or an amount that can potentially be measured). Note that measured amounts include amounts that are not precisely quantified, including amounts involving arbitrary units and floating currencies.
This profile imposes that the code system for units be UCUM.
Comments The context of use may frequently define what kind of quantity this is and therefore what kind of units can be used. The context of use may also restrict the values for the comparator.
Data Type Data Type: Quantity (PS-CA) Constraints- ele-1:All FHIR elements must have a @value or children
hasValue() or (children().count() > id.count()) - qty-3:If a code for the unit is present, the system SHALL also be present
code.empty() or system.exists()
Mappings- rim:n/a
- v2:SN (see also Range) or CQ
- rim:PQ, IVL<PQ>, MO, CO, depending on the values
- rim:.numerator
|
denominator | S Σ I | 0..1 | Data Type: Quantity (PS-CA) | Element IdShort description A measured amount using UCUM Definition A measured amount (or an amount that can potentially be measured). Note that measured amounts include amounts that are not precisely quantified, including amounts involving arbitrary units and floating currencies.
This profile imposes that the code system for units be UCUM.
Comments The context of use may frequently define what kind of quantity this is and therefore what kind of units can be used. The context of use may also restrict the values for the comparator.
Data Type Data Type: Quantity (PS-CA) Constraints- ele-1:All FHIR elements must have a @value or children
hasValue() or (children().count() > id.count()) - qty-3:If a code for the unit is present, the system SHALL also be present
code.empty() or system.exists()
Mappings- rim:n/a
- v2:SN (see also Range) or CQ
- rim:PQ, IVL<PQ>, MO, CO, depending on the values
- rim:.denominator
|
Note: This profile makes no changes to the cardinality or placement of must support flags from IPS-UV, but has carried those constraints over into a unique PS-CA data type profile to ensure that implementers have clarity and consistency in the expectations this guide puts forth when must support is claimed.