MyHealtheVet PHR FHIR API
0.3.9-current - ci-build United States of America flag

MyHealtheVet PHR FHIR API, published by VA Digital Services. This guide is not an authorized publication; it is the continuous build for version 0.3.9-current built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/department-of-veterans-affairs/mhv-fhir-phr-mapping/ and changes regularly. See the Directory of published versions

Resource Profile: VA MHV PHR Vital-Signs

Official URL: https://department-of-veterans-affairs.github.io/mhv-fhir-phr-mapping/StructureDefinition/VA.MHV.PHR.vitals Version: 0.3.9-current
Standards status: Trial-use Maturity Level: 4 Computable Name: MHVvitals

A profile on the Observation resource for MHV PHR exposing Vital-Signs using FHIR API.

  • based on US-Core Vital-Signs profile on Observation Resource
    • Blood-Pressure is based off of the Blood-Pressure profile
    • Pulse-Ox is based off of the Pulse-Oximitry profile
  • Pain does not have a specific us-core profile to derive from, so is not derived from us-core
  • subject is a reference to this patient
  • status is final unless entered-in-error
  • category code of vital-signs
  • code.text the original vital-sign type name
  • value
    • Blood Pressure - no .value[x], but has .component with values
    • Pain - .valueInteger - a score 0-10
    • Those with units use .valueQuantity else .valueString
  • effectiveDateTime vital-sign timestamp of when observed
  • performer may have contained recorder, and/or observer
    • may have an extension alternate-reference that points to a Location resource identifying the VAMC where the vital-sign was first recorded
  • identifier will hold the record identifier from Vista

A search for vital-signs would limit the Observations to vital-signs by including the category search parameter (i.e. &category=http://terminology.hl7.org/CodeSystem/observation-category|vital-signs). Should search for entries that do not have status=entered-in-error (might also work to look for only completed) (i.e., &status:not=entered-in-error)

GET {path}/Observation?patient={patient}&category=http://terminology.hl7.org/CodeSystem/observation-category vital-signs&status:not=entered-in-error

beyond MVP

The following is a future improvement beyond MVP. There are "qualifiers" in the vista data model with vital signs. They are a flat list of codes. I am working with KBS to figure out the right way to process them, but at this time that is not yet decided. The following is current thinking, but not likely final thinking.

  • .bodySite may hold the bodySite from qualifiers
  • .extension[observation-bodyPosition] may hold the bodyPosition from qualifiers
  • .method may hold the method from qualifiers
  • .device may hold the device from qualifiers
  • .component.code may hold any other qualifiers, with no .component.value[x]
  • no other elements are populated

Usage:

Formal Views of Profile Content

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

This structure is derived from USCoreVitalSignsProfile

NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation 0..* USCoreVitalSignsProfile US Core Vital Signs Profile
... Slices for identifier 1..* Identifier Business Identifier for observation
Slice: Unordered, Open by pattern:use
.... identifier:TOid 1..* Identifier Business Identifier for observation
..... use 1..1 code usual | official | temp | secondary | old (If known)
Required Pattern: usual
..... system C 0..1 uri urn:oid:2.16.840.1.113883.4.349.4.{stationNbr}
TOid-startswithoid: ID system must start with urn:oid:2.16.840.1.113883.4.349.4. The next would be the {stationNbr}
..... value 0..1 string `VitalSignTO` | `.` | {VitalSignTO.type.id}
... basedOn 0..0
... partOf 0..0
... status 1..1 code May indicate entered-in-error
... category 1..* CodeableConcept Classification of type of observation
... code
.... coding S 0..* Coding Code defined by a terminology system
.... text S 0..1 string Plain text representation of the concept
... subject 1..1 Reference(US Core Patient Profile) Who and/or what the observation is about
... focus 0..0
... encounter 0..0
... Slices for effective[x] 1..1 dateTime Often just a dateTime for Vital Signs
Slice: Unordered, Open by type:$this
.... effective[x]:effectiveDateTime 1..1 dateTime Often just a dateTime for Vital Signs
... issued 0..0
... performer S 0..* Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson) {c} Who is responsible for the observation
.... Slices for extension Content/Rules for all slices
..... site 0..1 (Complex) Alternative reference (target type is wrong)
URL: http://hl7.org/fhir/StructureDefinition/alternate-reference
...... value[x] 1..1 Reference(Location) {c} Value of extension
... value[x] 0..1 Quantity, CodeableConcept, string, boolean, integer, Range, Ratio, SampledData, time, dateTime, Period Vital Signs Value
... interpretation 0..0
... note 0..0
... bodySite 0..0
... method 0..0
... specimen 0..0
... device 0..0
... referenceRange 0..0
... hasMember 0..0
... derivedFrom 0..0

doco Documentation for this format

Constraints

