Önceden tanımlanmış DICOM PS3.15 gizlilik profilleri birçok kullanım durumunu kapsıyor olsa da, sağlık kurumları genellikle benzersiz Gizlilik gereksinimleri vardır. bu kılavuzda, organizasyonunuzun belirli politikalarına uymak için özelleştirilmiş DicOM anonimleştirme profillerini ** nasıl tasarlayacağınızı öğreneceksiniz. etiket desenleri, eylemleri ve CSV, JSON ve XML biçimlerinde şablonlar sağlayacağız.

içerik tablosu

Neden Kişiselleştirilmiş Profiller Gerekli

Önceden tanımlanmış gizlilik profilleri sağlam bir temel sağlar, ancak tüm kurumsal gereksinimleri karşılayamazlar. Kuruluşunuzun iç izlenebilirlik için belirli kurum tanımlayıcılarının saklanmasını gerektirdiğinde özelleştirilmiş profillere ihtiyacınız olabilir. Bazı araştırma işbirlikleri, doğrudan tanımları kaldırırken korunmuş bazı demografilere ihtiyaç duyabilir. İç kalite güvence çalışma akışları, standart profillerin kaldırılacağı cihaz bilgileri gerektirebilir. Ayrıca, bölgesel düzenlemeler bazı veri öğelerinin özel işlenmesini talep edebilir.

Özelleştirilmiş profilleri size hangi DICOM etiketlerinin değiştirildiğini ve nasıl, belirli veri yönetimi politikalarınızın uygulanmasını sağlar.

Anlayış etiketleri ve eylemleri {# anlamak-tag-patterns-and-actions}

DICOM etiketleri, formatta (GGGG,EEEE) grup ve element numaraları ile tanımlanır.Örneğin, Hasta Adı (0010,0010) ve Hasta Kimliği ( 0010.0020).

Kullanılabilir eylemler arasında D (Delete) etiketini veri kümesinden tamamen çıkarır, Z (Zero)** değerini boş veya sıfır uzunluk değeri ile değiştirir X (Remove)* etkiyi kaldırır eğer mevcutsa Delete benzer, K (Keep) orijinal değerin değişmeden korunmasını sağlar **C (Clean)*, konektüel olarak tanımlayıcı bilgileri kaldırarak değerleri temizler ve **U (UID ile Değiştir) ** yeni oluşturulan benzersiz bir kimlikle değiştirilir.

Doğru eylemi seçmek kullanım durumuna bağlıdır. anonim bir çıkışta görünmemesi gereken etiketler için D veya X kullanın. etiketin var olması gerektiğinde Z kullanır, ancak boş olması gerekir. tam olarak muhafaza etmek istediğiniz etiketler için K kullanılır. yerleşik tanımlayıcıları içeren metin alanları için C kullanabilirsiniz. benzersizliği korurken değiştirilmesi gereken UID’leri için U kullanınız.

Özelleştirilmiş Profiller Oluşturma

Özelleştirilmiş profiller üç biçimde tanımlanabilir. iş akışınıza en uygun olanı seçin.

CSV Formatı

CSV, en basit biçimdir, kolay profiller için idealdir:

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

Bu profil, hastanın adını ve kimliğini zeroslar, doğum tarihini kaldırır, hasta cinsiyetini ve demografisini korur, tüm UID’leri değiştirir, kurum bilgilerini silir ve açıklamaları temizler.

JSON Formatı

JSON, metadata ile karmaşık profiller için daha iyi bir yapı sağlar:

{
  "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 Formatı

XML, mevcut XML araçları olan ortamlar için tercih edilir:

<?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>

Kodda Özelleştirilmiş Profiller Yükleme

.NET uygulamanızda özelleştirilmiş profilleri yüklemek basittir:

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!");

Gerçek dünya senaryoları örnekleri

1. Bölüm: İç Kaliteli Güvenlik

Hastanın verilerini anonimleştirirken iç izleme için kurum ve cihaz bilgileri saklayın:

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. Senaryo: Dış Araştırma İşbirliği

Topluluk çalışmaları için korunmuş demografilerle maksimum anonimleşme:

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

Senaryo 3: Çok Site Çalışma Koordinasyonu

UID’leri veri bağlantısı için çalışma ilişkilerini korurken değiştirin:

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

Sınav ve Validasyon (Validation and Testing)

Her zaman üretim yerleştirmeden önce özelleştirilmiş profilleri doğrulayın:

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}");

Doğrulama çalıştırıldıktan sonra, anonim dosyaları bir DICOM izleyicisinde açın ve beklenen etiketlerin düzgün bir şekilde değiştirildiğini, saklanan etiklerin korunduğunu, UID’lerin doğru şekilde değiştiğini ve hassas verilerin temizlenmiş alanlarda kalmadığını kontrol edin.

Sonuçlar # sonuçlar

Özelleştirilmiş gizlilik profilleri, kurumunuzun Gizlilik Politikası ile tam olarak uyumlu olan DICOM anonimleşmesini uygulamanıza esneklik sağlar. iç kullanım için belirli tanımlayıcıları saklamanız, demografileri araştırma için saklamalısınız veya dış paylaşım için maksimum anonymizasyonu uygulayabilirsiniz.

Anahtar tavsiyeler, profil seçeneklerinizi denetim amaçları için belgelendirmek, değişiklikleri izlemek için profil dosyalarını kontrol etmek, üretim kullanımından önce profilleri derinlemesine test etmek ve gereksinimler geliştikçe profillerin düzenli olarak incelenmesi içerir.

DICOM anonimleştirme ve Aspose.Medical API hakkında daha fazla bilgi için, Dokümanlık. Ortak profil senaryoları için şablonlar örnek bölümünde mevcuttur.

More in this category