KR Core Implementation Guide
2.0.0 - STU 2

This page is part of the KR Core Implementation Guide (v2.0.0: Release) based on FHIR (HL7® FHIR® Standard) R4. This is the current published version in its permanent home (it will always be available at this URL). For a full list of available versions, see the Directory of published versions

## Resource Profile: KR Core Procedure Profile

Official URL: http://www.hl7korea.or.kr/fhir/krcore/StructureDefinition/krcore-procedure | Version: 2.0.0
Standards status: Trial-use | Computable Name: KRCore_Procedure

KR CDI V2 수술 및 처치 정보 클래스에서 정의한 항목들과 주요 추가 정보를 구조화하기 위해 정의한 Profile.

KR Core Procedure Profile은 KR Core Server와 KR Core Client가 진료정보를 교류할 때 수술, 처치 그리고 마취 정보를 표현하는 데 사용되며, 이 경우 가능한 한(SHOULD) 본 Profile을 준수해야 한다. 진료 행위 정보 표현할 때 본 Profile을 적용하지 않을 수 있는 경우는 특수한 상황에 한정된다. 이 경우 반드시 해당 진료정보교류 도메인 내에서 사전 합의가 이루어져야 한다.

Usages:

- Refer to this Profile: KR Core Procedure Profile
- Examples for this Profile: Procedure/krcore-procedure-example-01, Procedure/krcore-procedure-example-02 and Procedure/krcore-procedure-example-03
- CapabilityStatements using this Profile: KR Core Client CapabilityStatement and KR Core Server CapabilityStatement

You can also check for usages in the FHIR IG Statistics

### KR CDI 관련항목

KR Core Procedure Profile은 KR CDI의 수술 및 처치 정보 클래스에 대응됨.

KR CDI 수술 및 처치 정보 클래스 항목 | KR Core Procedure Profile 관련 항목
--- | ---
수술 및 처치일자 | Procedure.performed
수술명 및 처치명 | Procedure.code
마취 방법 | Procedure.code
수술 및 처치 상태 | Procedure.status

### 마취 방법 표현

KR Core Procedure Profile은 수술과 마취를 포함한 처치 정보를 나타내는데 사용된다. 어떤 수술 및 처치의 일부로 수행된 마취 정보는, Figure 1을 참조하여 표현한다. 마취 정보를 나타내는 Procedure 리소스 인스턴스는 필요에 따라 선택적으로 생성하여 사용할 수 있으며, 본 마취가 다른 Procedure의 일부로 사용되었다는 정보는 Procedure.partOf 요소를 이용해 나타낸다. 마취를 표현하기 위해 작성한 Procedure 리소스 인스턴스는 반드시 KR Core Procedure Profile의 요구사항을 만족해야 하고, 이때 Procedure.code 요소의 값은 마취 방법을 의미한다.

Figure 1: KR Core Procedure Profile을 적용한 마취 정보 표현 방법

### Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

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

This structure is derived from Procedure

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Procedure |  | 0..* | Procedure | KR Core Procedure Profile
partOf |  | 0..* | Reference(KR Core Procedure Profile | Observation) | 본 수술 및 처치가 포함된 상위 의료행위
status | S | 1..1 | code | KRCDI) 수술 및 처치 상태: preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown 선호값: completed
category |  | 0..1 | CodeableConcept | 수술 및 처치 범주 바인딩(Binding): KR Core Procedure Category Codes (extensible)
coding |  |  |  |
system |  | 1..1 | uri | 코드체계 식별자
code |  | 1..1 | code | 코드
code | S | 1..1 | CodeableConcept | KRCDI) 수술명 및 처치명, 마취 방법 수술명 및 처치명 바인딩(Binding): KR Core Procedure Codes (extensible)
coding |  |  |  |
system | S | 1..1 | uri | 코드체계 식별자
code | S | 1..1 | code | 코드
subject |  | 1..1 | Reference(KR Core Patient Profile) | 수술 및 처치 대상 환자
performed[x] | S | 1..1 |  | KRCDI) 수술 및 처치 일자
performedDateTime |  |  | dateTime S |
performedPeriod |  |  | Period |
performedString |  |  | string |
performedAge |  |  | Age |
performedRange |  |  | Range |
Documentation for this format

#### Terminology Bindings (Differential)