IdGradePath(s)DetailsRequirements
TOid-startswithoiderrorObservation.identifier:TOid.systemID system must start with urn:oid:2.16.840.1.113883.4.349.4. The next would be the {stationNbr}
: value.startsWith('urn:oid:2.16.840.1.113883.4.349.4.')
NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation C 0..* USCoreVitalSignsProfile US Core Vital Signs Profile
obs-6: dataAbsentReason SHALL only be present if Observation.value[x] is not present
obs-7: If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present
vs-2: If there is no component or hasMember element then either a value[x] or a data absent reason must be present.
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... Slices for identifier Σ 1..* Identifier Business Identifier for observation
Slice: Unordered, Open by pattern:use
.... identifier:TOid Σ 1..* Identifier Business Identifier for observation
..... use ?!Σ 1..1 code usual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .


Required Pattern: usual
..... system ΣC 0..1 uri urn:oid:2.16.840.1.113883.4.349.4.{stationNbr}
TOid-startswithoid: ID system must start with urn:oid:2.16.840.1.113883.4.349.4. The next would be the {stationNbr}
Example General: http://www.acme.com/identifiers/patient
..... value Σ 0..1 string `VitalSignTO` | `.` | {VitalSignTO.type.id}
Example General: 123456
... status ?!SΣ 1..1 code May indicate entered-in-error
Binding: ObservationStatus (required)
... Slices for category S 1..* CodeableConcept Classification of type of observation
Slice: Unordered, Open by value:coding.code, value:coding.system
Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.


.... category:VSCat S 1..1 CodeableConcept Classification of type of observation
Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.


..... coding SΣ 1..* Coding Code defined by a terminology system
...... system SΣ 1..1 uri Identity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
...... code SΣ 1..1 code Symbol in syntax defined by the system
Fixed Value: vital-signs
... code SΣ 1..1 CodeableConcept Coded Responses from C-CDA Vital Sign Results
Binding: US Core Vital Signs ValueSet (extensible): The vital sign codes from the base FHIR and US Core Vital Signs.

.... coding SΣ 0..* Coding Code defined by a terminology system
.... text SΣ 0..1 string Plain text representation of the concept
... subject SΣ 1..1 Reference(US Core Patient Profile) Who and/or what the observation is about
... Slices for effective[x] SΣC 1..1 dateTime Often just a dateTime for Vital Signs
Slice: Unordered, Closed by type:$this
vs-1: if Observation.effective[x] is dateTime and has a value then that value shall be precise to the day
.... effective[x]:effectiveDateTime SΣC 1..1 dateTime Often just a dateTime for Vital Signs
vs-1: if Observation.effective[x] is dateTime and has a value then that value shall be precise to the day
... performer SΣ 0..* Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson) {c} Who is responsible for the observation
.... Slices for extension Content/Rules for all slices
..... site 0..1 (Complex) Alternative reference (target type is wrong)
URL: http://hl7.org/fhir/StructureDefinition/alternate-reference
...... extension 0..0
...... url 1..1 uri "http://hl7.org/fhir/StructureDefinition/alternate-reference"
...... value[x] 1..1 Reference(Location) {c} Value of extension
... value[x] SΣC 0..1 Vital Signs Value
Binding: VitalSignsUnits (extensible): Common UCUM units for recording Vital Signs.

.... valueQuantity Quantity
... dataAbsentReason SC 0..1 CodeableConcept Why the result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.

... component SΣC 0..* BackboneElement Component observations
vs-3: If there is no a value a data absent reason must be present
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... code SΣ 1..1 CodeableConcept Type of component observation (code / type)
Binding: US Core Vital Signs ValueSet (extensible): The vital sign codes from the base FHIR and US Core Vital Signs.

.... value[x] SΣC 0..1 Vital Sign Component Value
Binding: VitalSignsUnits (extensible): Common UCUM units for recording Vital Signs.

..... valueQuantity Quantity
.... dataAbsentReason SC 0..1 CodeableConcept Why the component result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.


doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
Observation.identifier:TOid.userequiredPattern: usual
http://hl7.org/fhir/ValueSet/identifier-use|4.0.1
from the FHIR Standard
Observation.statusrequiredObservationStatus
http://hl7.org/fhir/ValueSet/observation-status|4.0.1
from the FHIR Standard
Observation.categorypreferredObservationCategoryCodes
http://hl7.org/fhir/ValueSet/observation-category
from the FHIR Standard
Observation.category:VSCatpreferredObservationCategoryCodes
http://hl7.org/fhir/ValueSet/observation-category
from the FHIR Standard
Observation.codeextensibleUsCoreVitalSigns
http://hl7.org/fhir/us/core/ValueSet/us-core-vital-signs
Observation.value[x]extensibleVitalSignsUnits
http://hl7.org/fhir/ValueSet/ucum-vitals-common|4.0.1
from the FHIR Standard
Observation.dataAbsentReasonextensibleDataAbsentReason
http://hl7.org/fhir/ValueSet/data-absent-reason
from the FHIR Standard
Observation.component.codeextensibleUsCoreVitalSigns
http://hl7.org/fhir/us/core/ValueSet/us-core-vital-signs
Observation.component.value[x]extensibleVitalSignsUnits
http://hl7.org/fhir/ValueSet/ucum-vitals-common|4.0.1
from the FHIR Standard
Observation.component.dataAbsentReasonextensibleDataAbsentReason
http://hl7.org/fhir/ValueSet/data-absent-reason
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
TOid-startswithoiderrorObservation.identifier:TOid.systemID system must start with urn:oid:2.16.840.1.113883.4.349.4. The next would be the {stationNbr}
: value.startsWith('urn:oid:2.16.840.1.113883.4.349.4.')
NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation C 0..* USCoreVitalSignsProfile US Core Vital Signs Profile
obs-6: dataAbsentReason SHALL only be present if Observation.value[x] is not present
obs-7: If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present
vs-2: If there is no component or hasMember element then either a value[x] or a data absent reason must be present.
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): A human language.

