개발/DICOM 태그 구조 마스터하기

1. DICOM 태그란 무엇인가 – 태그의 의미와 역할

devbake 2025. 8. 10. 11:00

DICOM 파일을 열어보면 수많은 데이터가 구조화된 형태로 정리되어 있는 것을 볼 수 있다.

이 구조화의 핵심은 ‘태그(Tag)’라고 불리는 고유한 식별자이며, 의료 영상 정보가 저장된 위치와 의미를 함께 정의해 주는 역할을 한다. 이는 단순한 데이터의 저장 형식을 넘어, 국제 표준에 따라 정해진 위치와 규칙에 따라 의료 데이터를 교환하고 해석하기 위한 통신 언어이기도 하다. 하지만 많은 입문자들이 DICOM 태그를 단순한 '메타데이터'나 '키-값 쌍'의 집합으로 오해하는 경우가 많다.
이번 글에서는 DICOM 태그의 구조와 역할을 정확히 정의하고, 이를 일반적인 JSON, XML, EXIF 같은 메타데이터 구조와 비교함으로써 DICOM 태그가 갖는 구조적 엄격성과 의료 정보 시스템에서의 중요성을 분명히 설명한다.

 

 

1. DICOM 태그의 정의 – 의료 정보를 식별하는 주소이자 규칙

DICOM 태그란 무엇인가 – 태그의 의미와 역할

DICOM 태그는 의료 영상 데이터 내에서 특정 정보를 표현하기 위한 고유한 식별자다.
이 태그는 정수 16진수 4바이트(8자리) 형식의 고정된 주소이며, 형식은 다음과 같이 구성된다:

┌──────────────────────────────┐
│       DICOM 태그 구성도       │
├──────────────────────────────┤
│ Tag 번호 (0010,0010)         │ → 환자 이름 정보 위치 지정 (주소)  
├──────────────────────────────┤
│ VR (PN: Person Name)         │ → 값의 형식 정의 (문자열, 날짜 등)  
├──────────────────────────────┤
│ Length (8)                   │ → 값의 길이 지정 (바이트 수)  
├──────────────────────────────┤
│ Value ("Hong^Gildong")       │ → 실제 저장된 데이터 값  
└──────────────────────────────┘
           ↓
     Data Element 1개
(Tag) = (Group Number, Element Number)
예: (0010,0010) = Patient’s Name
  • Group Number: 정보의 대분류 (예: 0010은 Patient 정보 그룹)
  • Element Number: 해당 그룹 내의 세부 항목 번호

이 태그는 단순히 어떤 데이터가 있는지를 나타내는 게 아니라, 그 데이터가 어디에 있어야 하며, 어떤 형식으로 저장되어야 하는지를 동시에 규정한다. 즉, 태그는 정보의 "이름"이자 "위치", 그리고 "형식 규칙"까지 포함하는 다층적 개념이다.

 

 

2. DICOM 태그는 단순한 키-값 쌍이 아니다

많은 사람들이 DICOM 태그를 JSON의 키-값 구조나 일반 이미지(EXIF), XML 속성처럼 생각하기 쉽다.
하지만 DICOM 태그는 그것보다 훨씬 구조적이고 제약이 많은 포맷이다.
아래에 DICOM 태그와 일반 메타데이터 키-값 구조를 비교해 보자.

항목 일반 메타데이터 (예: JSON, EXIF) DICOM 태그 구조
식별 방식 사람이 읽는 키 (예: "author") 고정된 16진수 주소 (예: 0010,0010)
구조 규칙 비교적 자유로운 구조 태그 위치, VR, Value Length 고정
데이터 위치 파싱 중 자동 매칭 바이너리 포맷에서 정확한 오프셋 위치 지정 필요
데이터 형식 형식 유연 (동적 타입 허용) VR(Value Representation)에 따라 엄격히 고정
확장성 사용자 정의 키 허용 비표준 태그는 별도 Private Block에만 허용됨
국제 표준화 각 포맷마다 다름 DICOM PS 3.6에 의해 통일된 국제 표준
 

예:

// JSON 예시
{
  "patientName": "John Doe",
  "birthDate": "1990-01-01"
}
  • 위 구조는 단순한 문자열 키를 통해 사람이 쉽게 읽고 쓸 수 있다.
  • 데이터의 위치나 저장 순서가 파싱에 큰 영향을 주지 않는다.
  • 생략해도 오류가 발생하지 않으며, 동적으로 추가도 가능하다.

그러나 DICOM은 아래와 같은 구조를 가진다:

0010,0010  PN  8  "John Doe"
0010,0030  DA  8  "19900101"
  • 0010,0010: 환자 이름 (Patient’s Name)
  • PN: Value Representation (Person Name)
  • Length: 8바이트
  • Value: "John Doe"

여기서 중요한 점은, 이 태그가 어떤 위치(Offset)에 존재해야만 하며, VR이 잘못 지정되면 뷰어에서 파싱 자체가 실패할 수 있고, Length가 틀리면 다음 태그까지의 위치 계산이 오류가 생긴다는 점이다.

즉, DICOM 태그는 단순한 의미 전달이 아닌, 의료 영상 파일 전체를 해석하기 위한 해부도와 같다.

 

 

3. 태그는 의료 영상 파일을 구성하는 최소 단위이다

DICOM 파일은 수천 개의 태그(Data Element)로 구성된다. 이 태그들은 환자 정보, 검사 정보, 장비 정보, 영상 픽셀 데이터에 이르기까지 모든 정보를 정해진 태그 위치에 따라 배열한다.

Tag (Hex) VR 의미 예시 값
(0010,0010) PN 환자 이름 "Hong, Gil Dong"
(0010,0020) LO 환자 ID "12345678"
(0008,0020) DA Study Date "20230801"
(0028,0010) US Rows (세로 픽셀 수) 512

이렇게 명확히 정의된 태그들을 기반으로, 뷰어, PACS, AI 분석기, 의료 기록 시스템 등이 데이터를 교환하고 동기화한다.

 


결론

DICOM 태그는 단순한 메타데이터가 아니라, 엄격한 국제 표준에 따라 정의된 정보 단위이며, DICOM 파일 내에서 데이터의 위치와 의미, 형식을 동시에 지정하는 구조적 식별자다. 이는 JSON이나 XML 등 일반 키-값 쌍 구조와는 달리, 정해진 위치, 길이, 형식이 모두 맞지 않으면 읽을 수 없는 바이너리 기반의 규격 중심 포맷이라는 점에서 근본적인 차이가 있다. 

다음 편에서는 이 DICOM 태그를 구성하는 4가지 요소 – Tag, VR, Length, Value의 구조와 역할을 실제 예제와 함께 하나하나 분해해서 설명한다.