{
  "resourceType": "StructureDefinition",
  "id": "cmh-su-patient",
  "url": "https://ccim.on.ca/fhir/iar/StructureDefinition/cmh-su-patient",
  "name": "CMH-SU Patient",
  "status": "draft",
  "fhirVersion": "3.0.1",
  "kind": "resource",
  "abstract": false,
  "type": "Patient",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Patient",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "Patient.id",
        "path": "Patient.id",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "Patient.meta",
        "path": "Patient.meta",
        "mustSupport": true
      },
      {
        "id": "Patient.extension",
        "path": "Patient.extension",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "url"
            }
          ],
          "rules": "open"
        }
      },
      {
        "id": "Patient.extension:StatementOfDisagreement",
        "path": "Patient.extension",
        "sliceName": "StatementOfDisagreement",
        "max": "1",
        "type": [
          {
            "code": "Extension",
            "profile": "https://ccim.on.ca/fhir/mds/StructureDefinition/ext-statement-of-disagreement"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Patient.identifier",
        "path": "Patient.identifier",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "type.coding.system"
            },
            {
              "type": "value",
              "path": "type.coding.code"
            }
          ],
          "rules": "open"
        },
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "Patient.identifier:MRN",
        "path": "Patient.identifier",
        "sliceName": "MRN",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Patient.identifier:MRN.type",
        "path": "Patient.identifier.type",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "Patient.identifier:MRN.type.coding",
        "path": "Patient.identifier.type.coding",
        "min": 1,
        "max": "1",
        "mustSupport": true
      },
      {
        "id": "Patient.identifier:MRN.type.coding.system",
        "path": "Patient.identifier.type.coding.system",
        "min": 1,
        "fixedUri": "http://hl7.org/fhir/v2/0203",
        "mustSupport": true
      },
      {
        "id": "Patient.identifier:MRN.type.coding.code",
        "path": "Patient.identifier.type.coding.code",
        "min": 1,
        "fixedCode": "MR",
        "mustSupport": false
      },
      {
        "id": "Patient.identifier:JHN",
        "path": "Patient.identifier",
        "sliceName": "JHN",
        "max": "1",
        "mustSupport": true
      },
      {
        "id": "Patient.identifier:JHN.type",
        "path": "Patient.identifier.type",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "Patient.identifier:JHN.type.coding",
        "path": "Patient.identifier.type.coding",
        "min": 1,
        "max": "1",
        "mustSupport": true
      },
      {
        "id": "Patient.identifier:JHN.type.coding.system",
        "path": "Patient.identifier.type.coding.system",
        "min": 1,
        "fixedUri": "http://hl7.org/fhir/v2/0203"
      },
      {
        "id": "Patient.identifier:JHN.type.coding.code",
        "path": "Patient.identifier.type.coding.code",
        "min": 1,
        "fixedCode": "JHN"
      },
      {
        "id": "Patient.name",
        "path": "Patient.name",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "use"
            }
          ],
          "rules": "open"
        },
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "Patient.name:LEGAL",
        "path": "Patient.name",
        "sliceName": "LEGAL",
        "min": 1,
        "max": "1",
        "constraint": [
          {
            "key": "legal-name-constraint-01",
            "severity": "error",
            "human": "testing",
            "expression": "family.matches('^[a-zA-Z-]+$')"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Patient.name:LEGAL.use",
        "path": "Patient.name.use",
        "min": 1,
        "fixedCode": "usual",
        "mustSupport": true
      },
      {
        "id": "Patient.name:LEGAL.family",
        "path": "Patient.name.family",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "Patient.name:LEGAL.given",
        "path": "Patient.name.given",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "Patient.name:PREFERRED",
        "path": "Patient.name",
        "sliceName": "PREFERRED",
        "definition": "The name the client prefers to go by.",
        "max": "1",
        "constraint": [
          {
            "key": "preferred-name-constraint-01",
            "severity": "error",
            "human": "Family name or given name must be specified",
            "expression": "family.exists() or given.exists()"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Patient.name:PREFERRED.use",
        "path": "Patient.name.use",
        "min": 1,
        "fixedCode": "nickname",
        "mustSupport": true
      },
      {
        "id": "Patient.name:PREFERRED.family",
        "path": "Patient.name.family",
        "mustSupport": true
      },
      {
        "id": "Patient.name:PREFERRED.given",
        "path": "Patient.name.given",
        "max": "1",
        "mustSupport": true
      },
      {
        "id": "Patient.name:AT_BIRTH",
        "path": "Patient.name",
        "sliceName": "AT_BIRTH",
        "min": 1,
        "max": "1",
        "constraint": [
          {
            "key": "atbirth-constraint-01",
            "severity": "error",
            "human": "Only valid characters are allowed plus a hyphen, a period, and apostrophe.",
            "expression": "family.matches('^[a-zA-Z-]+$')"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Patient.name:AT_BIRTH.use",
        "path": "Patient.name.use",
        "min": 1,
        "fixedCode": "old",
        "mustSupport": true
      },
      {
        "id": "Patient.name:AT_BIRTH.family",
        "path": "Patient.name.family",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "Patient.telecom",
        "path": "Patient.telecom",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "system"
            }
          ],
          "rules": "open"
        },
        "mustSupport": true
      },
      {
        "id": "Patient.telecom:PHONE_NUMBER",
        "path": "Patient.telecom",
        "sliceName": "PHONE_NUMBER",
        "mustSupport": true
      },
      {
        "id": "Patient.telecom:PHONE_NUMBER.system",
        "path": "Patient.telecom.system",
        "min": 1,
        "fixedCode": "phone",
        "mustSupport": true
      },
      {
        "id": "Patient.telecom:PHONE_NUMBER.value",
        "path": "Patient.telecom.value",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "Patient.telecom:PHONE_NUMBER.use",
        "path": "Patient.telecom.use",
        "mustSupport": true
      },
      {
        "id": "Patient.telecom:PHONE_NUMBER.rank",
        "path": "Patient.telecom.rank",
        "mustSupport": true
      },
      {
        "id": "Patient.telecom:EMAIL",
        "path": "Patient.telecom",
        "sliceName": "EMAIL",
        "mustSupport": true
      },
      {
        "id": "Patient.telecom:EMAIL.system",
        "path": "Patient.telecom.system",
        "min": 1,
        "fixedCode": "email",
        "mustSupport": true
      },
      {
        "id": "Patient.telecom:EMAIL.value",
        "path": "Patient.telecom.value",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "Patient.telecom:EMAIL.use",
        "path": "Patient.telecom.use",
        "mustSupport": true
      },
      {
        "id": "Patient.telecom:EMAIL.rank",
        "path": "Patient.telecom.rank",
        "mustSupport": true
      },
      {
        "id": "Patient.address",
        "path": "Patient.address",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "Patient.address.use",
        "path": "Patient.address.use",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "Patient.address.line",
        "path": "Patient.address.line",
        "mustSupport": true
      },
      {
        "id": "Patient.address.city",
        "path": "Patient.address.city",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "Patient.address.state",
        "path": "Patient.address.state",
        "min": 1,
        "mustSupport": true,
        "binding": {
          "strength": "required",
          "valueSetReference": {
            "reference": "http://hl7.org/fhir/CodeSystem/canada-post-province-and-territory-codes"
          }
        }
      },
      {
        "id": "Patient.address.postalCode",
        "path": "Patient.address.postalCode",
        "mustSupport": true
      },
      {
        "id": "Patient.address.period",
        "path": "Patient.address.period",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "Patient.address.period.start",
        "path": "Patient.address.period.start",
        "min": 1,
        "mustSupport": true
      }
    ]
  }
}