CCR Input Mappings

The transforms that convert CCR data into HealthVault types 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 elements of the CCR.

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 CCR onto an element in a HealthVault type. Mappings described in adjacent rows should be applied together, and in the sequence indicated.
    Each row contains the following elements:
    1. CCR. The element in the CCR whose value is used to populate the HealthVault item, or a function (see below) whose return value will be used. Note that the IsConcept functions use the element label groups defined in the "Import Text" columns in HealthVault CCR Vocabularies to identify CCR elements that may use alternate names for a given concept.
    2. HealthVault. The HealthVault item whose value will be set.
    3. Conversion (optional.) The first row specifies the type-id of the relevant HealthVault type. In subsequent rows, it 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 Input 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

ExactDateTime : date

 
CCR HealthVault Conversion
ExactDateTime date  
Map values:
 
. y ISO-8601/Y
. m ISO-8601/M
. d ISO-8601/D

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.

ExactDateTime : time

 
CCR HealthVault Conversion
ExactDateTime time  
Map values:
 
. h ISO-8601/h
. m ISO-8601/m
. s ISO-8601/s

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.

ExactDateTime : approx-date

 
CCR HealthVault Conversion
ExactDateTime approx-date  
Map values:
 
. y ISO-8601/Y
. m ISO-8601/M
. d ISO-8601/D

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.

ExactDateTime : StructuredApproxDate

 
CCR HealthVault Conversion
ExactDateTime StructuredApproxDate  
Map values:
 
. ./date ExactDateTime => approx-date
. ./time ExactDateTime => time
. ./tz ISO-8601/TZD

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.

ExactDateTime : date-time

 
CCR HealthVault Conversion
ExactDateTime date-time  
Map values:
 
. ./date ExactDateTime => date
. ./time ExactDateTime => time
. ./tz ISO-8601/TZD

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.

DateTimeType : approx-date-time

 
CCR HealthVault Conversion
DateTimeType approx-date-time  
If Exists(./ExactDateTime)
Map values:
 
./ExactDateTime ./structured ExactDateTime => StructuredApproxDate
Else If Exists(./ApproximateDateTime)
Map values:
 
./ApproximateDateTime/Text ./descriptive  
Else If Exists(./Age)
Map values:
 
Concat(./Age/Value,./Age/Units/Unit, ' ') ./descriptive  
Else
Map values:
 
"Unknown" ./descriptive  

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.

DateTimeType : approx-date

 
CCR HealthVault Conversion
DateTimeType approx-date  
If Exists(./ExactDateTime)
Map values:
 
./ExactDateTime . ExactDateTime => approx-date

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.

DateTimeType : date

 
CCR HealthVault Conversion
DateTimeType date  
If Exists(./ExactDateTime)
Map values:
 
./ExactDateTime . ExactDateTime => date

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.

DateTimeType : date-time

 
CCR HealthVault Conversion
DateTimeType date-time  
If Exists(./ExactDateTime)
Map values:
 
./ExactDateTime . ExactDateTime => date-time

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 Types

CodeType : coded-value

 
CCR HealthVault Conversion
CodeType coded-value  
Map values:
 
./Value ./value  
./CodingSystem ./type  
./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.

CodedDescriptionType : codable-value

 
CCR HealthVault Conversion
CodedDescriptionType codable-value  
If Exists(./Text)
Map values:
 
./Text ./text  
If Not Exists(./Text) and If Exists(./Code[1])
Map values:
 
./Code[1]/Value ./text  
Else
Map values:
 
"Unkown" ./text  
ForEach(./Code)
Map values:
 
. ./code CodeType => coded-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.

Measure Types

MeasureType or MeasureGroup : codable-value

 
CCR HealthVault Conversion
MeasureType or MeasureGroup codable-value  
Map values:
 
./Units/Unit ./text  
ForEach(./Units/Code)
Map values:
 
. ./code CodeType => coded-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.

MeasureType or MeasureGroup : structured-measurement

 
CCR HealthVault Conversion
MeasureType or MeasureGroup structured-measurement  
If IsNumber(./Value)
Map values:
 
./Value ./value  
. ./units MeasureType => codable-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.

MeasureType or MeasureGroup : general-measurement

 
CCR HealthVault Conversion
MeasureType or MeasureGroup general-measurement  
If Exists(./Value)
Map values:
 
./Value ./display  
If IsNumber(./Value)and If Exists(./Units)
Map values:
 
. ./structured MeasureType => structured-measurement

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.

MeasureType or MeasureGroup : display-value

 
CCR HealthVault Conversion
MeasureType or MeasureGroup display-value  
Map values:
 
./Value ./display  
./Units/Unit ./display/@units  

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.