Path | Conformance | ValueSet | URI
Procedure.category | extensible | KR_Core_Procedure_Category_Codes(a valid code from KR Core Procedure Category Types) `http://www.hl7korea.or.kr/fhir/krcore/ValueSet/krcore-procedure-category-codes` From this IG
Procedure.code | extensible | KR_Core_Procedure_Codes `http://www.hl7korea.or.kr/fhir/krcore/ValueSet/krcore-procedure-codes` From this IG

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Procedure |  | 0..* | Procedure | KR Core Procedure Profile
implicitRules | ?!Σ | 0..1 | uri | 이 콘텐츠 생성 시 따른 규칙들의 집합
modifierExtension | ?! | 0..* | Extension | 의미나 해석을 변경하기 위해 정의한 확장(Extension) 목록
partOf | Σ | 0..* | Reference(KR Core Procedure Profile | Observation) | 본 수술 및 처치가 포함된 상위 의료행위
status | ?!S Σ | 1..1 | code | 수술 및 처치 상태: preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown 바인딩(Binding): EventStatus (required): 수술 및 처치의 상태를 지정하는 코드 선호값: completed
category | Σ | 0..1 | CodeableConcept | 수술 및 처치 범주 바인딩(Binding): KR Core Procedure Category Codes (extensible)
code | S Σ | 1..1 | CodeableConcept | 수술명 및 처치명 바인딩(Binding): KR Core Procedure Codes (extensible)
coding | Σ | 0..* | Coding | 코드체계에 의해 정의된 코드
system | S Σ | 1..1 | uri | 코드체계 식별자
code | S Σ | 1..1 | code | 코드
subject | Σ | 1..1 | Reference(KR Core Patient Profile) | 수술 및 처치 대상 환자
performed[x] | S Σ | 1..1 |  | 수술 및 처치 일자
performedDateTime |  |  | dateTime S |
performedPeriod |  |  | Period |
performedString |  |  | string |
performedAge |  |  | Age |
performedRange |  |  | Range |
Documentation for this format

#### Terminology Bindings

Path | Conformance | ValueSet | URI
Procedure.status | required | EventStatus `http://hl7.org/fhir/ValueSet/event-status|4.0.1` From the FHIR Standard
Procedure.category | extensible | KR_Core_Procedure_Category_Codes(a valid code from KR Core Procedure Category Types) `http://www.hl7korea.or.kr/fhir/krcore/ValueSet/krcore-procedure-category-codes` From this IG
Procedure.code | extensible | KR_Core_Procedure_Codes `http://www.hl7korea.or.kr/fhir/krcore/ValueSet/krcore-procedure-codes` From this IG

#### Constraints

