見出し画像

DICOMオブジェクトを識別するUnique Identifier

オブジェクト指向プログラミングの経験がある人もない人も、本解説を読み進めて下さっている読者の方は、インスタンスという概念に見覚えがあるはずです。

インスタンスとは、あるオブジェクトについての「データの実体の一つ」のことです。オブジェクトのデータは、コンピュータ処理を行うために、一旦、インスタンスとして初期化されます。この初期化されたインスタンスデータをそのDICOMオブジェクトの実体として操作します。

例えば、頭部X線画像をDICOMオブジェクトに格納するとします。このDICOMオブジェクト(オリジナル)のコピーを作成すると、実質的にそれはオリジナルの実体の一つですから、インスタンスと呼んでも差し支えないでしょう。さらに、オリジナル画像はそのままで、新しいコピー(インスタンス)に、トリミング、コントラスト調整、注釈などを加えることができます。オリジナルとは全く異なる画像に変更することが可能です。

しかし、すでにオリジナルが存在するため、オリジナルとインスタンスを明確に区別する工夫が必要です。

DICOMでは、一意な識別子(Unique Identifier; UID)を用いてこれを区別します。

次の図で説明します。

図では、1つのオリジナル画像が、複数のインスタンスを生成している様子を示しています。オリジナルはバックアップされています。このオリジナルから、見た目は同じに見えるがJPEG圧縮されている画像(オリジナルは非圧縮形式画像)、注釈がつけられた画像、一部分がクロップされた画像などのインスタンスが作成されています。これらのデータは、それぞれ異なる場所で、異なる目的のために使用されるでしょう。

このようなインスタンスにラベル付けするために使用されるのがUIDです。画像のインスタンスは、オリジナルとは異なる場所に送られ、他の画像サーバやアプリケーションに保存される可能性があります。この際、オリジナルや他のインスタンスとの混同はできません。

DICOMのUIDは、まるで人間のDNAの様に、特定のインスタンスがどこにあっても、常に一意に識別できるユニークなIDとして機能します。

同じ理由で、画像だけでなく、DICOMでは、一意の識別子が、画像シリーズ、検査、データ交換プロトコルの構文(転送構文; Transfer Syntax)などの他の多くのオブジェクトに対して、UIDがつけられます。

UIDは、ピリオドで区切られた数字で表されます。例えば、「1.2.840.10008.1.2」などの文字列で、UI VRタイプでエンコードされます。

UID文字列は、国、地域、ベンダー、機器で世界に一つしかないグローバルなUIDとして区別できるようになっています。

現在のように、グローバル化した医療が展開されている世界では、画像がどこから来たものであれ、他のものと混同されないようにしなけれなりません。UIDがこれを行う唯一の方法なのです。

DICOMでは、次のUIDフォーマットを規定しています。

UID=<org root>.<suffix>

ここで、UIDの<org root>部分は組織を一意に識別する番号です。製造者、研究機関、NEMAなど、組織に割り当てられた番号になります。

理想的には、このルートの番号が、他の組織に使用されていないことを保証するために、各組織が一意のルートIDを申請して、登録され、IDが発行されることが望まれます。

PS 3.5のAnnex Cに詳しく書かれているので、引用します。

UID の構造は、[ISO/IEC 8824] で定義される OSI Object Identifier の数値形式をベースとしている。値は、グローバルな一意性を保証するために、[ISO/IEC 9834-1]で定義されるように登録されなければならない。

DICOM 規格は、このような一意な識別子の数に値を割り当てる。その登録に責任を持つ組織は NEMA であり、一意性を保証する。

個人的に登録された識別子については、NEMA は登録機関として機能しない。関連する組織は、[ISO/IEC 9834-1]でOSIオブジェクト識別子について定義されているように、世界的な一意性を保証するために適切な登録を取得しなければならない。多くの国(英国、フランス、日本、米国など)において、代表となる国際標準化機構は、[ISO/IEC 9834-1]で定義されているように、ISOからの委任により登録機関として機能する。

PS 3.5 Annex Cより一部抜粋

組織のIDを登録してくれる機関は国ごとに設けられています。日本ではJIRAが行っています(現在のところ、登録は無料)。

また、UIDの先頭に置かれる「1.2.840.10008」という文字列は、実は特殊です。すべてのDICOM転送構文UIDの<org root>として予約されています。そのため、これ以外には使用することはできません。

なので、この転送構文UIDは、DICOMファイルかどうかを見分けるために利用することもできます。

DICOMかどうかわからない不明なファイルがあったら、その不明なファイルをワードパッド(テキストエディターでもよい)で開き、1.2.840.10008を検索してみましょう。

この文字列が見つかったら、DICOMファイルを扱っている可能性があります(もう一つの方法は、ファイルの一番上にある4つの「DICM」という文字列(ファイルの先頭から数えて129~132文字目)があれば、DICOMファイルです)。

UIDの<suffix>部分は、いくつかの数値要素で構成されます。ただし、<org root>の範囲内で、一意(ユニーク)でなければならないとされています。

例えば、以下のようなSuffix(サフィックス)を組むとします。

<患者ID>.<検査ID>.<現在の日付>.<現在の時刻(ミリ秒)>

このようなサフィックスをUIDとして作成すれば、同じ病院内で、同じUIDを持つ別のデータが作成されることはないでしょう。使用する文字数が多ければ多いほど、2つのUIDが同じになる可能性は低くなります。

また、UIDは、よくDICOMファイル名として使用されます。これはDICOMでルール化されているものではありません。本当のDICOMファイル名は、大文字、数字、アンダースコアからなる8文字(拡張子は、無し、あるいは、慣習的に「.dcm」)で構成されるはずです。


DICOM画像データは、画像SOPインスタンスUID属性を含んでいます。これは、そのDICOM画像にのみ与えられた、世界に一つしかないIDです。このため、DICOM画像ファイル名として用いると都合が良いことがあるのです(1.2.804.114118.2.20220909.125423.3692976692.1.1.1など)。


Stay Visionary

いいなと思ったら応援しよう!