Additional BindingsPurpose
AllLanguages Max Binding
... text 0..1 Narrative Text summary of the resource, for human interpretation
... contained 0..* Resource Contained, inline Resources
... extension 0..* Extension Additional content defined by implementations
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... Slices for identifier Σ 1..* Identifier Business Identifier for observation
Slice: Unordered, Open by pattern:use
.... identifier:TOid Σ 1..* Identifier Business Identifier for observation
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... use ?!Σ 1..1 code usual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .


Required Pattern: usual
..... type Σ 0..1 CodeableConcept Description of identifier
Binding: Identifier Type Codes (extensible): A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.

..... system ΣC 0..1 uri urn:oid:2.16.840.1.113883.4.349.4.{stationNbr}
TOid-startswithoid: ID system must start with urn:oid:2.16.840.1.113883.4.349.4. The next would be the {stationNbr}
Example General: http://www.acme.com/identifiers/patient
..... value Σ 0..1 string `VitalSignTO` | `.` | {VitalSignTO.type.id}
Example General: 123456
..... period Σ 0..1 Period Time period when id is/was valid for use
..... assigner Σ 0..1 Reference(Organization) Organization that issued id (may be just text)
... status ?!SΣ 1..1 code May indicate entered-in-error
Binding: ObservationStatus (required)
... Slices for category S 1..* CodeableConcept Classification of type of observation
Slice: Unordered, Open by value:coding.code, value:coding.system
Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.


.... category:VSCat S 1..1 CodeableConcept Classification of type of observation
Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.


..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... coding SΣ 1..* Coding Code defined by a terminology system
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... system SΣ 1..1 uri Identity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
...... version Σ 0..1 string Version of the system - if relevant
...... code SΣ 1..1 code Symbol in syntax defined by the system
Fixed Value: vital-signs
...... display Σ 0..1 string Representation defined by the system
...... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
..... text Σ 0..1 string Plain text representation of the concept
... code SΣ 1..1 CodeableConcept Coded Responses from C-CDA Vital Sign Results
Binding: US Core Vital Signs ValueSet (extensible): The vital sign codes from the base FHIR and US Core Vital Signs.

.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... coding SΣ 0..* Coding Code defined by a terminology system
.... text SΣ 0..1 string Plain text representation of the concept
... subject SΣ 1..1 Reference(US Core Patient Profile) Who and/or what the observation is about
... Slices for effective[x] SΣC 1..1 dateTime S Often just a dateTime for Vital Signs
Slice: Unordered, Closed by type:$this
vs-1: if Observation.effective[x] is dateTime and has a value then that value shall be precise to the day
.... effective[x]:effectiveDateTime SΣC 1..1 dateTime S Often just a dateTime for Vital Signs
vs-1: if Observation.effective[x] is dateTime and has a value then that value shall be precise to the day
... performer SΣ 0..* Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson) {c} Who is responsible for the observation
.... 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
..... site 0..1 (Complex) Alternative reference (target type is wrong)
URL: http://hl7.org/fhir/StructureDefinition/alternate-reference
...... id 0..1 id Unique id for inter-element referencing
...... extension 0..0
...... url 1..1 uri "http://hl7.org/fhir/StructureDefinition/alternate-reference"
...... value[x] 1..1 Reference(Location) {c} Value of extension
.... reference ΣC 0..1 string Literal reference, Relative, internal or absolute URL
.... type Σ 0..1 uri Type the reference refers to (e.g. "Patient")
Binding: ResourceType (extensible): Aa resource (or, for logical models, the URI of the logical model).

.... identifier Σ 0..1 Identifier Logical reference, when literal reference is not known
.... display Σ 0..1 string Text alternative for the resource
... value[x] SΣC 0..1 Vital Signs Value
Binding: VitalSignsUnits (extensible): Common UCUM units for recording Vital Signs.

.... valueQuantity Quantity S
.... valueCodeableConcept CodeableConcept
.... valueString string
.... valueBoolean boolean
.... valueInteger integer
.... valueRange Range
.... valueRatio Ratio
.... valueSampledData SampledData
.... valueTime time
.... valueDateTime dateTime
.... valuePeriod Period
... dataAbsentReason SC 0..1 CodeableConcept Why the result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.