Id | Grade | Path(s) | Details | Requirements
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() |

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Procedure |  | 0..* | Procedure | KR Core Procedure Profile
id | Σ | 0..1 | id | 본 리소스 인스턴스의 논리적 ID
meta | Σ | 0..1 | Meta | 리소스에 대한 메타데이터
implicitRules | ?!Σ | 0..1 | uri | 이 콘텐츠 생성 시 따른 규칙들의 집합
language |  | 0..1 | code | 리소스 콘텐츠의 언어 바인딩(Binding): CommonLanguages (preferred): 국가별 언어.
추가 바인딩 | 목적
AllLanguages | Max Binding
text |  | 0..1 | Narrative | 사람이 이해할 수 있도록 작성된 리소스 인스턴스의 요약 텍스트 이 프로파일은 내러티브의 내용, 사용 언어, 또는 해당 내용이 데이터 요소에 얼마나 추적 가능한지에 대해 제한하지 않음
contained |  | 0..* | Resource | 포함된 리소스
extension |  | 0..* | Extension | 추가 정보를 제공하기 위해 정의한 확장(Extension) 목록
modifierExtension | ?! | 0..* | Extension | 의미나 해석을 변경하기 위해 정의한 확장(Extension) 목록
identifier | Σ | 0..* | Identifier | 본 수술 및 처치에 대한 외부 식별자
instantiatesCanonical | Σ | 0..* | canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire) | FHIR 프로토콜 또는 정의를 인스턴스화
instantiatesUri | Σ | 0..* | uri | 외부 프로토콜 또는 정의를 인스턴스화
basedOn | Σ | 0..* | Reference(CarePlan | ServiceRequest) | 본 수술 및 처치에 대한 요청
partOf | Σ | 0..* | Reference(KR Core Procedure Profile | Observation) | 본 수술 및 처치가 포함된 상위 의료행위
status | ?!S Σ | 1..1 | code | 수술 및 처치 상태: preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown 바인딩(Binding): EventStatus (required): 수술 및 처치의 상태를 지정하는 코드 선호값: completed
statusReason | Σ | 0..1 | CodeableConcept | 현재 상태의 이유 바인딩(Binding): ProcedureNotPerformedReason(SNOMED-CT) (example): 수술 및 처치가 수행되지 않은 이유를 식별하는 코드
category | Σ | 0..1 | CodeableConcept | 수술 및 처치 범주 바인딩(Binding): KR Core Procedure Category Codes (extensible)
id |  | 0..1 | string | 요소 간 참조를 위한 고유 ID
extension |  | 0..* | Extension | 추가 정보를 제공하기 위해 정의한 확장(Extension) 목록 분할항목(Slice): 순서 없음, 다음 요소의 값이 다른 임의의 분할항목을 허용:url
coding | Σ | 0..* | Coding | 코드체계에 의해 정의된 코드
id |  | 0..1 | string | 요소 간 참조를 위한 고유 ID
extension |  | 0..* | Extension | 추가 정보를 제공하기 위해 정의한 확장(Extension) 목록 분할항목(Slice): 순서 없음, 다음 요소의 값이 다른 임의의 분할항목을 허용:url
system | Σ | 1..1 | uri | 코드체계 식별자
version | Σ | 0..1 | string | 시스템의 버전 - 필요한 경우에 제공
code | Σ | 1..1 | code | 코드
display | Σ | 0..1 | string | 시스템에서 정의한 표현
userSelected | Σ | 0..1 | boolean | 이 coding을 사용자가 직접 선택한 경우
text | Σ | 0..1 | string | 개념의 일반 텍스트 표현
code | S Σ | 1..1 | CodeableConcept | 수술명 및 처치명 바인딩(Binding): KR Core Procedure Codes (extensible)
id |  | 0..1 | string | 요소 간 참조를 위한 고유 ID
extension |  | 0..* | Extension | 추가 정보를 제공하기 위해 정의한 확장(Extension) 목록 분할항목(Slice): 순서 없음, 다음 요소의 값이 다른 임의의 분할항목을 허용:url
coding | Σ | 0..* | Coding | 코드체계에 의해 정의된 코드
id |  | 0..1 | string | 요소 간 참조를 위한 고유 ID
extension |  | 0..* | Extension | 추가 정보를 제공하기 위해 정의한 확장(Extension) 목록 분할항목(Slice): 순서 없음, 다음 요소의 값이 다른 임의의 분할항목을 허용:url
system | S Σ | 1..1 | uri | 코드체계 식별자
version | Σ | 0..1 | string | 시스템의 버전 - 필요한 경우에 제공
code | S Σ | 1..1 | code | 코드
display | Σ | 0..1 | string | 시스템에서 정의한 표현
userSelected | Σ | 0..1 | boolean | 이 coding을 사용자가 직접 선택한 경우
text | Σ | 0..1 | string | 개념의 일반 텍스트 표현
subject | Σ | 1..1 | Reference(KR Core Patient Profile) | 수술 및 처치 대상 환자
encounter | Σ | 0..1 | Reference(Encounter) | 본 수술 및 처치가 속한 수진
performed[x] | S Σ | 1..1 |  | 수술 및 처치 일자
performedDateTime |  |  | dateTime S |
performedPeriod |  |  | Period |
performedString |  |  | string |
performedAge |  |  | Age |
performedRange |  |  | Range |
recorder | Σ | 0..1 | Reference(Patient | RelatedPerson | Practitioner | PractitionerRole) | 수술 및 처치를 기록한 사람
asserter | Σ | 0..1 | Reference(Patient | RelatedPerson | Practitioner | PractitionerRole) | 수술 및 처치를 확인한 사람
performer | Σ | 0..* | BackboneElement | 수술 및 처치를 수행한 사람
id |  | 0..1 | string | 요소 간 참조를 위한 고유 ID
extension |  | 0..* | Extension | 추가 정보를 제공하기 위해 정의한 확장(Extension) 목록
modifierExtension | ?!Σ | 0..* | Extension | 의미나 해석을 변경하기 위해 정의한 확장(Extension) 목록
function | Σ | 0..1 | CodeableConcept | 수술 및 처치의 종류 바인딩(Binding): ProcedurePerformerRoleCodes (example): 수술 및 처치 수행자의 역할을 식별하는 코드.
actor | Σ | 1..1 | Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device) | 의료인에 대한 참조
onBehalfOf |  | 0..1 | Reference(Organization) | 장치 또는 의료인이 대표하는 기관
location | Σ | 0..1 | Reference(Location) | 수술 및 처치가 발생한 장소
reasonCode | Σ | 0..* | CodeableConcept | 수술 및 처치가 수행된 이유 코드 바인딩(Binding): ProcedureReasonCodes (example): 수술 및 처치가 필요한 이유를 식별하는 코드
reasonReference | Σ | 0..* | Reference(Condition | Observation | Procedure | DiagnosticReport | DocumentReference) | 수술 및 처치 수행의 정당성
bodySite | Σ | 0..* | CodeableConcept | 목표 신체 부위 바인딩(Binding): SNOMEDCTBodyStructures (example): 해부학적 위치를 설명하는 코드들. 좌/우를 포함할 수 있음.
outcome | Σ | 0..1 | CodeableConcept | 수술 및 처치의 결과 바인딩(Binding): ProcedureOutcomeCodes(SNOMEDCT) (example): 수술 및 처치의 결과 - 해결 여부.
report |  | 0..* | Reference(DiagnosticReport | DocumentReference | Composition) | 수술 및 처치로 인한 모든 보고서
complication |  | 0..* | CodeableConcept | 수술 및 처치 후 합병증 바인딩(Binding): Condition/Problem/DiagnosisCodes (example): 수술 및 처치로 인한 합병증
complicationDetail |  | 0..* | Reference(Condition) | 수술 및 처치의 결과로 인한 상태
followUp |  | 0..* | CodeableConcept | 후속 조치 지침 바인딩(Binding): ProcedureFollowUpCodes(SNOMEDCT) (example): 수술 및 처치에 필요한 특정 후속 조치. 예: 봉합사 제거
note |  | 0..* | Annotation | 수술 및 처치에 대한 추가 정보
focalDevice |  | 0..* | BackboneElement | 변경, 이식 또는 제거된 장치
id |  | 0..1 | string | 요소 간 참조를 위한 고유 ID
extension |  | 0..* | Extension | 추가 정보를 제공하기 위해 정의한 확장(Extension) 목록
modifierExtension | ?!Σ | 0..* | Extension | 의미나 해석을 변경하기 위해 정의한 확장(Extension) 목록
action |  | 0..1 | CodeableConcept | 장치 변경의 종류 바인딩(Binding): ProcedureDeviceActionCodes (preferred): 수술 및 처치 중에 장치에 발생한 변경의 종류.
manipulated |  | 1..1 | Reference(Device) | 변경된 장비
usedReference |  | 0..* | Reference(Device | Medication | Substance) | 수술 및 처치 중에 사용한 물품
usedCode |  | 0..* | CodeableConcept | 수술 및 처치 중에 사용된 물품 코드 바인딩(Binding): FHIRDeviceTypes (example): 수술 및 처치 중에 사용되는 물품을 설명하는 코드.
Documentation for this format