TestResultType : general-measurement

 
CCR HealthVault Conversion
TestResultType general-measurement  
If Exists(./Value)
Map values:
 
./Value ./display  
Else If Exists(./Description/Text)
Map values:
 
./Description/Text ./display  
Else
Map values:
 
"Unknown" ./display  
Map values:
 
. . MeasureType => structured-measurement

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.

Actors

PersonNameType : name

 
CCR HealthVault Conversion
PersonNameType name  
Map values:
 
PersonNameTypeToString(.) ./full  
./Title ./title/text  
./Given ./first  
./Middle ./middle  
./Family ./last  
./Suffix ./suffix/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.

CommunicationType : email

 
CCR HealthVault Conversion
CommunicationType email  
Map values:
 
./Type/Text ./description  
IsConcept(./Priority, "priority-primary") ./is-primary  
./Value ./address  

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.

CommunicationType : phone

 
CCR HealthVault Conversion
CommunicationType phone  
Map values:
 
./Type/Text ./description  
IsConcept(./Priority, "priority-primary") ./is-primary  
./Value ./number  

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.

Actor : address

 
CCR HealthVault Conversion
Actor address  
Map values:
 
./Type/Text ./description  
IsConcept(./Priority, "priority-primary") ./is-primary  
./Line1 ./street[1]  
./Line2 ./street[2]  
./City ./city  
./State ./state  
./PostalCode ./postcode  
./Country ./country  

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.

Actor : contact

 
CCR HealthVault Conversion
Actor contact  
ForEach(./Address)
Map values:
 
. ./address Actor => address
ForEach(./Telephone)
Map values:
 
. ./phone CommunicationType => phone
ForEach(./EMail)
Map values:
 
. ./email CommunicationType => email

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.

Actor : person

 
CCR HealthVault Conversion
Actor person  
If Exists(./Person/Name/CurrentName)
Map values:
 
./Person/Name/CurrentName ./name PersonNameType => name
Else (./Person/Name/BirthName)
Map values:
 
./Person/Name/BirthName ./name PersonNameType => name
If Exists(./Person/Name/DisplayName)
Map values:
 
./Person/Name/DisplayName ./name/full  
Map values:
 
Concat(./Specialty/Text, ";") ./professional-training  
./Relation[1] ./type CodedDescriptionType => codable-value
. ./contact Actor => contact

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.

Actor : Organization

 
CCR HealthVault Conversion
Actor Organization  
Map values:
 
./Organization/Name ./name  
./Specialty[1] ./type CodedDescriptionType => codable-value
./URL[1]/Value ./website  
. ./contact Actor => contact

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

CCRCodedDataObjectType : common

 
CCR HealthVault Conversion
CCRCodedDataObjectType common  
ForEach(./Source)
$Sources = Concat($Source, SourceTypeToString(.), "\n\n")
Map values:
 
$Sources ./source  
ForEach(./Comments/Comment)
$Comments = Concat($Comments, ./Description/Text, "\n\n")
ForEach(./References/Reference)
$References = Concat($References, ReferenceTypeToString(.), "\n\n")
Map values:
 
Concat($Comments, $References, "[References]\n") ./note  
./CCRDataObjectID ./client-thing-id  

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.

ContinuityOfCareRecord/Body : thing/data-xml

ContinuityOfCareRecord/Body : thing/data-xml

 
CCR HealthVault Conversion
ContinuityOfCareRecord/Body thing/data-xml  
$Payer = ./Payers/Payer
ForEach($Payer)
Map values:
 
. ./payer Payer => payer
$Directives = ./AdvanceDirectives/AdvanceDirective
ForEach($Directives)
Map values:
 
. ./directive AdvanceDirective => directive
$Problems = ./Problems/Problem
ForEach($Problems)
Map values:
 
. ./condition Problem => condition
$FamilyHistories = ./FamilyHistory/FamilyProblemHistory
ForEach($FamilyHistories)
Map values:
 
. . FamilyHistoryType => family-history
$Allergies = ./Alerts/Alert[ IsConcept(./Type/Text, "allergy")]
ForEach($Allergies)
Map values:
 
. ./allergy Alert => allergy
$Medications = ./Medications/Medication
ForEach($Medication)
Map values:
 
. ./medication Medication => medication
$Immunizations = ./Immunizations/Immunization
ForEach($Immunizations)
Map values:
 
. ./immunization Immunization => immunization
$Results = ./VitalSigns/Result
ForEach($Results)
Map values:
 
. . ResultType => Typed things
$Results = ./Results/Result
ForEach($Results)
If IsConcept(./Description/Text, "result-discharge-summary") or If Exists(./IDs[ IsConcept(./ID, "02ef57a2-a620-425a-8e92-a301542cca54")])
Map values:
 
