Continuity of Care Record Output Mappings

The transforms that convert HealthVault types into CCR data are not simple mappings of one data value onto another. The mappings are context sensitive and depend on both the presence and value of individual properties of the HealthVault type.

The logic behind each transform is described below. In order to improve the readability of those descriptions, observe the following conventions:

  1. Value mappings. Each "Map values" statement is followed by one or more table rows, each of which describes a direct mapping of a specific element in a HealthVault type onto an element in a CCR. Mappings described in adjacent rows should be applied together, and in the sequence indicated. Each row contains the following elements:
    1. HealthVault. The element in the HealthVault type whose value is used to populate the CCR, or a function (see below) whose return value will be used. Note that the GetConcept functions use the values defined in the "Export Text" column HealthVault CCR Vocabularies to assign an element name to a concept.
    2. CCR. The CCR element whose value will be set.
    3. Conversion (optional.) This may specify a simple type conversion (such as Boolean), an externally defined conversion (such as the ISO-8601 date standard), or a named conversion defined elsewhere in this document.
  2. Scope. Each line that is not a table row is indented to indicate the scope of loops and conditional elements within the transform logic.
  3. Procedures. Some sections of the transform logic are described as procedure or function calls. Each call referenced in the following mappings is described as pseudocode in HealthVault CCR Output Functions.
  4. Required elements. Some transforms require that specific elements in the input data be present and not empty. Those elements are indicated with bold italic text in the corresponding cells in the mapping tables. If any required values cannot be processed for any reason, the transform will not create the output type.

Date Types

date : ExactDateTime

HealthVault CCR Conversion
date ExactDateTime

Map values:

y . ConvertTo_ISO8601
m . ConvertTo_ISO8601
d . ConvertTo_ISO8601

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

time : ExactDateTime

HealthVault CCR Conversion
time ExactDateTime

Map values:

h . ConvertTo_ISO8601
m . ConvertTo_ISO8601
s . ConvertTo_ISO8601

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

approx-date : ExactDateTime

HealthVault CCR Conversion
approx-date ExactDateTime

Map values:

y . ConvertTo_ISO8601
m . ConvertTo_ISO8601
d . ConvertTo_ISO8601

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

date-time : ExactDateTime

HealthVault CCR Conversion
date-time ExactDateTime

Map values:

./date . date => ExactDateTime
./time . time => ExactDateTime
./tz . ConvertTo_ISO8601

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

StructuredApproxDate : ExactDateTime

HealthVault CCR Conversion
StructuredApproxDate ExactDateTime

Map values:

./date . approx-date => ExactDateTime
./time . time => ExactDateTime
./tz . ConvertTo_ISO8601

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

approx-date-time : ExactDateTime

HealthVault CCR Conversion
approx-date-time ExactDateTime

If Exists(./structured) Map values:

./structured ./ExactDateTime StructuredApproxDate => ExactDateTime

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

approx-date-time : DateTimeType

HealthVault CCR Conversion
approx-date-time DateTimeType

If Exists(./structured) Map values:

./structured ./ExactDateTime StructuredApproxDate => ExactDateTime

Else If Exists(./descriptive) Map values:

./descriptive ./ApproximateDateTime/Text

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

date : DateTimeType

HealthVault CCR Conversion
date DateTimeType

Map values:

. ./ExactDateTime date => ExactDateTime

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

date-time : DateTimeType

HealthVault CCR Conversion
date-time DateTimeType

Map values:

. ./ExactDateTime date-time => ExactDateTime

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

Coded Values

coded-value : CodeType

HealthVault CCR Conversion
coded-value CodeType

Map values:

./value ./Value
./type ./CodingSystem
./version ./Version

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

codable-value : CodedDescriptionType

HealthVault CCR Conversion
codable-value CodedDescriptionType

Map values:

./text ./Text

ForEach(./code) Map values:

. ./Code

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

codable-value : MeasureType

HealthVault CCR Conversion
codable-value MeasureType

Map values:

./text ./Units/Unit

ForEach(./units/code) Map values:

. ./Units/Code coded-value => CodeType

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

Measurements

structured-measurement : MeasureType or MeasureGroup

HealthVault CCR Conversion
structured-measurement MeasureType or MeasureGroup

Map values:

./value ./Value
./units/text ./Units/Unit

ForEach(./units/code) Map values:

. ./Units/Code

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

general-measurement : MeasureType or MeasureGroup

HealthVault CCR Conversion
general-measurement MeasureType or MeasureGroup

If Exists(./structured) Map values:

./structured . structured-measurement => MeasureType

Else Map values:

./display ./Value

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

display-value : MeasureType or MeasureGroup

