{
  "resourceType": "StructureDefinition",
  "url": "https://medikit.nl/fhir/StructureDefinition/medikit-connector-parameters-create-soep",
  "version": "0.1.0",
  "name": "MediKITConnector_Parameters_CreateSOEP",
  "title": "MediKITConnector-Parameters-CreateSOEP",
  "status": "active",
  "date": "2026-04-03",
  "fhirVersion": "4.0.1",
  "kind": "resource",
  "abstract": false,
  "type": "Parameters",
  "baseDefinition": "https://www.medikit.nl/fhir/StructureDefinition/medikit-connector-parameters-base",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "Parameters.parameter",
        "path": "Parameters.parameter",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "value"
            }
          ],
          "rules": "closed"
        },
        "min": 3,
        "constraint": [
          {
            "key": "soep-mandatory",
            "severity": "error",
            "human": "At least one of S, O, E, or P has to be provided.",
            "expression": "part.where(name.matches('[soep]-line')).exists()"
          }
        ]
      },
      {
        "id": "Parameters.parameter:S-Line",
        "path": "Parameters.parameter",
        "sliceName": "S-Line"
      },
      {
        "id": "Parameters.parameter:S-Line.name",
        "path": "Parameters.parameter.name",
        "fixedString": "s-line"
      },
      {
        "id": "Parameters.parameter:S-Line.value[x]",
        "path": "Parameters.parameter.value[x]",
        "min": 1,
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "Parameters.parameter:S-Line.resource",
        "path": "Parameters.parameter.resource",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:S-Line.part",
        "path": "Parameters.parameter.part",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:O-Line",
        "path": "Parameters.parameter",
        "sliceName": "O-Line"
      },
      {
        "id": "Parameters.parameter:O-Line.name",
        "path": "Parameters.parameter.name",
        "fixedString": "o-line"
      },
      {
        "id": "Parameters.parameter:O-Line.value[x]",
        "path": "Parameters.parameter.value[x]",
        "min": 1,
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "Parameters.parameter:O-Line.resource",
        "path": "Parameters.parameter.resource",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:O-Line.part",
        "path": "Parameters.parameter.part",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:E-Line",
        "path": "Parameters.parameter",
        "sliceName": "E-Line"
      },
      {
        "id": "Parameters.parameter:E-Line.name",
        "path": "Parameters.parameter.name",
        "fixedString": "e-line"
      },
      {
        "id": "Parameters.parameter:E-Line.value[x]",
        "path": "Parameters.parameter.value[x]",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:E-Line.resource",
        "path": "Parameters.parameter.resource",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:E-Line.part",
        "path": "Parameters.parameter.part",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "name"
            }
          ],
          "rules": "closed"
        },
        "min": 2,
        "max": "2"
      },
      {
        "id": "Parameters.parameter:E-Line.part:ICPC-Code",
        "path": "Parameters.parameter.part",
        "sliceName": "ICPC-Code",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Parameters.parameter:E-Line.part:ICPC-Code.extension",
        "path": "Parameters.parameter.part.extension",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:E-Line.part:ICPC-Code.modifierExtension",
        "path": "Parameters.parameter.part.modifierExtension",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:E-Line.part:ICPC-Code.name",
        "path": "Parameters.parameter.part.name",
        "fixedString": "icpc-code"
      },
      {
        "id": "Parameters.parameter:E-Line.part:ICPC-Code.value[x]",
        "path": "Parameters.parameter.part.value[x]",
        "min": 1,
        "type": [
          {
            "code": "Coding"
          }
        ]
      },
      {
        "id": "Parameters.parameter:E-Line.part:ICPC-Code.value[x].extension",
        "path": "Parameters.parameter.part.value[x].extension",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:E-Line.part:ICPC-Code.value[x].system",
        "path": "Parameters.parameter.part.value[x].system",
        "min": 1,
        "fixedUri": "http://hl7.org/fhir/sid/icpc-1-nl"
      },
      {
        "id": "Parameters.parameter:E-Line.part:ICPC-Code.value[x].code",
        "path": "Parameters.parameter.part.value[x].code",
        "min": 1
      },
      {
        "id": "Parameters.parameter:E-Line.part:ICPC-Code.value[x].display",
        "path": "Parameters.parameter.part.value[x].display",
        "min": 1
      },
      {
        "id": "Parameters.parameter:E-Line.part:ICPC-Code.resource",
        "path": "Parameters.parameter.part.resource",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:E-Line.part:ICPC-Code.part",
        "path": "Parameters.parameter.part.part",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:E-Line.part:text",
        "path": "Parameters.parameter.part",
        "sliceName": "text",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Parameters.parameter:E-Line.part:text.extension",
        "path": "Parameters.parameter.part.extension",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:E-Line.part:text.modifierExtension",
        "path": "Parameters.parameter.part.modifierExtension",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:E-Line.part:text.name",
        "path": "Parameters.parameter.part.name",
        "fixedString": "text"
      },
      {
        "id": "Parameters.parameter:E-Line.part:text.value[x]",
        "path": "Parameters.parameter.part.value[x]",
        "min": 1,
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "Parameters.parameter:E-Line.part:text.resource",
        "path": "Parameters.parameter.part.resource",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:E-Line.part:text.part",
        "path": "Parameters.parameter.part.part",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:P-Line",
        "path": "Parameters.parameter",
        "sliceName": "P-Line"
      },
      {
        "id": "Parameters.parameter:P-Line.name",
        "path": "Parameters.parameter.name",
        "fixedString": "p-line"
      },
      {
        "id": "Parameters.parameter:P-Line.value[x]",
        "path": "Parameters.parameter.value[x]",
        "min": 1,
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "Parameters.parameter:P-Line.resource",
        "path": "Parameters.parameter.resource",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:P-Line.part",
        "path": "Parameters.parameter.part",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:Author",
        "path": "Parameters.parameter",
        "sliceName": "Author",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Parameters.parameter:Author.name",
        "path": "Parameters.parameter.name",
        "fixedString": "author"
      },
      {
        "id": "Parameters.parameter:Author.value[x]",
        "path": "Parameters.parameter.value[x]",
        "min": 1,
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "http://hl7.org/fhir/StructureDefinition/PractitionerRole"
            ]
          }
        ]
      },
      {
        "id": "Parameters.parameter:Author.value[x].reference",
        "path": "Parameters.parameter.value[x].reference",
        "min": 1
      },
      {
        "id": "Parameters.parameter:Author.resource",
        "path": "Parameters.parameter.resource",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:Author.part",
        "path": "Parameters.parameter.part",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:Episode",
        "path": "Parameters.parameter",
        "sliceName": "Episode",
        "max": "1"
      },
      {
        "id": "Parameters.parameter:Episode.name",
        "path": "Parameters.parameter.name",
        "fixedString": "episode"
      },
      {
        "id": "Parameters.parameter:Episode.value[x]",
        "path": "Parameters.parameter.value[x]",
        "min": 1,
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "http://hl7.org/fhir/StructureDefinition/EpisodeOfCare"
            ]
          }
        ]
      },
      {
        "id": "Parameters.parameter:Episode.value[x].reference",
        "path": "Parameters.parameter.value[x].reference",
        "min": 1
      },
      {
        "id": "Parameters.parameter:Episode.resource",
        "path": "Parameters.parameter.resource",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:Episode.part",
        "path": "Parameters.parameter.part",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:CreateAsApproved",
        "path": "Parameters.parameter",
        "sliceName": "CreateAsApproved",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:CreateAsApproved.name",
        "path": "Parameters.parameter.name",
        "fixedString": "create-as-approved"
      },
      {
        "id": "Parameters.parameter:CreateAsApproved.value[x]",
        "path": "Parameters.parameter.value[x]",
        "min": 1,
        "type": [
          {
            "code": "boolean"
          }
        ]
      },
      {
        "id": "Parameters.parameter:CreateAsApproved.part",
        "path": "Parameters.parameter.part",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:AuthoredOn",
        "path": "Parameters.parameter",
        "sliceName": "AuthoredOn",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Parameters.parameter:AuthoredOn.name",
        "path": "Parameters.parameter.name",
        "fixedString": "authored-on"
      },
      {
        "id": "Parameters.parameter:AuthoredOn.value[x]",
        "path": "Parameters.parameter.value[x]",
        "min": 1,
        "type": [
          {
            "code": "instant"
          }
        ]
      },
      {
        "id": "Parameters.parameter:AuthoredOn.resource",
        "path": "Parameters.parameter.resource",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:AuthoredOn.part",
        "path": "Parameters.parameter.part",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:VektisCode",
        "path": "Parameters.parameter",
        "sliceName": "VektisCode",
        "max": "0"
      },
      {
        "id": "Parameters.parameter:VektisCode.name",
        "path": "Parameters.parameter.name",
        "fixedString": "vektis-code"
      },
      {
        "id": "Parameters.parameter:VektisCode.value[x]",
        "path": "Parameters.parameter.value[x]",
        "min": 1,
        "type": [
          {
            "code": "code"
          }
        ]
      },
      {
        "id": "Parameters.parameter:VektisCode.part",
        "path": "Parameters.parameter.part",
        "max": "0"
      }
    ]
  }
}