UID는 Unique ID의 약자다. DICOM은 NEMA에서 제정된 의료 결과에 대해 네트워크, 결과파일 등을 집대성한 표준 프레임워크이다. DICOM 네트워크에서 결과들은 유일무이해야 하기 때문에 일종의 UID 생성규칙이 있다.
아래에서 설명하는 표준규칙은 전세계의 DICOM이미지들이 하나의 네트워크에서 통용될 때에도 유일하도록 제정된 방식이다. 즉 내 병원에서 생성한 이미지는 절대로 밖으로 유출하지 않고 우리병원에서만 사용한다고 하면 궂이 표준 방식으로 생성할 이유는 없다.
비표준 규칙방식은 단순히 GUID만 들어가기 때문에 한림성심병원 처럼 8개 병원을 서버 연계를 통해 결과를 공유하는 병원같은 경우 자칫 유일하지 않게 될 여지가 있기 때문에 표준을 따르는 것이 중요하다.
표준규칙
예제) 1.2.410.xxxxx.3.152.235.2.12.187636473
예제값 | 설명 |
1 | ISO 식별자 |
2 | ANSI의 식별자 |
410 | 기관의 국가코드 (대한민국: 410 / 미국: 840) |
xxxxx | 기관의 OID 코드 (ISO에 등재되는 코드) |
3 | 기관의 제품 분류타입 또는 제품코드 |
152 | 기관의 제품 시리얼번호 (생략가능) |
235 | 검사 ID |
2 | 시리즈 번호 |
12 | 이미지(인스턴스) 번호 |
187636473 | 이미지 획득시간 (UTC Tick = Unix Time) |
보통 DICOM을 생산하는 것은 CT, MRI 같은 의료기기에서 최초 생성되기 때문에 OID는 CT, MRI를 생산하는 업체의 ID가 된다. 이외에도 Secondary Capture 같이 내시경이나 초음파 비디오 캡쳐영상 또는 일부 PDF, 이미지, 화면 캡쳐 같은 영상물을 DICOM으로 생성할 때에도 해당 제품을 개발/생상하는 업체의 OID가 필요하다.
비표준규칙
비표준이지만 DICOM 표준문서에 내용(ISO/IEC 9834-8, paragraph 6.3 (referenced by DICOM PS 3.5, B.2))이 들어갔다고 해서 필자도 사용 중인 방법이다.
public string ConvertGuidToUuidInteger()
{
Guid value = Guid.NewGuid();
// ISO/IEC 9834-8, paragraph 6.3 (referenced by DICOM PS 3.5, B.2) defines how
// to convert a UUID to a single integer value that can be converted back into a UUID.
// The Guid.ToByteArray Method returns the array in a strange order (see .NET docs),
// BigInteger expects the input array in little endian order.
// The last byte controls the sign, add an additional zero to ensure
// the array is parsed as a positive number.
var octets = value.ToByteArray();
var littleEndianOrder = new byte[]
{ octets[15], octets[14], octets[13], octets[12], octets[11], octets[10], octets[9], octets[8],
octets[6], octets[7], octets[4], octets[5], octets[0], octets[1], octets[2], octets[3], 0 };
return "2.25." + new BigInteger(littleEndianOrder).ToString(CultureInfo.InvariantCulture);
}
참조URL
표준규칙 - www.medicalconnections.co.uk/kb/UIDs/
국가코드 - en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
2012년 CP-1156과 함께 추가된 비표준방식 - stackoverflow.com/questions/10295792/how-to-generate-sopinstance-uid-for-dicom-file
ISO OID Repository 기준 대한민국 내 등재된 목록 - oid-info.com/get/1.2.410
분명 국내 의뢰기관을 통해서 현재 재직 중인 회사의 OID값을 공문으로 받았는데 왜 여기에 없을까? 의문이다.
'블로그 > 나의생각' 카테고리의 다른 글
[2021.05] 영화 "클릭" 리뷰 (0) | 2021.05.14 |
---|---|
[2021.04] C의 유전자를 읽고... (0) | 2021.04.24 |
[2021.03] 론 제프리의 "효율적인 소프트웨어 개발을 위한 7가지 핵심 원칙" (0) | 2021.03.19 |
[2021.03] Visual Basic 6.0 나의 개발 패턴이력 (0) | 2021.03.19 |
[2021.03] Visual Basic 6.0 개발 노하우 (0) | 2021.03.19 |