#### Terminology Bindings

Path | Conformance | ValueSet | URI
Procedure.language | preferred | CommonLanguages `http://hl7.org/fhir/ValueSet/languages` From the FHIR Standard
추가 바인딩 | 목적
AllLanguages | Max Binding
Procedure.status | required | EventStatus `http://hl7.org/fhir/ValueSet/event-status|4.0.1` From the FHIR Standard
Procedure.statusReason | example | ProcedureNotPerformedReason(SNOMED-CT) `http://hl7.org/fhir/ValueSet/procedure-not-performed-reason` From the FHIR Standard
Procedure.category | extensible | KR_Core_Procedure_Category_Codes(a valid code from KR Core Procedure Category Types) `http://www.hl7korea.or.kr/fhir/krcore/ValueSet/krcore-procedure-category-codes` From this IG
Procedure.code | extensible | KR_Core_Procedure_Codes `http://www.hl7korea.or.kr/fhir/krcore/ValueSet/krcore-procedure-codes` From this IG
Procedure.performer.function | example | ProcedurePerformerRoleCodes `http://hl7.org/fhir/ValueSet/performer-role` From the FHIR Standard
Procedure.reasonCode | example | ProcedureReasonCodes `http://hl7.org/fhir/ValueSet/procedure-reason` From the FHIR Standard
Procedure.bodySite | example | SNOMEDCTBodyStructures `http://hl7.org/fhir/ValueSet/body-site` From the FHIR Standard
Procedure.outcome | example | ProcedureOutcomeCodes(SNOMEDCT) `http://hl7.org/fhir/ValueSet/procedure-outcome` From the FHIR Standard
Procedure.complication | example | Condition/Problem/DiagnosisCodes `http://hl7.org/fhir/ValueSet/condition-code` From the FHIR Standard
Procedure.followUp | example | ProcedureFollowUpCodes(SNOMEDCT) `http://hl7.org/fhir/ValueSet/procedure-followup` From the FHIR Standard
Procedure.focalDevice.action | preferred | ProcedureDeviceActionCodes `http://hl7.org/fhir/ValueSet/device-action` From the FHIR Standard
Procedure.usedCode | example | FHIRDeviceTypes `http://hl7.org/fhir/ValueSet/device-kind` From the FHIR Standard

