كيفية إنشاء ملف تعريف DICOM المخصص من CSV أو JSON أو XML

كيفية إنشاء ملف تعريف DICOM المخصص من CSV أو JSON أو XML

يظهر هذا الدليل كيفية إنشاء ملفات التعريف المخصصة لـ DICOM باستخدام الملفات CSV أو JSON أو XML في C#. تتيح لك أن تحدد بالضبط ما يجب إزالة أو استبدال أو الحفاظ على العلامات وفقًا لسياسات الخصوصية الخاصة بمؤسستك.

لماذا خلق ملفات تعريف مخصصة؟

قد لا تتوافق ملفات تعريف DICOM PS3.15 المحددة مسبقًا مع جميع المتطلبات المؤسسية.

  • الحفاظ على معرفات مؤسسية محددة للتتبع الداخلي
  • تطبيق قواعد الخصوصية الخاصة بالمنظمة
  • تلبية المتطلبات التنظيمية الفريدة في اختصاصك

Tag إجراءات توضيح

يمكن تطبيق الإجراءات التالية على علامات DICOM:

العمليةالرمزوصف
حذفDإزالة العلامة بالكامل من مجموعة البيانات
صفرZاستبدال القيمة بالقيمة الفارغة أو الصفرية
إزالةXإزالة إذا كانت موجودة (مماثلة لحذف)
KeepKالحفاظ على القيمة الأصلية دون تغيير
CleanCقم بتنظيف القيمة عن طريق إزالة المعلومات المحددة
استبدال UIDUاستبدالها بـ UID جديد

المعايير: إعداد البيئة

  • إعداد Visual Studio أو أي .NET IDE متوافق.
  • إنشاء مشروع تطبيقات .NET 8 الجديد.
  • قم بتثبيت Aspose.Medical من NuGet Package Manager.
  • إعداد ملف تعريف الملف الشخصي الخاص بك.

دليل خطوة بخطوة لإنشاء ملفات تعريف مخصصة

الخطوة 1: تثبيت Aspose.Medical

إضافة مكتبة Aspose.Medical إلى مشروعك باستخدام NuGet.

Install-Package Aspose.Medical

الخطوة 2: إنشاء تحديد ملف تعريف CSV

إنشاء ملف 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

<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=“نسخ الرمز”

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

هذا الملف الشخصي :

  • اسم المريض و ID
  • إزالة تاريخ الميلاد
  • ممارسة الجنس المريض
  • استبدال دراسة، سلسلة، و SOP instance UIDs
  • حذف معلومات المؤسسة
  • وصف دراسة النظافة

الخطوة 3: إنشاء تعريف ملف التعريف JSON (بديل)

إنشاء ملف JSON مع نفس التعريفات العلامة.

** ملف تعريف .json :**

[
  { "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" }
]

الخطوة 4: إنشاء تعريف ملف XML (بديل)

إنشاء ملف XML مع نفس التعريفات العلامة.

  • ملف تعريف .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>

الخطوة 5: تحميل الملف الشخصي

قم بتحميل الملف الشخصي المخصص باستخدام الطريقة المناسبة لتنسيق ملفك.

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

الخطوة 6: تطبيق الملف الشخصي المخصص

إنشاء Anonymizer مع الملف الشخصي المحمول وتطبيقه على ملفات DICOM.

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

نموذج الكود الكامل مع ملف تعريف CSV

وفيما يلي مثال كامل باستخدام ملف تعريف مخصص على أساس CSV:

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

نموذج السيناريو العملي

السيناريو 1: الاحتفاظ بـ ID المؤسسة للتتبع الداخلي

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

سيناريو 2: استبدال جميع UIDs أثناء الحفاظ على العلاقات

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

السيناريو 3: الحد الأقصى للخصوصية للمشاركة الخارجية

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

التحقق: اختبار ملفك الشخصي

تحقق دائمًا من الملفات المخصصة قبل استخدام الإنتاج:

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

مسار الملفات غير الصحيح

إذا لم يتم العثور على ملف الملف الشخصي:

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

اختلال نموذج العلامة أو العمل

تأكد من أن عينات العلامة تتبع النموذج (GGGG,EEEE) حيث GGGG هو المجموعة و EEEE هو العنصر في hexadecimal.الأفعال الصالحة هي: D، Z، X، K، C، U.

أفضل الممارسات لملفات تعريف مخصصة

  • السيطرة على الإصدار: تخزين ملفات الملفات في سيطرة النسخة لتتبع التغييرات مع مرور الوقت.
  • المستندات: أضف تعليقات تشرح لماذا تم اختيار إجراءات محددة لكل علامة.
  • اختبار: تأكيد الملفات مع بيانات الاختبار قبل التطبيق لإنتاج ملفات DICOM.
  • النسخ الاحتياطي: احفظ دائمًا نسخ احتياطية من ملفات الملف الشخصي الأصلية.
  • مراجعة: مراجعة منتظمة للملفات للتأكد من أنها لا تزال تلبي المتطلبات التنظيمية.

معلومات إضافية

  • فكر في إنشاء ملفات تعريف متعددة لحالات الاستخدام المختلفة (التبادل الداخلي، والبحث الخارجي، وما إلى ذلك).
  • الوثيقة التي تم استخدام الملف الشخصي عند تحديد الهوية للملفات لأغراض التدقيق.
  • توفر تنسيقات JSON و XML هيكلًا أفضل للملفات المعقدة مع تعريفات محددة.

استنتاجات

وقد أظهرت هذه الدليل كيفية إنشاء ملفات التعريف المخصصة لـ DICOM باستخدام CSV أو JSON أو XML في C# مع Aspose.Medical. توفر الملفات الشخصية المرونة لتنفيذ سياسات الخصوصية الخاصة بالمؤسسة مع الحفاظ على الامتثال للوائح الصحية.

 عربي