HealthVault CCR Conversion
display-value MeasureType or MeasureGroup

Map values:

. ./Value
./@units ./Units/Unit

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

Persons

name : PersonNameType

HealthVault CCR Conversion
name PersonNameType

Map values:

./first ./Given
./middle ./Middle
./last ./Family
./suffix/text ./Suffix
./title/text ./Title

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

email : CommunicationType

HealthVault CCR Conversion
email CommunicationType

Map values:

./address ./Value
./description ./Type/Text

If(./is-primary) Map values:

GetConcept("priority-primary") ./Priority

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

phone : CommunicationType

HealthVault CCR Conversion
phone CommunicationType

Map values:

./number ./Value
./description ./Type/Text

If(./is-primary) Map values:

GetConcept("priority-primary") ./Priority

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

address : Actor/Address

HealthVault CCR Conversion
address Actor/Address

Map values:

./description ./Type/Text

If(./is-primary) Map values:

GetConcept("priority-primary") ./Priority

Map values:

./street[1] ./Line1
./street[2] ./Line2
./city ./City
./state ./State
./country ./Country
./postcode ./PostalCode

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

contact : Actor

HealthVault CCR Conversion
contact Actor

ForEach(./address) Map values:

. ./Address address => Actor/Address

ForEach(./phone) Map values:

. ./Telephone phone => CommunicationType

ForEach(./email) Map values:

. ./Email email => CommunicationType

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

person : Actor

HealthVault CCR Conversion
person Actor

Map values:

./name ./Person/Name/CurrentName name => PersonNameType
./name/full ./Person/Name/DisplayName
./type ./Relation[1] codable-value => CodedDescriptionType
./professional-training ./Specialty[1]/Text
./contact . contact => Actor

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

personal : Actor

HealthVault CCR Conversion
personal Actor

Map values:

./name ./Person/Name/CurrentName name => PersonNameType
./name/full ./Person/Name/DisplayName
./birthdate ./Person/DateOfBirth date-time => DateTimeType

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

Organization : Actor

HealthVault CCR Conversion
Organization Actor

Map values:

./name ./Organization/Name
./type ./Specialty[1] codable-value => CodedDescriptionType
./contact . contact => Actor
./website ./URL[1]/Value

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

FamilyHistoryRelative : Actor

HealthVault CCR Conversion
FamilyHistoryRelative Actor

Map values:

./relative-name . person => Actor
./relationship ./Relation codable-value => CodedDescriptionType
./date-of-birth ./Person/DateOfBirth approx-date => DateTimeType

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

Common

thing : Source

HealthVault CCR Conversion
thing Source

If Exists(../common/source) and If(../common/source != "Unknown") Map values:

CreateCommentFromString(../common/source) ./CommentID

Else Map values:

"Unknown" ./Description/Text

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

HealthVault Record : ContinuityOfCareRecord

HealthVault Record : ContinuityOfCareRecord

HealthVault CCR Conversion
HealthVault Record ContinuityOfCareRecord

Map values:

CreateUniqueID() ./CCRDocumentObjectID
"English" ./Language/Text
"V1.0" ./Version
now() ./DateTime
CreateHealthVaultActor(.) ./From/ActorLink/ActorID
GetConcept("healthcare-system") ./From/ActorRole

$Personal = /thing[type-id = "92ba621e-66b3-4a01-bd73-74844aed4f5b"][1]/data-xml/personal Map values:

CreatePatientActor($Personal) ./Patient

$Payers = /thing[type-id = "9366440c-ec81-4b89-b231-308a4c4d70ed"]/data-xml/payer ForEach ($Payers) Map values:

. ./Body/Payers/Payer payer => Payer

$Directives = /thing[type-id = "822a5e5a-14f1-4d06-b92f-8f3f1b05218f"]/data-xml/directive ForEach ($Directives) Map values:

. ./Body/AdvanceDirectives/AdvanceDirective directive => AdvanceDirective

$Conditions = /thing[type-id = "7ea7a1f9-880b-4bd4-b593-f5660f20eda8"]/data-xml/condition ForEach ($Conditions) Map values:

. ./Body/Problems/Problem condition => Problem

$FamilyHistories = /thing[type-id = "22826e13-41e1-4ba3-8447-37dadd208fd8"]/data-xml/family-history ForEach ($FamilyHistories) Map values:

. ./Body/FamilyHistory/FamilyProblemHistory family-history => FamilyProblemHistory (v2)

$FamilyHistories = /thing[type-id = "4a04fcc8-19c1-4d59-a8c7-2031a03f21de"]/data-xml/family-history ForEach ($FamilyHistories) Map values:

. ./Body/FamilyHistory/FamilyProblemHistory family-history => FamilyProblemHistory (v3)