#### Constraints

Id | Grade | Path(s) | Details | Requirements
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() |

This structure is derived from Procedure

Summary

Mandatory: 2 elements(4 nested mandatory elements)
Must-Support: 5 elements

Structures

This structure refers to these other structures:

- KR Core Procedure Profile (http://www.hl7korea.or.kr/fhir/krcore/StructureDefinition/krcore-procedure)
- KR Core Patient Profile (http://www.hl7korea.or.kr/fhir/krcore/StructureDefinition/krcore-patient)

Differential View

This structure is derived from Procedure

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Procedure |  | 0..* | Procedure | KR Core Procedure Profile
partOf |  | 0..* | Reference(KR Core Procedure Profile | Observation) | 본 수술 및 처치가 포함된 상위 의료행위
status | S | 1..1 | code | 수술 및 처치 상태: preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown 선호값: completed
category |  | 0..1 | CodeableConcept | 수술 및 처치 범주 바인딩(Binding): KR Core Procedure Category Codes (extensible)
coding |  |  |  |
system |  | 1..1 | uri | 코드체계 식별자
code |  | 1..1 | code | 코드
code | S | 1..1 | CodeableConcept | 수술명 및 처치명 바인딩(Binding): KR Core Procedure Codes (extensible)
coding |  |  |  |
system | S | 1..1 | uri | 코드체계 식별자
code | S | 1..1 | code | 코드
subject |  | 1..1 | Reference(KR Core Patient Profile) | 수술 및 처치 대상 환자
performed[x] | S | 1..1 |  | 수술 및 처치 일자
performedDateTime |  |  | dateTime S |
performedPeriod |  |  | Period |
performedString |  |  | string |
performedAge |  |  | Age |
performedRange |  |  | Range |
Documentation for this format

#### Terminology Bindings (Differential)

Path | Conformance | ValueSet | URI
Procedure.category | extensible | KR_Core_Procedure_Category_Codes(a valid code from KR Core Procedure Category Types) `http://www.hl7korea.or.kr/fhir/krcore/ValueSet/krcore-procedure-category-codes` From this IG
Procedure.code | extensible | KR_Core_Procedure_Codes `http://www.hl7korea.or.kr/fhir/krcore/ValueSet/krcore-procedure-codes` From this IG

Key Elements View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Procedure |  | 0..* | Procedure | KR Core Procedure Profile
implicitRules | ?!Σ | 0..1 | uri | 이 콘텐츠 생성 시 따른 규칙들의 집합
modifierExtension | ?! | 0..* | Extension | 의미나 해석을 변경하기 위해 정의한 확장(Extension) 목록
partOf | Σ | 0..* | Reference(KR Core Procedure Profile | Observation) | 본 수술 및 처치가 포함된 상위 의료행위
status | ?!S Σ | 1..1 | code | 수술 및 처치 상태: preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown 바인딩(Binding): EventStatus (required): 수술 및 처치의 상태를 지정하는 코드 선호값: completed
category | Σ | 0..1 | CodeableConcept | 수술 및 처치 범주 바인딩(Binding): KR Core Procedure Category Codes (extensible)
code | S Σ | 1..1 | CodeableConcept | 수술명 및 처치명 바인딩(Binding): KR Core Procedure Codes (extensible)
coding | Σ | 0..* | Coding | 코드체계에 의해 정의된 코드
system | S Σ | 1..1 | uri | 코드체계 식별자
code | S Σ | 1..1 | code | 코드
subject | Σ | 1..1 | Reference(KR Core Patient Profile) | 수술 및 처치 대상 환자
performed[x] | S Σ | 1..1 |  | 수술 및 처치 일자
performedDateTime |  |  | dateTime S |
performedPeriod |  |  | Period |
performedString |  |  | string |
performedAge |  |  | Age |
performedRange |  |  | Range |
Documentation for this format

#### Terminology Bindings

Path | Conformance | ValueSet | URI
Procedure.status | required | EventStatus `http://hl7.org/fhir/ValueSet/event-status|4.0.1` From the FHIR Standard
Procedure.category | extensible | KR_Core_Procedure_Category_Codes(a valid code from KR Core Procedure Category Types) `http://www.hl7korea.or.kr/fhir/krcore/ValueSet/krcore-procedure-category-codes` From this IG
Procedure.code | extensible | KR_Core_Procedure_Codes `http://www.hl7korea.or.kr/fhir/krcore/ValueSet/krcore-procedure-codes` From this IG

#### Constraints

Id | Grade | Path(s) | Details | Requirements
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() |

Snapshot View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Procedure |  | 0..* | Procedure | KR Core Procedure Profile
id | Σ | 0..1 | id | 본 리소스 인스턴스의 논리적 ID
meta | Σ | 0..1 | Meta | 리소스에 대한 메타데이터
implicitRules | ?!Σ | 0..1 | uri | 이 콘텐츠 생성 시 따른 규칙들의 집합
language |  | 0..1 | code | 리소스 콘텐츠의 언어 바인딩(Binding): CommonLanguages (preferred): 국가별 언어.
추가 바인딩 | 목적
AllLanguages | Max Binding
text |  | 0..1 | Narrative | 사람이 이해할 수 있도록 작성된 리소스 인스턴스의 요약 텍스트 이 프로파일은 내러티브의 내용, 사용 언어, 또는 해당 내용이 데이터 요소에 얼마나 추적 가능한지에 대해 제한하지 않음
contained |  | 0..* | Resource | 포함된 리소스
extension |  | 0..* | Extension | 추가 정보를 제공하기 위해 정의한 확장(Extension) 목록
modifierExtension | ?! | 0..* | Extension | 의미나 해석을 변경하기 위해 정의한 확장(Extension) 목록
identifier | Σ | 0..* | Identifier | 본 수술 및 처치에 대한 외부 식별자
instantiatesCanonical | Σ | 0..* | canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire) | FHIR 프로토콜 또는 정의를 인스턴스화
instantiatesUri | Σ | 0..* | uri | 외부 프로토콜 또는 정의를 인스턴스화
basedOn | Σ | 0..* | Reference(CarePlan | ServiceRequest) | 본 수술 및 처치에 대한 요청
partOf | Σ | 0..* | Reference(KR Core Procedure Profile | Observation) | 본 수술 및 처치가 포함된 상위 의료행위
status | ?!S Σ | 1..1 | code | 수술 및 처치 상태: preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown 바인딩(Binding): EventStatus (required): 수술 및 처치의 상태를 지정하는 코드 선호값: completed
statusReason | Σ | 0..1 | CodeableConcept | 현재 상태의 이유 바인딩(Binding): ProcedureNotPerformedReason(SNOMED-CT) (example): 수술 및 처치가 수행되지 않은 이유를 식별하는 코드
category | Σ | 0..1 | CodeableConcept | 수술 및 처치 범주 바인딩(Binding): KR Core Procedure Category Codes (extensible)
id |  | 0..1 | string | 요소 간 참조를 위한 고유 ID
extension |  | 0..* | Extension | 추가 정보를 제공하기 위해 정의한 확장(Extension) 목록 분할항목(Slice): 순서 없음, 다음 요소의 값이 다른 임의의 분할항목을 허용:url
coding | Σ | 0..* | Coding | 코드체계에 의해 정의된 코드
id |  | 0..1 | string | 요소 간 참조를 위한 고유 ID
extension |  | 0..* | Extension | 추가 정보를 제공하기 위해 정의한 확장(Extension) 목록 분할항목(Slice): 순서 없음, 다음 요소의 값이 다른 임의의 분할항목을 허용:url
system | Σ | 1..1 | uri | 코드체계 식별자
version | Σ | 0..1 | string | 시스템의 버전 - 필요한 경우에 제공
code | Σ | 1..1 | code | 코드
display | Σ | 0..1 | string | 시스템에서 정의한 표현
userSelected | Σ | 0..1 | boolean | 이 coding을 사용자가 직접 선택한 경우
text | Σ | 0..1 | string | 개념의 일반 텍스트 표현
code | S Σ | 1..1 | CodeableConcept | 수술명 및 처치명 바인딩(Binding): KR Core Procedure Codes (extensible)
id |  | 0..1 | string | 요소 간 참조를 위한 고유 ID
extension |  | 0..* | Extension | 추가 정보를 제공하기 위해 정의한 확장(Extension) 목록 분할항목(Slice): 순서 없음, 다음 요소의 값이 다른 임의의 분할항목을 허용:url
coding | Σ | 0..* | Coding | 코드체계에 의해 정의된 코드
id |  | 0..1 | string | 요소 간 참조를 위한 고유 ID
extension |  | 0..* | Extension | 추가 정보를 제공하기 위해 정의한 확장(Extension) 목록 분할항목(Slice): 순서 없음, 다음 요소의 값이 다른 임의의 분할항목을 허용:url
system | S Σ | 1..1 | uri | 코드체계 식별자
version | Σ | 0..1 | string | 시스템의 버전 - 필요한 경우에 제공
code | S Σ | 1..1 | code | 코드
display | Σ | 0..1 | string | 시스템에서 정의한 표현
userSelected | Σ | 0..1 | boolean | 이 coding을 사용자가 직접 선택한 경우
text | Σ | 0..1 | string | 개념의 일반 텍스트 표현
subject | Σ | 1..1 | Reference(KR Core Patient Profile) | 수술 및 처치 대상 환자
encounter | Σ | 0..1 | Reference(Encounter) | 본 수술 및 처치가 속한 수진
performed[x] | S Σ | 1..1 |  | 수술 및 처치 일자
performedDateTime |  |  | dateTime S |
performedPeriod |  |  | Period |
performedString |  |  | string |
performedAge |  |  | Age |
performedRange |  |  | Range |
recorder | Σ | 0..1 | Reference(Patient | RelatedPerson | Practitioner | PractitionerRole) | 수술 및 처치를 기록한 사람
asserter | Σ | 0..1 | Reference(Patient | RelatedPerson | Practitioner | PractitionerRole) | 수술 및 처치를 확인한 사람
performer | Σ | 0..* | BackboneElement | 수술 및 처치를 수행한 사람
id |  | 0..1 | string | 요소 간 참조를 위한 고유 ID
extension |  | 0..* | Extension | 추가 정보를 제공하기 위해 정의한 확장(Extension) 목록
modifierExtension | ?!Σ | 0..* | Extension | 의미나 해석을 변경하기 위해 정의한 확장(Extension) 목록
function | Σ | 0..1 | CodeableConcept | 수술 및 처치의 종류 바인딩(Binding): ProcedurePerformerRoleCodes (example): 수술 및 처치 수행자의 역할을 식별하는 코드.
actor | Σ | 1..1 | Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device) | 의료인에 대한 참조
onBehalfOf |  | 0..1 | Reference(Organization) | 장치 또는 의료인이 대표하는 기관
location | Σ | 0..1 | Reference(Location) | 수술 및 처치가 발생한 장소
reasonCode | Σ | 0..* | CodeableConcept | 수술 및 처치가 수행된 이유 코드 바인딩(Binding): ProcedureReasonCodes (example): 수술 및 처치가 필요한 이유를 식별하는 코드
reasonReference | Σ | 0..* | Reference(Condition | Observation | Procedure | DiagnosticReport | DocumentReference) | 수술 및 처치 수행의 정당성
bodySite | Σ | 0..* | CodeableConcept | 목표 신체 부위 바인딩(Binding): SNOMEDCTBodyStructures (example): 해부학적 위치를 설명하는 코드들. 좌/우를 포함할 수 있음.
outcome | Σ | 0..1 | CodeableConcept | 수술 및 처치의 결과 바인딩(Binding): ProcedureOutcomeCodes(SNOMEDCT) (example): 수술 및 처치의 결과 - 해결 여부.
report |  | 0..* | Reference(DiagnosticReport | DocumentReference | Composition) | 수술 및 처치로 인한 모든 보고서
complication |  | 0..* | CodeableConcept | 수술 및 처치 후 합병증 바인딩(Binding): Condition/Problem/DiagnosisCodes (example): 수술 및 처치로 인한 합병증
complicationDetail |  | 0..* | Reference(Condition) | 수술 및 처치의 결과로 인한 상태
followUp |  | 0..* | CodeableConcept | 후속 조치 지침 바인딩(Binding): ProcedureFollowUpCodes(SNOMEDCT) (example): 수술 및 처치에 필요한 특정 후속 조치. 예: 봉합사 제거
note |  | 0..* | Annotation | 수술 및 처치에 대한 추가 정보
focalDevice |  | 0..* | BackboneElement | 변경, 이식 또는 제거된 장치
id |  | 0..1 | string | 요소 간 참조를 위한 고유 ID
extension |  | 0..* | Extension | 추가 정보를 제공하기 위해 정의한 확장(Extension) 목록
modifierExtension | ?!Σ | 0..* | Extension | 의미나 해석을 변경하기 위해 정의한 확장(Extension) 목록
action |  | 0..1 | CodeableConcept | 장치 변경의 종류 바인딩(Binding): ProcedureDeviceActionCodes (preferred): 수술 및 처치 중에 장치에 발생한 변경의 종류.
manipulated |  | 1..1 | Reference(Device) | 변경된 장비
usedReference |  | 0..* | Reference(Device | Medication | Substance) | 수술 및 처치 중에 사용한 물품
usedCode |  | 0..* | CodeableConcept | 수술 및 처치 중에 사용된 물품 코드 바인딩(Binding): FHIRDeviceTypes (example): 수술 및 처치 중에 사용되는 물품을 설명하는 코드.
Documentation for this format