. ./discharge-summary ResultType => discharge-summary
Else
Map values:
 
. ./lab-test-results ResultType => lab-test-result
ForEach($Results)
Map values:
 
. . ResultType => Typed Things
$Procedures = ./Procedures/Procedure
ForEach($Procedures)
Map values:
 
. ./procedure Procedure => procedure
$Encounters = ./Encounters/Encounter
ForEach($Encounters)
If IsConcept(./Status/Text, "encounter-pending")
Map values:
 
. ./appointment Encounter => appointment
Else
Map values:
 
. ./encounter Encounter => 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.

Payer : payer

 
CCR HealthVault Conversion
Payer payer type-id = 9366440c-ec81-4b89-b231-308a4c4d70ed
If Exists(./PaymentProvider)
Map values:
 
ActorToString(./PaymentProvider) ./plan-name  
Else
Map values:
 
"Unknown" ./plan-name  
Map values:
 
./Type ./coverage-type CodedDescriptionType => codable-value
./IDs[ IsConcept(./Type/Text, "payer-carrier-id")][1]/ID ./carrier-id  
./IDs[ IsConcept(./Type/Text, "payer-group-number")][1]/ID ./group-num  
./IDs[ IsConcept(./Type/Text, "payer-plan-code")][1]/ID ./plan-code  
./IDs[ IsConcept(./Type/Text, "payer-subscriber-number")][1]/ID ./subscriber-id  
ActorToString(./Subscriber) ./subscriber-name  
$Actor = ResolveActor(./Subscriber)
Map values:
 
$Actor/Person/DateOfBirth ./subscriber-dob DateTimeType => date-time
IsConcept(./Type/Text, "payer-primary-health-insurance") ./is-primary boolean
./DateTime[ IsConcept(./Type/Text, "payer-benefit-stop-date")][1] ./expiration-date DateTimeType => date-time
ResolveActor(./PaymentProvider) ./contact Actor => contact
. ../common CCRCodedDataObjectType => common

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.

AdvanceDirective : directive

 
CCR HealthVault Conversion
AdvanceDirective directive type-id = 822a5e5a-14f1-4d06-b92f-8f3f1b05218f
$DateTime = ./DateTime[ IsConcept(./Type/Text, "directive-start-date")][1]
If Exists($DateTime)
Map values:
 
$DateTime ./start-date DateTimeType => approx-date-time
Else
Map values:
 
"Unknown" ./start-date/descriptive  
$DateTime = ./DateTime[ IsConcept(./Type/Text, "directive-stop-date")][1]
If Exists($DateTime)
Map values:
 
$DateTime ./stop-date DateTimeType => approx-date-time
Else
Map values:
 
"Unknown" ./stop-date/descriptive  
Map values:
 
./Description/Text ./description  
Concat(./Type/Text, ./Status/Text, ";") ./additional-instructions  
FindActorInSources(./Source, "directive-treating-physician") ./attending-physician Actor => person
./DateTime[ IsConcept(./Type/Text, "directive-verified-treating-physician")][1] ./attending-physician-endorsement DateTimeType => date-time
. ../common CCRCodedDataObjectType => common

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.

Problem : condition

 
CCR HealthVault Conversion
Problem condition type-id = 7ea7a1f9-880b-4bd4-b593-f5660f20eda8
Map values:
 
./Description ./name CodedDescriptionType => codable-value
If(count(./DateTime)= 1) and If Exists(./DateTime/DateTimeRange)
Map values:
 
./DateTime/DateTimeRange/BeginRange ./onset-date DateTimeType => approx-date-time
Else
Map values:
 
./DateTime[ IsConcept(./Type/Text, "problem-onset-date")][1] ./onset-date DateTimeType => approx-date-time
Map values:
 
./Status ./status CodedDescriptionType => codable-value
If(count(./DateTime) = 1) and If Exists(./DateTime/DateTimeRange)
Map values:
 
./DateTime/DateTimeRange/EndRange ./stop-date DateTimeType => approx-date-time
Else
Map values:
 
./DateTime[ IsConcept(./Type/Text, "problem-stop-date")][1] ./stop-date DateTimeType => approx-date-time
Map values:
 
. ../common CCRCodedDataObjectType => common

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.

FamilyProblemHistory : family-history

 
CCR HealthVault Conversion
FamilyProblemHistory family-history type-id = 4a04fcc8-19c1-4d59-a8c7-2031a03f21de
Remarks: If there are multiple family members, then HealthVault will create a seperate family-history object for each of them containing all of the associated conditions. If there are only problems, then HealthVault will create a single family-history object containing all of the problems.
If Exists(./FamilyMember)
ForEach(./FamilyMember)
$Actor = ResolveActor(./ActorID)
Map values:
 