$Allergies = /thing[type-id = "52bf9104-2c5e-4f1f-a66d-552ebcc53df7"]/data-xml/allergy ForEach ($Allergies) Map values:

. ./Body/Alerts/Alert allergy => Alert

$Medications = /thing[type-id = "30cafccc-047d-4288-94ef-643571f7919d"]/data-xml/medication ForEach ($Medications) Map values:

. ./Body/Medications/Medication medication => Medication

$Immunizations = /thing[type-id = "cd3587b5-b6e1-4565-ab3b-1c3ad45eb04f"]/data-xml/immunization ForEach($Immunzations) Map values:

. ./Body/Immunizations/Immunization immunization => Immunization

$Heights = /thing[type-id = "40750a6a-89b2-455c-bd8d-b420a4cb500b"]/data-xml/height ForEach ($Heights) Map values:

. ./Body/VitalSigns/Result height => Result

$Weights = /thing[type-id = "3d34d87e-7fc1-4153-800f-f56592cb0d17"]/data-xml/weight ForEach ($Weights) Map values:

. ./Body/VitalSigns/Result weight => Result

$BP = /thing[type-id = "ca3c57f4-f4c1-4e15-be67-0a3caf5414ed"]/data-xml/blood-pressure ForEach ($BP) Map values:

. ./Body/VitalSigns/Result blood-pressure => Result

$Glucose = /thing[type-id = "879e7c04-4e8a-4707-9ad3-b054df467ce4"]/data-xml/blood-glucose ForEach ($Glucose) Map values:

. ./Body/VitalSigns/Result blood-glucose => Result

$Cholesterol = /thing[type-id = "796c186f-b874-471c-8468-3eeff73bf66e"]/data-xml/cholesterol-profile ForEach ($Cholesterol) Map values:

. ./Body/VitalSigns/Result cholesterol => Result

$BloodOx = /thing[type-id = "3a54f95f-03d8-4f62-815f-f691fc94a500"]/data-xml/blood-oxygen-saturation ForEach ($BloodOx) Map values:

. ./Body/VitalSigns/Result blood-oxygen-saturation => Result

$Exercise = /thing[type-id = "85a21ddb-db20-4c65-8d30-33c899ccf612"]/data-xml/exercise ForEach ($Exercise) Map values:

. ./Body/VitalSigns/Result exercise => Result

$PeakFlow = /thing[type-id = "5d8419af-90f0-4875-a370-0f881c18f6b3"]/data-xml/peak-flow ForEach ($PeakFlow) Map values:

. ./Body/VitalSigns/Result peak-flow => Result

$Vitals = /thing[type-id = "73822612-c15f-4b49-9e65-6af369e55c65"]/data-xml/vital-signs ForEach ($Vitals) Map values:

. ./Body/VitalSigns/Result vital-signs => Result

$Results = /thing[type-id = "e4911bd3-61bf-4e10-ae78-9c574b888b8f"]/data-xml/radiology-lab-results ForEach ($Results) Map values:

. ./Body/Results/Result radiology-lab-results => Result

$Results = /thing[type-id = "5800eab5-a8c2-482a-a4d6-f1db25ae08c3"]/data-xml/lab-test-results ForEach($Results/lab-group) Map values:

. ./Body/Results/Result lab-test-results-group-type => Result

$Results = /thing[type-id = "02ef57a2-a620-425a-8e92-a301542cca54"]/data-xml/discharge-summary ForEach($Results) Map values:

. ./Body/Results/Result discharge-summary => Result

$Procedures = /thing[type-id = "df4db479-a1ba-42a2-8714-2b083b88150f"]/data-xml/procedure ForEach ($Procedures) Map values:

. ./Body/Procedures/Procedure procedure => Procedure

$Encounters = /thing[type-id = "464083cc-13de-4f3e-a189-da8e47d5651b"]/data-xml/encounter ForEach ($Encounters) Map values:

. ./Body/Encounters/Encounter encounter => Encounter

$Appointments = /thing[type-id = "4b18aeb6-5f01-444c-8c70-dbf13a2f510b"]/data-xml/appointment ForEach ($Appointments) Map values:

. ./Body/Encounters/Encounter appointment => Encounter

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

thing/data-xml : ContinuityOfCareRecord/Body

payer : Payer

HealthVault CCR Conversion
payer Payer

Map values:

