既定の DICOM PS3.15 プライバシー プロファイルは多くの使用ケースをカバーしているが、医療機関はしばしぶユニークな個人情報の要件を持っています. このガイドでは、組織の特定のポリシーに合致する **カスタマイズされた DicOM 匿名化プロフィールを設計する方法を学びます. タグ パターン、行動、および CSV、JSON、XML 形式のテンプレートを提供します。
テーブルコンテンツ
なぜカスタマイズされたプロフィールが必要なのか。
既定のプライバシープロファイルは堅固な基礎を提供しますが、それらはすべての機関の要件を満たすことはできません. 組織が内部の追跡性のために特定の機構識別を保管する必要があるときにカスタマイズされたプロフィールを必要とする場合があります. 一部の研究コラボレーションは、特定の人口統計を保存し、直接の識別の削除が必要になる可能性があります。
カスタマイズされたプロフィールは、DICOM タグがどのように変更されているかを正確にコントロールし、特定のデータ管理ポリシーに従うことを可能にします。
タグパターンとアクションを理解する
DICOM タグは、フォーマット(GGGG、EEEE)のグループおよび要素番号によって識別されます。例えば、患者名(0010,0010)と患者ID(010.0020)です。
利用可能なアクションには、データセットからタグを完全に取り除く D(削除)、値を空白またはゼロ長さの値で置き換える **Z(ゼル)****、表示が削減に似た場合のタゴを除去する *X(リモート)、オリジナルの値が変わらないまま保つ K(保存)、コンテキスト的に識別情報を取り外すことによって価値を清潔にする **C(クリーン)、および **U(UIDと代わる) **が新しく生成されたユニークなアイデンティティーで交換されます。
適切な行動を選択することは、あなたの使用のケースに依存します. 匿名出力に表示されるべきタグのために D または X を使用する. Z を使用する タブが存在する必要がありますが、空っぽでなければなりません. K は、あなたが正確に保存することを望んでいます. C が組み込まれたアイデンティティーを含むテキストフィールドのために使用されます. U を利用する U のユニークさを維持しながら置き換える必要があります。
カスタマイズ・プロファイルを作成する
カスタマイズされたプロファイルは3つのフォーマットで定義することができます. あなたのワークフローに最適なものを選択します。
CSVフォーマット
CSV は、シンプルなプロフィールに最適な形式です。
TagPattern;Action
(0010,0010);Z
(0010,0020);Z
(0010,0030);X
(0010,0040);K
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0080);D
(0008,0081);D
(0008,1030);C
(0008,103E);C
(0010,1010);K
(0010,1030);K
このプロフィールは、患者名と身分をゼロ化し、生年月日を削除、患者の性別と人口学を保存、すべてのUIDを置き換え、機関情報を取り除き、説明をクリアします。
JSON フォーマット
JSONは、複雑なメタデータプロファイルのためのより良い構造を提供します:
{
"profileName": "Hospital Research Profile",
"version": "1.0",
"description": "Custom profile for research data sharing",
"actions": [
{ "TagPattern": "(0010,0010)", "Action": "Z", "Comment": "Patient Name" },
{ "TagPattern": "(0010,0020)", "Action": "Z", "Comment": "Patient ID" },
{ "TagPattern": "(0010,0030)", "Action": "X", "Comment": "Birth Date" },
{ "TagPattern": "(0010,0040)", "Action": "K", "Comment": "Patient Sex" },
{ "TagPattern": "(0020,000D)", "Action": "U", "Comment": "Study Instance UID" },
{ "TagPattern": "(0020,000E)", "Action": "U", "Comment": "Series Instance UID" },
{ "TagPattern": "(0008,0018)", "Action": "U", "Comment": "SOP Instance UID" },
{ "TagPattern": "(0008,0080)", "Action": "D", "Comment": "Institution Name" },
{ "TagPattern": "(0008,0081)", "Action": "D", "Comment": "Institution Address" },
{ "TagPattern": "(0008,1030)", "Action": "C", "Comment": "Study Description" }
]
}
XMLフォーマット
XMLは既存の XML ツールを搭載した環境に優先されます。
<?xml version="1.0" encoding="utf-8"?>
<ConfidentialityProfile name="Hospital Research Profile" version="1.0">
<Description>Custom profile for research data sharing</Description>
<TagActions>
<TagAction TagPattern="(0010,0010)" Action="Z">Patient Name</TagAction>
<TagAction TagPattern="(0010,0020)" Action="Z">Patient ID</TagAction>
<TagAction TagPattern="(0010,0030)" Action="X">Birth Date</TagAction>
<TagAction TagPattern="(0010,0040)" Action="K">Patient Sex</TagAction>
<TagAction TagPattern="(0020,000D)" Action="U">Study Instance UID</TagAction>
<TagAction TagPattern="(0020,000E)" Action="U">Series Instance UID</TagAction>
<TagAction TagPattern="(0008,0018)" Action="U">SOP Instance UID</TagAction>
<TagAction TagPattern="(0008,0080)" Action="D">Institution Name</TagAction>
<TagAction TagPattern="(0008,0081)" Action="D">Institution Address</TagAction>
<TagAction TagPattern="(0008,1030)" Action="C">Study Description</TagAction>
</TagActions>
</ConfidentialityProfile>
コードでカスタマイズされたプロファイルをアップロード
あなたの .NET アプリケーションでカスタマイズされたプロファイルをアップロードすることは簡単です:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Anonymization;
// Load from CSV
ConfidentialityProfile csvProfile = ConfidentialityProfile.LoadFromCsvFile(
"profiles/hospital_research.csv",
ConfidentialityProfileOptions.All
);
// Load from JSON
ConfidentialityProfile jsonProfile = ConfidentialityProfile.LoadFromJsonFile(
"profiles/hospital_research.json",
ConfidentialityProfileOptions.All
);
// Load from XML
ConfidentialityProfile xmlProfile = ConfidentialityProfile.LoadFromXmlFile(
"profiles/hospital_research.xml",
ConfidentialityProfileOptions.All
);
// Create anonymizer with custom profile
Anonymizer anonymizer = new(csvProfile);
// Anonymize files
DicomFile dcm = DicomFile.Open("patient_study.dcm");
DicomFile anonymizedDcm = anonymizer.Anonymize(dcm);
anonymizedDcm.Save("anonymized_study.dcm");
Console.WriteLine("Anonymization completed with custom profile!");
リアル・ワールド・シナリオの例(#real-world-scenario-examples)
シナリオ1:内部品質保証
内部追跡のための機関およびデバイスの情報を保持し、患者データを匿名化する:
TagPattern;Action
(0010,0010);Z
(0010,0020);Z
(0010,0030);X
(0008,0080);K
(0008,0081);K
(0008,1010);K
(0008,1090);K
(0018,1000);K
シナリオ2:外部研究協力
人口調査のための最大匿名化と保存された人口学:
TagPattern;Action
(0010,0010);X
(0010,0020);X
(0010,0030);X
(0010,0040);K
(0010,1010);K
(0010,1020);K
(0010,1030);K
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0080);X
(0008,0081);X
(0008,1030);X
(0008,103E);X
シナリオ3:マルチサイト研究の調整
データリンクのための研究関係を維持しながら UID を置き換える:
TagPattern;Action
(0010,0010);Z
(0010,0020);Z
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0016);K
(0020,0010);K
(0020,0011);K
(0020,0013);K
認証とテスト
生産開始前に常にカスタマイズされたプロフィールを確認する:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Anonymization;
string profilePath = "profiles/custom_profile.csv";
string testDataFolder = "test_samples";
string outputFolder = "validation_output";
// Load custom profile
ConfidentialityProfile profile = ConfidentialityProfile.LoadFromCsvFile(
profilePath,
ConfidentialityProfileOptions.All
);
Anonymizer anonymizer = new(profile);
Directory.CreateDirectory(outputFolder);
// Process test files
string[] testFiles = Directory.GetFiles(testDataFolder, "*.dcm");
int successCount = 0;
int failCount = 0;
foreach (string filePath in testFiles)
{
try
{
DicomFile dcm = DicomFile.Open(filePath);
DicomFile anonymized = anonymizer.Anonymize(dcm);
string outputPath = Path.Combine(outputFolder, Path.GetFileName(filePath));
anonymized.Save(outputPath);
Console.WriteLine($"✓ {Path.GetFileName(filePath)}");
successCount++;
}
catch (Exception ex)
{
Console.WriteLine($"✗ {Path.GetFileName(filePath)}: {ex.Message}");
failCount++;
}
}
Console.WriteLine($"\nValidation Summary:");
Console.WriteLine($" Succeeded: {successCount}");
Console.WriteLine($" Failed: {failCount}");
Console.WriteLine($"\nReview output files in: {outputFolder}");
認証が実行された後、DICOM ビューで匿名のファイルを開いて、予想されるタグが正しく変更され、保存されたタゴが保存されます、UID が適切に置き換えられ、敏感なデータが清潔なフィールドに残っていないことを確認します。
結論( )
カスタマイズされたプライバシープロファイルは、独自の個人情報を保存する必要があるか、研究のための人口統計を保存し、外部共有のために最大限の匿名化を適用するかどうかにかかわらず、カスタムされたプロフィールはそれを可能にします。
重要な推奨事項には、監査目的でプロファイルの選択を文書化し、変更を追跡するためのバージョンコントロールプロフィールファイル、生産使用前に徹底的にプロフェッショナルのテスト、および要求が進化するにつれて定期的に記録を検討することも含まれます。
DICOM 匿名化および Aspose.Medical API に関する詳細については、 ドキュメンタリー一般的なプロフィールシナリオのテンプレートは、例セクションで利用できます。