{
  "resourceType": "StructureDefinition",
  "id": "a1caabf4-fe18-4f9e-a294-1634fb2d0a96",
  "meta": {
    "lastUpdated": "2020-09-09T11:28:50.745+00:00"
  },
  "language": "Norsk",
  "url": "http://nhn.no/kj/fhir/StructureDefinition/KjConditionInfection",
  "name": "KjConditionInfection",
  "status": "active",
  "date": "2020-08-31T08:50:02.9699866+00:00",
  "fhirVersion": "4.0.1",
  "kind": "resource",
  "abstract": false,
  "type": "Condition",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Condition",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "Condition",
        "path": "Condition",
        "constraint": [
          {
            "key": "kj-ci-1",
            "severity": "error",
            "human": "If verificationStatus is confirmed, clinicalStatus must be active",
            "expression": "(verificationStatus.coding.where(system='http://terminology.hl7.org/CodeSystem/condition-ver-status' and code = 'confirmed').exists() and clinicalStatus.coding.where(system='http://terminology.hl7.org/CodeSystem/condition-clinical' and code='active').exists()) or (verificationStatus.coding.where(system='http://terminology.hl7.org/CodeSystem/condition-ver-status' and code = 'confirmed').exists().not())",
            "source": "http://nhn.no/kj/fhir/StructureDefinition/KjConditionInfection"
          },
          {
            "key": "kj-ci-2",
            "severity": "error",
            "human": "If verificationStatus is refuted, clinicalStatus must be inactive",
            "expression": "(verificationStatus.coding.where(system='http://terminology.hl7.org/CodeSystem/condition-ver-status' and code = 'refuted').exists() and clinicalStatus.coding.where(system='http://terminology.hl7.org/CodeSystem/condition-clinical' and code='inactive').exists()) or (verificationStatus.coding.where(system='http://terminology.hl7.org/CodeSystem/condition-ver-status' and code = 'refuted').exists().not() and clinicalStatus.coding.where(system='http://terminology.hl7.org/CodeSystem/condition-clinical' and code='inactive').exists().not())",
            "source": "http://nhn.no/kj/fhir/StructureDefinition/KjConditionInfection"
          }
        ]
      },
      {
        "id": "Condition.extension",
        "path": "Condition.extension",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "url"
            }
          ],
          "rules": "open"
        }
      },
      {
        "id": "Condition.extension:validUntil",
        "path": "Condition.extension",
        "sliceName": "validUntil",
        "max": "1",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "http://nhn.no/kj/fhir/StructureDefinition/KjValidUntil"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Condition.extension:validUntil.value[x]",
        "path": "Condition.extension.value[x]",
        "slicing": {
          "discriminator": [
            {
              "type": "type",
              "path": "$this"
            }
          ],
          "rules": "closed"
        }
      },
      {
        "id": "Condition.extension:updater",
        "path": "Condition.extension",
        "sliceName": "updater",
        "max": "1",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "http://nhn.no/kj/fhir/StructureDefinition/KjUpdater"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Condition.extension:updater.value[x]",
        "path": "Condition.extension.value[x]",
        "slicing": {
          "discriminator": [
            {
              "type": "type",
              "path": "$this"
            }
          ],
          "rules": "closed"
        }
      },
      {
        "id": "Condition.extension:updatedDateTime",
        "path": "Condition.extension",
        "sliceName": "updatedDateTime",
        "max": "1",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "http://nhn.no/kj/fhir/StructureDefinition/KjUpdatedDateTime"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Condition.extension:updatedDateTime.value[x]",
        "path": "Condition.extension.value[x]",
        "slicing": {
          "discriminator": [
            {
              "type": "type",
              "path": "$this"
            }
          ],
          "rules": "closed"
        }
      },
      {
        "id": "Condition.extension:sourceOfInformation",
        "path": "Condition.extension",
        "sliceName": "sourceOfInformation",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "http://nhn.no/kj/fhir/StructureDefinition/KjSourceOfInformation"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Condition.clinicalStatus",
        "path": "Condition.clinicalStatus",
        "short": "active | inactive",
        "definition": "The clinical status of the condition. Either active or inactive. Rest of the options should return an error.",
        "comment": "We only accept Active and Inactive. The other values would return an error message. Active = normal, Inactive = Disproved or delete.(based on verificationStatus)",
        "condition": [
          "kj-ci-1",
          "kj-ci-2"
        ],
        "mustSupport": true,
        "binding": {
          "strength": "required",
          "valueSet": "http://nhn.no/kj/fhir/ValueSet/ConditionClinicalStatus"
        }
      },
      {
        "id": "Condition.clinicalStatus.coding",
        "path": "Condition.clinicalStatus.coding",
        "min": 1,
        "max": "1",
        "binding": {
          "strength": "required",
          "valueSet": "http://nhn.no/kj/fhir/ValueSet/ConditionClinicalStatus"
        }
      },
      {
        "id": "Condition.clinicalStatus.coding.code",
        "path": "Condition.clinicalStatus.coding.code",
        "min": 1
      },
      {
        "id": "Condition.verificationStatus",
        "path": "Condition.verificationStatus",
        "short": "confirmed | refuted | entered-in-error",
        "definition": "Confirmed = normal, Refuted = avkreftet, Entered-in-error = slettet. Other codes should return an error msg.",
        "comment": "-",
        "min": 1,
        "condition": [
          "kj-ci-1",
          "kj-ci-2"
        ],
        "mustSupport": true,
        "binding": {
          "strength": "required",
          "valueSet": "http://nhn.no/kj/fhir/ValueSet/ConditionVerificationStatus"
        }
      },
      {
        "id": "Condition.verificationStatus.coding",
        "path": "Condition.verificationStatus.coding",
        "min": 1,
        "max": "1",
        "binding": {
          "strength": "required",
          "valueSet": "http://nhn.no/kj/fhir/ValueSet/ConditionVerificationStatus"
        }
      },
      {
        "id": "Condition.verificationStatus.coding.code",
        "path": "Condition.verificationStatus.coding.code",
        "min": 1
      },
      {
        "id": "Condition.category",
        "path": "Condition.category",
        "short": "Type of critical information",
        "definition": "Should choose the type of critical information. \r\nLegal code are:\r\n- 10 -> \"Smitte\"",
        "min": 1,
        "max": "1",
        "mustSupport": true,
        "binding": {
          "strength": "required",
          "valueSet": "http://nhn.no/kj/fhir/ValueSet/ConditionCategory"
        }
      },
      {
        "id": "Condition.category.coding",
        "path": "Condition.category.coding",
        "definition": "Valueset with codes from code system : urn:oid:2.16.578.1.12.4.1.1.7651\r\nValid codes to use:\r\n10 - Smitte",
        "min": 1,
        "max": "1",
        "binding": {
          "strength": "required",
          "valueSet": "http://nhn.no/kj/fhir/ValueSet/ConditionCategory"
        }
      },
      {
        "id": "Condition.category.coding.system",
        "path": "Condition.category.coding.system",
        "short": "Type of critical information",
        "definition": "This code system should denote what type of critical information is registered here.",
        "min": 1,
        "fixedUri": "http://nhn.no/kj/fhir/CodeSystem/SubcategoriesOfCriticalInformation"
      },
      {
        "id": "Condition.category.coding.code",
        "path": "Condition.category.coding.code",
        "short": "Infection",
        "min": 1,
        "fixedCode": "10"
      },
      {
        "id": "Condition.code",
        "path": "Condition.code",
        "min": 1,
        "mustSupport": true,
        "binding": {
          "strength": "preferred",
          "valueSet": "http://nhn.no/kj/fhir/ValueSet/TypeOfInfection"
        }
      },
      {
        "id": "Condition.code.coding",
        "path": "Condition.code.coding",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "system"
            }
          ],
          "rules": "open"
        }
      },
      {
        "id": "Condition.code.coding:TypeOfInfection",
        "path": "Condition.code.coding",
        "sliceName": "TypeOfInfection",
        "min": 1,
        "max": "1",
        "binding": {
          "strength": "required",
          "valueSet": "http://nhn.no/kj/fhir/ValueSet/TypeOfInfection"
        }
      },
      {
        "id": "Condition.code.coding:TypeOfInfection.system",
        "path": "Condition.code.coding.system",
        "fixedUri": "http://nhn.no/kj/fhir/CodeSystem/TypeOfInfection"
      },
      {
        "id": "Condition.code.coding:TypeOfInfection.code",
        "path": "Condition.code.coding.code",
        "min": 1
      },
      {
        "id": "Condition.subject",
        "path": "Condition.subject",
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "http://hl7.no/fhir/StructureDefinition/no-basis-Patient"
            ],
            "aggregation": [
              "referenced"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Condition.onset[x]",
        "path": "Condition.onset[x]",
        "type": [
          {
            "code": "dateTime"
          },
          {
            "code": "Age"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Condition.recordedDate",
        "path": "Condition.recordedDate",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "Condition.recorder",
        "path": "Condition.recorder",
        "definition": "Here one should use PractitionerRole, since it is important to register the practitoner and the organization the person worked at when this condition was registered.",
        "min": 1,
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "http://nhn.no/kj/fhir/StructureDefinition/KjPractitionerRole"
            ],
            "aggregation": [
              "contained"
            ]
          }
        ],
        "mustSupport": true
      }
    ]
  }
}