CreateUniqueID() ./CCRDataObjectID
./expiration-date ./DateTime date-time => DateTimeType
GetConcept("payer-benefit-stop-date") ./DateTime/Type/Text
./plan-code ./IDs[1]/ID
GetConcept("payer-plan-code") ./IDs[1]/Type/Text
./group-num ./IDs[2]/ID
GetConcept("payer-group-number") ./IDs[2]/Type/Text
./subscriber-id ./IDs[3]/ID
GetConcept("payer-subscriber-id") ./IDs[3]/Type/Text
./carrier-id ./IDs[4]/ID
GetConcept("payer-carrier-id") ./IDs[4]/Type/Text
./coverage-type ./Type codable-value => CodedDescriptionType
. ./Source thing => Source
CreateCommentFromString(../common/note) ./CommentID

$Actor = CreateActor(./planName) Map values:

$Actor/ActorObjectID ./Payment-Provider/ActorID
./contact $Actor contact => Actor

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

directive : AdvanceDirective

HealthVault CCR Conversion
directive AdvanceDirective

Map values:

CreateUniqueID() ./CCRDataObjectID
./start-date ./DateTime[1] approx-date-time => ExactDateTime
GetConcept("directive-start-date") ./DateTime[1]/Type/Text
./stop-date ./DateTime[2] approx-date-time => ExactDateTime
GetConcept("directive-stop-date") ./DateTime[2]/Type/Text
./attending-physician-endorsement ./DateTime[3] approx-date-time => ExactDateTime
GetConcept("directive-verified-treating-physician") ./DateTime[1]/Type/Text
"Other" ./Type
./description ./Description/Text
CreateActorFromPerson(./attending-physician) ./Source/Actor/ActorID
GetConcept("directive-treatment-physician") ./Source/Actor/ActorRole
. ./Source thing => Source
CreateCommentFromString(../common/note) ./CommentID[1]
CreateCommentFromString(./additional-instructions) ./CommentID[2]

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

condition : Problem

HealthVault CCR Conversion
condition Problem

Map values:

CreateUniqueID() ./CCRDataObjectID
./onset-date ./DateTime[1] date-time => DateTimeType
GetConcept("problem-onset-date") ./DateTime[1]/Type/Text
./stop-date ./DateTime[2] date-time => DateTimeType
GetConcept("problem-end-date") ./DateTime[2]/Type/Text
"Condition" ./Type/Text
./name ./Description codable-value => CodedDescriptionType
./status ./Status codable-value => CodedDescriptionType
. ./Source thing => Source
CreateCommentFromString(../common/note) ./CommentID[1]
CreateCommentFromString(./stop-reason) ./CommentID[2]

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

family-history (v2)

HealthVault CCR Conversion
family-history (v2) FamilyProblemHistory

Map values:

CreateUniqueID() ./CCRDataObjectID
./condition/onset-date ./DateTime approx-date => DateTimeType
GetConcept("problem-onset-date") ./DateTime/Type/Text
. ./Source thing => Source
CreateCommentFromString(../common/note) ./CommentID
CreateActorFromFamilyHistoryRelative(./relative) ./FamilyMember/ActorID
./relative/relationship ./FamilyMember/ActorRole codable-value => CodedDescriptionType
b ./FamilyMember/Source thing => Source
./condition/name ./Problem/Description codable-value => CodedDescriptionType
. ./Problem/Source thing => Source

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

family-history (v3)

HealthVault CCR Conversion
family-history (v3) FamilyProblemHistory

Map values:

CreateUniqueID() ./CCRDataObjectID
. ./Source thing => Source
CreateCommentFromString(../common/note) ./CommentID
CreateActorFromFamilyHistoryRelative(./relative) ./FamilyMember/ActorID
./relative/relationship ./FamilyMember/ActorRole codable-value => CodedDescriptionType
. ./FamilyMember/Source thing => Source

ForEach(./Condition) Map values:

./name ./Problem/Description codable-value => CodedDescriptionType
./onset-date ./Problem/Episodes/Episode[1]/DateTime approx-date => DateTimeType
GetConceptType("problem-onset-date") ./Problem/Episodes/Episode[1]/DateTime/Type
CreateUniqueID() ./Problem/Episodes/Episode[1]/CCRDataObjectID
.. ./Problem/Episodes/Episode[1]/Source thing => Source
./occurrence/text ./Problem/Episodes/Frequency/Value
./occurrence/code[1] ./Problem/Episodes/Frequency/Code coded-value => CodeType
.. ./Problem/Episodes/Source thing => Source
.. ./Problem/Source thing => Source

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

allergy : Alerts

HealthVault CCR Conversion
allergy Alerts

Map values:

CreateUniqueID() ./CCRDataObjectID
./first-observed ./DateTime approx-date-time => DateTimeType
GetConcept("allergy-start-date") ./DateTime/Type/Text
GetConcept("allergy") ./Type
./name ./Description codable-value => CodedDescriptionType
. ./Source thing => Source
CreateCommentFromString(../common/note) ./CommentID
./reaction ./Reaction/Description codable-value => CodedDescriptionType

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