... component SΣC 0..* BackboneElement Component observations
vs-3: If there is no a value a data absent reason must be present
.... 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
.... code SΣ 1..1 CodeableConcept Type of component observation (code / type)
Binding: US Core Vital Signs ValueSet (extensible): The vital sign codes from the base FHIR and US Core Vital Signs.

.... value[x] SΣC 0..1 Vital Sign Component Value
Binding: VitalSignsUnits (extensible): Common UCUM units for recording Vital Signs.

..... valueQuantity Quantity S
..... valueCodeableConcept CodeableConcept
..... valueString string
..... valueBoolean boolean
..... valueInteger integer
..... valueRange Range
..... valueRatio Ratio
..... valueSampledData SampledData
..... valueTime time
..... valueDateTime dateTime
..... valuePeriod Period
.... dataAbsentReason SC 0..1 CodeableConcept Why the component result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.

.... interpretation 0..* CodeableConcept High, low, normal, etc.
Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.


.... referenceRange 0..* See referenceRange (Observation) Provides guide for interpretation of component result

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
Observation.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
http://hl7.org/fhir/ValueSet/languages
from the FHIR Standard
Observation.identifier:TOid.userequiredPattern: usual
http://hl7.org/fhir/ValueSet/identifier-use|4.0.1
from the FHIR Standard
Observation.identifier:TOid.typeextensibleIdentifier Type Codes
http://hl7.org/fhir/ValueSet/identifier-type
from the FHIR Standard
Observation.statusrequiredObservationStatus
http://hl7.org/fhir/ValueSet/observation-status|4.0.1
from the FHIR Standard
Observation.categorypreferredObservationCategoryCodes
http://hl7.org/fhir/ValueSet/observation-category
from the FHIR Standard
Observation.category:VSCatpreferredObservationCategoryCodes
http://hl7.org/fhir/ValueSet/observation-category
from the FHIR Standard
Observation.codeextensibleUsCoreVitalSigns
http://hl7.org/fhir/us/core/ValueSet/us-core-vital-signs
Observation.performer.typeextensibleResourceType
http://hl7.org/fhir/ValueSet/resource-types
from the FHIR Standard
Observation.value[x]extensibleVitalSignsUnits
http://hl7.org/fhir/ValueSet/ucum-vitals-common|4.0.1
from the FHIR Standard
Observation.dataAbsentReasonextensibleDataAbsentReason
http://hl7.org/fhir/ValueSet/data-absent-reason
from the FHIR Standard
Observation.referenceRange.typepreferredObservationReferenceRangeMeaningCodes
http://hl7.org/fhir/ValueSet/referencerange-meaning
from the FHIR Standard
Observation.referenceRange.appliesToexampleObservationReferenceRangeAppliesToCodes
http://hl7.org/fhir/ValueSet/referencerange-appliesto
from the FHIR Standard
Observation.component.codeextensibleUsCoreVitalSigns
http://hl7.org/fhir/us/core/ValueSet/us-core-vital-signs
Observation.component.value[x]extensibleVitalSignsUnits
http://hl7.org/fhir/ValueSet/ucum-vitals-common|4.0.1
from the FHIR Standard
Observation.component.dataAbsentReasonextensibleDataAbsentReason
http://hl7.org/fhir/ValueSet/data-absent-reason
from the FHIR Standard
Observation.component.interpretationextensibleObservationInterpretationCodes
http://hl7.org/fhir/ValueSet/observation-interpretation
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
TOid-startswithoiderrorObservation.identifier:TOid.systemID system must start with urn:oid:2.16.840.1.113883.4.349.4. The next would be the {stationNbr}
: value.startsWith('urn:oid:2.16.840.1.113883.4.349.4.')

This structure is derived from USCoreVitalSignsProfile

Summary

Mandatory: 4 elements
Must-Support: 3 elements
Prohibited: 14 elements

Extensions

This structure refers to these extensions:

Slices

This structure defines the following Slices:

  • The element 1 is sliced based on the value of Observation.identifier
  • The element 1 is sliced based on the value of Observation.effective[x]

Maturity: 4

Differential View

This structure is derived from USCoreVitalSignsProfile

NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation 0..* USCoreVitalSignsProfile US Core Vital Signs Profile
... Slices for identifier 1..* Identifier Business Identifier for observation
Slice: Unordered, Open by pattern:use
.... identifier:TOid 1..* Identifier Business Identifier for observation
..... use 1..1 code usual | official | temp | secondary | old (If known)
Required Pattern: usual
..... system C 0..1 uri urn:oid:2.16.840.1.113883.4.349.4.{stationNbr}
TOid-startswithoid: ID system must start with urn:oid:2.16.840.1.113883.4.349.4. The next would be the {stationNbr}
..... value 0..1 string `VitalSignTO` | `.` | {VitalSignTO.type.id}
... basedOn 0..0
... partOf 0..0
... status 1..1 code May indicate entered-in-error
... category 1..* CodeableConcept Classification of type of observation
... code
.... coding S 0..* Coding Code defined by a terminology system
.... text S 0..1 string Plain text representation of the concept
... subject 1..1 Reference(US Core Patient Profile) Who and/or what the observation is about
... focus 0..0
... encounter 0..0
... Slices for effective[x] 1..1 dateTime Often just a dateTime for Vital Signs
Slice: Unordered, Open by type:$this
.... effective[x]:effectiveDateTime 1..1 dateTime Often just a dateTime for Vital Signs
... issued 0..0
... performer S 0..* Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson) {c} Who is responsible for the observation
.... Slices for extension Content/Rules for all slices
..... site 0..1 (Complex) Alternative reference (target type is wrong)
URL: http://hl7.org/fhir/StructureDefinition/alternate-reference
...... value[x] 1..1 Reference(Location) {c} Value of extension
... value[x] 0..1 Quantity, CodeableConcept, string, boolean, integer, Range, Ratio, SampledData, time, dateTime, Period Vital Signs Value
... interpretation 0..0
... note 0..0
... bodySite 0..0
... method 0..0
... specimen 0..0
... device 0..0
... referenceRange 0..0
... hasMember 0..0
... derivedFrom 0..0

doco Documentation for this format

Constraints

IdGradePath(s)DetailsRequirements
TOid-startswithoiderrorObservation.identifier:TOid.systemID system must start with urn:oid:2.16.840.1.113883.4.349.4. The next would be the {stationNbr}
: value.startsWith('urn:oid:2.16.840.1.113883.4.349.4.')

Key Elements View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation C 0..* USCoreVitalSignsProfile US Core Vital Signs Profile
obs-6: dataAbsentReason SHALL only be present if Observation.value[x] is not present
obs-7: If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present
vs-2: If there is no component or hasMember element then either a value[x] or a data absent reason must be present.
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... Slices for identifier Σ 1..* Identifier Business Identifier for observation
Slice: Unordered, Open by pattern:use
.... identifier:TOid Σ 1..* Identifier Business Identifier for observation
..... use ?!Σ 1..1 code usual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .


Required Pattern: usual
..... system ΣC 0..1 uri urn:oid:2.16.840.1.113883.4.349.4.{stationNbr}
TOid-startswithoid: ID system must start with urn:oid:2.16.840.1.113883.4.349.4. The next would be the {stationNbr}
Example General: http://www.acme.com/identifiers/patient
..... value Σ 0..1 string `VitalSignTO` | `.` | {VitalSignTO.type.id}
Example General: 123456
... status ?!SΣ 1..1 code May indicate entered-in-error
Binding: ObservationStatus (required)
... Slices for category S 1..* CodeableConcept Classification of type of observation
Slice: Unordered, Open by value:coding.code, value:coding.system
Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.


.... category:VSCat S 1..1 CodeableConcept Classification of type of observation
Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.


..... coding SΣ 1..* Coding Code defined by a terminology system
...... system SΣ 1..1 uri Identity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
...... code SΣ 1..1 code Symbol in syntax defined by the system
Fixed Value: vital-signs
... code SΣ 1..1 CodeableConcept Coded Responses from C-CDA Vital Sign Results
Binding: US Core Vital Signs ValueSet (extensible): The vital sign codes from the base FHIR and US Core Vital Signs.

.... coding SΣ 0..* Coding Code defined by a terminology system
.... text SΣ 0..1 string Plain text representation of the concept
... subject SΣ 1..1 Reference(US Core Patient Profile) Who and/or what the observation is about
... Slices for effective[x] SΣC 1..1 dateTime Often just a dateTime for Vital Signs
Slice: Unordered, Closed by type:$this
vs-1: if Observation.effective[x] is dateTime and has a value then that value shall be precise to the day
.... effective[x]:effectiveDateTime SΣC 1..1 dateTime Often just a dateTime for Vital Signs
vs-1: if Observation.effective[x] is dateTime and has a value then that value shall be precise to the day
... performer SΣ 0..* Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson) {c} Who is responsible for the observation
.... Slices for extension Content/Rules for all slices
..... site 0..1 (Complex) Alternative reference (target type is wrong)
URL: http://hl7.org/fhir/StructureDefinition/alternate-reference
...... extension 0..0
...... url 1..1 uri "http://hl7.org/fhir/StructureDefinition/alternate-reference"
...... value[x] 1..1 Reference(Location) {c} Value of extension
... value[x] SΣC 0..1 Vital Signs Value
Binding: VitalSignsUnits (extensible): Common UCUM units for recording Vital Signs.

.... valueQuantity Quantity
... dataAbsentReason SC 0..1 CodeableConcept Why the result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.

... component SΣC 0..* BackboneElement Component observations
vs-3: If there is no a value a data absent reason must be present
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... code SΣ 1..1 CodeableConcept Type of component observation (code / type)
Binding: US Core Vital Signs ValueSet (extensible): The vital sign codes from the base FHIR and US Core Vital Signs.

