CSV, JSON veya XML'den özelleştirilmiş bir DICOM Anonimizasyon Profili Nasıl Oluşturulur

CSV, JSON veya XML'den özelleştirilmiş bir DICOM Anonimizasyon Profili Nasıl Oluşturulur

Bu öğretici, CSV, JSON veya XML dosyalarını kullanarak özelleştirilmiş DICOM anonimleşme profilleri nasıl oluşturulacağını gösterir C#. Özelleşmiş profiller, kurumunuzun özel gizlilik politikalarına göre hangi etiketlerin kaldırılması, değiştirilmesi veya korunması gerektiğini tam olarak tanımlamanıza olanak tanır.

Neden özelleştirilmiş profiller oluşturulur?

Önceden tanımlanmış DICOM PS3.15 profilleri tüm kurumsal gereksinimleri karşılayamaz.

  • İç izlenebilirlik için özel kurumsal tanımlayıcıları tutun
  • Kurumsal Özel Gizlilik Kurallarını Uygulayın
  • Yargıtayızda benzersiz düzenleyici gereksinimleri karşılamak

Tag Aksiyonlar Açıklandı

DICOM etiketlerine aşağıdaki eylemler uygulanabilir:

eylemKoduAçıklama
KaldırDEtiketi veritabanından tamamen çıkarın
sıfırZdeğeri boş veya sıfır değerle değiştirin
kaldırmaXEğer mevcutsa kaldır (Kaldırma ile benzer)
KeepKOrijinal değeri değişmeden koruyun
CleanCKimlik bilgilerini kaldırarak değerini temizleyin
UID ile değiştirinUYeni bir UID ile değiştirin

Etiket Arşivi: çevreyi hazırlamak

  • Visual Studio veya herhangi bir uyumlu .NET IDE ayarlayın.
  • Yeni bir .NET 8 konsol uygulama projesi oluşturun.
  • Aspose.Medical’ı NuGet Paket Yöneticisi’nden kurun.
  • Özel profil tanımlama dosyanızı hazırlayın.

Adım adım profil oluşturma kılavuzu

Adım 1: Aspose.Medical yükleme

Projenize Aspose.Medical kütüphanesini NuGet kullanarak ekleyin.

Install-Package Aspose.Medical

Adım 2: Bir CSV Profili Tanımı Oluşturun

Etiket çerçeveleri ve eylemleri ile bir CSV dosyası oluşturun. her satır bir etiket ve hareketi belirler.

** Profil.csv için :**

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

<button class=“hextra-code-copy-btn hx-group/copybtn hx-transition-all active:hx-opacity-50 hx-bg-primary-700/5 hx-border hx-border-black/5 hx-text-gray-600 hover:hx-text-gray-900 hx-rounded-md hx-p-1.5 dark:hx-bg-primary-300/10 dark:hx-border-white/10 dark:hx-text-gray-400 dark:hover:hx-text-gray-50” title=“Kopya Kodu”

<div class="copy-icon group-[.copied]/copybtn:hx-hidden hx-pointer-events-none hx-h-4 hx-w-4"></div>
<div class="success-icon hx-hidden group-[.copied]/copybtn:hx-block hx-pointer-events-none hx-h-4 hx-w-4"></div>

Bu profil için:

  • Zeros hastanın adı ve kimliği
  • Doğum Tarihi Kaldır
  • Hastalıklı seks yapıyor
  • Çalışma, Serisi ve SOP Instance UID’leri değiştirir
  • Kurumsal Bilgilerin Kaldırılması
  • Temiz Çalışma Açıklaması

3. Adım: Bir JSON Profili Tanımı (Alternatif) oluşturun

Aynı etiket tanımları ile bir JSON dosyası oluşturun.

Profil.json için :

[
  { "TagPattern": "(0010,0010)", "Action": "Z" },
  { "TagPattern": "(0010,0020)", "Action": "Z" },
  { "TagPattern": "(0010,0030)", "Action": "X" },
  { "TagPattern": "(0010,0040)", "Action": "K" },
  { "TagPattern": "(0020,000D)", "Action": "U" },
  { "TagPattern": "(0020,000E)", "Action": "U" },
  { "TagPattern": "(0008,0018)", "Action": "U" },
  { "TagPattern": "(0008,0080)", "Action": "D" },
  { "TagPattern": "(0008,0081)", "Action": "D" },
  { "TagPattern": "(0008,1030)", "Action": "C" }
]

Adım 4: Bir XML Profili Tanımı Oluşturun (Alternatif)

Aynı etiket tanımları ile bir XML dosyası oluşturun.

  • Profil .xml : *
<?xml version="1.0" encoding="utf-8"?>
<ConfidentialityProfile>
  <TagAction TagPattern="(0010,0010)" Action="Z" />
  <TagAction TagPattern="(0010,0020)" Action="Z" />
  <TagAction TagPattern="(0010,0030)" Action="X" />
  <TagAction TagPattern="(0010,0040)" Action="K" />
  <TagAction TagPattern="(0020,000D)" Action="U" />
  <TagAction TagPattern="(0020,000E)" Action="U" />
  <TagAction TagPattern="(0008,0018)" Action="U" />
  <TagAction TagPattern="(0008,0080)" Action="D" />
  <TagAction TagPattern="(0008,0081)" Action="D" />
  <TagAction TagPattern="(0008,1030)" Action="C" />
</ConfidentialityProfile>

Adım 5: Özelleştirilmiş profil yükleme

Dosya biçimi için uygun yöntemi kullanarak özelleştirilmiş profili yükleyin.

