DICOM 파일을 분석하거나 뷰어에서 태그 정보를 확인하다 보면 (0010,0010), (7FE0,0010)과 같은 생소한 숫자 조합을 자주 마주하게 된다. 처음에는 단순한 코드처럼 보일 수 있지만, 이 숫자들은 DICOM 데이터에서 각 정보를 식별하는 ‘태그(Tag)’다.
태그는 환자의 이름, 검사 일자, 이미지 픽셀 정보처럼 모든 의료 영상 데이터를 구분하는 고유한 주소와 같은 역할을 한다.
하지만 태그만으로는 정보를 완전히 해석할 수 없다. 태그는 항상 VR(Value Representation)과 Length라는 속성과 함께 해석되어야 의미가 완성된다.
이번 글에서는 DICOM 태그의 구조, VR의 종류, Length가 어떤 식으로 작동하는지 구체적인 예시와 함께 정리한다.
1. DICOM 태그란 무엇인가
DICOM 태그(Tag)는 하나의 데이터 요소를 식별하기 위한 고유 번호다.
각 태그는 두 개의 16진수로 구성된 (그룹 번호, 요소 번호) 형식을 가진다.
태그 구조 예시
구성 | 설명 |
(0010,0010) | 환자 이름 (Patient’s Name) |
(0008,0020) | 검사 일자 (Study Date) |
(0020,000D) | Study UID |
(7FE0,0010) | 픽셀 데이터 (이미지 자체) |
태그는 DICOM 표준 문서에서 미리 정의된 번호이며, 소프트웨어나 PACS 시스템은 이 태그를 기준으로 정보를 읽고 해석한다.
2. 태그의 역할과 특징
- 정해진 규칙에 따라 해석 가능하다.
- 모든 DICOM 장비와 소프트웨어에서 공통적으로 사용된다.
- 일부 태그는 고정되어 있고, 일부는 사용자 정의가 가능하다.
예를 들어 (0010,0020) 태그는 항상 환자의 ID를 나타내며, 이 태그를 다른 용도로 사용하는 것은 표준 위반이다.
위 사진과 같은 dicom 구조에서 (0028, 0016) 태그는 SOPClassUID 를 나타내는데,
해당 태그의 value를 환자명으로 임의 수정한다거나 태그의 값을 (0028, 0016) → (0010, 0020) 등으로 변경하는 행위들이 표준을 위반하는 행위이다.
이렇게 표준이 위반되었을 경우 장비와 PACS 등의 프로그램 간의 통신이 불가능한 상황이 발생하기도 한다.
때문에 관련 종사자들은 불가피하게 Tag 수정이 필요한 상황이 발생했을 때에 각별히 주의를 기울여야 한다.
3. VR(Value Representation)이란?
VR은 해당 태그의 값이 어떤 데이터 타입인지 나타낸다.
예를 들어 환자 이름은 문자열이고, 날짜는 숫자+문자 조합이기 때문에
서로 다른 방식으로 저장되고 해석된다.
자주 쓰이는 VR 종류
VR | 설명 | 예시 |
PN | Person Name | 홍길동 |
DA | Date | 20250728 |
TM | Time | 145530.000 |
UI | Unique Identifier | 1.2.840.113619... |
CS | Code String | CT, MR 등 |
LO | Long String | 병원 이름 등 일반 문자열 |
OB/OW | Other Byte / Word | 픽셀 데이터 등 바이너리 데이터 |
VR은 길이(Length) 계산 방식에도 영향을 준다.
예를 들어 UI는 항상 null-terminated 방식으로 저장되기 때문에 길이를 계산할 때 추가 바이트를 고려해야 한다.
4. Length(데이터 길이)의 개념
Length는 해당 데이터 요소의 값(Value)이 차지하는 바이트 수를 의미한다.
예를 들어 환자 이름 "홍길동"은 UTF-8 인코딩 기준으로 약 6~9바이트가 될 수 있다.
요소 | 예시 값 | Length (byte) |
(0010,0010) | 홍길동 | 6~12 (인코딩 방식에 따라 다름) |
(0008,0020) | 20250728 | 8 |
(0010,0040) | M (성별) | 2 |
정확히 설정되지 않으면 파일 전체가 손상될 수 있다.
5. 태그 + VR + Length + Value 구성 예시
다음은 하나의 데이터 요소가 실제로 어떻게 구성되는지 보여주는 예다.
Tag: (0010,0010) → 환자 이름
VR: PN → Person Name
Length: 6 → 길이: 6 바이트
Value: "홍길동"
컴퓨터는 이 정보를 순서대로 읽고 해석하며, 이러한 데이터 요소가 수백 개 이어지면 하나의 DICOM 객체가 완성된다.
6. 실무에서 중요한 태그 예시
태그 | 설명 | VR |
(0010,0010) | Patient’s Name | PN |
(0008,0020) | Study Date | DA |
(0008,0060) | Modality | CS |
(0020,000D) | Study Instance UID | UI |
(7FE0,0010) | Pixel Data | OB/OW |
이 태그들만 정확히 이해해도 기초 분석, 익명화, AI 전처리, PACS 연동 테스트 등의 실무가 가능하다.
7. 태그 관련 주의사항
- 태그 순서가 고정된 것은 아니다.
→ DICOM 표준은 태그의 순서에 유연하지만, 일부 장비에서는 순서 문제로 오류가 발생할 수 있다. - Private Tag(개별 제조사 태그)
→ (0009,xxxx)나 (0011,xxxx)처럼 특정 제조사에서 사용하는 비표준 태그가 있다.
→ 해석하기 위해서는 해당 장비의 기술 문서가 필요하다. - 중복 태그 또는 태그 누락
→ 잘못된 VR이나 Length 설정은 뷰어 오류의 원인이 되며, PACS 서버 업로드에 실패할 수 있다.
결론
DICOM 태그는 의료 영상 데이터를 구조화하는 가장 중요한 요소다.
각 태그는 VR(Value Representation)과 Length와 함께 구성되어 의료 영상에 포함된 정보들을 컴퓨터가 읽고 해석할 수 있게 한다.
실무자는 이 구조를 정확히 이해해야 DICOM 파일을 해석하고, AI 분석, PACS 연동, 익명화 처리 등 다양한 작업에 능숙하게 대응할 수 있다.
다음 편에서는 UID(Unique Identifier)의 개념과, DICOM 내 객체를 고유하게 구분하는 방법에 대해 다룰 예정이다.
'개발 > DICOM 이야기' 카테고리의 다른 글
08. Little Endian vs Big Endian – DICOM 데이터의 바이트 순서 (0) | 2025.07.29 |
---|---|
07. DICOM UID(Unique Identifier)의 종류와 역할 (1) | 2025.07.29 |
05. DICOM 객체(Object)와 데이터 요소(Data Element) (1) | 2025.07.28 |
04. DICOM의 기본 구조 – File Format과 Meta Information (0) | 2025.07.28 |
03. DICOM vs HL7 – 의료 정보 표준 비교 (1) | 2025.07.28 |