.... value[x] SΣC 0..1 Vital Sign Component Value
Binding: VitalSignsUnits (extensible): Common UCUM units for recording Vital Signs.

..... valueQuantity Quantity
.... dataAbsentReason SC 0..1 CodeableConcept Why the component result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.


doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
Observation.identifier:TOid.userequiredPattern: usual
http://hl7.org/fhir/ValueSet/identifier-use|4.0.1
from the FHIR Standard
Observation.statusrequiredObservationStatus
http://hl7.org/fhir/ValueSet/observation-status|4.0.1
from the FHIR Standard
Observation.categorypreferredObservationCategoryCodes
http://hl7.org/fhir/ValueSet/observation-category
from the FHIR Standard
Observation.category:VSCatpreferredObservationCategoryCodes
http://hl7.org/fhir/ValueSet/observation-category
from the FHIR Standard
Observation.codeextensibleUsCoreVitalSigns
http://hl7.org/fhir/us/core/ValueSet/us-core-vital-signs
Observation.value[x]extensibleVitalSignsUnits
http://hl7.org/fhir/ValueSet/ucum-vitals-common|4.0.1
from the FHIR Standard
Observation.dataAbsentReasonextensibleDataAbsentReason
http://hl7.org/fhir/ValueSet/data-absent-reason
from the FHIR Standard
Observation.component.codeextensibleUsCoreVitalSigns
http://hl7.org/fhir/us/core/ValueSet/us-core-vital-signs
Observation.component.value[x]extensibleVitalSignsUnits
http://hl7.org/fhir/ValueSet/ucum-vitals-common|4.0.1
from the FHIR Standard
Observation.component.dataAbsentReasonextensibleDataAbsentReason
http://hl7.org/fhir/ValueSet/data-absent-reason
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
TOid-startswithoiderrorObservation.identifier:TOid.systemID system must start with urn:oid:2.16.840.1.113883.4.349.4. The next would be the {stationNbr}
: value.startsWith('urn:oid:2.16.840.1.113883.4.349.4.')

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation C 0..* USCoreVitalSignsProfile US Core Vital Signs Profile
obs-6: dataAbsentReason SHALL only be present if Observation.value[x] is not present
obs-7: If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present
vs-2: If there is no component or hasMember element then either a value[x] or a data absent reason must be present.
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): A human language.

Additional BindingsPurpose
AllLanguages Max Binding
... text 0..1 Narrative Text summary of the resource, for human interpretation
... contained 0..* Resource Contained, inline Resources
... extension 0..* Extension Additional content defined by implementations
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... Slices for identifier Σ 1..* Identifier Business Identifier for observation
Slice: Unordered, Open by pattern:use
.... identifier:TOid Σ 1..* Identifier Business Identifier for observation
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... use ?!Σ 1..1 code usual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .


Required Pattern: usual
..... type Σ 0..1 CodeableConcept Description of identifier
Binding: Identifier Type Codes (extensible): A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.

..... system ΣC 0..1 uri urn:oid:2.16.840.1.113883.4.349.4.{stationNbr}
TOid-startswithoid: ID system must start with urn:oid:2.16.840.1.113883.4.349.4. The next would be the {stationNbr}
Example General: http://www.acme.com/identifiers/patient
..... value Σ 0..1 string `VitalSignTO` | `.` | {VitalSignTO.type.id}
Example General: 123456
..... period Σ 0..1 Period Time period when id is/was valid for use
..... assigner Σ 0..1 Reference(Organization) Organization that issued id (may be just text)
... status ?!SΣ 1..1 code May indicate entered-in-error
Binding: ObservationStatus (required)
... Slices for category S 1..* CodeableConcept Classification of type of observation
Slice: Unordered, Open by value:coding.code, value:coding.system
Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.


.... category:VSCat S 1..1 CodeableConcept Classification of type of observation
Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.


..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... coding SΣ 1..* Coding Code defined by a terminology system
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... system SΣ 1..1 uri Identity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
...... version Σ 0..1 string Version of the system - if relevant
...... code SΣ 1..1 code Symbol in syntax defined by the system
Fixed Value: vital-signs
...... display Σ 0..1 string Representation defined by the system
...... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
..... text Σ 0..1 string Plain text representation of the concept
... code SΣ 1..1 CodeableConcept Coded Responses from C-CDA Vital Sign Results
Binding: US Core Vital Signs ValueSet (extensible): The vital sign codes from the base FHIR and US Core Vital Signs.