medication : Medication

HealthVault CCR Conversion
medication Medication

Map values:

CreateUniqueID() ./CCRDataObjectID
./date-started ./DateTime[1] approx-date-time => DateTimeType
GetConcept("medication-start-date") ./DateTime[1]/Type/Text
./date-discontinued ./DateTime[2] approx-date-time => DateTimeType
GetConcept("medication-stop-date") ./DateTime[2]/Type/Text
./prescription/date-prescribed ./DateTime[3] approx-date-time => DateTimeType
GetConcept("medication-prescription-date") ./DateTime[3]/Type/Text
. ./Source[1] thing => Source
CreateActorFromPerson(./prescribed-by) ./Source[2]/ActorID
GetConcept("medication-prescribing-provider") ./Source[2]/ActorRole
CreateCommentFromString(../common/note) ./CommentID

If Exists(./generic-name) Map values:

./generic-name ./Product/ProductName codable-value => CodedDescriptionType
./name ./Product/BrandName codable-value => CodedDescriptionType

Else Map values:

./name ./Product/ProductName codable-value => CodedDescriptionType

Map values:

./strength ./Product/Strength general-measurement => MeasureType
./prescription/amount-prescribed ./Quantity general-measurement => MeasureType
./dose ./Directions/Direction/Dose general-measurement => MeasureType
./route ./Directions/Direction/Route codable-value => CodedDescriptionType
./frequency ./Directions/Direction/Frequency general-measurement => MeasureType
./indication ./Directions/Direction/Indication/Description codable-value => CodedDescriptionType
"Unknown" ./Directions/Direction/Indication/Source/Description/Text
./prescription/instructions ./PatientInstructions/Instruction codable-value => CodedDescriptionType
./prescription/refills ./Refills/Refill/Number integer

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

immunization : Immunization

HealthVault CCR Conversion
immunization Immunization

Map values:

CreateUniqueID() ./CCRDataObjectID
./administration-date ./DateTime approx-date-time => DateTimeType
GetConcept("immunization-date") ./DateTime/Type/Text

If Exists(./lot) Map values:

./lot ./IDs[1]/ID
GetConcept("immunization-lot-number") ./IDs[1]/Type/Text
"Unknown" ./IDs[1]/Source/Description/Text

Map values:

. ./Source thing => Source
CreateCommentFromString(../common/note) ./CommentID
./name ./Product/ProductName codable-value => CodedDescriptionType
CreateOrganizationActorFromString(./manufacturer/text) ./Product/Manufacturer/ActorID
./route ./Directions/Direction/Route codable-value => CodedDescriptionType
./anatomic-surface ./Directions/Direction/Site codable-value => CodedDescriptionType
./sequence ./SeriesNumber
./adverse-event ./Reaction/Description/Text

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

height : Result

HealthVault CCR Conversion
height Result

Map values:

CreateUniqueID() ./CCRDataObjectID
./when ./DateTime date-time => DateTimeType
GetConcept("result-collection-date") ./DateTime/Type/Text
"Vital Signs" ./Description/Text
. ./Source thing => Source
CreateCommentFromString(../common/note) ./CommentID
CreateTestHeader("Observation",GetConcept("height")) ./Test

If Exists(./value/display) Map values:

./value/display ./Test/TestResult display-value => MeasureGroup

Else Map values:

ConvertToInches(./value/m) ./Test/TestResult/Value
GetConcept("inches") ./Test/TestResult/Units/Unit

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

weight : Result

HealthVault CCR Conversion
weight Result

Map values:

CreateUniqueID() ./CCRDataObjectID
./when ./DateTime date-time => DateTimeType
GetConcept("result-collection-date") ./DateTime/Type/Text
"Vital Signs" ./Description/Text
. ./Source thing => Source
CreateCommentFromString(../common/note) ./CommentID
CreateTestHeader("Observation",GetConcept("weight")) ./Test

If Exists (./value/display) Map values:

./value/display ./Test/TestResult display-value => MeasureGroup

Else Map values:

ConvertToPounds(./value/kg) ./Test/TestResult/Value
GetConcept("pounds") ./Test/TestResult/Units/Unit

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

blood-glucose : Result

HealthVault CCR Conversion
blood-glucose Result

Map values:

CreateUniqueID() ./CCRDataObjectID
./when ./DateTime date-time => DateTimeType
GetConcept("result-collection-date") ./DateTime/Type/Text
"Vital Signs" ./Description/Text
. ./Source thing => Source
CreateCommentFromString(../common/note) ./CommentID

