![見出し画像](https://assets.st-note.com/production/uploads/images/97084892/rectangle_large_type_2_7e3dcdb7d167642ec2c3da91b0f0d5f0.jpeg?width=1200)
DICOM属性の必要・不要
DICOMオブジェクトを構成するのは属性(プログラマーに対しては、DICOMデータエレメントと言った方が正確かもしれません)です。属性はたくさん定義されています。しかし、品ぞろえがよいという柔軟性は、時として、曖昧さをもたらします。
何かの現実世界の概念を惑星DICOMへ転送するためには、必要なもののみを取捨選択できたほうが便利です。
極端な例でいえば、超音波画像に、CT画像で必須となるHU値(CT値)を保存することは、間違いであることは明確です。意味がありません。
DICOM規格のPS 3.3:情報オブジェクト定義(Information Object Definition)では、特定モダリティの画像のように、そのDICOMオブジェクトに必要なデータエレメントについて、詳しく説明しています。
これは明確な方法で提供されています。IODごとに、その背景を考慮して、IODを構成するすべてのデータエレメントに対して、必須なのか、条件付きで必須なのか、オプション(開発者に委ねる)でいいのか、という具体に、属性に優先度(重要度)を設け、分類しているのです(詳しくは、PS 3.5 の 7.4節参照)。
種類は5種類です。
![](https://assets.st-note.com/img/1675345673993-xZF1itQf3j.png)
属性タイプと意味
1:値が明示され、サポートされる属性(ないといけない属性)
1C:特定の条件下で、値が明示され、サポートされる属性(ないといけない属性)
2:値が明示される、あるいは、不明の場合には0データ長で扱われる属性。サポートされる属性(ないといけない属性)
2C:特定の条件下で、値が明示される、あるいは、不明の場合には0データ長で扱われる属性。サポートされる属性(ないといけない属性)
3:値が明示される、あるいは、不明の場合には0データ長で扱ってもよい属性。サポートされてもよいし、無視されてもよい(なくてもよい属性)
例えば、DICOMデータを臨床でデジタルに扱う場合を考えてみましょう。患者データは、名前ではなく患者IDで識別されることが多いです。
では、患者名はというと、タイプ2になります。「必須だけれども、中身は未知でもよい」(患者IDさえわかれば)という感じです。データを格納するための場所は確保しておくけれど、厳密には、値は要求しないレベルということです。
タイプ3は、あってもいいし、なくてもよいという感じです。
タイプ1~2に係る属性は、必須と考えてよいでしょう。条件付き(C付き)なのは、値が不明であってもよいだけで、タグ自体は必要です。
一般的に、DICOMアプリケーションは、必要な要素が欠けているDICOMオブジェクト(DICOMファイル)は不正とみなします。なので、自分のDICOMファイルがアプリケーションに拒否されたとき(何かの処理に不具合が生じるとき)には、何かの理由で、タグの値を読めない可能性があります。
アプリケーションが、あるはずのタグが読み込んだファイルにないときに、Nullとして計算しようとして、必要な処理をOutputできないなど、ありえることです。例えば、患者IDが指定されていない場合、そのDICOMオブジェクトは無視され、エラーになる、などが考えられます。
PS 3.3のIODには、各種DICOMオブジェクトにとっての属性の要・不要が示されています。
IODに必要とされる属性タイプがあることを知っているか否かは、開発者にとってはタイプ1、ユーザーにとっては(過去に述べた)神獣を召喚するためのリテラシーを判断される材料として必須という意味で、条件付き1(1C)と言えるのかもしれません。
Stay Visionary
この記事が気に入ったらサポートをしてみませんか?