Skip to content

MAP TX7 Patient Change List ​

FHIR R4 List of additions and removals of supported patient demographic and patient identifier values. Corrections use Remove/Add entries. This is primary payload content, not the SubmissionSet metadata List. Uses the HL7 targetElement extension to focus each Patient reference on a specific element. The Change List is the primary DocumentEntry, the updated Patient is a required secondary DocumentEntry, and the previous Patient is supporting pre-update information. FHIR metadata packaging uses one outer Collection Bundle with direct resource entries and no nested primary Bundle.

Canonical URLhttp://objects.directtrust.org/standards/artifacts/StructureDefinition/StructureDefinition-map-tx7-patient-change-list
NameMAPTX7PatientChangeList
Version0.2.1
Statusdraft
Date2026-10-12
PublisherDirectTrust
Kindresource
TypeList
Base Definitionhttp://hl7.org/fhir/StructureDefinition/List
FHIR Version4.0.1

Raw JSON

Differential Elements ​

PathMinMaxTypeShort
List
List.mode
List.code1
List.subject1Reference
List.subject.reference1
List.date1
List.entry1
List.entry.id1MAP change group and action
List.entry.flag1
List.entry.flag.coding11
List.entry.flag.coding.system1
List.entry.flag.coding.code1
List.entry.deleted1
List.entry.itemReference
List.entry.item.extension
List.entry.item.extension11Extension
List.entry.item.reference1
List.emptyReason0

Full Resource ​

