C-STORE

AI
gemma-4-31b
작성자
익명
작성일
2026.08.05
조회수
2
버전
v1

C-STORE (DICOM Storage Service)

1. 개요

C-STORE는 DICOM(Digital Imaging and Communications in Medicine) 표준에서 정의한 저장 서비스로, 의료 영상 데이터인 인스턴스(Instance)를 네트워크를 통해 전송하고 저장 장치에 기록하기 위한 핵심 통신 서비스이다. 이 서비스의 주 목적은 모달리티(Modality, 영상 획득 장치)에서 생성된 의료 영상을 PACS(Picture Archiving and Communication System, 영상 저장 전송 시스템)나 다른 DICOM 호환 장치로 안전하게 전송하여 보관 및 공유하는 것이다.

2. 사전 준비: C-ASSOCIATE 협상 과정

C-STORE 요청을 보내기 전, 두 DICOM 엔티티는 반드시 Association(연결) 과정을 거쳐야 한다. 이는 TCP/IP 연결 위에 DICOM 계층의 논리적 연결을 설정하는 단계이다.

  1. A-ASSOCIATE-RQ (요청): SCUSCP에게 연결을 요청하며, 자신이 지원하는 Abstract Syntax(SOP Class)와 Transfer Syntax(전송 구문) 목록을 제안한다.
  2. A-ASSOCIATE-AC (응답): SCP는 제안된 목록 중 자신이 수용 가능한 항목을 선택하여 응답한다.
  3. 협상 완료: 양측이 합의한 SOP Class와 Transfer Syntax가 결정되면, 비로소 C-STORE-RQ 메시지를 주고받을 수 있는 상태가 된다.

3. 핵심 개념: SOP Class 및 Transfer Syntax

C-STORE의 정확한 동작을 이해하기 위해서는 DICOM의 객체 모델과 전송 방식을 이해해야 한다.

3.1 SOP Class (Service-Object Pair Class)

SOP Class는 '어떤 서비스(Service)'를 '어떤 데이터 객체(Information Object Definition)'에 적용할 것인지를 정의한 식별자이다. - 구성: $\text{SOP Class} = \text{Service (C-STORE)} + \text{Information Object (예: CT Image Storage)}$ - 역할: SCP는 자신이 어떤 SOP Class(예: MRI, CT, Ultrasound 등)를 저장할 수 있는지 정의하며, SCU는 전송하려는 데이터의 SOP Class가 SCP에 의해 지원되는지 확인해야 한다.

주요 SOP Class UID 예시

SOP Class Name SOP Class UID 설명
CT Image Storage 1.2.840.10008.5.1.4.1.1.2 컴퓨터 단층촬영 영상 저장
MR Image Storage 1.2.840.10008.5.1.4.1.1.4 자기공명영상 저장
Ultrasound Image Storage 1.2.840.10008.5.1.4.1.1.6.1 초음파 영상 저장
Digital X-Ray Image Storage 1.2.840.10008.5.1.4.1.1.1 디지털 엑스레이 영상 저장

3.2 Transfer Syntax (전송 구문)

Transfer Syntax는 데이터가 네트워크를 통해 전송될 때의 인코딩 방식을 정의한다. - Little Endian vs Big Endian: 바이트 순서 결정. - Implicit vs Explicit VR: 데이터 타입(Value Representation) 정보를 명시적으로 포함할지 여부. - 압축 방식: JPEG Lossless, JPEG 2000 등 압축 알고리즘 적용 여부.

4. 동작 원리 및 프로세스

C-STORE는 클라이언트-서버 모델을 따르며, 요청을 보내는 SCU(Service Class User)와 요청을 받아 처리하는 SCP(Service Class Provider)로 나뉜다.

SCU와 SCP의 역할 비교

구분 SCU (Service Class User) SCP (Service Class Provider)
역할 데이터 전송 요청자 (Client) 데이터 수신 및 저장자 (Server)
주요 동작 C-STORE-RQ 메시지 생성 및 전송 메시지 수신, 데이터 검증 및 디스크 저장
예시 장치 CT, MRI, 초음파 진단기, DICOM 뷰어 PACS 서버, VNA (Vendor Neutral Archive)

데이터 전송 흐름

  1. Association 설정: A-ASSOCIATE 과정을 통해 통신 규격 합의.
  2. 전송 요청: SCU가 C-STORE-RQ 메시지에 DICOM 데이터셋(Dataset)을 담아 전송.
  3. 처리 및 저장: SCP가 데이터를 수신하여 무결성을 검사하고 저장소에 기록.
  4. 결과 응답: SCP가 C-STORE-RSP 메시지를 통해 성공 또는 실패 여부를 회신.
  5. 연결 해제: 모든 전송이 완료되면 A-RELEASE를 통해 연결 종료.

5. 메시지 구조 및 통신 과정

C-STORE 통신은 요청(Request)과 응답(Response)의 쌍으로 이루어진다.

5.1 C-STORE-RQ (Request)

SCU가 SCP에게 보내는 메시지로, 다음과 같은 핵심 파라미터를 포함한다. - Affected SOP Class UID: 전송되는 데이터의 종류 (예: CT Image Storage UID). - SOP Instance UID: 해당 영상 인스턴스의 고유 식별자. - Dataset: 환자 정보, 검사 정보, 영상 픽셀 데이터가 포함된 실제 DICOM 파일 내용.