.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... coding SΣ 0..* Coding Code defined by a terminology system
.... text SΣ 0..1 string Plain text representation of the concept
... subject SΣ 1..1 Reference(US Core Patient Profile) Who and/or what the observation is about
... Slices for effective[x] SΣC 1..1 dateTime S Often just a dateTime for Vital Signs
Slice: Unordered, Closed by type:$this
vs-1: if Observation.effective[x] is dateTime and has a value then that value shall be precise to the day
.... effective[x]:effectiveDateTime SΣC 1..1 dateTime S Often just a dateTime for Vital Signs
vs-1: if Observation.effective[x] is dateTime and has a value then that value shall be precise to the day
... performer SΣ 0..* Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson) {c} Who is responsible for the observation
.... 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
..... site 0..1 (Complex) Alternative reference (target type is wrong)
URL: http://hl7.org/fhir/StructureDefinition/alternate-reference
...... id 0..1 id Unique id for inter-element referencing
...... extension 0..0
...... url 1..1 uri "http://hl7.org/fhir/StructureDefinition/alternate-reference"
...... value[x] 1..1 Reference(Location) {c} Value of extension
.... reference ΣC 0..1 string Literal reference, Relative, internal or absolute URL
.... type Σ 0..1 uri Type the reference refers to (e.g. "Patient")
Binding: ResourceType (extensible): Aa resource (or, for logical models, the URI of the logical model).

.... identifier Σ 0..1 Identifier Logical reference, when literal reference is not known
.... display Σ 0..1 string Text alternative for the resource
... value[x] SΣC 0..1 Vital Signs Value
Binding: VitalSignsUnits (extensible): Common UCUM units for recording Vital Signs.

.... valueQuantity Quantity S
.... valueCodeableConcept CodeableConcept
.... valueString string
.... valueBoolean boolean
.... valueInteger integer
.... valueRange Range
.... valueRatio Ratio
.... valueSampledData SampledData
.... valueTime time
.... valueDateTime dateTime
.... valuePeriod Period
... dataAbsentReason SC 0..1 CodeableConcept Why the result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.

... component SΣC 0..* BackboneElement Component observations
vs-3: If there is no a value a data absent reason must be present
.... 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
.... code SΣ 1..1 CodeableConcept Type of component observation (code / type)
Binding: US Core Vital Signs ValueSet (extensible): The vital sign codes from the base FHIR and US Core Vital Signs.

.... value[x] SΣC 0..1 Vital Sign Component Value
Binding: VitalSignsUnits (extensible): Common UCUM units for recording Vital Signs.

..... valueQuantity Quantity S
..... valueCodeableConcept CodeableConcept
..... valueString string
..... valueBoolean boolean
..... valueInteger integer
..... valueRange Range
..... valueRatio Ratio
..... valueSampledData SampledData
..... valueTime time
..... valueDateTime dateTime
..... valuePeriod Period
.... dataAbsentReason SC 0..1 CodeableConcept Why the component result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.

.... interpretation 0..* CodeableConcept High, low, normal, etc.
Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.


.... referenceRange 0..* See referenceRange (Observation) Provides guide for interpretation of component result

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
Observation.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
http://hl7.org/fhir/ValueSet/languages
from the FHIR Standard
Observation.identifier:TOid.userequiredPattern: usual
http://hl7.org/fhir/ValueSet/identifier-use|4.0.1
from the FHIR Standard
Observation.identifier:TOid.typeextensibleIdentifier Type Codes
http://hl7.org/fhir/ValueSet/identifier-type
from the FHIR Standard
Observation.statusrequiredObservationStatus
http://hl7.org/fhir/ValueSet/observation-status|4.0.1
from the FHIR Standard
Observation.categorypreferredObservationCategoryCodes
http://hl7.org/fhir/ValueSet/observation-category
from the FHIR Standard
Observation.category:VSCatpreferredObservationCategoryCodes
http://hl7.org/fhir/ValueSet/observation-category
from the FHIR Standard
Observation.codeextensibleUsCoreVitalSigns
http://hl7.org/fhir/us/core/ValueSet/us-core-vital-signs
Observation.performer.typeextensibleResourceType
http://hl7.org/fhir/ValueSet/resource-types
from the FHIR Standard
Observation.value[x]extensibleVitalSignsUnits
http://hl7.org/fhir/ValueSet/ucum-vitals-common|4.0.1
from the FHIR Standard
Observation.dataAbsentReasonextensibleDataAbsentReason
http://hl7.org/fhir/ValueSet/data-absent-reason
from the FHIR Standard
Observation.referenceRange.typepreferredObservationReferenceRangeMeaningCodes
http://hl7.org/fhir/ValueSet/referencerange-meaning
from the FHIR Standard
Observation.referenceRange.appliesToexampleObservationReferenceRangeAppliesToCodes
http://hl7.org/fhir/ValueSet/referencerange-appliesto
from the FHIR Standard
Observation.component.codeextensibleUsCoreVitalSigns
http://hl7.org/fhir/us/core/ValueSet/us-core-vital-signs
Observation.component.value[x]extensibleVitalSignsUnits
http://hl7.org/fhir/ValueSet/ucum-vitals-common|4.0.1
from the FHIR Standard
Observation.component.dataAbsentReasonextensibleDataAbsentReason
http://hl7.org/fhir/ValueSet/data-absent-reason
from the FHIR Standard
Observation.component.interpretationextensibleObservationInterpretationCodes
http://hl7.org/fhir/ValueSet/observation-interpretation
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
TOid-startswithoiderrorObservation.identifier:TOid.systemID system must start with urn:oid:2.16.840.1.113883.4.349.4. The next would be the {stationNbr}
: value.startsWith('urn:oid:2.16.840.1.113883.4.349.4.')