If Exists(./glucose-measurement-type) $Description = ./glucose-measurement-type Else $Description = GetConcept("blood-glucose") Map values:

CreateTestHeader("Observation", $Description) ./Test

If Exists(./value/display) Map values:

./value/display ./Test/TestResult display-value => MeasureGroup

Else Map values:

ConvertToMgPerDl(./value/mmolPerL) ./Test/TestResult/Value
GetConcept("concentration") ./Test/TestResult/Units/Unit

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

blood-oxygen-saturation : Result

HealthVault CCR Conversion
blood-oxygen-saturation Result

Map values:

CreateUniqueID() ./CCRDataObjectID
./when ./DateTime date-time => DateTimeType
GetConceptType("result-collection-date") ./DateTime/Type
"Vital Signs" ./Description/Text
. ./Source thing => Source
CreateCommentFromString(../common/note) ./CommentID
CreateTestHeader("Observation", GetConcept("blood-oxygen-saturation")) ./Test
./value ./Test/TestResult/Value
./measurement-method ./Test/Method codable-value => CodedDescriptionType
./measurement-flags ./Test/Flag[1] codable-value => CodedDescriptionType

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

radiology-lab-results : Result

HealthVault CCR Conversion
radiology-lab-results Result

Map values:

CreateUniqueID() ./CCRDataObjectID
./when ./DateTime date-time => DateTimeType
GetConceptType("result-collection-date") ./DateTime/Type
GetConceptType("radiology-lab-results") ./Description/Text
. ./Source thing => Source
CreateCommentFromString(../common/note) ./CommentID
CreateCommentFromString(./anatomic-site, "Anatomic site") ./CommentID
CreateTestHeader("Result", ./title) ./Test

If Exists(./result-text) Map values:

./result-text ./Test/TestResult/Description/Text

Else Map values:

"Unknown" ./Test/TestResult/Description/Text

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

blood-pressure : Result

HealthVault CCR Conversion
blood-pressure Result

Map values:

CreateUniqueID() ./CCRDataObjectID
./when ./DateTime
GetConcept("result-collection-date") ./DateTime/Type/Text
"Vital Signs" ./Description/Text
. ./Source thing => Source
CreateCommentFromString(../common/note) ./CommentID
CreateTestHeader("Observation",GetConcept("blood-pressure-systolic")) ./Test[1]
./systolic ./Test[1]/TestResult/Value
CreateTestHeader("Observation",GetConcept("blood-pressure-diastolic")) ./Test[2]
./diastolic ./Test[2]/TestResult/Value
CreateTestHeader("Observation",GetConcept("blood-pressure-pulse")) ./Test[3]
./pulse ./Test[3]/TestResult/Value

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

cholesterol-profile : Result

HealthVault CCR Conversion
cholesterol-profile Result

Map values:

CreateUniqueID() ./CCRDataObjectID
./when ./DateTime
GetConcept("result-collection-date") ./DateTime/Type/Text
"Vital Signs" ./Description/Text
. ./Source thing => Source
CreateCommentFromString(../common/note) ./CommentID
CreateTestHeader("Observation",GetConcept("cholesterol-ldl")) ./Test[1]
./ldl ./Test[1]/TestResult/Value
CreateTestHeader("Observation",GetConcept("cholesterol-hdl")) ./Test[2]
./hdl ./Test[2]/TestResult/Value
CreateTestHeader("Observation",GetConcept("cholesterol-total")) ./Test[3]
./total-cholesterol ./Test[3]/TestResult/Value
CreateTestHeader("Observation",GetConcept("cholesterol-triglycerides")) ./Test[4]
./triglyceride ./Test[4]/TestResult/Value

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

peak-flow : Result

HealthVault CCR Conversion
peak-flow Result

Map values:

CreateUniqueID() ./CCRDataObjectID
./when ./DateTime date-time => DateTimeType
GetConceptType("result-collection-date") ./DateTime/Type
"Vital Signs" ./Description/Text
. ./Source thing => Source
CreateCommentFromString(../common/note) ./CommentID
CreateTestHeader("Observation",GetConcept("pef")) ./Test[1]

If Exists(./pef/display) Map values:

./pef/display ./Test[1]/TestResult display-value => MeasureGroup

Else Map values:

./pef/liters-per-second ./Test[1]/TestResult/Value
GetConceptType("liters-per-second") ./Test[1]/TestResult/Units/Unit

Map values:

CreateTestHeader("Observation",GetConcept("fev1")) ./Test[2]

If Exists(./fev1/display) Map values:

./fev1/display ./Test[2]/TestResult display-value => MeasureGroup

Else Map values:

./fev1/liters ./Test[2]/TestResult/Value
GetConceptType("liters") ./Test[2]/TestResult/Units/Unit