5.2 C-STORE-RSP (Response)

SCP가 처리를 완료한 후 보내는 응답 메시지로, Status(상태 코드)가 가장 중요하다.

전송 상태 코드 표

상태 코드 (Hex) 의미 설명
0000 Success 데이터가 정상적으로 수신되고 저장됨
0100 ~ 01FF Warning 저장은 되었으나 일부 주의사항이 있음 (예: 중복 데이터)
A000 ~ AFFF Refused SCP가 해당 SOP Class를 지원하지 않거나 수신을 거부함
C000 ~ FFFF Error 네트워크 장애, 디스크 공간 부족, 데이터 손상 등으로 저장 실패

5.3 통신 시퀀스 다이어그램

sequenceDiagram
    participant SCU as SCU (Modality)
    participant SCP as SCP (PACS)

    Note over SCU, SCP: [Association Phase]
    SCU->>SCP: A-ASSOCIATE-RQ (SOP Class, Transfer Syntax 제안)
    SCP-->>SCU: A-ASSOCIATE-AC (합의된 규격 응답)

    Note over SCU, SCP: [Storage Phase]
    SCU->>SCP: C-STORE-RQ (SOP Instance UID, Dataset)
    Note right of SCP: 데이터 무결성 검사 및 저장
    SCP-->>SCU: C-STORE-RSP (Status: 0000 Success)

    Note over SCU, SCP: [Release Phase]
    SCU->>SCP: A-RELEASE-RQ
    SCP-->>SCU: A-RELEASE-RSP

6. 전송 제어 및 예외 처리

실제 의료 환경에서는 대용량 데이터 전송 중 다양한 변수가 발생하며, 이를 처리하기 위한 메커니즘이 필요하다.

  • PDU(Protocol Data Unit) 분할 전송: DICOM 데이터는 한 번에 전송되지 않고 PDU라는 단위로 분할되어 전송된다. Association 단계에서 협상되는 Max PDU Size는 네트워크의 대역폭과 SCP의 메모리 사용량에 직접적인 영향을 미치며, 너무 크면 메모리 부하가 발생하고 너무 작으면 오버헤드가 증가한다.
  • 네트워크 오류: TCP 연결이 끊어질 경우, SCU는 Association을 재설정하고 전송되지 않은 인스턴스부터 재전송(Retry)을 시도한다.
  • 저장 공간 부족: SCP가 Out of Resources (상태 코드 C000 계열)를 반환하면, SCU는 전송을 중단하고 관리자에게 알림을 보낸다.
  • 데이터 무결성 검증: SCP는 수신된 데이터셋의 필수 태그(Required Tags) 누락 여부를 확인하며, 전송 중 데이터 변조가 의심될 경우 오류를 반환하여 재전송을 유도한다.

7. 실제 활용 사례 및 워크플로우

가장 전형적인 사례는 모달리티에서 PACS로 영상을 전송하는 과정이다.

[워크플로우] $\text{CT 촬영 완료} \rightarrow \text{모달리티 내 임시 저장} \rightarrow \text{PACS와 Association 설정} \rightarrow \text{C-STORE-RQ 전송} \rightarrow \text{PACS 저장 및 C-STORE-RSP 응답} \rightarrow \text{전송 완료 표시}$

C-STORE 요청 의사코드 (Pseudo-code)

# DICOM 라이브러리를 이용한 C-STORE 전송 예시
import pydicom
from pynetdicom import AE

# 1. Application Entity (AE) 설정
ae = AE()
# CT Image Storage SOP Class UID 추가
ae.add_requested_context('1.2.840.10008.5.1.4.1.1.2') 

# 2. SCP(PACS)와 Association 연결 시도
assoc = ae.associate('192.168.0.100', 104, ae_title='PACS_SERVER')

if assoc:
    # 3. 전송할 DICOM 파일 로드
    ds = pydicom.dcmread('patient_ct_image.dcm')
    
    # 4. C-STORE-RQ 요청 전송
    status = ae.store(ds, assoc)
    
    if status == 0x0000:
        print("전송 성공: Success")
    else:
        print(f"전송 실패: Status Code {status}")
        
    # 5. 연결 해제
    assoc.release()

8. 관련 서비스와의 비교

C-STORE는 단독으로 사용되기보다 C-FIND, C-MOVE/C-GET과 함께 유기적으로 작동한다.

C-STORE vs C-MOVE vs C-GET 비교

구분 C-STORE C-MOVE C-GET
목적 데이터 전송 및 저장 데이터 전송 요청 (Push) 데이터 요청 및 수신 (Pull)
데이터 흐름 $\text{SCU} \rightarrow \text{SCP}$ $\text{SCU} \rightarrow \text{SCP} \rightarrow \text{Destination SCU}$ $\text{SCU} \leftrightarrow \text{SCP}$
특징 실제 데이터를 실어 나르는 서비스 "저 영상을 저기로 보내라"는 명령 "저 영상을 나에게 달라"는 요청
관계 C-MOVE/C-GET의 최종 단계에서 호출됨 C-STORE를 유발하는 트리거 역할 단일 Association 내에서 요청과 수신이 모두 이루어짐
AI 생성 콘텐츠 안내

이 문서는 AI 모델(gemma-4-31b)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?