#### Terminology Bindings

Path | Conformance | ValueSet | URI
Procedure.language | preferred | CommonLanguages `http://hl7.org/fhir/ValueSet/languages` From the FHIR Standard
추가 바인딩 | 목적
AllLanguages | Max Binding
Procedure.status | required | EventStatus `http://hl7.org/fhir/ValueSet/event-status|4.0.1` From the FHIR Standard
Procedure.statusReason | example | ProcedureNotPerformedReason(SNOMED-CT) `http://hl7.org/fhir/ValueSet/procedure-not-performed-reason` From the FHIR Standard
Procedure.category | extensible | KR_Core_Procedure_Category_Codes(a valid code from KR Core Procedure Category Types) `http://www.hl7korea.or.kr/fhir/krcore/ValueSet/krcore-procedure-category-codes` From this IG
Procedure.code | extensible | KR_Core_Procedure_Codes `http://www.hl7korea.or.kr/fhir/krcore/ValueSet/krcore-procedure-codes` From this IG
Procedure.performer.function | example | ProcedurePerformerRoleCodes `http://hl7.org/fhir/ValueSet/performer-role` From the FHIR Standard
Procedure.reasonCode | example | ProcedureReasonCodes `http://hl7.org/fhir/ValueSet/procedure-reason` From the FHIR Standard
Procedure.bodySite | example | SNOMEDCTBodyStructures `http://hl7.org/fhir/ValueSet/body-site` From the FHIR Standard
Procedure.outcome | example | ProcedureOutcomeCodes(SNOMEDCT) `http://hl7.org/fhir/ValueSet/procedure-outcome` From the FHIR Standard
Procedure.complication | example | Condition/Problem/DiagnosisCodes `http://hl7.org/fhir/ValueSet/condition-code` From the FHIR Standard
Procedure.followUp | example | ProcedureFollowUpCodes(SNOMEDCT) `http://hl7.org/fhir/ValueSet/procedure-followup` From the FHIR Standard
Procedure.focalDevice.action | preferred | ProcedureDeviceActionCodes `http://hl7.org/fhir/ValueSet/device-action` From the FHIR Standard
Procedure.usedCode | example | FHIRDeviceTypes `http://hl7.org/fhir/ValueSet/device-kind` From the FHIR Standard