Map values:

CreateTestHeader("Observation",GetConcept("fev6")) ./Test[3]

If Exists (./fev6/display) Map values:

./fev6/display ./Test[3]/TestResult display-value => MeasureGroup

Else Map values:

./fev6/liters ./Test[3]/TestResult/Value
GetConceptType("liters") ./Test[3]/TestResult/Units/Unit

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

exercise : Result

HealthVault CCR Conversion
exercise Result

Map values:

CreateUniqueID() ./CCRDataObjectID
./when ./DateTime date-time => DateTimeType
GetConceptType("result-collection-date") ./DateTime/Type/Text
./activity ./Description codable-value => CodedDescriptionType
. ./Source thing => Source
CreateCommentFromString(../common/note) ./CommentID
CreateCommentFromString(./title) ./CommentID
CreateTestHeader("Observation",GetConceptType("exercise-distance")) ./Test[1]

If Exists(./distance/display) Map values:

./distance/display ./Test[1]/TestResult display-value => MeasureGroup

Else Map values:

./distance/m ./Test[1]/TestResult/Value
GetConceptType("meters") ./Test[1]/TestResult/Units/Unit

Map values:

CreateTestHeader("Observation",GetConceptType("exercise-duration")) ./Test[2]

Map values:

./duration ./Test[2]/TestResult/Value
GetConceptType("minutes") ./Test[2]/TestResult/Units/Unit

ForEach(./detail) Map values:

CreateTestHeader("Observation",GetConceptType("exercise-details")) ./Test[*]
./name ./Test[*]/Description/Code coded-value => CodeType
./value ./Test[*]/TestResult structured-measurement => MeasureGroup

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

discharge-summary : Result

HealthVault CCR Conversion
discharge-summary Result

Map values:

CreateUniqueID() ./CCRDataObjectID
./when ./DateTime[1] date-time => DateTimeType
GetConceptType("discharge-summary-create-date") ./DateTime[1]/Type/Text
./primary-provider-endorsement ./DateTime[2] date-time => DateTimeType
GetConceptType("discharge-summary-primary-endorsement") ./DateTime[2]/Type/Text
./secondary-provider-endorsement ./DateTime[3] date-time => DateTimeType
GetConceptType("discharge-summary-secondary-endorsement") ./DateTime[3]/Type/Text
./discharge-date-time ./DateTime[4] approx-date-time => DateTimeType
GetConceptType("discharge-summary-discharge-date") ./DateTime[4]/Type/Text
"02ef57a2-a620-425a-8e92-a301542cca54" ./IDs[1]/ID
"hv-type-id" ./IDs[1]/Type/Text
CreateHealthVaultActor(.) ./IDs[1]/Source/Actor/ActorID

If Exists(./type) Map values:

./type ./Description/Text codable-value => CodedDescriptionType

Else Map values:

GetConceptType("result-discharge-summary") ./Description/Text

Map values:

. ./Source[1] thing => Source
CreateActorFromPerson(./primary-provider) ./Source[2]/ActorID
GetConceptType("discharge-summary-primary-provider") ./Source[2]/ActorRole
CreateActorFromPerson(./secondary-provider) ./Source[3]/ActorID
GetConceptType("discharge-summary-secondary-provider") ./Source[3]/ActorRole
CreateActorFromPerson(./principal-procedure-physician) ./Source[4]/ActorID
GetConceptType("discharge-summary-principal-procedure-physician") ./Source[4]/ActorRole
CreateCommentFromString(./text,./when,"discharge-summary-comment") ./CommentID[1]
CreateCommentFromString(../common/note) ./CommentID[2]

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

vital-signs : VitalSigns

HealthVault CCR Conversion
vital-signs VitalSigns

Map values:

CreateUniqueID() ./CCRDataObjectID
./when ./DateTime date-time => DateTimeType
GetConcept("result-collection-date") ./DateTime/Type/Text
"Vital Signs" ./Description/Text
. ./Source thing => Source
CreateCommentFromString(../common/note) ./CommentID
ForEach(./vital-signs-results) ./Test

Map values:

CreateTestHeader("Observation", ./title) ./Test
./text-value ./Test/TestResult/Description/Text
./value ./Test/TestResult/Value
./unit ./Test/TestResult/Units codable-value => CodedDescriptionType
./flag ./Test/Flag[1] codable-value => CodedDescriptionType

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

lab-test-results-group-type : Result

HealthVault CCR Conversion
lab-test-results-group-type Result

Map values:

CreateUniqueID() ./CCRDataObjectID
../when ./DateTime approx-date-time => DateTimeType
GetConcept("result-collection-date") ./DateTime/Type/Text
./group-name ./Description codable-value => CodedDescriptionType
./status ./Status codable-value => CodedDescriptionType

