개발/DICOM 이야기

12. DICOM에서의 날짜, 시간, 성별, 환자 ID 처리 방식

devbake 2025. 7. 29. 05:50

의료 영상 파일인 DICOM에서는 단순히 이미지만 저장하는 것이 아니라, 환자 이름, ID, 성별, 검사 날짜와 시간 같은 메타데이터가 함께 저장된다.
이 정보들은 병원에서 영상 데이터를 검색하거나, PACS 서버에 정렬해서 표시하거나, AI 학습 데이터로 필터링할 때 핵심 기준이 된다.
하지만 일반적인 텍스트와 달리, DICOM은 **자체적인 포맷(DICOM Data Format)**을 따르기 때문에 날짜나 시간, 텍스트 데이터를 그대로 읽거나 쓸 수 없다.
이번 글에서는 DICOM 파일 내부에서 날짜, 시간, 성별, 환자 ID가 어떤 형식으로 저장되는지 그리고 실무에서 이를 어떻게 해석하고 활용하는지를 상세히 설명한다.

DICOM에서의 날짜, 시간, 성별, 환자 ID 처리 방식

 

1. DICOM에서 사용하는 데이터 포맷 요약

항목 VR (Value Representation) 포맷 예시
날짜 DA (Date) YYYYMMDD 20250728
시간 TM (Time) HHMMSS.FFFFFF 143250.000000
성별 CS (Code String) 한 글자 코드 M / F / O
환자 ID LO (Long String) 문자열 P12345678
환자 이름 PN (Person Name) 성^이름 KIM^JISOO
이처럼 모든 정보는 고정된 규칙을 따르며, 이 규칙을 지키지 않으면 PACS 오류, 파싱 실패, 검색 불가 등 다양한 문제가 생긴다.

 

 

1-1. 날짜 (Date, DA)

대표 태그:

태그 설명
(0008,0020) Study Date
(0008,0021) Series Date
(0008,0022) Acquisition Date
(0008,0023) Content Date
(0010,0030) Patient's Birth Date
포맷:
  • 8자리 숫자만 사용 (YYYYMMDD)
  • 예: 20250728 → 2025년 7월 28일

📌 슬래시(/), 하이픈(-), 공백 절대 사용 불가
📌 문자열이 아닌 순수 숫자로 인식됨

 

1-2. 시간 (Time, TM)

대표 태그:

태그 설명
(0008,0030) Study Time
(0008,0031) Series Time
(0008,0032) Acquisition Time
(0008,0033) Content Time
포맷:
  • HHMMSS[.FFFFFF] → 시간, 분, 초 (소수점 이하로 마이크로초까지 가능)
  • 예: 143250.000000 → 오후 2시 32분 50초
  • 예: 083015 → 오전 8시 30분 15초

📌 소수점 이하 자리는 생략 가능
📌 콜론(:) 사용 안 됨

 

1-3. 성별 (Sex, CS)

대표 태그:

태그 설명
(0010,0040) Patient's Sex
포맷:
  • M → 남성 (Male)
  • F → 여성 (Female)
  • O → 기타 (Other)

📌 문자열이 아닌 코드 값으로 인식되기 때문에 정확한 영문자 한 글자를 사용해야 함

 

1-4. 환자 ID (Patient ID, LO)

대표 태그:

태그 설명
(0010,0020) Patient ID
 

포맷:

  • 문자열 (한 줄, 64자 이하)
  • 예: P20250728-001
  • 띄어쓰기, 특수문자 일부는 허용되나 시스템에 따라 제한될 수 있음

📌 병원 시스템에서 환자를 식별하는 핵심 키이기 때문에 삭제하거나 중복되면 PACS에서 충돌이 발생할 수 있음

 

1-5. 환자 이름 (Person Name, PN)

대표 태그:

태그 설명
(0010,0010) Patient's Name

포맷:

  • 성^이름 형식 (영문 기준)
  • 예: KIM^JISOO
  • 한글이 포함될 경우 시스템에 따라 깨질 수 있음

📌 실제 의료 데이터를 AI 학습용 데이터로 사용할 시에 반드시 익명화 또는 가명처리 필요

 

2. 실무 예시

예시 1: 날짜 기준으로 검사 필터링

if ds.StudyDate >= '20250101':
    print("최근 촬영된 영상입니다.")
 

예시 2: 환자 이름 제거 (익명화 처리)

ds.PatientName = ''
ds.PatientID = 'anon123'

 

3. 실수하기 쉬운 포맷 오류

잘못된 값 문제
2025-07-28 날짜에 하이픈(-) 포함 → DICOM 파싱 오류
14:32:50 시간에 콜론(:) 포함 → VR: TM 파싱 실패
성별에 한글 입력 → M, F, O만 허용
홍 길 동 이름에 띄어쓰기 포함 → 시스템 오류 가능성 높음
 

📌 이런 사소한 포맷 오류가 PACS 업로드 실패, DICOM 뷰어 오류, AI 전처리 중단 등의 큰 문제로 이어질 수 있다. 


결론

DICOM은 의료 영상 데이터를 정확하고 일관되게 관리하기 위해 모든 메타데이터에 고정된 형식과 규칙을 적용한다.
날짜는 YYYYMMDD, 시간은 HHMMSS, 성별은 M/F/O, 이름은 성^이름 형식으로 저장되며, 
이 규칙을 위반하면 시스템 오류, 파싱 실패, AI 처리 오류 등이 발생할 수 있다.
의료 IT 실무자나 AI 개발자라면 이 포맷을 반드시 이해하고, DICOM 데이터를 처리할 때 항상 규칙에 맞는 값만을 사용해야 한다.