Πώς να δημιουργήσετε ένα προσαρμοσμένο προφίλ ανωνυμοποίησης DICOM από CSV, JSON ή XML

Πώς να δημιουργήσετε ένα προσαρμοσμένο προφίλ ανωνυμοποίησης DICOM από CSV, JSON ή XML

Αυτό το εγχειρίδιο δείχνει πώς να δημιουργήσετε προσαρμοσμένα προφίλ ανωνυμίας DICOM χρησιμοποιώντας CSV, JSON ή XML αρχεία στο C#. Τα προδιαγραφές σας επιτρέπουν να καθορίσετε ακριβώς ποιες ετικέτες θα πρέπει να αφαιρεθούν, να αντικατασταθούν ή να διατηρηθούν σύμφωνα με τις συγκεκριμένες πολιτικές απορρήτου του ιδρύματος σας.

Γιατί να δημιουργήσετε προφίλ;

Τα προεπιλεγμένα προφίλ DICOM PS3.15 ενδέχεται να μην πληρούν όλες τις θεσμικές απαιτήσεις.

  • Διατηρήστε συγκεκριμένους θεσμικούς αναγνωριστές για εσωτερική ιχνηλασιμότητα
  • Εφαρμόστε κανόνες ιδιωτικού απορρήτου ειδικά για την οργάνωση
  • Συμμόρφωση με μοναδικές κανονιστικές απαιτήσεις στη δικαιοδοσία σας

Δραστηριότητες εξηγούνται

Οι ακόλουθες ενέργειες μπορούν να εφαρμοστούν στις ετικέτες DICOM:

ΔράσηΚωδικόςΠεριγραφή
ΔιαγράψτεDΑφαιρέστε την ετικέτα εντελώς από το σύνολο δεδομένων
0 μηδένZΑντικαταστήστε την τιμή με μια κενή ή μηδενική τιμή
ΑφαίρεσηXΔιαγράψτε αν υπάρχει (όπως διαγράφεται)
KeepKΔιατηρήστε την αρχική αξία αμετάβλητη
CleanCΚαθαρίστε την τιμή με την αφαίρεση των πληροφοριών αναγνώρισης
Αντικαταστήστε με UIDUΑντικαταστήστε με ένα νέο δημιουργημένο UID

Προϋποθέσεις: Προετοιμασία του περιβάλλοντος

  • Εγκαταστήστε το Visual Studio ή οποιοδήποτε συμβατό .NET IDE.
  • Δημιουργήστε ένα νέο πρόγραμμα εφαρμογής .NET 8 console.
  • Εγκαταστήστε το 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>

Αυτό το προφίλ:

  • Ονομασία και ταυτότητα του ασθενούς Zeros
  • Αφαιρέστε την ημερομηνία γέννησης
  • Κέρδισε τον ασθενή σεξ
  • Αντικαθιστά το Study, Series και 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: Αντικαταστήστε όλα τα 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

Μειονεκτήματα File Path

Εάν το αρχείο προφίλ δεν μπορεί να βρεθεί:

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

Invalid Tag Pattern ή δράση

Βεβαιωθείτε ότι τα πρότυπα ετικέτας ακολουθούν τη μορφή (GGGG,EEEE) όπου το GGGG είναι ο όμιλος και το EEEE είναι το στοιχείο του hexadecimal. ισχύουσες ενέργειες είναι: D, Z, X, K, C, U.

Καλύτερες πρακτικές για προφίλ προσαρμογής

  • Επεξεργασία εκδόσεων: Αποθηκεύστε τα αρχεία προφίλ στο πλαίσιο του ελέγχου έκδοσης για την παρακολούθηση των αλλαγών με την πάροδο του χρόνου.
  • Documentation: Προσθέστε σχόλια που εξηγούν γιατί επιλέγονται συγκεκριμένες ενέργειες για κάθε ετικέτα.
  • Τεστ: Εγκρίνετε τα προφίλ με δεδομένα δοκιμών πριν από την εφαρμογή για την παραγωγή αρχείων DICOM.
  • Backup: Πάντα να κρατάτε αντίγραφα ασφαλείας των αρχικών αρχείων προφίλ.
  • Review: Περιοδικά αναθεωρεί τα προφίλ για να διασφαλίσει ότι εξακολουθούν να πληρούν τις κανονιστικές απαιτήσεις.

Πρόσθετες πληροφορίες

  • Σκεφτείτε τη δημιουργία πολλαπλών προφίλ για διαφορετικές περιπτώσεις χρήσης (εσωτερική ανταλλαγή, εξωτερική έρευνα κλπ.).
  • Έγγραφο του οποίου το προφίλ χρησιμοποιήθηκε κατά την ανωνυμοποίηση αρχείων για σκοπούς ελέγχου.
  • Οι μορφές JSON και XML προσφέρουν καλύτερη δομή για πολύπλοκα προφίλ με κατεστραμμένους ορισμούς.

Συμπεράσματα

Αυτό το εγχειρίδιο έχει δείξει πώς να δημιουργήσετε προσαρμοσμένα προφίλ ανωνυμίας DICOM χρησιμοποιώντας CSV, JSON, ή XML αρχεία στο C# με Aspose.Medical. Τα προδιαγραφές που έχουν εξατομικευτεί παρέχουν την ευελιξία για την εφαρμογή πολιτικών απορρήτου ειδικά για το ίδρυμα, διατηρώντας παράλληλα τη συμμόρφωση με τους κανονισμούς περί υγείας.

 Ελληνικά