Thursday, November 7, 2019

ACID, BASE, HATEOAS and Pagination in HAPI on FHIR

Let's start with some definitions:
Two common transaction models are ACID and BASE.  I've talked about these before with regard to EHR and HIE solutions.
HATEOAS is the RESTful model of interaction in a cloud based, BASE oriented world.

Which brings us to Pagination, the ability to look at the set of resources matching a particular query.

Pagination is a feature in a FHIR Server in which a query can specify a page size to indicate the maximum number of matches to return.

HAPI on FHIR has native support for pagination, but most implementation models come closer to an ACID model of the world.  Essential, the implementation memorizes the list of matching resource ids, and handle pagination from there, retrieving data as needed from the list associated with the query.  Thus, pages represent content at a given snapshot in time (which might be updated when results get stale or removed from any sort of cache).  In this model, you won't get unrepeatable reads or other issues wrt to transaction isolation, BUT, you could be looking at data that is not consistent with the current system state.

One of the points of pagination is to reduce server load.  Just getting the IDs and retrieving only what you need for a single page is a good start (and reduces network overhead), but it doesn't reduce the computational load to perform the actual query (and yes, I know, properly implemented, you can reduce it).

I use a more BASE oriented perspective, which is where results are retrieved a page at a time, and NEXT and PREV links are computed based on Resource.id.  Since the id values I use have the property that they are monotonically increasing from creation time, I can return resources in reverse order from creation time.  I could (and have) used last update time as the sort critiera as well.  Any sort key (including a composite key) that uniquely identifies a resources works in this model.

My NEXT and PREV links simply provide the sort key of the first and last resources in the current response in special parameters (I use _a and _b for after and before respectively).  To make things a little bit more complex, results are generally returned from most recent to least recent order (descending order), so I have to reverse my normal thought processes wrt order, but it works with either ascending or descending orders.

In the model I use, if something changes is the result set between one query and the next, you'll see the changes (which you won't always depending on how others implement the HAPI Pagination provider).  I could probably figure out how to handle this better and refactor my work to align it with the HAPI Pagination stuff, but what I've got is working.

Well, almost.  There is this issue that I've managed to workaround, so yeah it works, but I had to hack around a bug.

Tuesday, October 29, 2019

ML and AI in HealthIT ... things to think about

A very long time ago (at the beginning of my career in HealthIT), I got do do some really cool work on the front end and processing infrastructure for a set of machine learning and linguistic services that would automatically extract problems, medications, allergies and procedures and for problems, even code the diseases into a subset of SNOMED CT.  This was before most people had even heard about SNOMED CT, so some significant effort there.  We also did some work in the ICD-9-CM coding space as well, based on a software product that the company I worked for had purchased that was essentially the life's work of a physican / informaticist.

The product worked remarkably well from a technical perspective, and had a pretty decent precision/recall curve.  In fact, as configured, the system was shown to do as well as professional ICD-9-CM coders.

