MII Implementation Guide Core Dataset Base
2026.0.0 - Release Germany

MII Implementation Guide Core Dataset Base - Local Development build (v2026.0.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

## Resource Profile: MII PR Prozedur Procedure

Official URL: https://www.medizininformatik-initiative.de/fhir/core/modul-prozedur/StructureDefinition/Procedure | Version: 2026.0.0
| Computable Name: MII_PR_Prozedur_Procedure

A procedure that is or was performed on or for a patient.

Example Usage Scenarios:

- Document procedures performed on patients using OPS (Operationen- und Prozedurenschlüssel) coding for billing and administrative purposes
- Record surgical interventions, diagnostic procedures, and therapeutic treatments in clinical care
- Support quality management and clinical research through standardized procedure documentation
- Enable procedure-based analyses and outcome research across healthcare facilities
- Represent procedures using SNOMED CT for semantic interoperability alongside OPS coding
- Link procedures to specific encounters for temporal and contextual documentation

### Profile Specific Implementation Guidance

This section provides detailed implementation guidance for the MII Procedure (Prozedur) Profile.

#### Coding Requirements

Mandatory Coding:

- `Procedure.code`: Mandatory coding using either OPS or SNOMED CT
- At least one coded procedure MUST be present
- Additional codings from other terminologies are OPTIONAL

OPS Coding:

- `Procedure.code:ops`: OPS (Operationen- und Prozedurenschlüssel) is the primary coding system for procedures in Germany
- See OPS Coding - German Base Profiles for detailed OPS coding requirements
- OPS codes include:
  - `Procedure.code:ops.coding.code`: Complete procedure code
  - `Procedure.code:ops.coding.system`: Code system (`http://fhir.de/CodeSystem/bfarm/ops`)
  - `Procedure.code:ops.coding.version`: OPS version year
  - `Procedure.code:ops.extension:seitenlokalisation`: Laterality extension

SNOMED CT Coding:

- `Procedure.code:sct`: SNOMED CT coding
- Can be used as primary coding or alongside OPS

#### Category Classification

##### Best Practice - SNOMED CT Categorization

Mandatory Categorization: `Procedure.category` SNOMED CT categorization based on the procedure code.

OPS Class Title Mapping: When the procedure is coded using OPS, the category SHOULD be derived by mapping OPS chapter/class titles to SNOMED CT concepts. See the Terminologies section in this IG for OPS-to-SNOMED CT category mappings.

Constraint proc-mii-1: This requirement is only relevant when the procedure is coded using OPS.

Purpose: Category classification enables:

- High-level procedure grouping for epidemiological analyses
- Filtering and browsing procedures by broad clinical categories
- Semantic consistency across differently coded procedures

#### Temporal Information

`Procedure.performed[x]`:

- Documents when the procedure was performed
- MAY be specified as `performedDateTime` (single point in time) or `performedPeriod` (start and end times)
- Use `performedPeriod` when both start and end times are known (e.g., surgical procedures with documented start/end)
- Use `performedDateTime` for point-in-time procedures or when only a single timestamp is available

`Procedure.extension:Dokumentationsdatum`:

- MII-specific extension for documentation date
- Represents when the procedure was documented/recorded in the system
- Distinct from `performed[x]` which represents when the procedure actually occurred
- Useful for auditing and temporal ordering of documentation

#### Body Site Documentation

##### Best Practice - Body Site vs. Laterality

Body Site Purpose: `Procedure.bodySite` provides detailed anatomical location coding for the procedure using SNOMED CT.

NOT for Laterality: `Procedure.bodySite` SHOULD NOT be used to represent laterality (left/right/bilateral). Laterality is a property of the procedure code itself.

Laterality Representation:

- For OPS codes: Use `Procedure.code:ops.extension:seitenlokalisation`
- For SNOMED CT: Laterality is inherent in the procedure concept (e.g., "Appendectomy of right appendix")

When to Use bodySite:

- To provide additional anatomical detail beyond what the code specifies
- To specify precise anatomical structures using SNOMED CT anatomy concepts

#### Procedure Intent

`Procedure.extension:Durchfuehrungsabsicht`:

- MII-specific extension for procedure intent/purpose
- Uses SNOMED CT codes to classify the clinical intent:
  - Therapeutic procedures
  - Diagnostic procedures
  - Prophylactic procedures
  - Palliative procedures
  - etc.
- Provides clinical context for the procedure beyond the procedural code itself

#### Encounter Context

##### Best Practice - Procedure-Encounter Relationships

Recommended Implementation:

Use `Procedure.encounter` to reference from the Procedure to the Encounter of type Abteilungskontakt (Department Contact). This approach establishes the general encounter context for the procedure, providing temporal and organizational context.

#### Status and Workflow

`Procedure.status`:

- No restrictions on status values (preparation, in-progress, on-hold, stopped, completed, entered-in-error, unknown)
- Most procedures in retrospective documentation will have `status='completed'`

#### Patient Reference

`Procedure.subject`:

- Reference to Patient MUST always be provided
- Procedures are inherently patient-specific and cannot exist without this reference

Usages:

- Examples for this Profile: Procedure/mii-exa-prozedur-imaging, Procedure/mii-exa-prozedur-procedure-2 and Procedure/mii-exa-prozedur-procedure
- CapabilityStatements using this Profile: MII CPS Prozedur CapabilityStatement

You can also check for usages in the FHIR IG Statistics

### Formal Views of Profile Content

Description Differentials, Snapshots, and other representations.

- Key Elements Table
- Differential Table
- Snapshot Table
- Statistics/References
- All

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Procedure | C | 0..* | Procedure | An action that is being or was performed on a patient Constraints: proc-mii-1
id | S Σ | 0..1 | id | Logical id of this artifact
meta | S Σ | 0..1 | Meta | Metadata about the resource
source | S Σ | 0..1 | uri | Identifies where the resource comes from
profile | S Σ | 0..* | canonical(StructureDefinition) | Profiles this resource claims to conform to
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
Slices for extension | S | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:Dokumentationsdatum | S | 0..1 | dateTime | Dokumentationsdatum URL: http://fhir.de/StructureDefinition/ProzedurDokumentationsdatum Constraints: ext-1
extension:durchfuehrungsabsicht | S | 0..1 | Coding | Durchführungsabsicht URL: https://www.medizininformatik-initiative.de/fhir/core/modul-prozedur/StructureDefinition/Durchfuehrungsabsicht Binding: MII VS Prozedur Durchführungsabsicht [SNOMED CT] (required)
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
status | ?!S Σ | 1..1 | code | Status Binding: EventStatus (required): A code specifying the state of the procedure.
category | S Σ | 0..1 | CodeableConcept | Kategorie Binding: ProcedureCategoryCodes(SNOMEDCT) (example): A code that classifies a procedure for searching, sorting and display purposes.
Slices for coding | Σ | 0..* | Coding | Code defined by a terminology system Slice: Unordered, Open by pattern:$this
coding:sct | S Σ | 0..1 | Coding | SNOMED CT Code Binding: MII VS Prozedur OPS Kategorien [SNOMED CT] (preferred) Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://snomed.info/sct
version |  | 0..1 | string | Version of the system - if relevant
code |  | 0..1 | code | Symbol in syntax defined by the system
display |  | 0..1 | string | Representation defined by the system
userSelected |  | 0..1 | boolean | If this coding was chosen directly by the user
system | S Σ | 1..1 | uri | Identity of the terminology system
code | S Σ | 1..1 | code | Symbol in syntax defined by the system
code | S Σ C | 1..1 | CodeableConcept | Code Binding: ProcedureCodes(SNOMEDCT) (example): A code to identify a specific procedure . Constraints: sct-ops-1
Slices for coding | S Σ | 1..* | Coding | Code defined by a terminology system Slice: Unordered, Open by pattern:$this
coding:ops | S Σ | 0..1 | CodingOPS | Operationen- und Prozedurenschlüssel (OPS) Code Binding: MII VS Prozedur OPS (required) Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://fhir.de/CodeSystem/bfarm/ops
version |  | 0..1 | string | Version of the system - if relevant
code |  | 0..1 | code | Symbol in syntax defined by the system
display |  | 0..1 | string | Representation defined by the system
userSelected |  | 0..1 | boolean | If this coding was chosen directly by the user
Slices for extension |  |  |  | Content/Rules for all slices
extension:Seitenlokalisation | S | 0..1 | Coding | Optional Extensions Element URL: http://fhir.de/StructureDefinition/seitenlokalisation Binding: KBV_VS_SFHIR_ICD_SEITENLOKALISATION (required)
system | S Σ | 1..1 | uri | Canonische CodeSystem URL für OPS Fixed Value: http://fhir.de/CodeSystem/bfarm/ops
version | S Σ | 1..1 | string | Die Jahresversion des OPS Kataloges. Angegeben wird immer die vierstellige Jahreszahl (z.B. "2017")
code | S Σ C | 1..1 | code | Der OPS-Code Constraints: ops-regex Example Einfacher OPS-Code: 5-470
coding:sct | S Σ | 0..1 | Coding | SNOMED CT Code Binding: MII VS Prozedur Prozeduren [SNOMED CT] (required) Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://snomed.info/sct
version |  | 0..1 | string | Version of the system - if relevant
code |  | 0..1 | code | Symbol in syntax defined by the system
display |  | 0..1 | string | Representation defined by the system
userSelected |  | 0..1 | boolean | If this coding was chosen directly by the user
system | S Σ | 1..1 | uri | Identity of the terminology system
code | S Σ | 1..1 | code | Symbol in syntax defined by the system
subject | S Σ | 1..1 | Reference(Patient | Group) | Who the procedure was performed on
encounter | S Σ | 0..1 | Reference(Encounter) | Kontakt (Aufenthaltsbezug)
Slices for performed[x] | S Σ | 1..1 |  | Durchführungsdatum Slice: Unordered, Closed by type:$this
performedDateTime |  |  | dateTime |
performedPeriod |  |  | Period |
performed[x]:performedDateTime | Σ | 0..1 | dateTime | When the procedure was performed
performed[x]:performedPeriod | Σ | 0..1 | Period | Durchführungszeitraum
bodySite | S Σ | 0..* | CodeableConcept | Körperstelle Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality.
Slices for coding | S Σ | 0..* | Coding | Code defined by a terminology system Slice: Unordered, Open by pattern:system
coding:snomed-ct | S Σ | 0..1 | Coding | SNOMED CT Code
system | S Σ | 1..1 | uri | Identity of the terminology system Required Pattern: http://snomed.info/sct
version | S Σ | 0..1 | string | Version of the system - if relevant
code | S Σ | 1..1 | code | Symbol in syntax defined by the system
note | S | 0..* | Annotation | Hinweis
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Procedure.status | Base | required | EventStatus | 📍4.0.1 | FHIR Std.
Procedure.category | Base | example | Procedure Category Codes (SNOMED CT) | 📍4.0.1 | FHIR Std.
Procedure.category.coding:sct | Base | preferred | MII VS Prozedur OPS Kategorien [SNOMED CT] | 📦2026.0.0 | This IG
Procedure.code | Base | example | Procedure Codes (SNOMED CT) | 📍4.0.1 | FHIR Std.
Procedure.code.coding:ops | Base | required | MII VS Prozedur OPS | 📦2026.0.0 | This IG
Procedure.code.coding:sct | Base | required | MII VS Prozedur Prozeduren [SNOMED CT] | 📦2026.0.0 | This IG
Procedure.bodySite | Base | example | SNOMED CT Body Structures | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
dom-2 | error | Procedure | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | Procedure | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource | `contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()`
dom-4 | error | Procedure | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated | `contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()`
dom-5 | error | Procedure | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | Procedure | A resource should have narrative for robust management | `text.`div`.exists()`
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children | `hasValue() or (children().count() > id.count())`
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`
ops-regex | warning | Procedure.code.coding:ops.code | In code sind nur gültige OPS-Codes ohne Zusätze erlaubt | `matches('^[1|3|5|6|8|9]-[a-zA-Z0-9]{3}([.][a-zA-Z0-9]{1,2})?$')`
proc-mii-1 | error | Procedure | Falls die Prozedur per OPS kodiert wird, MUSS eine SNOMED-CT kodierte Category abgebildet werden | `code.coding.where(system = 'http://fhir.de/CodeSystem/bfarm/ops').exists() implies category.coding.where(system = 'http://snomed.info/sct').exists()`
sct-ops-1 | error | Procedure.code | Eine Prozedur MUSS mit OPS oder SNOMED-CT kodiert werden. | `coding.where(system = 'http://snomed.info/sct').exists() or coding.where(system = 'http://fhir.de/CodeSystem/bfarm/ops').exists()`

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Procedure | C | 0..* | Procedure | An action that is being or was performed on a patient Constraints: proc-mii-1
id | S | 0..1 | id | Logical id of this artifact
meta | S | 0..1 | Meta | Metadata about the resource
source | S | 0..1 | uri | Identifies where the resource comes from
profile | S | 0..* | canonical(StructureDefinition) | Profiles this resource claims to conform to
Slices for extension | S | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:Dokumentationsdatum | S | 0..1 | dateTime | Dokumentationsdatum URL: http://fhir.de/StructureDefinition/ProzedurDokumentationsdatum
extension:durchfuehrungsabsicht | S | 0..1 | Coding | Durchführungsabsicht URL: https://www.medizininformatik-initiative.de/fhir/core/modul-prozedur/StructureDefinition/Durchfuehrungsabsicht Binding: MII VS Prozedur Durchführungsabsicht [SNOMED CT] (required)
status | S | 1..1 | code | Status
category | S | 0..1 | CodeableConcept | Kategorie
Slices for coding |  | 0..* | Coding | Code defined by a terminology system Slice: Unordered, Open by pattern:$this
coding:sct | S | 0..1 | Coding | SNOMED CT Code Binding: MII VS Prozedur OPS Kategorien [SNOMED CT] (preferred) Required Pattern: At least the following
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://snomed.info/sct
system | S | 1..1 | uri | Identity of the terminology system
code | S | 1..1 | code | Symbol in syntax defined by the system
code | S C | 1..1 | CodeableConcept | Code Constraints: sct-ops-1
Slices for coding | S | 1..* | Coding | Code defined by a terminology system Slice: Unordered, Open by pattern:$this
coding:ops | S | 0..1 | CodingOPS | Operationen- und Prozedurenschlüssel (OPS) Code Binding: MII VS Prozedur OPS (required) Required Pattern: At least the following
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://fhir.de/CodeSystem/bfarm/ops
Slices for extension |  |  |  | Content/Rules for all slices
extension:Seitenlokalisation | S | 0..1 | ExtensionSeitenlokalisation | Optional Extensions Element
system | S | 1..1 | uri | Canonische CodeSystem URL für OPS
version | S | 1..1 | string | Die Jahresversion des OPS Kataloges. Angegeben wird immer die vierstellige Jahreszahl (z.B. "2017")
code | S | 1..1 | code | Der OPS-Code
coding:sct | S | 0..1 | Coding | SNOMED CT Code Binding: MII VS Prozedur Prozeduren [SNOMED CT] (required) Required Pattern: At least the following
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://snomed.info/sct
system | S | 1..1 | uri | Identity of the terminology system
code | S | 1..1 | code | Symbol in syntax defined by the system
subject | S | 1..1 | Reference(Patient | Group) | Who the procedure was performed on
encounter | S | 0..1 | Reference(Encounter) | Kontakt (Aufenthaltsbezug)
Slices for performed[x] | S | 1..1 |  | Durchführungsdatum Slice: Unordered, Open by type:$this
performedDateTime |  |  | dateTime |
performedPeriod |  |  | Period |
performed[x]:performedDateTime |  | 0..1 | dateTime | When the procedure was performed
performed[x]:performedPeriod |  | 0..1 | Period | Durchführungszeitraum
bodySite | S | 0..* | CodeableConcept | Körperstelle
Slices for coding | S | 0..* | Coding | Code defined by a terminology system Slice: Unordered, Open by pattern:system
coding:snomed-ct | S | 0..1 | Coding | SNOMED CT Code
system | S | 1..1 | uri | Identity of the terminology system Required Pattern: http://snomed.info/sct
version | S | 0..1 | string | Version of the system - if relevant
code | S | 1..1 | code | Symbol in syntax defined by the system
note | S | 0..* | Annotation | Hinweis
Documentation for this format

#### Terminology Bindings (Differential)

Path | Status | Usage | ValueSet | Version | Source
Procedure.category.coding:sct | Base | preferred | MII VS Prozedur OPS Kategorien [SNOMED CT] | 📦2026.0.0 | This IG
Procedure.code.coding:ops | Base | required | MII VS Prozedur OPS | 📦2026.0.0 | This IG
Procedure.code.coding:sct | Base | required | MII VS Prozedur Prozeduren [SNOMED CT] | 📦2026.0.0 | This IG

#### Constraints

Id | Grade | Path(s) | Description | Expression
proc-mii-1 | error | Procedure | Falls die Prozedur per OPS kodiert wird, MUSS eine SNOMED-CT kodierte Category abgebildet werden | `code.coding.where(system = 'http://fhir.de/CodeSystem/bfarm/ops').exists() implies category.coding.where(system = 'http://snomed.info/sct').exists()`
sct-ops-1 | error | Procedure.code | Eine Prozedur MUSS mit OPS oder SNOMED-CT kodiert werden. | `coding.where(system = 'http://snomed.info/sct').exists() or coding.where(system = 'http://fhir.de/CodeSystem/bfarm/ops').exists()`

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Procedure | C | 0..* | Procedure | An action that is being or was performed on a patient Constraints: proc-mii-1
id | S Σ | 0..1 | id | Logical id of this artifact
meta | S Σ | 0..1 | Meta | Metadata about the resource
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
versionId | Σ | 0..1 | id | Version specific identifier
lastUpdated | Σ | 0..1 | instant | When the resource version last changed
source | S Σ | 0..1 | uri | Identifies where the resource comes from
profile | S Σ | 0..* | canonical(StructureDefinition) | Profiles this resource claims to conform to
security | Σ | 0..* | Coding | Security Labels applied to this resource Binding: All Security Labels (extensible): Security Labels from the Healthcare Privacy and Security Classification System.
tag | Σ | 0..* | Coding | Tags applied to this resource Binding: CommonTags (example): Codes that represent various types of tags, commonly workflow-related; e.g. "Needs review by Dr. Jones".
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
Additional Bindings | Purpose
AllLanguages | Max Binding
text |  | 0..1 | Narrative | Text summary of the resource, for human interpretation This profile does not constrain the narrative in regard to content, language, or traceability to data elements
contained |  | 0..* | Resource | Contained, inline Resources
Slices for extension | S | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:Dokumentationsdatum | S | 0..1 | dateTime | Dokumentationsdatum URL: http://fhir.de/StructureDefinition/ProzedurDokumentationsdatum Constraints: ext-1
extension:durchfuehrungsabsicht | S | 0..1 | Coding | Durchführungsabsicht URL: https://www.medizininformatik-initiative.de/fhir/core/modul-prozedur/StructureDefinition/Durchfuehrungsabsicht Binding: MII VS Prozedur Durchführungsabsicht [SNOMED CT] (required)
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | Σ | 0..* | Identifier | External Identifiers for this procedure
instantiatesCanonical | Σ | 0..* | canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire) | Instantiates FHIR protocol or definition
instantiatesUri | Σ | 0..* | uri | Instantiates external protocol or definition
basedOn | Σ | 0..* | Reference(CarePlan | ServiceRequest) | A request for this procedure
partOf | Σ | 0..* | Reference(Procedure | Observation | MedicationAdministration) | Part of referenced event
status | ?!S Σ | 1..1 | code | Status Binding: EventStatus (required): A code specifying the state of the procedure.
statusReason | Σ | 0..1 | CodeableConcept | Reason for current status Binding: ProcedureNotPerformedReason(SNOMED-CT) (example): A code that identifies the reason a procedure was not performed.
category | S Σ | 0..1 | CodeableConcept | Kategorie Binding: ProcedureCategoryCodes(SNOMEDCT) (example): A code that classifies a procedure for searching, sorting and display purposes.
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
Slices for coding | Σ | 0..* | Coding | Code defined by a terminology system Slice: Unordered, Open by pattern:$this
coding:sct | S Σ | 0..1 | Coding | SNOMED CT Code Binding: MII VS Prozedur OPS Kategorien [SNOMED CT] (preferred) Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://snomed.info/sct
version |  | 0..1 | string | Version of the system - if relevant
code |  | 0..1 | code | Symbol in syntax defined by the system
display |  | 0..1 | string | Representation defined by the system
userSelected |  | 0..1 | boolean | If this coding was chosen directly by the user
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
system | S Σ | 1..1 | uri | Identity of the terminology system
version | Σ | 0..1 | string | Version of the system - if relevant
code | S Σ | 1..1 | code | Symbol in syntax defined by the system
display | Σ | 0..1 | string | Representation defined by the system
userSelected | Σ | 0..1 | boolean | If this coding was chosen directly by the user
text | Σ | 0..1 | string | Plain text representation of the concept
code | S Σ C | 1..1 | CodeableConcept | Code Binding: ProcedureCodes(SNOMEDCT) (example): A code to identify a specific procedure . Constraints: sct-ops-1
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
Slices for coding | S Σ | 1..* | Coding | Code defined by a terminology system Slice: Unordered, Open by pattern:$this
coding:ops | S Σ | 0..1 | CodingOPS | Operationen- und Prozedurenschlüssel (OPS) Code Binding: MII VS Prozedur OPS (required) Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://fhir.de/CodeSystem/bfarm/ops
version |  | 0..1 | string | Version of the system - if relevant
code |  | 0..1 | code | Symbol in syntax defined by the system
display |  | 0..1 | string | Representation defined by the system
userSelected |  | 0..1 | boolean | If this coding was chosen directly by the user
id |  | 0..1 | string | Unique id for inter-element referencing
Slices for extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
extension:Seitenlokalisation | S | 0..1 | Coding | Optional Extensions Element URL: http://fhir.de/StructureDefinition/seitenlokalisation Binding: KBV_VS_SFHIR_ICD_SEITENLOKALISATION (required)
system | S Σ | 1..1 | uri | Canonische CodeSystem URL für OPS Fixed Value: http://fhir.de/CodeSystem/bfarm/ops
version | S Σ | 1..1 | string | Die Jahresversion des OPS Kataloges. Angegeben wird immer die vierstellige Jahreszahl (z.B. "2017")
code | S Σ C | 1..1 | code | Der OPS-Code Constraints: ops-regex Example Einfacher OPS-Code: 5-470
display | Σ | 0..1 | string | Representation defined by the system
userSelected | Σ | 0..1 | boolean | If this coding was chosen directly by the user
coding:sct | S Σ | 0..1 | Coding | SNOMED CT Code Binding: MII VS Prozedur Prozeduren [SNOMED CT] (required) Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://snomed.info/sct
version |  | 0..1 | string | Version of the system - if relevant
code |  | 0..1 | code | Symbol in syntax defined by the system
display |  | 0..1 | string | Representation defined by the system
userSelected |  | 0..1 | boolean | If this coding was chosen directly by the user
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
system | S Σ | 1..1 | uri | Identity of the terminology system
version | Σ | 0..1 | string | Version of the system - if relevant
code | S Σ | 1..1 | code | Symbol in syntax defined by the system
display | Σ | 0..1 | string | Representation defined by the system
userSelected | Σ | 0..1 | boolean | If this coding was chosen directly by the user
text | Σ | 0..1 | string | Plain text representation of the concept
subject | S Σ | 1..1 | Reference(Patient | Group) | Who the procedure was performed on
encounter | S Σ | 0..1 | Reference(Encounter) | Kontakt (Aufenthaltsbezug)
Slices for performed[x] | S Σ | 1..1 |  | Durchführungsdatum Slice: Unordered, Closed by type:$this
performedDateTime |  |  | dateTime |
performedPeriod |  |  | Period |
performed[x]:performedDateTime | Σ | 0..1 | dateTime | When the procedure was performed
performed[x]:performedPeriod | Σ | 0..1 | Period | Durchführungszeitraum
recorder | Σ | 0..1 | Reference(Patient | RelatedPerson | Practitioner | PractitionerRole) | Who recorded the procedure
asserter | Σ | 0..1 | Reference(Patient | RelatedPerson | Practitioner | PractitionerRole) | Person who asserts this procedure
performer | Σ | 0..* | BackboneElement | The people who performed the procedure
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
function | Σ | 0..1 | CodeableConcept | Type of performance Binding: ProcedurePerformerRoleCodes (example): A code that identifies the role of a performer of the procedure.
actor | Σ | 1..1 | Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device) | The reference to the practitioner
onBehalfOf |  | 0..1 | Reference(Organization) | Organization the device or practitioner was acting for
location | Σ | 0..1 | Reference(Location) | Where the procedure happened
reasonCode | Σ | 0..* | CodeableConcept | Coded reason procedure performed Binding: ProcedureReasonCodes (example): A code that identifies the reason a procedure is required.
reasonReference | Σ | 0..* | Reference(Condition | Observation | Procedure | DiagnosticReport | DocumentReference) | The justification that the procedure was performed
bodySite | S Σ | 0..* | CodeableConcept | Körperstelle Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality.
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
Slices for coding | S Σ | 0..* | Coding | Code defined by a terminology system Slice: Unordered, Open by pattern:system
coding:snomed-ct | S Σ | 0..1 | Coding | SNOMED CT Code
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
system | S Σ | 1..1 | uri | Identity of the terminology system Required Pattern: http://snomed.info/sct
version | S Σ | 0..1 | string | Version of the system - if relevant
code | S Σ | 1..1 | code | Symbol in syntax defined by the system
display | Σ | 0..1 | string | Representation defined by the system
userSelected | Σ | 0..1 | boolean | If this coding was chosen directly by the user
text | Σ | 0..1 | string | Plain text representation of the concept
outcome | Σ | 0..1 | CodeableConcept | The result of procedure Binding: ProcedureOutcomeCodes(SNOMEDCT) (example): An outcome of a procedure - whether it was resolved or otherwise.
report |  | 0..* | Reference(DiagnosticReport | DocumentReference | Composition) | Any report resulting from the procedure
complication |  | 0..* | CodeableConcept | Complication following the procedure Binding: Condition/Problem/DiagnosisCodes (example): Codes describing complications that resulted from a procedure.
complicationDetail |  | 0..* | Reference(Condition) | A condition that is a result of the procedure
followUp |  | 0..* | CodeableConcept | Instructions for follow up Binding: ProcedureFollowUpCodes(SNOMEDCT) (example): Specific follow up required for a procedure e.g. removal of sutures.
note | S | 0..* | Annotation | Hinweis
focalDevice |  | 0..* | BackboneElement | Manipulated, implanted, or removed device
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
action |  | 0..1 | CodeableConcept | Kind of change to device Binding: ProcedureDeviceActionCodes (preferred): A kind of change that happened to the device during the procedure.
manipulated |  | 1..1 | Reference(Device) | Device that was changed
usedReference |  | 0..* | Reference(Device | Medication | Substance) | Items used during procedure
usedCode |  | 0..* | CodeableConcept | Coded items used during the procedure Binding: FHIRDeviceTypes (example): Codes describing items used during a procedure.
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Procedure.meta.security | Base | extensible | SecurityLabels | 📍4.0.1 | FHIR Std.
Procedure.meta.tag | Base | example | Common Tags | 📍4.0.1 | FHIR Std.
Procedure.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std.
Procedure.status | Base | required | EventStatus | 📍4.0.1 | FHIR Std.
Procedure.statusReason | Base | example | Procedure Not Performed Reason (SNOMED-CT) | 📍4.0.1 | FHIR Std.
Procedure.category | Base | example | Procedure Category Codes (SNOMED CT) | 📍4.0.1 | FHIR Std.
Procedure.category.coding:sct | Base | preferred | MII VS Prozedur OPS Kategorien [SNOMED CT] | 📦2026.0.0 | This IG
Procedure.code | Base | example | Procedure Codes (SNOMED CT) | 📍4.0.1 | FHIR Std.
Procedure.code.coding:ops | Base | required | MII VS Prozedur OPS | 📦2026.0.0 | This IG
Procedure.code.coding:sct | Base | required | MII VS Prozedur Prozeduren [SNOMED CT] | 📦2026.0.0 | This IG
Procedure.performer.​function | Base | example | Procedure Performer Role Codes | 📍4.0.1 | FHIR Std.
Procedure.reasonCode | Base | example | Procedure Reason Codes | 📍4.0.1 | FHIR Std.
Procedure.bodySite | Base | example | SNOMED CT Body Structures | 📍4.0.1 | FHIR Std.
Procedure.outcome | Base | example | Procedure Outcome Codes (SNOMED CT) | 📍4.0.1 | FHIR Std.
Procedure.complication | Base | example | Condition/Problem/Diagnosis Codes | 📍4.0.1 | FHIR Std.
Procedure.followUp | Base | example | Procedure Follow up Codes (SNOMED CT) | 📍4.0.1 | FHIR Std.
Procedure.focalDevice.​action | Base | preferred | Procedure Device Action Codes | 📍4.0.1 | FHIR Std.
Procedure.usedCode | Base | example | FHIR Device Types | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
dom-2 | error | Procedure | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | Procedure | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource | `contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()`
dom-4 | error | Procedure | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated | `contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()`
dom-5 | error | Procedure | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | Procedure | A resource should have narrative for robust management | `text.`div`.exists()`
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children | `hasValue() or (children().count() > id.count())`
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`
ops-regex | warning | Procedure.code.coding:ops.code | In code sind nur gültige OPS-Codes ohne Zusätze erlaubt | `matches('^[1|3|5|6|8|9]-[a-zA-Z0-9]{3}([.][a-zA-Z0-9]{1,2})?$')`
proc-mii-1 | error | Procedure | Falls die Prozedur per OPS kodiert wird, MUSS eine SNOMED-CT kodierte Category abgebildet werden | `code.coding.where(system = 'http://fhir.de/CodeSystem/bfarm/ops').exists() implies category.coding.where(system = 'http://snomed.info/sct').exists()`
sct-ops-1 | error | Procedure.code | Eine Prozedur MUSS mit OPS oder SNOMED-CT kodiert werden. | `coding.where(system = 'http://snomed.info/sct').exists() or coding.where(system = 'http://fhir.de/CodeSystem/bfarm/ops').exists()`

Summary

Mandatory: 3 elements(6 nested mandatory elements)
Must-Support: 32 elements

Structures

This structure refers to these other structures:

- Coding-Profil für OPS (http://fhir.de/StructureDefinition/CodingOPS)

Extensions

This structure refers to these extensions:

- http://fhir.de/StructureDefinition/ProzedurDokumentationsdatum
- https://www.medizininformatik-initiative.de/fhir/core/modul-prozedur/StructureDefinition/Durchfuehrungsabsicht

Slices

This structure defines the following Slices:

- The element 1 is sliced based on the value of Procedure.category.coding
- The element 1 is sliced based on the value of Procedure.code.coding
- The element 1 is sliced based on the value of Procedure.performed[x]
- The element 1 is sliced based on the value of Procedure.bodySite.coding

Key Elements View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Procedure | C | 0..* | Procedure | An action that is being or was performed on a patient Constraints: proc-mii-1
id | S Σ | 0..1 | id | Logical id of this artifact
meta | S Σ | 0..1 | Meta | Metadata about the resource
source | S Σ | 0..1 | uri | Identifies where the resource comes from
profile | S Σ | 0..* | canonical(StructureDefinition) | Profiles this resource claims to conform to
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
Slices for extension | S | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:Dokumentationsdatum | S | 0..1 | dateTime | Dokumentationsdatum URL: http://fhir.de/StructureDefinition/ProzedurDokumentationsdatum Constraints: ext-1
extension:durchfuehrungsabsicht | S | 0..1 | Coding | Durchführungsabsicht URL: https://www.medizininformatik-initiative.de/fhir/core/modul-prozedur/StructureDefinition/Durchfuehrungsabsicht Binding: MII VS Prozedur Durchführungsabsicht [SNOMED CT] (required)
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
status | ?!S Σ | 1..1 | code | Status Binding: EventStatus (required): A code specifying the state of the procedure.
category | S Σ | 0..1 | CodeableConcept | Kategorie Binding: ProcedureCategoryCodes(SNOMEDCT) (example): A code that classifies a procedure for searching, sorting and display purposes.
Slices for coding | Σ | 0..* | Coding | Code defined by a terminology system Slice: Unordered, Open by pattern:$this
coding:sct | S Σ | 0..1 | Coding | SNOMED CT Code Binding: MII VS Prozedur OPS Kategorien [SNOMED CT] (preferred) Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://snomed.info/sct
version |  | 0..1 | string | Version of the system - if relevant
code |  | 0..1 | code | Symbol in syntax defined by the system
display |  | 0..1 | string | Representation defined by the system
userSelected |  | 0..1 | boolean | If this coding was chosen directly by the user
system | S Σ | 1..1 | uri | Identity of the terminology system
code | S Σ | 1..1 | code | Symbol in syntax defined by the system
code | S Σ C | 1..1 | CodeableConcept | Code Binding: ProcedureCodes(SNOMEDCT) (example): A code to identify a specific procedure . Constraints: sct-ops-1
Slices for coding | S Σ | 1..* | Coding | Code defined by a terminology system Slice: Unordered, Open by pattern:$this
coding:ops | S Σ | 0..1 | CodingOPS | Operationen- und Prozedurenschlüssel (OPS) Code Binding: MII VS Prozedur OPS (required) Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://fhir.de/CodeSystem/bfarm/ops
version |  | 0..1 | string | Version of the system - if relevant
code |  | 0..1 | code | Symbol in syntax defined by the system
display |  | 0..1 | string | Representation defined by the system
userSelected |  | 0..1 | boolean | If this coding was chosen directly by the user
Slices for extension |  |  |  | Content/Rules for all slices
extension:Seitenlokalisation | S | 0..1 | Coding | Optional Extensions Element URL: http://fhir.de/StructureDefinition/seitenlokalisation Binding: KBV_VS_SFHIR_ICD_SEITENLOKALISATION (required)
system | S Σ | 1..1 | uri | Canonische CodeSystem URL für OPS Fixed Value: http://fhir.de/CodeSystem/bfarm/ops
version | S Σ | 1..1 | string | Die Jahresversion des OPS Kataloges. Angegeben wird immer die vierstellige Jahreszahl (z.B. "2017")
code | S Σ C | 1..1 | code | Der OPS-Code Constraints: ops-regex Example Einfacher OPS-Code: 5-470
coding:sct | S Σ | 0..1 | Coding | SNOMED CT Code Binding: MII VS Prozedur Prozeduren [SNOMED CT] (required) Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://snomed.info/sct
version |  | 0..1 | string | Version of the system - if relevant
code |  | 0..1 | code | Symbol in syntax defined by the system
display |  | 0..1 | string | Representation defined by the system
userSelected |  | 0..1 | boolean | If this coding was chosen directly by the user
system | S Σ | 1..1 | uri | Identity of the terminology system
code | S Σ | 1..1 | code | Symbol in syntax defined by the system
subject | S Σ | 1..1 | Reference(Patient | Group) | Who the procedure was performed on
encounter | S Σ | 0..1 | Reference(Encounter) | Kontakt (Aufenthaltsbezug)
Slices for performed[x] | S Σ | 1..1 |  | Durchführungsdatum Slice: Unordered, Closed by type:$this
performedDateTime |  |  | dateTime |
performedPeriod |  |  | Period |
performed[x]:performedDateTime | Σ | 0..1 | dateTime | When the procedure was performed
performed[x]:performedPeriod | Σ | 0..1 | Period | Durchführungszeitraum
bodySite | S Σ | 0..* | CodeableConcept | Körperstelle Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality.
Slices for coding | S Σ | 0..* | Coding | Code defined by a terminology system Slice: Unordered, Open by pattern:system
coding:snomed-ct | S Σ | 0..1 | Coding | SNOMED CT Code
system | S Σ | 1..1 | uri | Identity of the terminology system Required Pattern: http://snomed.info/sct
version | S Σ | 0..1 | string | Version of the system - if relevant
code | S Σ | 1..1 | code | Symbol in syntax defined by the system
note | S | 0..* | Annotation | Hinweis
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Procedure.status | Base | required | EventStatus | 📍4.0.1 | FHIR Std.
Procedure.category | Base | example | Procedure Category Codes (SNOMED CT) | 📍4.0.1 | FHIR Std.
Procedure.category.coding:sct | Base | preferred | MII VS Prozedur OPS Kategorien [SNOMED CT] | 📦2026.0.0 | This IG
Procedure.code | Base | example | Procedure Codes (SNOMED CT) | 📍4.0.1 | FHIR Std.
Procedure.code.coding:ops | Base | required | MII VS Prozedur OPS | 📦2026.0.0 | This IG
Procedure.code.coding:sct | Base | required | MII VS Prozedur Prozeduren [SNOMED CT] | 📦2026.0.0 | This IG
Procedure.bodySite | Base | example | SNOMED CT Body Structures | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
dom-2 | error | Procedure | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | Procedure | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource | `contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()`
dom-4 | error | Procedure | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated | `contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()`
dom-5 | error | Procedure | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | Procedure | A resource should have narrative for robust management | `text.`div`.exists()`
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children | `hasValue() or (children().count() > id.count())`
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`
ops-regex | warning | Procedure.code.coding:ops.code | In code sind nur gültige OPS-Codes ohne Zusätze erlaubt | `matches('^[1|3|5|6|8|9]-[a-zA-Z0-9]{3}([.][a-zA-Z0-9]{1,2})?$')`
proc-mii-1 | error | Procedure | Falls die Prozedur per OPS kodiert wird, MUSS eine SNOMED-CT kodierte Category abgebildet werden | `code.coding.where(system = 'http://fhir.de/CodeSystem/bfarm/ops').exists() implies category.coding.where(system = 'http://snomed.info/sct').exists()`
sct-ops-1 | error | Procedure.code | Eine Prozedur MUSS mit OPS oder SNOMED-CT kodiert werden. | `coding.where(system = 'http://snomed.info/sct').exists() or coding.where(system = 'http://fhir.de/CodeSystem/bfarm/ops').exists()`

Differential View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Procedure | C | 0..* | Procedure | An action that is being or was performed on a patient Constraints: proc-mii-1
id | S | 0..1 | id | Logical id of this artifact
meta | S | 0..1 | Meta | Metadata about the resource
source | S | 0..1 | uri | Identifies where the resource comes from
profile | S | 0..* | canonical(StructureDefinition) | Profiles this resource claims to conform to
Slices for extension | S | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:Dokumentationsdatum | S | 0..1 | dateTime | Dokumentationsdatum URL: http://fhir.de/StructureDefinition/ProzedurDokumentationsdatum
extension:durchfuehrungsabsicht | S | 0..1 | Coding | Durchführungsabsicht URL: https://www.medizininformatik-initiative.de/fhir/core/modul-prozedur/StructureDefinition/Durchfuehrungsabsicht Binding: MII VS Prozedur Durchführungsabsicht [SNOMED CT] (required)
status | S | 1..1 | code | Status
category | S | 0..1 | CodeableConcept | Kategorie
Slices for coding |  | 0..* | Coding | Code defined by a terminology system Slice: Unordered, Open by pattern:$this
coding:sct | S | 0..1 | Coding | SNOMED CT Code Binding: MII VS Prozedur OPS Kategorien [SNOMED CT] (preferred) Required Pattern: At least the following
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://snomed.info/sct
system | S | 1..1 | uri | Identity of the terminology system
code | S | 1..1 | code | Symbol in syntax defined by the system
code | S C | 1..1 | CodeableConcept | Code Constraints: sct-ops-1
Slices for coding | S | 1..* | Coding | Code defined by a terminology system Slice: Unordered, Open by pattern:$this
coding:ops | S | 0..1 | CodingOPS | Operationen- und Prozedurenschlüssel (OPS) Code Binding: MII VS Prozedur OPS (required) Required Pattern: At least the following
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://fhir.de/CodeSystem/bfarm/ops
Slices for extension |  |  |  | Content/Rules for all slices
extension:Seitenlokalisation | S | 0..1 | ExtensionSeitenlokalisation | Optional Extensions Element
system | S | 1..1 | uri | Canonische CodeSystem URL für OPS
version | S | 1..1 | string | Die Jahresversion des OPS Kataloges. Angegeben wird immer die vierstellige Jahreszahl (z.B. "2017")
code | S | 1..1 | code | Der OPS-Code
coding:sct | S | 0..1 | Coding | SNOMED CT Code Binding: MII VS Prozedur Prozeduren [SNOMED CT] (required) Required Pattern: At least the following
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://snomed.info/sct
system | S | 1..1 | uri | Identity of the terminology system
code | S | 1..1 | code | Symbol in syntax defined by the system
subject | S | 1..1 | Reference(Patient | Group) | Who the procedure was performed on
encounter | S | 0..1 | Reference(Encounter) | Kontakt (Aufenthaltsbezug)
Slices for performed[x] | S | 1..1 |  | Durchführungsdatum Slice: Unordered, Open by type:$this
performedDateTime |  |  | dateTime |
performedPeriod |  |  | Period |
performed[x]:performedDateTime |  | 0..1 | dateTime | When the procedure was performed
performed[x]:performedPeriod |  | 0..1 | Period | Durchführungszeitraum
bodySite | S | 0..* | CodeableConcept | Körperstelle
Slices for coding | S | 0..* | Coding | Code defined by a terminology system Slice: Unordered, Open by pattern:system
coding:snomed-ct | S | 0..1 | Coding | SNOMED CT Code
system | S | 1..1 | uri | Identity of the terminology system Required Pattern: http://snomed.info/sct
version | S | 0..1 | string | Version of the system - if relevant
code | S | 1..1 | code | Symbol in syntax defined by the system
note | S | 0..* | Annotation | Hinweis
Documentation for this format

#### Terminology Bindings (Differential)

Path | Status | Usage | ValueSet | Version | Source
Procedure.category.coding:sct | Base | preferred | MII VS Prozedur OPS Kategorien [SNOMED CT] | 📦2026.0.0 | This IG
Procedure.code.coding:ops | Base | required | MII VS Prozedur OPS | 📦2026.0.0 | This IG
Procedure.code.coding:sct | Base | required | MII VS Prozedur Prozeduren [SNOMED CT] | 📦2026.0.0 | This IG

#### Constraints

Id | Grade | Path(s) | Description | Expression
proc-mii-1 | error | Procedure | Falls die Prozedur per OPS kodiert wird, MUSS eine SNOMED-CT kodierte Category abgebildet werden | `code.coding.where(system = 'http://fhir.de/CodeSystem/bfarm/ops').exists() implies category.coding.where(system = 'http://snomed.info/sct').exists()`
sct-ops-1 | error | Procedure.code | Eine Prozedur MUSS mit OPS oder SNOMED-CT kodiert werden. | `coding.where(system = 'http://snomed.info/sct').exists() or coding.where(system = 'http://fhir.de/CodeSystem/bfarm/ops').exists()`

Snapshot ViewView

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Procedure | C | 0..* | Procedure | An action that is being or was performed on a patient Constraints: proc-mii-1
id | S Σ | 0..1 | id | Logical id of this artifact
meta | S Σ | 0..1 | Meta | Metadata about the resource
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
versionId | Σ | 0..1 | id | Version specific identifier
lastUpdated | Σ | 0..1 | instant | When the resource version last changed
source | S Σ | 0..1 | uri | Identifies where the resource comes from
profile | S Σ | 0..* | canonical(StructureDefinition) | Profiles this resource claims to conform to
security | Σ | 0..* | Coding | Security Labels applied to this resource Binding: All Security Labels (extensible): Security Labels from the Healthcare Privacy and Security Classification System.
tag | Σ | 0..* | Coding | Tags applied to this resource Binding: CommonTags (example): Codes that represent various types of tags, commonly workflow-related; e.g. "Needs review by Dr. Jones".
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
Additional Bindings | Purpose
AllLanguages | Max Binding
text |  | 0..1 | Narrative | Text summary of the resource, for human interpretation This profile does not constrain the narrative in regard to content, language, or traceability to data elements
contained |  | 0..* | Resource | Contained, inline Resources
Slices for extension | S | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:Dokumentationsdatum | S | 0..1 | dateTime | Dokumentationsdatum URL: http://fhir.de/StructureDefinition/ProzedurDokumentationsdatum Constraints: ext-1
extension:durchfuehrungsabsicht | S | 0..1 | Coding | Durchführungsabsicht URL: https://www.medizininformatik-initiative.de/fhir/core/modul-prozedur/StructureDefinition/Durchfuehrungsabsicht Binding: MII VS Prozedur Durchführungsabsicht [SNOMED CT] (required)
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | Σ | 0..* | Identifier | External Identifiers for this procedure
instantiatesCanonical | Σ | 0..* | canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire) | Instantiates FHIR protocol or definition
instantiatesUri | Σ | 0..* | uri | Instantiates external protocol or definition
basedOn | Σ | 0..* | Reference(CarePlan | ServiceRequest) | A request for this procedure
partOf | Σ | 0..* | Reference(Procedure | Observation | MedicationAdministration) | Part of referenced event
status | ?!S Σ | 1..1 | code | Status Binding: EventStatus (required): A code specifying the state of the procedure.
statusReason | Σ | 0..1 | CodeableConcept | Reason for current status Binding: ProcedureNotPerformedReason(SNOMED-CT) (example): A code that identifies the reason a procedure was not performed.
category | S Σ | 0..1 | CodeableConcept | Kategorie Binding: ProcedureCategoryCodes(SNOMEDCT) (example): A code that classifies a procedure for searching, sorting and display purposes.
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
Slices for coding | Σ | 0..* | Coding | Code defined by a terminology system Slice: Unordered, Open by pattern:$this
coding:sct | S Σ | 0..1 | Coding | SNOMED CT Code Binding: MII VS Prozedur OPS Kategorien [SNOMED CT] (preferred) Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://snomed.info/sct
version |  | 0..1 | string | Version of the system - if relevant
code |  | 0..1 | code | Symbol in syntax defined by the system
display |  | 0..1 | string | Representation defined by the system
userSelected |  | 0..1 | boolean | If this coding was chosen directly by the user
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
system | S Σ | 1..1 | uri | Identity of the terminology system
version | Σ | 0..1 | string | Version of the system - if relevant
code | S Σ | 1..1 | code | Symbol in syntax defined by the system
display | Σ | 0..1 | string | Representation defined by the system
userSelected | Σ | 0..1 | boolean | If this coding was chosen directly by the user
text | Σ | 0..1 | string | Plain text representation of the concept
code | S Σ C | 1..1 | CodeableConcept | Code Binding: ProcedureCodes(SNOMEDCT) (example): A code to identify a specific procedure . Constraints: sct-ops-1
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
Slices for coding | S Σ | 1..* | Coding | Code defined by a terminology system Slice: Unordered, Open by pattern:$this
coding:ops | S Σ | 0..1 | CodingOPS | Operationen- und Prozedurenschlüssel (OPS) Code Binding: MII VS Prozedur OPS (required) Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://fhir.de/CodeSystem/bfarm/ops
version |  | 0..1 | string | Version of the system - if relevant
code |  | 0..1 | code | Symbol in syntax defined by the system
display |  | 0..1 | string | Representation defined by the system
userSelected |  | 0..1 | boolean | If this coding was chosen directly by the user
id |  | 0..1 | string | Unique id for inter-element referencing
Slices for extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
extension:Seitenlokalisation | S | 0..1 | Coding | Optional Extensions Element URL: http://fhir.de/StructureDefinition/seitenlokalisation Binding: KBV_VS_SFHIR_ICD_SEITENLOKALISATION (required)
system | S Σ | 1..1 | uri | Canonische CodeSystem URL für OPS Fixed Value: http://fhir.de/CodeSystem/bfarm/ops
version | S Σ | 1..1 | string | Die Jahresversion des OPS Kataloges. Angegeben wird immer die vierstellige Jahreszahl (z.B. "2017")
code | S Σ C | 1..1 | code | Der OPS-Code Constraints: ops-regex Example Einfacher OPS-Code: 5-470
display | Σ | 0..1 | string | Representation defined by the system
userSelected | Σ | 0..1 | boolean | If this coding was chosen directly by the user
coding:sct | S Σ | 0..1 | Coding | SNOMED CT Code Binding: MII VS Prozedur Prozeduren [SNOMED CT] (required) Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://snomed.info/sct
version |  | 0..1 | string | Version of the system - if relevant
code |  | 0..1 | code | Symbol in syntax defined by the system
display |  | 0..1 | string | Representation defined by the system
userSelected |  | 0..1 | boolean | If this coding was chosen directly by the user
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
system | S Σ | 1..1 | uri | Identity of the terminology system
version | Σ | 0..1 | string | Version of the system - if relevant
code | S Σ | 1..1 | code | Symbol in syntax defined by the system
display | Σ | 0..1 | string | Representation defined by the system
userSelected | Σ | 0..1 | boolean | If this coding was chosen directly by the user
text | Σ | 0..1 | string | Plain text representation of the concept
subject | S Σ | 1..1 | Reference(Patient | Group) | Who the procedure was performed on
encounter | S Σ | 0..1 | Reference(Encounter) | Kontakt (Aufenthaltsbezug)
Slices for performed[x] | S Σ | 1..1 |  | Durchführungsdatum Slice: Unordered, Closed by type:$this
performedDateTime |  |  | dateTime |
performedPeriod |  |  | Period |
performed[x]:performedDateTime | Σ | 0..1 | dateTime | When the procedure was performed
performed[x]:performedPeriod | Σ | 0..1 | Period | Durchführungszeitraum
recorder | Σ | 0..1 | Reference(Patient | RelatedPerson | Practitioner | PractitionerRole) | Who recorded the procedure
asserter | Σ | 0..1 | Reference(Patient | RelatedPerson | Practitioner | PractitionerRole) | Person who asserts this procedure
performer | Σ | 0..* | BackboneElement | The people who performed the procedure
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
function | Σ | 0..1 | CodeableConcept | Type of performance Binding: ProcedurePerformerRoleCodes (example): A code that identifies the role of a performer of the procedure.
actor | Σ | 1..1 | Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device) | The reference to the practitioner
onBehalfOf |  | 0..1 | Reference(Organization) | Organization the device or practitioner was acting for
location | Σ | 0..1 | Reference(Location) | Where the procedure happened
reasonCode | Σ | 0..* | CodeableConcept | Coded reason procedure performed Binding: ProcedureReasonCodes (example): A code that identifies the reason a procedure is required.
reasonReference | Σ | 0..* | Reference(Condition | Observation | Procedure | DiagnosticReport | DocumentReference) | The justification that the procedure was performed
bodySite | S Σ | 0..* | CodeableConcept | Körperstelle Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality.
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
Slices for coding | S Σ | 0..* | Coding | Code defined by a terminology system Slice: Unordered, Open by pattern:system
coding:snomed-ct | S Σ | 0..1 | Coding | SNOMED CT Code
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
system | S Σ | 1..1 | uri | Identity of the terminology system Required Pattern: http://snomed.info/sct
version | S Σ | 0..1 | string | Version of the system - if relevant
code | S Σ | 1..1 | code | Symbol in syntax defined by the system
display | Σ | 0..1 | string | Representation defined by the system
userSelected | Σ | 0..1 | boolean | If this coding was chosen directly by the user
text | Σ | 0..1 | string | Plain text representation of the concept
outcome | Σ | 0..1 | CodeableConcept | The result of procedure Binding: ProcedureOutcomeCodes(SNOMEDCT) (example): An outcome of a procedure - whether it was resolved or otherwise.
report |  | 0..* | Reference(DiagnosticReport | DocumentReference | Composition) | Any report resulting from the procedure
complication |  | 0..* | CodeableConcept | Complication following the procedure Binding: Condition/Problem/DiagnosisCodes (example): Codes describing complications that resulted from a procedure.
complicationDetail |  | 0..* | Reference(Condition) | A condition that is a result of the procedure
followUp |  | 0..* | CodeableConcept | Instructions for follow up Binding: ProcedureFollowUpCodes(SNOMEDCT) (example): Specific follow up required for a procedure e.g. removal of sutures.
note | S | 0..* | Annotation | Hinweis
focalDevice |  | 0..* | BackboneElement | Manipulated, implanted, or removed device
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
action |  | 0..1 | CodeableConcept | Kind of change to device Binding: ProcedureDeviceActionCodes (preferred): A kind of change that happened to the device during the procedure.
manipulated |  | 1..1 | Reference(Device) | Device that was changed
usedReference |  | 0..* | Reference(Device | Medication | Substance) | Items used during procedure
usedCode |  | 0..* | CodeableConcept | Coded items used during the procedure Binding: FHIRDeviceTypes (example): Codes describing items used during a procedure.
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Procedure.meta.security | Base | extensible | SecurityLabels | 📍4.0.1 | FHIR Std.
Procedure.meta.tag | Base | example | Common Tags | 📍4.0.1 | FHIR Std.
Procedure.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std.
Procedure.status | Base | required | EventStatus | 📍4.0.1 | FHIR Std.
Procedure.statusReason | Base | example | Procedure Not Performed Reason (SNOMED-CT) | 📍4.0.1 | FHIR Std.
Procedure.category | Base | example | Procedure Category Codes (SNOMED CT) | 📍4.0.1 | FHIR Std.
Procedure.category.coding:sct | Base | preferred | MII VS Prozedur OPS Kategorien [SNOMED CT] | 📦2026.0.0 | This IG
Procedure.code | Base | example | Procedure Codes (SNOMED CT) | 📍4.0.1 | FHIR Std.
Procedure.code.coding:ops | Base | required | MII VS Prozedur OPS | 📦2026.0.0 | This IG
Procedure.code.coding:sct | Base | required | MII VS Prozedur Prozeduren [SNOMED CT] | 📦2026.0.0 | This IG
Procedure.performer.​function | Base | example | Procedure Performer Role Codes | 📍4.0.1 | FHIR Std.
Procedure.reasonCode | Base | example | Procedure Reason Codes | 📍4.0.1 | FHIR Std.
Procedure.bodySite | Base | example | SNOMED CT Body Structures | 📍4.0.1 | FHIR Std.
Procedure.outcome | Base | example | Procedure Outcome Codes (SNOMED CT) | 📍4.0.1 | FHIR Std.
Procedure.complication | Base | example | Condition/Problem/Diagnosis Codes | 📍4.0.1 | FHIR Std.
Procedure.followUp | Base | example | Procedure Follow up Codes (SNOMED CT) | 📍4.0.1 | FHIR Std.
Procedure.focalDevice.​action | Base | preferred | Procedure Device Action Codes | 📍4.0.1 | FHIR Std.
Procedure.usedCode | Base | example | FHIR Device Types | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
dom-2 | error | Procedure | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | Procedure | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource | `contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()`
dom-4 | error | Procedure | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated | `contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()`
dom-5 | error | Procedure | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | Procedure | A resource should have narrative for robust management | `text.`div`.exists()`
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children | `hasValue() or (children().count() > id.count())`
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`
ops-regex | warning | Procedure.code.coding:ops.code | In code sind nur gültige OPS-Codes ohne Zusätze erlaubt | `matches('^[1|3|5|6|8|9]-[a-zA-Z0-9]{3}([.][a-zA-Z0-9]{1,2})?$')`
proc-mii-1 | error | Procedure | Falls die Prozedur per OPS kodiert wird, MUSS eine SNOMED-CT kodierte Category abgebildet werden | `code.coding.where(system = 'http://fhir.de/CodeSystem/bfarm/ops').exists() implies category.coding.where(system = 'http://snomed.info/sct').exists()`
sct-ops-1 | error | Procedure.code | Eine Prozedur MUSS mit OPS oder SNOMED-CT kodiert werden. | `coding.where(system = 'http://snomed.info/sct').exists() or coding.where(system = 'http://fhir.de/CodeSystem/bfarm/ops').exists()`

Summary

Mandatory: 3 elements(6 nested mandatory elements)
Must-Support: 32 elements

Structures

This structure refers to these other structures:

- Coding-Profil für OPS (http://fhir.de/StructureDefinition/CodingOPS)

Extensions

This structure refers to these extensions:

- http://fhir.de/StructureDefinition/ProzedurDokumentationsdatum
- https://www.medizininformatik-initiative.de/fhir/core/modul-prozedur/StructureDefinition/Durchfuehrungsabsicht

Slices

This structure defines the following Slices:

- The element 1 is sliced based on the value of Procedure.category.coding
- The element 1 is sliced based on the value of Procedure.code.coding
- The element 1 is sliced based on the value of Procedure.performed[x]
- The element 1 is sliced based on the value of Procedure.bodySite.coding

Other representations of profile: CSV, Excel, Schematron