چگونه برای ایجاد یک پروفایل دایکوم سفارشی از CSV، JSON یا XML

چگونه برای ایجاد یک پروفایل دایکوم سفارشی از CSV، JSON یا XML

این راهنمای نشان می دهد که چگونه برای ایجاد پروفایل های نامگذاری سفارشی DICOM با استفاده از فایل های CSV، JSON، یا XML در C#. مشخصات سفری به شما کمک می کند تا دقیقا مشخص کنید که کدام برچسب ها باید حذف شوند، جایگزین شوند یا با توجه به سیاست های خاص حریم خصوصی موسسه خود حفظ شوند.

چرا پروفایل های سفارشی ایجاد می کنیم؟

پروفایل های پیش تعریف شده DICOM PS3.15 ممکن است تمام الزامات نهادی را برآورده نکنند.

  • حفظ شناسه های نهادی خاص برای ردیابی داخلی
  • قوانین مربوط به حریم خصوصی سازمانی
  • برآورده کردن الزامات قانونی منحصر به فرد در حوزه قضایی شما

Tag اعمال توضیح داده شده

اقدامات زیر را می توان به برچسب های DICOM اعمال کرد:

عملکدتوصیف
حذفDبرچسب را به طور کامل از مجموعه داده حذف کنید
صفرZجایگزین کردن ارزش با ارزش خالی یا صفر
حذفXحذف اگر وجود داشته باشد (مثل حذف)
KeepKارزش اصلی را بدون تغییر حفظ کنید
CleanCپاک کردن ارزش با حذف اطلاعات شناسایی
جایگزین UIDUجایگزین با یک UID جدید

برچسب ها: آماده سازی محیط زیست

  • Visual Studio یا هر IDE .NET سازگار را نصب کنید.
  • ایجاد یک برنامه جدید .NET 8 کنسول.
  • نصب Aspose.Medical از NuGet Package Manager.
  • فایل تعریف پروفایل سفارشی خود را آماده کنید.

راهنمای گام به گام برای ایجاد پروفایل های سفارشی

مرحله اول: نصب 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>

این پروفایل :

  • نام و شناسه بیماران Zeros
  • حذف تاریخ تولد
  • رابطه جنسی بیماران
  • جایگزین UID های مطالعه، سری و SOP Instance
  • حذف اطلاعات موسسه
  • شرح مطالعه تمیز

مرحله 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
);

مرحله ششم: پروفایل سفارشی را اعمال کنید

یک 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: بازگرداندن شناسه موسسه برای ردیابی داخلی

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

سناریو 2: جایگزین تمام UID ها در حالی که حفظ روابط

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

بایگانی برچسب ها: Invalid Tag Pattern or Action

اطمینان حاصل کنید که الگوهای برچسب به فرمت پیروی می کنند (GGGG,EEEE) جایی که GGGG گروه است و EEEE عنصر در hexadecimal است. اعمال معتبر عبارتند از: D، Z، X، K، C، U.

بهترین روش ها برای پروفایل های سفارشی

  • تولید نسخه: ذخیره فایل های پروفایل در کنترل نسخه برای ردیابی تغییرات در طول زمان.
  • Documentation: اضافه کردن نظرات توضیح می دهد که چرا اقدامات خاص برای هر برچسب انتخاب شده است.
  • Testing: قبل از درخواست برای تولید فایل های DICOM، پروفایل ها را با داده های تست تأیید کنید.
  • Backup: همیشه پشتیبان گیری فایل های پروفایل اصلی را حفظ کنید.
  • مراجعه: به طور منظم پروفایل ها را بررسی می کند تا اطمینان حاصل شود که هنوز هم مطابق با الزامات قانونی است.

اطلاعات اضافی

  • در نظر گرفتن ایجاد پروفایل های چندگانه برای موارد مختلف استفاده (به اشتراک گذاری داخلی، تحقیقات خارجی و غیره).
  • اسناد که در آن پروفایل در ناشناس سازی فایل ها برای اهداف حسابرسی مورد استفاده قرار گرفت.
  • فرمت های JSON و XML ساختار بهتر برای پروفایل های پیچیده با تعاریف نازک را ارائه می دهند.

نتیجه گیری

این راهنمای نشان داده است که چگونه برای ایجاد پروفایل های نامگذاری سفارشی DICOM با استفاده از فایل های CSV، JSON یا XML در C# با Aspose.Medical.

 فارسی