json
{
  "resourceType": "StructureDefinition",
  "id": "StructureDefinition-map-tx7-patient-change-list",
  "url": "http://objects.directtrust.org/standards/artifacts/StructureDefinition/StructureDefinition-map-tx7-patient-change-list",
  "version": "0.2.1",
  "status": "draft",
  "date": "2026-10-12",
  "publisher": "DirectTrust",
  "name": "MAPTX7PatientChangeList",
  "title": "MAP TX7 Patient Change List",
  "description": "FHIR R4 List of additions and removals of supported patient demographic and patient identifier values. Corrections use Remove/Add entries. This is primary payload content, not the SubmissionSet metadata List. Uses the HL7 targetElement extension to focus each Patient reference on a specific element. The Change List is the primary DocumentEntry, the updated Patient is a required secondary DocumentEntry, and the previous Patient is supporting pre-update information. FHIR metadata packaging uses one outer Collection Bundle with direct resource entries and no nested primary Bundle.",
  "fhirVersion": "4.0.1",
  "kind": "resource",
  "abstract": false,
  "type": "List",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/List",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "List",
        "path": "List",
        "definition": "TX7 patient change list. Targets SHALL be populated elements within base R4 Patient resources carried as direct entries in the outer TX7 Collection Bundle when FHIR metadata is selected. Permitted targets are identifier, name, telecom, gender, birthDate, address, deceased[x], multipleBirth[x], and their value-bearing descendants. Extensions, contact, communication, generalPractitioner, managingOrganization, link and active are not change targets. Telecom is limited to telephone contact data. Identifier targets SHALL represent patient identifiers, not coverage/member or account identifiers. Metadata Source Patient Information remains pre-update. Patient carriers are evidence for individual operations, not instructions to replace entire records. Bundle assembly, patient identity correlation and correction grouping are specified in the TX7 Definition. The SubmissionSet metadata List and the Patient Change List are distinct resources. The SubmissionSet Source Patient Information mapping references the previous Patient; the change List subject references the updated Patient. The previous Patient includes matching demographics and every Remove target. The updated Patient includes identity and every Add target. Both represent the same person. Add-only and Remove-only exchanges retain both Patient roles. XD placement of the previous Patient and cross-file resolution are pending in the TX7 Definition; this profile does not claim to finalize those mappings. A correction group uses exactly one Remove and one Add with a shared positive integer N in entry ids change-N-remove and change-N-add; standalone operations have an unmatched group. Show Remove immediately before Add in a correction pair. Paired operations target the same logical field and occurrence and are validated/applied together. These are MAP conventions, not base FHIR element-id semantics.",
        "constraint": [
          {
            "key": "tx7-entry-id-unique",
            "severity": "error",
            "human": "Change entry ids are unique within the List.",
            "expression": "entry.id.isDistinct()"
          },
          {
            "key": "tx7-add-subject",
            "severity": "error",
            "human": "Add entries reference the updated Patient identified by List.subject.",
            "expression": "entry.where(flag.coding.where(system = 'http://objects.directtrust.org/standards/terminology/CodeSystem/DTCodeSystem' and code = 'add').exists()).all(item.reference = %resource.subject.reference)"
          },
          {
            "key": "tx7-remove-prior",
            "severity": "error",
            "human": "Remove entries reference a Patient distinct from the updated Patient.",
            "expression": "entry.where(flag.coding.where(system = 'http://objects.directtrust.org/standards/terminology/CodeSystem/DTCodeSystem' and code = 'remove').exists()).all(item.reference != %resource.subject.reference)"
          },
          {
            "key": "tx7-single-prior",
            "severity": "error",
            "human": "All Remove entries reference the same previous Patient.",
            "expression": "entry.where(flag.coding.where(system = 'http://objects.directtrust.org/standards/terminology/CodeSystem/DTCodeSystem' and code = 'remove').exists()).item.reference.distinct().count() <= 1"
          }
        ]
      },
      {
        "id": "List.mode",
        "path": "List.mode",
        "fixedCode": "changes"
      },
      {
        "id": "List.code",
        "path": "List.code",
        "min": 1,
        "patternCodeableConcept": {
          "coding": [
            {
              "system": "http://objects.directtrust.org/standards/terminology/CodeSystem/DTCodeSystem",
              "code": "patient-demographic-identifier-changes"
            }
          ]
        }
      },
      {
        "id": "List.subject",
        "path": "List.subject",
        "min": 1,
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "http://hl7.org/fhir/StructureDefinition/Patient"
            ]
          }
        ],
        "definition": "References the updated-information Patient, the required secondary information object. Add targets reference this same resource. It is not the pre-update matching Patient."
      },
      {
        "id": "List.subject.reference",
        "path": "List.subject.reference",
        "min": 1
      },
      {
        "id": "List.date",
        "path": "List.date",
        "min": 1
      },
      {
        "id": "List.entry",
        "path": "List.entry",
        "min": 1,
        "constraint": [
          {
            "key": "tx7-action-deleted",
            "severity": "error",
            "human": "Remove entries have deleted=true; Add entries have deleted=false.",
            "expression": "(flag.coding.where(system = 'http://objects.directtrust.org/standards/terminology/CodeSystem/DTCodeSystem' and code = 'remove').exists() implies deleted = true) and (flag.coding.where(system = 'http://objects.directtrust.org/standards/terminology/CodeSystem/DTCodeSystem' and code = 'add').exists() implies deleted = false)"
          },
          {
            "key": "tx7-entry-action-suffix",
            "severity": "error",
            "human": "The entry id action suffix agrees with its action code.",
            "expression": "(flag.coding.where(system = 'http://objects.directtrust.org/standards/terminology/CodeSystem/DTCodeSystem' and code = 'add').exists() implies id.endsWith('-add')) and (flag.coding.where(system = 'http://objects.directtrust.org/standards/terminology/CodeSystem/DTCodeSystem' and code = 'remove').exists() implies id.endsWith('-remove'))"
          }
        ]
      },
      {
        "id": "List.entry.id",
        "path": "List.entry.id",
        "min": 1,
        "short": "MAP change group and action",
        "definition": "Required MAP pairing convention: change-N-add or change-N-remove, with positive integer N unique to a change group within the List. Paired entries share N.",
        "constraint": [
          {
            "key": "tx7-entry-id-form",
            "severity": "error",
            "human": "Entry id follows the MAP change group convention.",
            "expression": "matches('^change-[1-9][0-9]*-(add|remove)$')"
          }
        ]
      },
      {
        "id": "List.entry.flag",
        "path": "List.entry.flag",
        "min": 1,
        "binding": {
          "strength": "required",
          "valueSet": "http://objects.directtrust.org/standards/fhir/ValueSet/map-patient-change-action"
        }
      },
      {
        "id": "List.entry.flag.coding",
        "path": "List.entry.flag.coding",
        "min": 1,
        "max": "1"
      },
      {
        "id": "List.entry.flag.coding.system",
        "path": "List.entry.flag.coding.system",
        "min": 1,
        "fixedUri": "http://objects.directtrust.org/standards/terminology/CodeSystem/DTCodeSystem"
      },
      {
        "id": "List.entry.flag.coding.code",
        "path": "List.entry.flag.coding.code",
        "min": 1
      },
      {
        "id": "List.entry.deleted",
        "path": "List.entry.deleted",
        "min": 1
      },
      {
        "id": "List.entry.item",
        "path": "List.entry.item",
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "http://hl7.org/fhir/StructureDefinition/Patient"
            ]
          }
        ],
        "definition": "Reference to the Patient resource carrying the actual value for this operation. The targetElement extension identifies the element within that Patient. Removal entries target the previous value; addition entries target the new value. Referenced resources and elements SHALL resolve within the same outer TX7 Collection Bundle when FHIR metadata is selected. Use the exact Bundle.entry.fullUrl as the resource reference. targetElement supplies the element id; do not append an element fragment to Reference.reference. XD cross-file references await an agreed packaging convention."
      },
      {
        "id": "List.entry.item.extension",
        "path": "List.entry.item.extension",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "url"
            }
          ],
          "ordered": false,
          "rules": "open"
        }
      },
      {
        "id": "List.entry.item.extension:targetElement",
        "path": "List.entry.item.extension",
        "sliceName": "targetElement",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "http://hl7.org/fhir/StructureDefinition/targetElement"
            ]
          }
        ]
      },
      {
        "id": "List.entry.item.reference",
        "path": "List.entry.item.reference",
        "min": 1
      },
      {
        "id": "List.emptyReason",
        "path": "List.emptyReason",
        "max": "0"
      }
    ]
  }
}