#### Constraints

Id | Grade | Path(s) | Details | Requirements
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() |

This structure is derived from Procedure

Summary

Mandatory: 2 elements(4 nested mandatory elements)
Must-Support: 5 elements

Structures

This structure refers to these other structures:

- KR Core Procedure Profile (http://www.hl7korea.or.kr/fhir/krcore/StructureDefinition/krcore-procedure)
- KR Core Patient Profile (http://www.hl7korea.or.kr/fhir/krcore/StructureDefinition/krcore-patient)

Other representations of profile: CSV, Excel, Schematron

### Notes:

KR Core IG를 따르는 Server는 반드시(SHALL) `Procedure Resource`를 지원하고, KR Core Procedure Profile을 반드시(SHALL) 지원해야 한다.
KR Core IG를 따르는 Client는 가능한 한(SHOULD) `Procedure Resource`를 지원하고, `Procedure Resource`를 지원하는 경우, KR Core Procedure Profile을 반드시(SHALL) 지원해야 한다.

### KR Core Search Parameters (derived)

Procedure Resource를 검색하기 위해 기본 FHIR 사양을 기반으로 정의한 검색 파라미터.

Name | Type | Description | Expression | Expectations
--- | --- | --- | --- | ---
category | token | 수술 및 처치 범주 | Procedure.category | MAY
code | token | 수술 및 처치 식별 코드 | Procedure.code | SHOULD
date | datetime | 수술 및 처치 수행 일시 | Procedure.performed | SHOULD
patient | reference | 수술 및 처치 대상 환자 | Procedure.subject.where(resolve() is Patient) | SHALL
status | token | 수술 및 처치 상태: preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown | Procedure.status | MAY

NOTE: 위 Search Parameter 목록은 아래 요소에 대한 구현 기대치를 정의함:

- multipleAnd
- multipleOr
- comparator
- modifier
- chain

NOTE: 이 외 기본 FHIR 사양에서 정의하고 있는 Search Parameter들은 KR Core IG를 구현한 서버의 선택 사항에 따라 추가로 제공 가능.