using Aspose.Medical.Dicom.Anonymization;

// Load from CSV
ConfidentialityProfile profileFromCsv = ConfidentialityProfile.LoadFromCsvFile(
    "profile.csv", 
    ConfidentialityProfileOptions.All
);

// Or load from JSON
ConfidentialityProfile profileFromJson = ConfidentialityProfile.LoadFromJsonFile(
    "profile.json", 
    ConfidentialityProfileOptions.All
);

// Or load from XML
ConfidentialityProfile profileFromXml = ConfidentialityProfile.LoadFromXmlFile(
    "profile.xml", 
    ConfidentialityProfileOptions.All
);

Adım 6: Özel Profil Uygulaması

Yüklenen profili ile bir Anonymizer oluşturun ve DICOM dosyalarına uygulayın.

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Anonymization;

// Load custom profile
ConfidentialityProfile profile = ConfidentialityProfile.LoadFromCsvFile(
    "profile.csv", 
    ConfidentialityProfileOptions.All
);

// Create anonymizer with custom profile
Anonymizer anonymizer = new(profile);

// Load and anonymize DICOM file
DicomFile dcm = DicomFile.Open("patient_study.dcm");
DicomFile anonymizedDcm = anonymizer.Anonymize(dcm);
anonymizedDcm.Save("anonymized_study.dcm");

Tam Kodu Örneği CSV Profili ile

İşte CSV tabanlı özelleştirilmiş bir profil kullanarak tam bir örnek:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Anonymization;

// Load custom confidentiality profile from CSV
ConfidentialityProfile profile = ConfidentialityProfile.LoadFromCsvFile(
    "hospital_privacy_profile.csv",
    ConfidentialityProfileOptions.All
);

// Create anonymizer with the custom profile
Anonymizer anonymizer = new(profile);

// Load DICOM file
DicomFile dcm = DicomFile.Open("patient_scan.dcm");

// Anonymize using custom profile
DicomFile anonymizedDcm = anonymizer.Anonymize(dcm);

// Save result
anonymizedDcm.Save("anonymized_scan.dcm");

Console.WriteLine("Anonymization completed with custom profile!");

Pratik Senaryo Örnekleri

Senaryo 1: İç izleme için kurumsal kimlik tutun

TagPattern;Action
(0010,0010);Z
(0010,0020);Z
(0008,0080);K
(0008,0081);K

2. Senaryo: İlişkileri korurken tüm UID’leri değiştirin

TagPattern;Action
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0016);K

Senaryo 3: Dış Paylaşım için Maksimum Gizlilik

TagPattern;Action
(0010,0010);X
(0010,0020);X
(0010,0030);X
(0010,0040);X
(0008,0080);X
(0008,0081);X
(0008,1030);X
(0008,103E);X

Etiket: profilinizin test edilmesi

Her zaman üretim kullanımından önce özelleştirilmiş profilleri doğrulayın:

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Anonymization;

// Load custom profile
ConfidentialityProfile profile = ConfidentialityProfile.LoadFromCsvFile(
    "test_profile.csv",
    ConfidentialityProfileOptions.All
);

Anonymizer anonymizer = new(profile);

// Test with sample files
string[] testFiles = Directory.GetFiles("test_samples", "*.dcm");

foreach (string filePath in testFiles)
{
    try
    {
        DicomFile dcm = DicomFile.Open(filePath);
        DicomFile anonymized = anonymizer.Anonymize(dcm);
        
        string outputPath = Path.Combine("test_output", Path.GetFileName(filePath));
        anonymized.Save(outputPath);
        
        Console.WriteLine($"✓ Processed: {Path.GetFileName(filePath)}");
    }
    catch (Exception ex)
    {
        Console.WriteLine($"✗ Failed: {Path.GetFileName(filePath)} - {ex.Message}");
    }
}

Console.WriteLine("\nValidation complete. Review output files in DICOM viewer.");

Troubleshooting

Invalid Dosya Yolu

Profil dosyası bulunamazsa:

string profilePath = "profile.csv";
if (!File.Exists(profilePath))
{
    Console.WriteLine($"Profile file not found: {profilePath}");
    return;
}

Invalid Tag Pattern veya Eylem

Etiketleme şablonları formatı takip eder (GGGG,EEEE) GGGG grubudur ve EEEE hexadecimal elemanıdır. geçerli eylemler şunlardır: D, Z, X, K, C, U.

Özel Profiller için En İyi Uygulamalar

  • Version Control: Süre boyunca değişiklikleri izlemek için versiyon kontrolünde profil dosyalarını depolayın.
  • Dokümanlık: Her etiket için belirli eylemlerin neden seçildiğini açıklayan yorumlar ekleyin.
  • Testing: DICOM dosyalarını üretmeden önce test verileri ile profilleri doğrulayın.
  • Backup: Her zaman orijinal profil dosyalarının yedekleri tutun.
  • Review: Profilleri düzenli olarak incelemek, düzenleyici gereksinimleri karşılamak için.

Ek Bilgiler

  • Farklı kullanım durumları için çoklu profiller oluşturmayı düşünün (iç paylaşım, dış araştırma vb.).
  • Denetim amaçlı dosyaları anonimleştirirken kullanılan profil belgesi.
  • JSON ve XML biçimleri, karmaşık profiller için daha iyi bir yapı sağlar.

Sonuç

Bu öğretici, CSV, JSON veya XML dosyalarını kullanarak özelleştirilmiş DICOM anonimleşme profilleri nasıl oluşturulacağını göstermiştir C# ile Aspose.Medical.

 Türkçe