./ActorRole ./family-history/relative/relationship CodedDescriptionType => codable-value
$Actor ./family-history/relative/relative-name Actor => person
$Actor/Person/DateOfBirth ./family-history/relative/date-of-birth DateTimeType => approx-date
ForEach(./Problem)
Map values:
 
./Description ./family-history/condition/name CodedDescriptionType => codable-value
$OnsetDate = ./Episodes/Episode[ IsConcept(./DateTime, "problem-onset-date")][1]
If Exists($OnsetDate)
Map values:
 
$OnsetDate ./family-history/condition/onset-date DateTimeType => approx-date
Else
Map values:
 
../DateTime[ IsConcept(./DateTime, "problem-onset-date")[1] ./family-history/condition/onset-date DateTimeType => approx-date
Map values:
 
Concat(./Episodes/Frequency/Value, ./Episodes/Frequency/Units/Unit, " ") ./family-history/condition/occurrence/text  
./Episodes/Frequency/Code[1] ./family-history/condition/occurrence/code CodeType => coded-value
Map values:
 
. ./common CCRCodedDataObjectType => common
Else If Exsits(./Problem)
ForEach(./Problem)
Map values:
 
./Description ./family-history/condition/name CodedDescriptionType => codable-value
$OnsetDate = ./Episodes/Episode[ IsConcept(./DateTime, "problem-onset-date")][1]
If Exists($OnsetDate)
Map values:
 
$onsetDate ./family-history/condition/onset-date DateTimeType => approx-date
Else
Map values:
 
../DateTime[ IsConcept(./DateTime, "problem-onset-date")[1] ./family-history/condition/onset-date DateTimeType => approx-date
Map values:
 
Concat(./Episodes/Frequency/Value, ./Episodes/Frequency/Units/Unit, ' ') ./family-history/condition/occurrence/text  
./Episodes/Frequency/Code[1] ./family-history/condition/occurrence/code CodeType => coded-value
Map values:
 
. ./family-history/common CCRCodedDataObjectType => common

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.

Alert : allergy

 
CCR HealthVault Conversion
Alert allergy type-id = 52bf9104-2c5e-4f1f-a66d-552ebcc53df7
$Product = ./Agent/Products/Product[1]
$EnvAgent = ./Agent/EnvironmentalAgents/EnvironmentalAgent[1]
If Exists(./Description)
Map values:
 
./Description ./name CodedDescriptionType => codable-value
Else If Exists($Product)
Map values:
 
$Product/ProductName ./name CodedDescriptionType => codable-value
Else If Exists($EnvAgent)
Map values:
 
$EnvAgent/Description ./name  
If Exists(./Reaction)
Map values:
 
./Reaction[1]/Description ./reaction CodedDescriptionType => codable-value
If(count(./DateTime) = 1) and If Exists(./DateTime/DateTimeRange)
Map values:
 
./DateTime[1]/DateTimeRange/BeginRange ./first-observed DateTimeType => approx-date-time
Else
Map values:
 
./DateTime[ IsConcept(./Type/Text, "allergy-start-date")][1] ./first-observed DateTimeType => approx-date-time
If Exists($Product)
Map values:
 
$Product/Type ./allergen-type CodedDescriptionType => codable-value
$Product/Description ./allergen-code CodedDescriptionType => codable-value
Else If Exists($EnvAgent)
Map values:
 
$EnvAgent/Type ./allergen-type CodedDescriptionType => codable-value
$EnvAgent/Description ./allergen-code CodedDescriptionType => codable-value
Map values:
 
. ../common CCRCodedDataObjectType => common

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

 
CCR HealthVault Conversion
Medication medication type-id =30cafccc-047d-4288-94ef-643571f7919d
$Product = ./Product[1]
$Direction = ./Product[1]/Directions[1]/Direction[1]
If Exists($Product)
If Exists($Product/BrandName)
Map values:
 
$Product/BrandName ./name CodedDescriptionType => codable-value
$Product/ProductName ./generic-name CodedDescriptionType => codable-value
Else
Map values:
 
$Product/ProductName ./name CodedDescriptionType => codable-value
Map values:
 
$Direction/Dose[1] ./dose MeasureType => general-measurement
$Product/Strength[1] ./strength MeasureType => general-measurement
$Direction/Frequency[1] ./frequency MeasureType => general-measurement
$Direction/Route[1] ./route CodedDescriptionType => codable-value
If Exists($Direction/Indication[1]/Description)
Map values:
 
$Direction/Indication[1]/Description ./indication CodedDescriptionType => codable-value
Else If Exists($Direction/Indication[1]/InternalCCRLink)
$Problem = ResolveLink($Direction/Indication[1]/InternalCCRLink)
Map values:
 
$Problem/Description ./indication CodedDescriptionType => codable-value
Map values:
 
./DateTime[ IsConcept(./Type/Text, "medication-start-date")][1] ./date-started DateTimeType => approx-date-time
./DateTime[ IsConcept(./Type/Text, "medication-stop-date")][1] ./date-discontinued DateTimeType => approx-date-time
. ./prescription Medication => prescription
. ../common CCRCodedDataObjectType => common

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 : prescription

 
CCR HealthVault Conversion
Medication prescription  
$Actor = FindActorInSources(./Source, "medication-prescribing-clinician")
If Exists($Actor)
Map values:
 
$Actor ./prescribed-by Actor => person
Else
Map values:
 
"Unknown" ./prescribed-by/name/full  
Map values:
 
./DateTime[ IsConcept(./Type/Text, "medication-prescription-date")][1] ./date-prescribed DateTimeType => approx-date-time
./Quantity[1] ./amount-prescribed MeasureType => general-measurement
./Refills/Refill[1]/Number[1] ./refills  
./PatientInstructions/Instruction[1] ./instructions CodedDescriptionType => codable-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.

Immunization : immunization

 
CCR HealthVault Conversion
Immunization immunization type-id = cd3587b5-b6e1-4565-ab3b-1c3ad45eb04f
$Product = ./Product[1]
If Exists($Product)
Map values:
 
$Product/ProductName ./name CodedDescriptionType => codable-value
./DateTime[ IsConcept(./Type/Text, "immunization-date")][1] ./administration-date DateTimeType => approx-date-time
ActorToString($Product/Manufacturer) ./manufacturer/text  
./IDs[ IsConcept(./Type/Text, "immunization-lot-number")][1]/ID ./lot  
./Directions[1]/Direction[1]/Route[1] ./route CodedDescriptionType => codable-value
./SeriesNumber ./sequence  
./Directions[1]/Direction[1]/Site[1] ./anatomic-surface CodedDescriptionType => codable-value
./Reaction/Description/Text ./adverse-event  
./Consent/Description/Text ./consent  
. ../common CCRCodedDataObjectType => common

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.

ResultType : Typed Things

 
CCR HealthVault Conversion
ResultType Typed Things  
Map values:
 
. ./blood-pressure ResultType => blood-pressure
. ./cholesterol-profile ResultType => cholesterol-profile
. ./peak-flow ResultType => peak-flow
. ./exercise ResultType => exercise
./Test[ IsConcept(./Description/Text, "height")] ./height TestType => height
./Test[ IsConcept(./Description/Text, "weight")] ./weight TestType => weight
./Test[ IsConcept(./Description/Text, "blood-glucose")] ./blood-glucose TestType => blood-glucose
./Test[ IsConcept(./Description, "blood-oxygen-saturation")] ./blood-oxygen-saturation TestType => blood-oxygen-saturation
If IsConcept(./Type, "radiology-lab-results") or IsConcept(./Description, "radiology-lab-results")
ForEach(./Test)
Map values:
 
./Test ./radiology-lab-results TestType => radiology-lab-results
Remarks: If a Result is in the CCR under VitalSigns and cannot be imported into any of the above types, then HealthVault will fall back to the following generic vital-signs mapping.
Map values:
 
. ./vital-signs ResultType => vital-signs

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.

ResultType : vital-signs

 
CCR HealthVault Conversion
ResultType vital-signs type-id = 73822612-C15F-4B49-9E65-6AF369E55C65
$DateTime = GetDateTime(., "result-collection-date")
If Exists($DateTime/ExactDateTime)
Map values:
 
./DateTime ./when DateTimeType => date-time
ForEach(./Test) ./vital-signs-results  
Map values:
 
./Description ./title CodedDescriptionType => codable-value
If IsNumber(./TestResult/Value)
Map values:
 
./TestResult/Value ./value string => double
./TestResult ./unit MeasureType => codable-value
Else If Exists(./TestResult/Value)
Map values:
 
Concat(./TestResult/Value, ./TestResult/Units/Unit, " ") ./text-value  
Else
Map values:
 
./TestResult/Description/Text ./text-value string => string
Map values:
 
./Flag[1] ./flag CodedDescriptionType => codable-value
Map values:
 
. ../common CCRCodedDataObjectType => common

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.

ResultType : blood-pressure

 
CCR HealthVault Conversion
ResultType blood-pressure type-id = ca3c57f4-f4c1-4e15-be67-0a3caf5414ed
$DateTime = GetDateTime(., "result-collection-date")
$Systolic = ./Test[IsConcept(./Description/Text, "blood-pressure-systolic")][1]
$Diastolic = ./Test[IsConcept(./Description/Text, "blood-pressure-diastolic")][1]
$Pulse = ./Test[IsConcept(./Description/Text, "blood-pressure-pulse")][1]
If Exists($DateTime/ExactDateTime and $Diastolic and $Systolic)
Map values:
 
$DateTime ./when DateTimeType => date-time
$Systolic/TestResult/Value ./systolic string => integer
$Diastolic/TestResult/Value ./diastolic string => integer
$Pulse/TestResult/Value ./pulse string => integer
. ../common CCRCodedDataObjectType => common

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.

ResultType : cholesterol-profile

 
CCR HealthVault Conversion
ResultType cholesterol-profile type-id = 796C186F-B874-471c-8468-3EEFF73BF66E
$DateTime = GetDateTime(., "result-collection-date")
$LDL = ./Test[IsConcept(./Description/Text, "cholesterol-ldl")][1]
$HDL = ./Test[IsConcept(./Description/Text, "cholesterol-hdl")][1]
$Total = ./Test[IsConcept(./Description/Text, "cholesterol-total")][1]
$Trig = ./Test[IsConcept(./Description/Text, "cholesterol-triglycerides")][1]
If Exists($DateTime/ExactDateTime and ($LDL or $HDL or $Total or $Trig))
Map values:
 
$DateTime ./when DateTimeType => date
$LDL/TestResult/Value ./ldl string => integer
$HDL/TestResult/Value ./hdl string => integer
$Total/TestResult/Value ./total-cholesterol string => integer
$Trig/TestResult/Value ./triglyceride string => integer
. ../common CCRCodedDataObjectType => common

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.

ResultType : peak-flow

 
CCR HealthVault Conversion
ResultType peak-flow type-id = 5d8419af-90f0-4875-a370-0f881c18f6b3
$DateTime = GetDateTime(., "result-collection-date")
$PEF = ./Test[ IsConcept(./Description/Text, "pef")][1]
$FEV1 = ./Test[IsConcept(./Description/Text, "fev1")][1]
$FEV6 = ./Test[ IsConcept(./Description/Text, "fev6")][1]
If Exists($DateTime/ExactDateTime and ($PEF or $FEV1 or $FEV6))
Map values:
 
$DateTime ./when DateTimeType => approx-date-time
If IsPositiveDouble($PEF/TestResult/Value) and IsConcept($PEF/TestResult/Units/Unit, "liters-per-second")
Map values:
 
$PEF/TestResult/Value ./pef/liters-per-second  
$PEF/TestResult ./pef/display MeasureGroup => display-value
If IsPositiveDouble($FEV1/TestResult/Value) and IsConcept($FEV1/TestResult/Units/Unit, "liters")
Map values:
 
$FEV1/TestResult/Value ./fev1/liters  
$FEV1/TestResult ./fev1/display MeasureGroup => display-value
If IsPositiveDouble($FEV6/TestResult/Value) and IsConcept($FEV6/TestResult/Units/Unit, "liters")
Map values:
 
$FEV6/TestResult/Value ./fev6/liters  
$FEV6/TestResult ./fev6/display MeasureGroup => display-value
Map values:
 
. ../common CCRCodedDataObjectType => common

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.

ResultType : exercise

 
CCR HealthVault Conversion
ResultType exercise type-id = 85a21ddb-db20-4c65-8d30-33c899ccf612
$DateTime = GetDateTime(., "result-collection-date")
$Distance = ./Test[ IsConcept(./Description/Text, "exercise-distance")][1]
$Duration = ./Test[IsConcept(./Description/Text, "exercise-duration")][1]
$Details = ./Test[ IsConcept(./Description/Text, "exercise-details")]
If Exists($DateTime/ExactDateTime and ($Distance or $Duration or $Details) and ./Description)
Map values:
 
$DateTime ./when DateTimeType => approx-date-time
./Description ./activity CodedDescriptionType => codable-value
ConvertToMeters($Distance/TestResult/Value, $Distance/TestResult/Units/Unit) ./distance/m  
$Distance/TestResult ./distance/display MeasureGroup => display-value
ConvertToMinutes($Duration/TestResult/Value, $Duration/TestResult/Units/Unit) ./duration  
ForEach($Details)
Map values:
 
./Description/Code[1] ./detail/name CodeType => coded-value
./TestResult ./detail/value MeasureGroup => structured-measurement
Map values:
 
. ../common CCRCodedDataObjectType => common

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.

ResultType : discharge-summary

 
CCR HealthVault Conversion
ResultType discharge-summary type-id = 02ef57a2-a620-425a-8e92-a301542cca54
$DateTime = GetDateTime(.,"discharge-summary-create-date")
If Exists($DateTime/ExactDateTime)
Map values:
 
$DateTime ./when DateTimeType => date-time
./Description ./type CodedDescriptionType => codable-value
Remarks: For discharge summaries that are sent as Results, HealthVault will use the value of first associated comment that matches the discharge-summary-comment concept as the content of the discharge summary.
Map values:
 
ResolveComment("discharge-summary-comment") ./text  
FindActorInSources(./Source, "discharge-summary-primary-provider") ./primary-provider Actor => person
./DateTime[ IsConcept(./Type/Text, "discharge-summary-primary-endorsement")][1] ./primary-provider-endorsement DateTimeType => date-time
FindActorInSources(./Source, "discharge-summary-secondary-provider") ./secondary-provider Actor => person
./DateTime[ IsConcept(./Type/Text, "discharge-summary-secondary-endorsement")][1] ./secondary-provider-endorsement DateTimeType => date-time
./DateTime[ IsConcept(./Type/Text, "discharge-summary-discharge-date")][1] ./discharge-date-time DateTimeType => approx-date-time
FindActorInSources(./Source, "discharge-summary-principal-procedure-physician") ./principal-procedure-physician Actor => person
. ../common CCRCodedDataObjectType => common

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.

TestType : height

 
CCR HealthVault Conversion
TestType height type-id = 40750a6a-89b2-455c-bd8d-b420a4cb500b
$DateTime = GetDateTime(.., "result-collection-date")
If Exists($DateTime/ExactDateTime))
Map values:
 
$DateTime ./when DateTimeType => date-time
ConvertToMeters(./TestResult/Value, ./TestResult/Units/Unit) ./value/m  
./TestResult ./value/display MeasureGroup => display-value
.. ../common CCRCodedDataObjectType => common

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.

TestType : weight

 
CCR HealthVault Conversion
TestType weight type-id = 3d34d87e-7fc1-4153-800f-f56592cb0d17
$DateTime = GetDateTime(.., "result-collection-date")
If Exists($DateTime/ExactDateTime)
Map values:
 
$DateTime ./when DateTimeType => date-time
ConvertToKilograms(./TestResult/Value, ./TestResult/Units/Unit) ./value/kg  
./TestResult ./value/display MeasureGroup => display-value
.. ../common CCRCodedDataObjectType => common

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.

TestType : blood-glucose

 
CCR HealthVault Conversion
TestType blood-glucose type-id = 879e7c04-4e8a-4707-9ad3-b054df467ce4
$DateTime = GetDateTime(.., "result-collection-date")
If Exists($DateTime/ExactDateTime)
Map values:
 
$DateTime ./when DateTimeType => date-time
./Description ./glucose-measurement-type CodedDescriptionType => codable-value
ConvertToMilliMolesPerLiter(./TestResult/Value, ./TestResult/Units/Unit) ./value/mmoLPerl  
./TestResult ./value/display MeasureType => display-value
.. ../common CCRCodedDataObjectType => common

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.

TestType : radiology-lab-results

 
CCR HealthVault Conversion
TestType radiology-lab-results type-id = e4911bd3-61bf-4e10-ae78-9c574b888b8f
$DateTime = GetDateTime(.., "result-collection-date")
If Exists($DateTime/ExactDateTime)
Map values:
 
$DateTime ./when DateTimeType => date-time
./Description/Text ./title  
$Value = Concat(./TestResult/Value, ./TestResult/Units/Unit, " ")
Map values:
 
Concat($Value, ./TestResult/Description/Text, "
&#xA") ./result-text  
.. ../common CCRCodedDataObjectType => common

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.

TestType : blood-oxygen-saturation

 
CCR HealthVault Conversion
TestType blood-oxygen-saturation type-id = 3a54f95f-03d8-4f62-815f-f691fc94a500
$DateTime = GetDateTime(.., "result-collection-date")
If Exists($DateTime/ExactDateTime)
Map values:
 
$DateTime ./when DateTimeType => date-time
If IsPercentage(./TestResult/Value)
Map values:
 
./TestResult/Value ./value  
Map values:
 
./Method ./measurement-method CodedDescriptionType => codable-value
./Flag[1] ./measurement-flags CodedDescriptionType => codable-value
.. ../common CCRCodedDataObjectType => common

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.

ResultType : lab-test-results

 
CCR HealthVault Conversion
ResultType lab-test-results type-id = 5800eab5-a8c2-482a-a4d6-f1db25ae08c3
Map values:
 
GetDateTime(./, "result-collection-date") ./when DateTimeType => approx-date-time
If Exists(./Description)
Map values:
 
./Description ./lab-group/group-name CodedDescriptionType => codable-value
Else If Exists(./Type)
Map values:
 
./Type ./lab-group/group-name CodedDescriptionType => codable-value
Map values:
 
./Status ./lab-group/status CodedDescriptionType => codable-value
ForEach(./Test)
Map values:
 
. ./lab-group/results TestType => lab-test-result-type
Map values:
 
FindActorInSource(./Source, "result-ordering-provider") ./ordered-by Actor => Organization
. ../common CCRCodedDataObjectType => common

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.

TestType : lab-test-result-type

 
CCR HealthVault Conversion
TestType lab-test-result-type  
Map values:
 
./DateTime[1] ./when DateTimeType => approx-date-time
./Description/Text ./name  
../Result/Substance ./substance CodedDescriptionType => codable-value
./Method[1] ./collection-method CodedDescriptionType => codable-value
./Description ./clinical-code CodedDescriptionType => codable-value
. ./value TestType => lab-test-result-value-type
./Status ./status CodedDescriptionType => codable-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.

TestType : lab-test-result-value-type

 
CCR HealthVault Conversion
TestType lab-test-result-value-type  
Map values:
 
./TestResult ./measurement TestResultType => general-measurement
ForEach(./NormalResult/Normal)
If Exists(./Value)
If Exists(./Units)
Map values:
 
. ./ranges/type MeasureGroup => codable-value
Else
Map values:
 
"Unknown" ./ranges/type/text  
Map values:
 
./Value ./ranges/text number => string
If IsNumber(./Value)
Map values:
 
./Value ./ranges/value/minimum-range  
./Value ./ranges/value/maximum-range  
ForEach(./Flag)
Map values:
 
. ./flag CodedDescriptionType => codable-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.

Procedure : procedure

 
CCR HealthVault Conversion
Procedure procedure type-id = df4db479-a1ba-42a2-8714-2b083b88150f
If(count(./DateTime) = 1) and If Exists(./DateTime/DateTimeRange)
Map values:
 
./DateTime/DateTimeRange/BeginRange ./when DateTimeType => approx-date-time
Else
Map values:
 
./DateTime[ IsConcept(./Type/Text, "procedure-date")][1] ./when DateTimeType => approx-date-time
Map values:
 
./Description ./name CodedDescriptionType => codable-value
./Site[1] ./anatomic-location CodedDescriptionType => codable-value
ResolveActorInRole(./Practitioners/Practitioner, "procedure-primary-provider") ./primary-provider Actor => person
ResolveActorInRole(./Practitioners/Practitioner, "procedure-secondary-provider") ./secondary-provider Actor => person
. ../common CCRCodedDataObjectType => common

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

 
CCR HealthVault Conversion
Encounter encounter type-id = 464083cc-13de-4f3e-a189-da8e47d5651b
Map values:
 
GetDateTime(., "encounter-date") ./when DateTimeType => date-time
./Type ./type CodedDescriptionType => codable-value
./Description/Text ./reason  
./Duration[1]/DateTime/DateTimeRange/BeginRange ./duration/start-date DateTimeType => approx-date-time
./Duration[1]/DateTime/DateTimeRange/EndRange ./duration/end-date DateTimeType => approx-date-time
ResolveActor(./Locations/Location[1]/Actor/ActorID) ./facility Actor => Organization
ForEach(./Practitioners/Practitioner)
$Practitioners = Concat($Practitioners, ., "\n\n")
Map values:
 
. ../common CCRCodedDataObjectType => common
Remarks: Practioners are appended to the content that is already in the note field.
Map values:
 
$Practitioners ../common/note  

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 : appointment

 
CCR HealthVault Conversion
Encounter appointment type-id = 4b18aeb6-5f01-444c-8c70-dbf13a2f510b
$DateTime = GetDateTime(.,"appointment-date")
If Exists($DateTime/ExactDateTime)
Map values:
 
$DateTime ./when DateTimeType => date-time
./Duration[1]/DateTime/DateTimeRange/BeginRange ./duration/start-date DateTimeType => approx-date-time
./Duration[1]/DateTime/DateTimeRange/EndRange ./duration/end-date DateTimeType => approx-date-time
./Description ./service CodedDescriptionType => codable-value
$Practitioner = ResolveActor(./Practitioners/Practitioner[1]/ActorID)
If Exists($Practitioner/Person)
Map values:
 
$Practitioner ./clinic Actor => Person
Else
Map values:
 
"Unknown" ./clinic/name/full  
$Location = ResolveActor(./Locations/Location[1]/Actor/ActorID)
If Exists($Location)
Map values:
 
$Location/Organization/Name ./clinic/organization  
Map values:
 
./Status ./status  
./Type ./care-class CodedDescriptionType => codable-value
. ../common CCRCodedDataObjectType => common

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.