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:
| eylem | Kodu | Açıklama |
|---|---|---|
| Kaldır | D | Etiketi veritabanından tamamen çıkarın |
| sıfır | Z | değeri boş veya sıfır değerle değiştirin |
| kaldırma | X | Eğer mevcutsa kaldır (Kaldırma ile benzer) |
| Keep | K | Orijinal değeri değişmeden koruyun |
| Clean | C | Kimlik bilgilerini kaldırarak değerini temizleyin |
| UID ile değiştirin | U | Yeni 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.MedicalAdı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);K2. Senaryo: İlişkileri korurken tüm UID’leri değiştirin
TagPattern;Action
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0016);KSenaryo 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);XEtiket: 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.