The biggest challenge it had was basically two-fold:

  1. It needed to be incorporate expert feedback to refine future results (we simply hadn't had the time to develop that feature).
  2. The original product couldn't explain how it got to a particular result, although subsequent ones could do a bit better.
To simplify, it couldn't argue for itself, or accept any corrections.

ML and AI are often "black boxes".  Most of what people are talking about with regard to AI today are implementations of some form of neural network.  Can anyone really explain what the weights and connections in a neural net mean?  This is a hard AI problem.  Machine learning algorithms have there own set of "hidden parameters" that drive their outputs, but that cannot always be easily explained.

Yet, we're expect to trust these things.  And they applied to hard problems that humans only solve correctly 90% of the time, and do slightly better.  How do you develop trust for something that's wrong for 1 out of 20 cases?  And yet we can trust a human because they can explain their reasoning, even when the result of it turned out wrong.

Interestingly enough, even when computers do as well as humans, the two together often do better than individually b/c the humans may understand nuance that the computer misses and vice versa.

If you are trying to implement AI (or ML), consider: 
  1. How do you work in user feedback about the goodness of the proposed solutions, 
  2. How will you explain to the user why this result is good.

Wednesday, October 23, 2019

Reporting on FHIR Structures

In yesterday's post, I mentioned that I had put together a report on FHIR resource use of code, Coding and CodeableConcept data types.  The stylesheet I used is provided below, and it was run over the profile-resources.xml file found in this download from the FHIR R4 website.

This is one of the truly valuable pieces of FHIR, that the specification itself is machine readable, which makes it possible to perform a variety of analyses and code generation tasks.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:f="http://hl7.org/fhir"
    exclude-result-prefixes="xs"
    version="1.0">
    <xsl:output method="text"/>
    <xsl:template match="/">
        <xsl:text>Name,Type,Binding,Cardinality&#xA;</xsl:text>
        <xsl:apply-templates select="//f:snapshot/f:element"></xsl:apply-templates>
    </xsl:template>
    <xsl:template match="f:snapshot/f:element">
        <xsl:if test="f:binding">
            <xsl:value-of select="@id"/>
            <xsl:text>,</xsl:text>
            <xsl:apply-templates select="." mode='type'/>
            <xsl:text>,</xsl:text>
            <xsl:value-of select="f:binding/f:strength/@value"/>
            <xsl:text>,</xsl:text>
            <xsl:value-of select="f:min/@value"/>
            <xsl:text>..</xsl:text>
            <xsl:value-of select="f:max/@value"/>
            <xsl:text>&#xA;</xsl:text>
        </xsl:if>
    </xsl:template>
    <xsl:template match="f:element" mode='type'>
        <xsl:choose>
            <xsl:when test='f:type/f:code[@value = "code"]'>code</xsl:when>
            <xsl:when test='f:type/f:code[@value = "Coding"]'>Coding</xsl:when>
            <xsl:when test='f:type/f:code[@value = "CodeableConcept"]'>CodeableConcept</xsl:when>
            <xsl:when test='f:type/f:code[@value = "string"]'>string</xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="f:type/f:code/@value"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
        
</xsl:stylesheet>

Tuesday, October 22, 2019

FHIR Terminology Datatype Usage Patterns

For the V2toFHIR project, I recently took up a task to write up my preferred approach for recording the original V2 code in FHIR Resources when mapping from a V2 message to FHIR.  To do that, I wanted to make a list of all the possible things that one might need to consider, so I ran a quick report of the variations in how code, Coding, and CodeableConcept are used with terminology in FHIR with respect to Binding Strength and Cardinality.

The report can be found at the bottom of the post.

Some interesting points:

code ~ required

The code datatype always uses a required vocabulary EXCEPT in one case in which it is preferred in Resource.language (which of course propagates to all resources in R4).  Now, why Resource.language says preferred instead of extensible is beyond me.  Who couldn't work with it as extensible?

max(cardinality(code)) is almost always 1

Instructive cases where there can be more than one code: AllergyIntolerance.category, Questionnaire.subjectType, CoverageEligibilityRequest.purpose and CoverageEligibilityResponse.purpose, anything dealing with daysOfWeek, and definition or conformance resources.  

The complete list where more than one can be used is AllergyIntolerance.category, CapabilityStatement.patchFormat, CapabilityStatement.rest.resource.referencePolicy, Endpoint.payloadMimeType, HealthcareService.availableTime.daysOfWeek, ImplementationGuide.definition.resource.fhirVersion
Location.hoursOfOperation.daysOfWeek, ObservationDefinition.permittedDataType, OperationDefinition.resource, PractitionerRole.availableTime.daysOfWeek, Questionnaire.subjectType, SearchParameter.comparator, SearchParameter.modifier, SearchParameter.target, StructureMap.group.rule.target.listMode, CapabilityStatement.format, 
CodeSystem.filter.operator, CoverageEligibilityRequest.purpose, CoverageEligibilityResponse.purpose, ImplementationGuide.fhirVersion, SearchParameter.base

Coding never uses required

The Coding data type is never bound with a required vocabulary, and rarely with a preferred one.  

Coding is not often used

In general, Coding is used 42 times, while CodableConcept is used 614 times. Hmm, do we really need Coding?  There are a few cases where I think the answer might be yes, but generally, I'd consider that most cases could probably survive quite well with just CodeableConcept.  In fact, in HL7 V2, CWE replaced ID/IS in the version 2.7 time frame throughout much of the specification.  There seem to be a small number of cases where Coding might be essential (QuestionnaireResponse.item.answer.value[x] could be one of these).

CodeableConcept has some interesting required cases

AdverseEvent.outcome, AdverseEvent.severity, AllergyIntolerance.clinicalStatus, AllergyIntolerance.verificationStatus, Condition.clinicalStatus, Condition.verificationStatus
These fields look mostly categorical and generally I have no complaints.  Seeing AdverseEvent.severity as a CodeableConcept makes me wonder though if AllergyIntolerance.criticality should also be CodeableConcept, or if the former should be code.

Measure.improvementNotation, MeasureReport.improvementNotation
The various improvementNotation attributes (on Measure and MeasureReport) could arguably be code.  I'm not sure what the use case is for CodableConcept in these.

EffectEvidenceSynthesis.effectEstimate.unitOfMeasure, 
ResearchElementDefinition.characteristic.unitOfMeasure, 
RiskEvidenceSynthesis.riskEstimate.unitOfMeasure
The unitOfMeasure fields above, when used alongside a decimal value argue that this information could have been modeled using SimpleQuantity to keep FHIR resources aligned around data types.

SupplyDelivery.type, InsurancePlan.plan.specificCost.benefit.cost.applicability, MolecularSequence.structureVariant.variantType
I don't have any feedback on these, just listing them for completeness.


Row Labels Count of Name
code 319
preferred 1
0..1 1
Resource.language 1
required 318
0..* 15
AllergyIntolerance.category 1
CapabilityStatement.patchFormat 1
CapabilityStatement.rest.resource.referencePolicy 1
Endpoint.payloadMimeType 1
HealthcareService.availableTime.daysOfWeek 1
ImplementationGuide.definition.resource.fhirVersion 1
Location.hoursOfOperation.daysOfWeek 1
ObservationDefinition.permittedDataType 1
OperationDefinition.resource 1
PractitionerRole.availableTime.daysOfWeek 1
Questionnaire.subjectType 1
SearchParameter.comparator 1
SearchParameter.modifier 1
SearchParameter.target 1
StructureMap.group.rule.target.listMode 1
0..1 112
ActivityDefinition.intent 1
ActivityDefinition.kind 1
ActivityDefinition.priority 1
AllergyIntolerance.criticality 1
AllergyIntolerance.reaction.severity 1
AllergyIntolerance.type 1
Appointment.participant.required 1
AuditEvent.action 1
AuditEvent.agent.network.type 1
AuditEvent.outcome 1
BiologicallyDerivedProduct.productCategory 1
BiologicallyDerivedProduct.status 1
BiologicallyDerivedProduct.storage.scale 1
Bundle.entry.search.mode 1
CapabilityStatement.rest.resource.conditionalDelete 1
CapabilityStatement.rest.resource.conditionalRead 1
CapabilityStatement.rest.resource.versioning 1
CarePlan.activity.detail.kind 1
CareTeam.status 1
CatalogEntry.status 1
ClaimResponse.processNote.type 1
CodeSystem.hierarchyMeaning 1
Communication.priority 1
CommunicationRequest.priority 1
Composition.confidentiality 1
Composition.section.mode 1
Consent.provision.type 1
Contract.status 1
DetectedIssue.severity 1
Device.status 1
Device.udiCarrier.entryType 1
DeviceMetric.calibration.state 1
DeviceMetric.calibration.type 1
DeviceMetric.color 1
DeviceMetric.operationalStatus 1
DeviceRequest.priority 1
DeviceRequest.status 1
DocumentReference.docStatus 1
EffectEvidenceSynthesis.resultsByExposure.exposureState 1
Encounter.location.status 1
EnrollmentRequest.status 1
EnrollmentResponse.outcome 1
EnrollmentResponse.status 1
EvidenceVariable.characteristic.groupMeasure 1
EvidenceVariable.type 1
ExplanationOfBenefit.processNote.type 1
ImplementationGuide.license 1
InsurancePlan.status 1
Location.mode 1
Location.status 1
Medication.status 1
MedicationKnowledge.status 1
MedicationRequest.priority 1
MessageDefinition.category 1
MessageDefinition.responseRequired 1
MolecularSequence.referenceSeq.orientation 1
MolecularSequence.referenceSeq.strand 1
MolecularSequence.type 1
ObservationDefinition.qualifiedInterval.category 1
ObservationDefinition.qualifiedInterval.gender 1
OperationDefinition.parameter.searchType 1
OperationDefinition.parameter.type 1
Patient.contact.gender 1
Patient.gender 1
PaymentReconciliation.outcome 1
PaymentReconciliation.processNote.type 1
Person.gender 1
Person.link.assurance 1
PlanDefinition.action.cardinalityBehavior 1
PlanDefinition.action.groupingBehavior 1
PlanDefinition.action.precheckBehavior 1
PlanDefinition.action.priority 1
PlanDefinition.action.requiredBehavior 1
PlanDefinition.action.selectionBehavior 1
Practitioner.gender 1
Questionnaire.item.enableBehavior 1
RelatedPerson.gender 1
RequestGroup.action.cardinalityBehavior 1
RequestGroup.action.groupingBehavior 1
RequestGroup.action.precheckBehavior 1
RequestGroup.action.priority 1
RequestGroup.action.requiredBehavior 1
RequestGroup.action.selectionBehavior 1
RequestGroup.priority 1
ResearchElementDefinition.characteristic.participantEffectiveGroupMeasure 1
ResearchElementDefinition.characteristic.studyEffectiveGroupMeasure 1
ResearchElementDefinition.variableType 1
SearchParameter.xpathUsage 1
ServiceRequest.priority 1
Specimen.status 1
StructureDefinition.derivation 1
StructureDefinition.fhirVersion 1
StructureMap.group.rule.source.listMode 1
StructureMap.group.rule.target.contextType 1
StructureMap.group.rule.target.transform 1
Subscription.channel.payload 1
Substance.status 1
SupplyDelivery.status 1
SupplyRequest.priority 1
SupplyRequest.status 1
Task.priority 1
TerminologyCapabilities.codeSearch 1
TestScript.setup.action.assert.contentType 1
TestScript.setup.action.assert.direction 1
TestScript.setup.action.assert.operator 1
TestScript.setup.action.assert.requestMethod 1
TestScript.setup.action.assert.resource 1
TestScript.setup.action.assert.response 1
TestScript.setup.action.operation.accept 1
TestScript.setup.action.operation.contentType 1
TestScript.setup.action.operation.method 1
TestScript.setup.action.operation.resource 1
1..* 6
CapabilityStatement.format 1
CodeSystem.filter.operator 1
CoverageEligibilityRequest.purpose 1
CoverageEligibilityResponse.purpose 1
ImplementationGuide.fhirVersion 1
SearchParameter.base 1
1..1 185
Account.status 1
ActivityDefinition.participant.type 1
ActivityDefinition.status 1
AdverseEvent.actuality 1
Appointment.participant.status 1
Appointment.status 1
AppointmentResponse.participantStatus 1
Binary.contentType 1
Bundle.entry.request.method 1
Bundle.type 1
CapabilityStatement.document.mode 1
CapabilityStatement.fhirVersion 1
CapabilityStatement.kind 1
CapabilityStatement.messaging.supportedMessage.mode 1
CapabilityStatement.rest.interaction.code 1
CapabilityStatement.rest.mode 1
CapabilityStatement.rest.resource.interaction.code 1
CapabilityStatement.rest.resource.searchParam.type 1
CapabilityStatement.rest.resource.type 1
CapabilityStatement.status 1
CarePlan.activity.detail.status 1
CarePlan.intent 1
CarePlan.status 1
CatalogEntry.relatedEntry.relationtype 1
ChargeItem.status 1
ChargeItemDefinition.propertyGroup.priceComponent.type 1
ChargeItemDefinition.status 1
Claim.status 1
Claim.use 1
ClaimResponse.outcome 1
ClaimResponse.status 1
ClaimResponse.use 1
ClinicalImpression.status 1
CodeSystem.content 1
CodeSystem.property.type 1
CodeSystem.status 1
Communication.status 1
CommunicationRequest.status 1
CompartmentDefinition.code 1
CompartmentDefinition.resource.code 1
CompartmentDefinition.status 1
Composition.attester.mode 1
Composition.relatesTo.code 1
Composition.status 1
ConceptMap.group.element.target.equivalence 1
ConceptMap.group.unmapped.mode 1
ConceptMap.status 1
Consent.provision.data.meaning 1
Consent.status 1
Contract.contentDefinition.publicationStatus 1
Coverage.status 1
CoverageEligibilityRequest.status 1
CoverageEligibilityResponse.outcome 1
CoverageEligibilityResponse.status 1
DetectedIssue.status 1
Device.deviceName.type 1
DeviceDefinition.deviceName.type 1
DeviceMetric.category 1
DeviceRequest.intent 1
DeviceUseStatement.status 1
DiagnosticReport.status 1
DocumentManifest.status 1
DocumentReference.relatesTo.code 1
DocumentReference.status 1
EffectEvidenceSynthesis.status 1
Encounter.status 1
Encounter.statusHistory.status 1
Endpoint.status 1
EpisodeOfCare.status 1
EpisodeOfCare.statusHistory.status 1
EventDefinition.status 1
Evidence.status 1
EvidenceVariable.status 1
ExampleScenario.actor.type 1
ExampleScenario.instance.resourceType 1
ExampleScenario.status 1
ExplanationOfBenefit.outcome 1
ExplanationOfBenefit.status 1
ExplanationOfBenefit.use 1
FamilyMemberHistory.status 1
Flag.status 1
Goal.lifecycleStatus 1
GraphDefinition.link.target.compartment.code 1
GraphDefinition.link.target.compartment.rule 1
GraphDefinition.link.target.compartment.use 1
GraphDefinition.link.target.type 1
GraphDefinition.start 1
GraphDefinition.status 1
Group.type 1
GuidanceResponse.status 1
ImagingStudy.status 1
Immunization.status 1
ImmunizationEvaluation.status 1
ImplementationGuide.definition.page.generation 1
ImplementationGuide.definition.parameter.code 1
ImplementationGuide.global.type 1
ImplementationGuide.status 1
Invoice.lineItem.priceComponent.type 1
Invoice.status 1
Library.status 1
Linkage.item.type 1
List.mode 1
List.status 1
Measure.status 1
MeasureReport.status 1
MeasureReport.type 1
Media.status 1
MedicationAdministration.status 1
MedicationDispense.status 1
MedicationRequest.intent 1
MedicationRequest.status 1
MedicationStatement.status 1
MessageDefinition.focus.code 1
MessageDefinition.status 1
MessageHeader.response.code 1
MetadataResource.status 1
MolecularSequence.quality.type 1
MolecularSequence.repository.type 1
NamingSystem.kind 1
NamingSystem.status 1
NamingSystem.uniqueId.type 1
NutritionOrder.intent 1
NutritionOrder.status 1
Observation.status 1
OperationDefinition.kind 1
OperationDefinition.parameter.binding.strength 1
OperationDefinition.parameter.use 1
OperationDefinition.status 1
OperationOutcome.issue.code 1
OperationOutcome.issue.severity 1
Patient.link.type 1
PaymentNotice.status 1
PaymentReconciliation.status 1
PlanDefinition.action.condition.kind 1
PlanDefinition.action.participant.type 1
PlanDefinition.action.relatedAction.relationship 1
PlanDefinition.status 1
Procedure.status 1
Provenance.entity.role 1
Questionnaire.item.enableWhen.operator 1
Questionnaire.item.type 1
Questionnaire.status 1
QuestionnaireResponse.status 1
RequestGroup.action.condition.kind 1
RequestGroup.action.relatedAction.relationship 1
RequestGroup.intent 1
RequestGroup.status 1
ResearchDefinition.status 1
ResearchElementDefinition.status 1
ResearchElementDefinition.type 1
ResearchStudy.status 1
ResearchSubject.status 1
RiskAssessment.status 1
RiskEvidenceSynthesis.status 1
SearchParameter.status 1
SearchParameter.type 1
ServiceRequest.intent 1
ServiceRequest.status 1
Slot.status 1
SpecimenDefinition.typeTested.preference 1
StructureDefinition.context.type 1
StructureDefinition.kind 1
StructureDefinition.status 1
StructureMap.group.input.mode 1
StructureMap.group.typeMode 1
StructureMap.status 1
StructureMap.structure.mode 1
Subscription.channel.type 1
Subscription.status 1
Task.intent 1
Task.status 1
TerminologyCapabilities.kind 1
TerminologyCapabilities.status 1
TestReport.participant.type 1
TestReport.result 1
TestReport.setup.action.assert.result 1
TestReport.setup.action.operation.result 1
TestReport.status 1
TestScript.status 1
ValueSet.compose.include.filter.op 1
ValueSet.status 1
VerificationResult.status 1
VisionPrescription.lensSpecification.eye 1
VisionPrescription.lensSpecification.prism.base 1
VisionPrescription.status 1
CodeableConcept 614
example 432
0..* 152
ActivityDefinition.bodySite 1
ActivityDefinition.topic 1
Appointment.serviceCategory 1
Appointment.serviceType 1
AuditEvent.agent.role 1
BodyStructure.locationQualifier 1
CarePlan.activity.detail.reasonCode 1
CarePlan.activity.outcomeCodeableConcept 1
CarePlan.category 1
CareTeam.category 1
CareTeam.participant.role 1
CareTeam.reasonCode 1
ChargeItem.bodysite 1
ChargeItem.reason 1
Claim.diagnosis.type 1
Claim.item.detail.modifier 1
Claim.item.detail.programCode 1
Claim.item.detail.subDetail.modifier 1
Claim.item.detail.subDetail.programCode 1
Claim.item.modifier 1
Claim.item.programCode 1
Claim.item.subSite 1
Claim.procedure.type 1
ClaimResponse.addItem.detail.modifier 1
ClaimResponse.addItem.detail.subDetail.modifier 1
ClaimResponse.addItem.modifier 1
ClaimResponse.addItem.programCode 1
ClaimResponse.addItem.subSite 1
ClinicalImpression.prognosisCodeableConcept 1
Communication.category 1
Communication.medium 1
Communication.reasonCode 1
CommunicationRequest.category 1
CommunicationRequest.medium 1
CommunicationRequest.reasonCode 1
Composition.category 1
Composition.event.code 1
Condition.bodySite 1
Condition.evidence.code 1
Consent.provision.action 1
Consent.provision.code 1
Contract.subType 1
Contract.term.action.performerType 1
Contract.term.action.reasonCode 1
Contract.term.asset.context.code 1
Contract.term.asset.periodType 1
Contract.term.asset.subtype 1
Contract.term.asset.type 1
Contract.term.offer.decisionMode 1
CoverageEligibilityRequest.item.modifier 1
CoverageEligibilityResponse.insurance.item.authorizationSupporting 1
CoverageEligibilityResponse.insurance.item.modifier 1
DetectedIssue.evidence.code 1
DeviceDefinition.safety 1
DeviceRequest.reasonCode 1
DiagnosticReport.category 1
DiagnosticReport.conclusionCode 1
DocumentReference.category 1
DocumentReference.context.event 1
EffectEvidenceSynthesis.topic 1
Encounter.hospitalization.dietPreference 1
Encounter.type 1
EpisodeOfCare.type 1
EventDefinition.topic 1
Evidence.topic 1
EvidenceVariable.topic 1
ExplanationOfBenefit.addItem.detail.modifier 1
ExplanationOfBenefit.addItem.detail.subDetail.modifier 1
ExplanationOfBenefit.addItem.modifier 1
ExplanationOfBenefit.addItem.programCode 1
ExplanationOfBenefit.addItem.subSite 1
ExplanationOfBenefit.diagnosis.type 1
ExplanationOfBenefit.item.detail.modifier 1
ExplanationOfBenefit.item.detail.programCode 1
ExplanationOfBenefit.item.detail.subDetail.modifier 1
ExplanationOfBenefit.item.detail.subDetail.programCode 1
ExplanationOfBenefit.item.modifier 1
ExplanationOfBenefit.item.programCode 1
ExplanationOfBenefit.item.subSite 1
ExplanationOfBenefit.procedure.type 1
FamilyMemberHistory.reasonCode 1
Flag.category 1
Goal.category 1
Goal.outcomeCode 1
HealthcareService.category 1
HealthcareService.characteristic 1
HealthcareService.program 1
HealthcareService.referralMethod 1
HealthcareService.serviceProvisionCode 1
HealthcareService.type 1
ImagingStudy.reasonCode 1
Immunization.programEligibility 1
Immunization.protocolApplied.targetDisease 1
Immunization.reasonCode 1
Immunization.subpotentReason 1
ImmunizationEvaluation.doseStatusReason 1
ImmunizationRecommendation.recommendation.contraindicatedVaccineCode 1
ImmunizationRecommendation.recommendation.forecastReason 1
ImmunizationRecommendation.recommendation.vaccineCode 1
InsurancePlan.type 1
Library.topic 1
Measure.topic 1
Media.reasonCode 1
MedicationAdministration.reasonCode 1
MedicationAdministration.statusReason 1
MedicationDispense.substitution.reason 1
MedicationKnowledge.intendedRoute 1
MedicationRequest.category 1
MedicationRequest.reasonCode 1
MedicationStatement.reasonCode 1
MedicationStatement.statusReason 1
NutritionOrder.excludeFoodModifier 1
NutritionOrder.foodPreferenceModifier 1
NutritionOrder.oralDiet.fluidConsistencyType 1
NutritionOrder.oralDiet.type 1
Observation.referenceRange.appliesTo 1
ObservationDefinition.category 1
ObservationDefinition.qualifiedInterval.appliesTo 1
Organization.type 1
OrganizationAffiliation.code 1
PlanDefinition.goal.addresses 1
PlanDefinition.topic 1
PractitionerRole.code 1
Procedure.bodySite 1
Procedure.complication 1
Procedure.followUp 1
Procedure.reasonCode 1
Procedure.usedCode 1
Provenance.agent.role 1
ResearchDefinition.topic 1
ResearchElementDefinition.topic 1
ResearchStudy.category 1
ResearchStudy.condition 1
ResearchStudy.focus 1
ResearchStudy.keyword 1
RiskEvidenceSynthesis.topic 1
Schedule.serviceCategory 1
Schedule.serviceType 1
ServiceRequest.bodySite 1
ServiceRequest.category 1
ServiceRequest.locationCode 1
ServiceRequest.orderDetail 1
ServiceRequest.reasonCode 1
Slot.serviceCategory 1
Slot.serviceType 1
SpecimenDefinition.collection 1
SpecimenDefinition.patientPreparation 1
SpecimenDefinition.typeTested.rejectionCriterion 1
SupplyRequest.reasonCode 1
VerificationResult.primarySource.communicationMethod 1
VerificationResult.primarySource.type 1
VerificationResult.validationProcess 1
0..1 209
Account.type 1
ActivityDefinition.code 1
ActivityDefinition.participant.role 1
ActivityDefinition.product[x] 1
AdverseEvent.event 1
AdverseEvent.seriousness 1
AdverseEvent.suspectEntity.causality.assessment 1
AdverseEvent.suspectEntity.causality.method 1
AllergyIntolerance.code 1
AllergyIntolerance.reaction.exposureRoute 1
AllergyIntolerance.reaction.substance 1
Appointment.cancelationReason 1
BiologicallyDerivedProduct.processing.procedure 1
BiologicallyDerivedProduct.productCode 1
BodyStructure.location 1
BodyStructure.morphology 1
CarePlan.activity.detail.code 1
CarePlan.activity.detail.product[x] 1
ChargeItem.performer.function 1
ChargeItem.product[x] 1
ChargeItemDefinition.code 1
Claim.careTeam.qualification 1
Claim.careTeam.role 1
Claim.diagnosis.onAdmission 1
Claim.diagnosis.packageCode 1
Claim.fundsReserve 1
Claim.item.bodySite 1
Claim.item.category 1
Claim.item.detail.category 1
Claim.item.detail.revenue 1
Claim.item.detail.subDetail.category 1
Claim.item.detail.subDetail.revenue 1
Claim.item.location[x] 1
Claim.item.revenue 1
Claim.related.relationship 1
Claim.subType 1
Claim.supportingInfo.code 1
Claim.supportingInfo.reason 1
ClaimResponse.addItem.bodySite 1
ClaimResponse.addItem.location[x] 1
ClaimResponse.formCode 1
ClaimResponse.fundsReserve 1
ClaimResponse.item.adjudication.reason 1
ClaimResponse.payeeType 1
ClaimResponse.payment.adjustmentReason 1
ClaimResponse.subType 1
ClinicalImpression.code 1
ClinicalImpression.finding.itemCodeableConcept 1
ClinicalImpression.statusReason 1
Communication.statusReason 1
Communication.topic 1
CommunicationRequest.statusReason 1
Composition.section.code 1
Condition.code 1
Condition.stage.summary 1
Condition.stage.type 1
Contract.contentDefinition.subType 1
Contract.contentDerivative 1
Contract.expirationType 1
Contract.scope 1
Contract.term.action.performerRole 1
Contract.term.action.subject.role 1
Contract.term.asset.scope 1
Contract.term.offer.type 1
Contract.term.subType 1
Contract.term.type 1
Contract.type 1
CoverageEligibilityRequest.item.category 1
CoverageEligibilityRequest.item.diagnosis.diagnosis[x] 1
CoverageEligibilityRequest.item.productOrService 1
CoverageEligibilityRequest.priority 1
CoverageEligibilityResponse.form 1
CoverageEligibilityResponse.insurance.item.category 1
CoverageEligibilityResponse.insurance.item.network 1
CoverageEligibilityResponse.insurance.item.productOrService 1
CoverageEligibilityResponse.insurance.item.term 1
CoverageEligibilityResponse.insurance.item.unit 1
Device.type 1
DeviceDefinition.type 1
DeviceRequest.parameter.code 1
DeviceRequest.performerType 1
DeviceUseStatement.bodySite 1
DocumentManifest.type 1
DocumentReference.context.facilityType 1
DocumentReference.context.practiceSetting 1
Encounter.hospitalization.dischargeDisposition 1
Encounter.hospitalization.reAdmission 1
Encounter.location.physicalType 1
Encounter.priority 1
Encounter.serviceType 1
ExplanationOfBenefit.addItem.bodySite 1
ExplanationOfBenefit.addItem.location[x] 1
ExplanationOfBenefit.benefitBalance.network 1
ExplanationOfBenefit.benefitBalance.term 1
ExplanationOfBenefit.benefitBalance.unit 1
ExplanationOfBenefit.careTeam.qualification 1
ExplanationOfBenefit.careTeam.role 1
ExplanationOfBenefit.diagnosis.onAdmission 1
ExplanationOfBenefit.diagnosis.packageCode 1
ExplanationOfBenefit.formCode 1
ExplanationOfBenefit.fundsReserve 1
ExplanationOfBenefit.fundsReserveRequested 1
ExplanationOfBenefit.item.adjudication.reason 1
ExplanationOfBenefit.item.bodySite 1
ExplanationOfBenefit.item.category 1
ExplanationOfBenefit.item.detail.category 1
ExplanationOfBenefit.item.detail.revenue 1
ExplanationOfBenefit.item.detail.subDetail.category 1
ExplanationOfBenefit.item.detail.subDetail.revenue 1
ExplanationOfBenefit.item.location[x] 1
ExplanationOfBenefit.item.revenue 1
ExplanationOfBenefit.payee.type 1
ExplanationOfBenefit.payment.adjustmentReason 1
ExplanationOfBenefit.payment.type 1
ExplanationOfBenefit.priority 1
ExplanationOfBenefit.related.relationship 1
ExplanationOfBenefit.subType 1
ExplanationOfBenefit.supportingInfo.code 1
FamilyMemberHistory.condition.outcome 1
FamilyMemberHistory.dataAbsentReason 1
Goal.start[x] 1
Goal.target.detail[x] 1
Goal.target.measure 1
Group.code 1
HealthcareService.eligibility.code 1
Immunization.fundingSource 1
Immunization.reportOrigin 1
Immunization.route 1
Immunization.site 1
Immunization.statusReason 1
ImmunizationRecommendation.recommendation.targetDisease 1
List.code 1
List.entry.flag 1
Location.physicalType 1
Media.bodySite 1
Media.modality 1
Media.view 1
Medication.code 1
Medication.form 1
MedicationAdministration.dosage.method 1
MedicationAdministration.dosage.route 1
MedicationAdministration.dosage.site 1
MedicationAdministration.performer.function 1
MedicationDispense.performer.function 1
MedicationDispense.statusReason[x] 1
MedicationDispense.substitution.type 1
MedicationDispense.type 1
MedicationKnowledge.code 1
MedicationKnowledge.doseForm 1
MedicationKnowledge.drugCharacteristic.type 1
MedicationKnowledge.packaging.type 1
MedicationRequest.courseOfTherapyType 1
MedicationRequest.performerType 1
MedicationRequest.statusReason 1
MedicationRequest.substitution.reason 1
MessageHeader.reason 1
MolecularSequence.quality.method 1
MolecularSequence.quality.standardSequence 1
MolecularSequence.referenceSeq.chromosome 1
MolecularSequence.referenceSeq.referenceSeqId 1
NutritionOrder.enteralFormula.additiveType 1
NutritionOrder.enteralFormula.baseFormulaType 1
NutritionOrder.oralDiet.nutrient.modifier 1
NutritionOrder.oralDiet.texture.foodType 1
NutritionOrder.oralDiet.texture.modifier 1
NutritionOrder.supplement.type 1
Observation.bodySite 1
Observation.method 1
ObservationDefinition.method 1
OperationOutcome.issue.details 1
PaymentNotice.paymentStatus 1
PaymentReconciliation.formCode 1
PlanDefinition.action.participant.role 1
PlanDefinition.goal.category 1
PlanDefinition.goal.start 1
PlanDefinition.goal.target.measure 1
Procedure.category 1
Procedure.code 1
Procedure.outcome 1
Procedure.performer.function 1
Procedure.statusReason 1
ResearchStudy.phase 1
ResearchStudy.reasonStopped 1
RiskAssessment.method 1
RiskAssessment.prediction.outcome 1
RiskAssessment.prediction.qualitativeRisk 1
ServiceRequest.asNeeded[x] 1
ServiceRequest.code 1
ServiceRequest.performerType 1
Specimen.collection.bodySite 1
Specimen.collection.method 1
Specimen.container.additive[x] 1
Specimen.container.type 1
Specimen.processing.procedure 1
Specimen.type 1
SpecimenDefinition.typeCollected 1
SpecimenDefinition.typeTested.container.cap 1
SpecimenDefinition.typeTested.container.material 1
SpecimenDefinition.typeTested.container.type 1
SpecimenDefinition.typeTested.handling.temperatureQualifier 1
SpecimenDefinition.typeTested.type 1
SupplyDelivery.suppliedItem.item[x] 1
SupplyRequest.category 1
SupplyRequest.parameter.code 1
Task.businessStatus 1
Task.code 1
Task.reasonCode 1
Task.statusReason 1
VerificationResult.attestation.communicationMethod 1
1..* 2
AllergyIntolerance.reaction.manifestation 1
Endpoint.payloadType 1
1..1 69
Basic.code 1
ChargeItem.code 1
Claim.diagnosis.diagnosis[x] 1
Claim.item.detail.productOrService 1
Claim.item.detail.subDetail.productOrService 1
Claim.item.productOrService 1
Claim.payee.type 1
Claim.priority 1
Claim.procedure.procedure[x] 1
Claim.supportingInfo.category 1
ClaimResponse.addItem.detail.productOrService 1
ClaimResponse.addItem.detail.subDetail.productOrService 1
ClaimResponse.addItem.productOrService 1
ClaimResponse.error.code 1
ClaimResponse.item.adjudication.category 1
ClaimResponse.payment.type 1
ClaimResponse.total.category 1
ClinicalImpression.investigation.code 1
Contract.contentDefinition.type 1
Contract.term.action.intent 1
Contract.term.action.status 1
Contract.term.action.type 1
Contract.term.offer.party.role 1
Coverage.costToBeneficiary.exception.type 1
CoverageEligibilityResponse.error.code 1
CoverageEligibilityResponse.insurance.item.benefit.type 1
DeviceRequest.code[x] 1
ExplanationOfBenefit.addItem.detail.productOrService 1
ExplanationOfBenefit.addItem.detail.subDetail.productOrService 1
ExplanationOfBenefit.addItem.productOrService 1
ExplanationOfBenefit.benefitBalance.category 1
ExplanationOfBenefit.benefitBalance.financial.type 1
ExplanationOfBenefit.diagnosis.diagnosis[x] 1
ExplanationOfBenefit.item.adjudication.category 1
ExplanationOfBenefit.item.detail.productOrService 1
ExplanationOfBenefit.item.detail.subDetail.productOrService 1
ExplanationOfBenefit.item.productOrService 1
ExplanationOfBenefit.procedure.procedure[x] 1
ExplanationOfBenefit.supportingInfo.category 1
ExplanationOfBenefit.total.category 1
FamilyMemberHistory.condition.code 1
FamilyMemberHistory.relationship 1
Flag.code 1
Goal.description 1
Group.characteristic.code 1
Group.characteristic.value[x] 1
Immunization.vaccineCode 1
ImmunizationEvaluation.doseStatus 1
ImmunizationEvaluation.targetDisease 1
ImmunizationRecommendation.recommendation.dateCriterion.code 1
ImmunizationRecommendation.recommendation.forecastStatus 1
MedicationAdministration.medication[x] 1
MedicationDispense.medication[x] 1
MedicationRequest.medication[x] 1
MedicationRequest.substitution.allowed[x] 1
MedicationStatement.medication[x] 1
Observation.code 1
Observation.component.code 1
ObservationDefinition.code 1
PaymentReconciliation.detail.type 1
PlanDefinition.goal.description 1
Practitioner.qualification.code 1
SpecimenDefinition.typeTested.container.additive.additive[x] 1
Substance.code 1
Substance.ingredient.substance[x] 1
SupplyRequest.item[x] 1
Task.input.type 1
Task.output.type 1
VisionPrescription.lensSpecification.product 1
extensible 116
0..* 54
ActivityDefinition.jurisdiction 1
AdverseEvent.category 1
Appointment.participant.type 1
AppointmentResponse.participantType 1
AuditEvent.agent.purposeOfUse 1
AuditEvent.purposeOfEvent 1
CapabilityStatement.jurisdiction 1
CapabilityStatement.rest.security.service 1
ChargeItemDefinition.jurisdiction 1
CodeSystem.jurisdiction 1
ConceptMap.jurisdiction 1
Condition.category 1
Device.statusReason 1
DocumentReference.securityLabel 1
EffectEvidenceSynthesis.certainty.certaintySubcomponent.rating 1
EffectEvidenceSynthesis.certainty.rating 1
EffectEvidenceSynthesis.jurisdiction 1
Encounter.participant.type 1
EventDefinition.jurisdiction 1
Evidence.jurisdiction 1
EvidenceVariable.jurisdiction 1
ExampleScenario.jurisdiction 1
GraphDefinition.jurisdiction 1
ImagingStudy.procedureCode 1
ImplementationGuide.jurisdiction 1
Library.jurisdiction 1
Location.type 1
Measure.jurisdiction 1
Measure.supplementalData.usage 1
Measure.type 1
MessageDefinition.jurisdiction 1
MetadataResource.jurisdiction 1
NamingSystem.jurisdiction 1
Observation.component.interpretation 1
Observation.interpretation 1
OperationDefinition.jurisdiction 1
Patient.contact.relationship 1
PlanDefinition.jurisdiction 1
Provenance.reason 1
Questionnaire.jurisdiction 1
ResearchDefinition.jurisdiction 1
ResearchElementDefinition.jurisdiction 1
ResearchStudy.location 1
RiskEvidenceSynthesis.certainty.certaintySubcomponent.rating 1
RiskEvidenceSynthesis.certainty.rating 1
RiskEvidenceSynthesis.jurisdiction 1
SearchParameter.jurisdiction 1
Specimen.condition 1
StructureDefinition.jurisdiction 1
StructureMap.jurisdiction 1
Substance.category 1
TerminologyCapabilities.jurisdiction 1
TestScript.jurisdiction 1
ValueSet.jurisdiction 1
0..1 54
ActivityDefinition.subject[x] 1
AuditEvent.agent.type 1
Claim.accident.type 1
Consent.policyRule 1
Contract.legalState 1
Contract.term.offer.decision 1
Coverage.costToBeneficiary.type 1
Coverage.relationship 1
EffectEvidenceSynthesis.certainty.certaintySubcomponent.type 1
EffectEvidenceSynthesis.effectEstimate.precisionEstimate.type 1
EffectEvidenceSynthesis.effectEstimate.type 1
EffectEvidenceSynthesis.effectEstimate.variantState 1
EffectEvidenceSynthesis.resultsByExposure.variantState 1
EffectEvidenceSynthesis.studyType 1
EffectEvidenceSynthesis.synthesisType 1
EventDefinition.subject[x] 1
ExplanationOfBenefit.accident.type 1
FamilyMemberHistory.sex 1
ImagingStudy.series.performer.function 1
Immunization.performer.function 1
InsurancePlan.contact.purpose 1
Library.subject[x] 1
Measure.compositeScoring 1
Measure.group.population.code 1
Measure.scoring 1
Measure.subject[x] 1
MeasureReport.group.population.code 1
MeasureReport.group.stratifier.stratum.population.code 1
Media.type 1
NamingSystem.type 1
NutritionOrder.enteralFormula.routeofAdministration 1
Observation.component.dataAbsentReason 1
Observation.dataAbsentReason 1
ObservationDefinition.qualifiedInterval.context 1
ObservationDefinition.quantitativeDetails.customaryUnit 1
ObservationDefinition.quantitativeDetails.unit 1
Organization.contact.purpose 1
Patient.maritalStatus 1
PlanDefinition.action.subject[x] 1
PlanDefinition.action.type 1
PlanDefinition.subject[x] 1
PlanDefinition.type 1
Provenance.activity 1
Provenance.agent.type 1
RequestGroup.action.type 1
ResearchDefinition.subject[x] 1
ResearchElementDefinition.subject[x] 1
ResearchStudy.primaryPurposeType 1
RiskEvidenceSynthesis.certainty.certaintySubcomponent.type 1
RiskEvidenceSynthesis.riskEstimate.precisionEstimate.type 1
RiskEvidenceSynthesis.riskEstimate.type 1
RiskEvidenceSynthesis.studyType 1
RiskEvidenceSynthesis.synthesisType 1
Specimen.collection.fastingStatus[x] 1
1..* 1
Consent.category 1
1..1 7
Claim.type 1
ClaimResponse.type 1
Consent.provision.actor.role 1
Consent.scope 1
Coverage.class.type 1
ExplanationOfBenefit.type 1
Library.type 1
preferred 52
0..* 16
Appointment.reasonCode 1
Appointment.specialty 1
Encounter.hospitalization.specialArrangement 1
Encounter.hospitalization.specialCourtesy 1
Encounter.reasonCode 1
HealthcareService.communication 1
HealthcareService.specialty 1
Observation.category 1
OrganizationAffiliation.specialty 1
Practitioner.communication 1
PractitionerRole.specialty 1
RelatedPerson.relationship 1
Schedule.specialty 1
Slot.specialty 1
Task.performerType 1
VerificationResult.primarySource.pushTypeAvailable 1
0..1 30
Appointment.appointmentType 1
ClaimResponse.processNote.language 1
Composition.section.emptyReason 1
Composition.section.orderedBy 1
Condition.severity 1
Coverage.type 1
DetectedIssue.code 1
DeviceMetric.unit 1
DocumentReference.type 1
Encounter.diagnosis.use 1
Encounter.hospitalization.admitSource 1
EpisodeOfCare.diagnosis.role 1
ExplanationOfBenefit.processNote.language 1
Goal.achievementStatus 1
Goal.priority 1
List.emptyReason 1
List.orderedBy 1
MedicationAdministration.category 1
MedicationDispense.category 1
MedicationStatement.category 1
Observation.referenceRange.type 1
PlanDefinition.goal.priority 1
Procedure.focalDevice.action 1
ResearchStudy.objective.type 1
Slot.appointmentType 1
VerificationResult.failureAction 1
VerificationResult.need 1
VerificationResult.primarySource.canPushUpdates 1
VerificationResult.primarySource.validationStatus 1
VerificationResult.validationType 1
1..1 6
Composition.type 1
DetectedIssue.mitigation.action 1
DeviceMetric.type 1
DiagnosticReport.code 1
Patient.communication.language 1
RelatedPerson.communication.language 1
required 14
0..1 14
AdverseEvent.outcome 1
AdverseEvent.severity 1
AllergyIntolerance.clinicalStatus 1
AllergyIntolerance.verificationStatus 1
Condition.clinicalStatus 1
Condition.verificationStatus 1
EffectEvidenceSynthesis.effectEstimate.unitOfMeasure 1
InsurancePlan.plan.specificCost.benefit.cost.applicability 1
Measure.improvementNotation 1
MeasureReport.improvementNotation 1
MolecularSequence.structureVariant.variantType 1
ResearchElementDefinition.characteristic.unitOfMeasure 1
RiskEvidenceSynthesis.riskEstimate.unitOfMeasure 1
SupplyDelivery.type 1
Coding 42
example 14
0..* 4
Contract.term.securityLabel.category 1
Contract.term.securityLabel.control 1
Questionnaire.code 1
Questionnaire.item.code 1
0..1 4
ExplanationOfBenefit.supportingInfo.reason 1
ImagingStudy.series.bodySite 1
ImagingStudy.series.laterality 1
QuestionnaireResponse.item.answer.value[x] 1
1..1 6
Contract.term.securityLabel.classification 1
MessageDefinition.event[x] 1
MessageHeader.event[x] 1
Questionnaire.item.answerOption.value[x] 1
Questionnaire.item.enableWhen.answer[x] 1
Questionnaire.item.initial.value[x] 1
extensible 25
0..* 8
AuditEvent.entity.securityLabel 1
AuditEvent.source.type 1
AuditEvent.subtype 1
Consent.provision.class 1
Consent.provision.purpose 1
Consent.provision.securityLabel 1
ImagingStudy.modality 1
StructureDefinition.keyword 1
0..1 8
AuditEvent.agent.media 1
AuditEvent.entity.lifecycle 1
AuditEvent.entity.role 1
AuditEvent.entity.type 1
CodeSystem.concept.designation.use 1
Contract.term.asset.relationship 1
TestScript.setup.action.operation.type 1
ValueSet.compose.include.concept.designation.use 1
1..1 9
AuditEvent.type 1
CapabilityStatement.messaging.endpoint.protocol 1
Encounter.class 1
Encounter.classHistory.class 1
Endpoint.connectionType 1
ImagingStudy.series.instance.sopClass 1
ImagingStudy.series.modality 1
TestScript.destination.profile 1
TestScript.origin.profile 1
preferred 3
0..1 2
DocumentReference.content.format 1
Location.operationalStatus 1
1..1 1
Contract.signer.type 1
Grand Total 975