IfExists(./ordered-by) Map values:

CreateActorFromOrganization(./ordered-by) ./Source[1]/Actor/ActorID
GetConcept("result-ordering-provider") ./Source[1]/Actor/ActorRole/Text

Map values:

. ./Source[2] thing => Source
CreateCommentFromString(.../common/note) ./CommentID
./results/[1]/substance ./Substance codable-value => CodedDescriptionType

ForEach(./results) Map values:

. ./Test lab-test-result-type => Test

ForEach(./sub-groups) Map values:

. .. lab-test-results-group-type => Result

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

lab-test-result-type : TestType

HealthVault CCR Conversion
lab-test-result-type TestType

Map values:

CreateUniqueID() ./CCRDataObjectID
./when ./DateTime approx-date-time => DateTimeType
"Result" ./Type/Text

If Exists(./clincal-code) Map values:

./clinical-code ./Description codable-value => CodedDescriptionType

Else Map values:

./name ./Description/Text

Map values:

./status ./Status codable-value => CodedDescriptionType
"Unknown" ./Source/Description/Text
./collection-method ./Method codable-value => CodedDescriptionType
./value . lab-test-result-value-type => TestType

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

lab-test-result-value-type : TestType

HealthVault CCR Conversion
lab-test-result-value-type TestType

Map values:

./measurement ./TestResult general-measurement => MeasureType

ForEach(./flag) Map values:

. ./Flag codable-value => CodedDescriptionType

ForEach(./ranges) Map values:

./text ./NormalResult/Normal/Value
./type ./NormalResult/Normal/Units/Unit codable-value => MeasureType
"Unknown" ./NormalResult/Normal/Source

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

procedure : Procedure

HealthVault CCR Conversion
procedure Procedure

Map values:

CreateUniqueID() ./CCRDataObjectID
./when ./DateTime approx-date-time => CodedDescriptionType
GetConcept("procedure-date") ./DateTime/Type/Text
./name ./Description codable-value => CodedDescriptionType
. ./Source thing => Source
CreateCommentFromString(../common/note) ./CommentID
CreateActorFromPerson(./primary-provider) ./Practitioners/Practitioner[1]/ActorID
GetConcept("procedure-primary-provider") ./Practitioners/Practitioner[1]/ActorRole
CreateActorFromPerson(./secondary-provider) ./Practitioners/Practitioner[2]/ActorID
GetConcept("procedure-secondary-provider") ./Practitioners/Practitioner[2]/ActorRole
./anatomic-location ./Site codable-value => CodedDescriptionType

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

encounter : Encounter

HealthVault CCR Conversion
encounter Encounter

Map values:

CreateUniqueID() ./CCRDataObjectID
./when ./DateTime approx-date-time => DateTimeType
GetConcept("encounter-date") ./DateTime/Type/Text
./type ./Type codable-value => CodedDescriptionType

If Exists(./reason) Map values:

./reason ./Description/Text

Else Map values:

"Unknown" ./Description/Text

Map values:

. ./Source thing => Source
CreateCommentFromString(../common/note) ./CommentID
./duration/start-date ./Duration/DateTime/DateTimeRange/BeginRange approx-date-time => DateTimeType
./duration/end-date ./Duration/DateTime/DateTimeRange/EndRange approx-date-time => DateTimeType
CreateActorFromOrganization(./facility) ./Locations/Location/Actor/ActorID

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.

appointment : Encounter

HealthVault CCR Conversion
appointment Encounter

Map values:

CreateUniqueID() ./CCRDataObjectID
./when ./DateTime
GetConcept("appointment-date") ./DateTime/Type/Text
./care-class ./Type codable-value => CodedDescriptionType

If Exists(./service) Map values:

./service ./Description codable-value => CodedDescriptionType

Else Map values:

"Unknown" ./Description/Text

Map values:

./status ./Status codable-value => CodedDescriptionType
. ./Source thing => Source
CreateCommentFromString(../common/note) ./CommentID

If Exists(./clinic/organization) Map values:

CreateOrganizationActorFromString(./clinic/organization) ./Locations/Location/Actor/ActorID

Map values:

CreateActorFromPerson(./clinic) ./Practitioners/Practitioner/ActorID
./duration/start-date ./Duration[1]/DateTime[1]/DateTimeRange/BeginRange approx-date-time => DateTimeType
./duration/end-date ./Duration[1]/DateTime[1]/DateTimeRange/EndRange approx-date-time => DateTimeType

Note: Elements listed in bold italic text are required by the HealthVault mapping transform. If any required values cannot be processed, the transform will not create the type.