This structure is derived from USCoreVitalSignsProfile

Summary

Mandatory: 4 elements
Must-Support: 3 elements
Prohibited: 14 elements

Extensions

This structure refers to these extensions:

Slices

This structure defines the following Slices:

  • The element 1 is sliced based on the value of Observation.identifier
  • The element 1 is sliced based on the value of Observation.effective[x]

Maturity: 4

 

Other representations of profile: CSV, Excel, Schematron

Notes:

  • Mock Data samples
  • maps to VitalSignTO schema.
  • Mapping from VitalSignTo
  • Vivian table 120.5
  • va.gov team requirements for vital-signs
    • note that this mixes labs and images with vital-signs
    • this also indicates some labs as vital-signs: Cholesterol, Blood Sugar, and INR
    • Note that Pulse-Ox is sometimes a vital-sign, such as when taken with a finger sensor by a nurse/doctor; but is also a lab result at times (10226-9 Intravascular Oxygen, etc…).
  • based on US-Core for Vital-Signs Observation Resource
  • should have meta.profile set to - JIRA
    • General Vital-Signs https://department-of-veterans-affairs.github.io/mhv-fhir-phr-mapping/StructureDefinition/VA.MHV.PHR.vitals
    • Pain https://department-of-veterans-affairs.github.io/mhv-fhir-phr-mapping/StructureDefinition/VA.MHV.PHR.vitalsPain
    • Blood-Pressure https://department-of-veterans-affairs.github.io/mhv-fhir-phr-mapping/StructureDefinition/VA.MHV.PHR.vitalsBP
    • Pulse-Ox https://department-of-veterans-affairs.github.io/mhv-fhir-phr-mapping/StructureDefinition/VA.MHV.PHR.vitals-pulse-oximetry
  • status of final unless entered-in-error
  • category code of vital-signs
  • code.text the original VitalSignTO.type.name
  • must have identifier as cross reference to original source
  • subject is the patient
  • Not preserving the VitalSignTO.low and .high as they are referenceRange
  • value
  • value units
    • There is a units within the data, and it seems mostly to be the proper code from the proper code system UCUM
    • some units are not proper formal UCUM, so I had to fix lb, F, cmH2O, and in - Utility UCUM
    • populate the valueQuantity.units with the value from VIA feed
    • populate the valueQuantity.code with corrected ucum code value
  • populate effectiveDateTime
  • populate performer
    • contained Location(VitalSignTO.location)
      • mock data is all 4 digit location.id values
    • contained Practitioner(VitalSignTO.recorder)
    • contained Practitioner(VitalSignTO.observer)
  • timestamp is confirmed to be date taken
  • Vital-Sign Type
    • Have a ConceptMap VF_VitalCodes to convert the Vista code for the vital type to LOINC code
    • MVP: Blood Pressure, Height, Weight, Pulse, Respiration, Temperature, and Pulse-OX
      • not pain, or CVP (or any other Vista defined vitals)
    • There are examples, all of which have been converted into
      • BLOOD PRESSURE (SYSTOLIC BLOOD PRESSURE, DIASTOLIC BLOOD PRESSURE) = 26 (26, 26)
      • HEIGHT = 12
      • WEIGHT = 20
      • PULSE = 20
      • PAIN = 16
      • RESPIRATION = 9
      • TEMPERATURE = 18
      • Have added examples of Pulse-OX
    • Where there is not specific profile conversion of value should be handled by the default value handling (Those with units use .valueQuantity else .valueString)
    • note that there was a wrong understanding that Cholesterol, Blood-Sugar, and INR were vital-signs. These are labs, not vital-signs.
  • mock example didn't include these elements, so I don't map. and they have never been preserved in eVault MHV
    • type.shortName, type.dataId, type.dataName, or type.dataType
    • value2
    • facility
  • comments has been saved in the past, but there is no way to enter a comment on a vital and no place in vista/fileman for a comment.
  • Pulse-OX - supplemental oxygen concentration and rate are NOT sent to us in VIA. Thus we don't have these to convert.

Qualifiers are beyond current MHV eVault, so are not MVP. Given that KBS is still working on defining what should be done, we should not implement any use of qualifiers.

Mapping Concerns

  • should we take the location (a location IEN) and figure out which site (Organization) manages that location (institution) so that we can have an Organization rather than just Location. (CDW does this)
    • or should we do a lookup in MHV similar to what we did with allergies.
  • testing of all the vista supported vitals beyond the MVP 8 should be done to assure that we can handle them without problem.
  • there is KBS work on how to process the qualifiers. This work is not done, so no code change recommendation at this time.

Business Rules

  • Ignore those without a facility
  • Ignore those without an id
  • no hold