Miten luoda räätälöity DICOM Anonymization Profile CSV, JSON tai XML

Miten luoda räätälöity DICOM Anonymization Profile CSV, JSON tai XML

Tämä opetusohjelma näyttää, miten luoda räätälöityjä DICOM anonyymi profiileja käyttäen CSV, JSON tai XML-tiedostoja C#. Käsitellyt profiilit antavat sinulle mahdollisuuden määritellä tarkasti, mitkä merkinnät on poistettava, korvattava tai säilytettävä laitoksen tietosuojakäytännön mukaisesti.

Miksi luodaan räätälöityjä profiileja?

Predefined DICOM PS3.15 -profiilit eivät välttämättä täytä kaikkia institutionaalisia vaatimuksia.

  • Sisäisen jäljitettävyyden erityisten institutionaalisten tunnisteiden säilyttäminen
  • Sovelletaan organisaation yksityisyyden sääntöjä
  • Täytä ainutlaatuiset sääntelyvaatimukset lainkäyttöalueellasi

Tag Toiminta selitetään

Seuraavat toimenpiteet voidaan soveltaa DICOM-merkintöihin:

ActionCodekuvaus
DeleteDPoista etiketti kokonaan tietokoneesta
ZeroZVaihda arvo tyhjään tai nollan arvoon
RemoveXPoista, jos se on läsnä (kuten Poistaa)
KeepKPidä alkuperäinen arvo muuttumattomana
CleanCPuhdista arvo poistamalla tunnistetiedot
Vaihdetaan UID:lläUVaihda uusi tuottama UID

Edellytykset: Ympäristön valmistelu

  • Aseta Visual Studio tai yhteensopiva .NET IDE.
  • Luo uusi .NET 8 -konsolin sovellusprojekti.
  • Asenna Aspose.Medical NuGet Package Managerista.
  • Valmista mukautettu profiilin määritelmä tiedosto.

Vaiheittainen opas räätälöityjen profiilien luomiseen

Vaihe 1: Asenna Aspose.Medical

Lisää Aspose.Medical -kirjasto projektillesi NuGetin avulla.

Install-Package Aspose.Medical

Vaihe 2: Luo CSV-profiilin määritelmä

Luo CSV-tiedosto, jossa on merkintöjä ja toimintoja. Jokainen rivi määrittää merkinnän ja sen toiminnan.

  • Profiili ja 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=“Kopioi koodi”

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

Tämä profiili on:

  • Zeros potilaan nimi ja ID
  • Poista syntymäpäivä
  • Potilaan sukupuoli
  • Vaihda tutkimus, sarja ja SOP Instance UIDs
  • Poistaa laitoksen tiedot
  • Puhdistaa tutkimuksen kuvaus

Vaihe 3: Luo JSON-profiilin määritelmä (vaihtoehtoinen)

Luo JSON-tiedosto, jossa on samat tunnisteiden määritelmät.

  • Profiili ja 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" }
]

Vaihe 4: Luo XML-profiilin määritelmä (vaihtoehtoinen)

Luo XML-tiedosto, jossa on samat merkintöjen määritelmät.

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

Vaihe 5: Lataa mukautettu profiili

Lataa räätälöity profiili käyttäen asianmukaista menetelmää tiedostomuotoasi.

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

Vaihe 6: Käytä räätälöityä profiilia

Luo Anonymizer ladattavalla profiililla ja soveltaa sitä DICOM-tiedostoihin.

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

Täydellinen koodin esimerkki CSV-profiililla

Tässä on täydellinen esimerkki CSV-pohjaisen räätälöidyn profiilin avulla:

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

Käytännön skenaario esimerkkejä

Käsikirjoitus 1: Sisäisen seurannan säilyttäminen

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

Skenaario 2: Vaihda kaikki UID:t säilyttäessään suhteita

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

Skenaario 3: Maksimi yksityisyys ulkoiseen jakamiseen

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

Validointi: Testaa henkilökohtainen profiili

Aina validoi räätälöityjä profiileja ennen tuotantoa:

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

Vaaralliset tiedostot

Jos profiilitiedostoa ei löydy:

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

Invalid Tag -muoto tai toiminta

Varmista, että mallit noudattavat muotoa (GGGG,EEEE) jossa GGGG on ryhmä ja EEEE on elementti hexadecimal. Voimassa olevat toimet ovat: D, Z, X, K, C, U.

Parhaat käytännöt räätälöityille profiileille

  • Version Control: Tallenna profiilitiedostoja versiohallinnassa seuraamaan muutoksia ajan myötä.
  • Dokumentaatio: Lisää kommentteja, jotka selittävät, miksi tiettyjä toimenpiteitä valittiin jokaiselle merkille.
  • Testing: Validoi profiilit testaustietojen kanssa ennen DICOM-tiedostojen tuottamista.
  • Backup: Säilytä aina alkuperäisten profiilitiedostojen varmuuskopioita.
  • Katselu: Profiileja tarkastellaan säännöllisesti varmistaakseen, että ne täyttävät edelleen sääntelyvaatimukset.

Lisätietoja

  • Harkitse useiden profiilien luomista eri käyttötapauksissa (sisäinen jakaminen, ulkoinen tutkimus jne.).
  • Asiakirja, jonka profiilia käytettiin tiedostojen anonymisoinnissa tarkastustarkoituksiin.
  • JSON- ja XML-muodot tarjoavat paremman rakenteen monimutkaisiin profiileihin, joissa on määritelmiä.

johtopäätöksiä

Tämä opetusohjelma on osoittanut, miten luoda räätälöityjä DICOM anonyymi profiileja käyttämällä CSV, JSON tai XML tiedostoja C# kanssa Aspose.Medical.

 Suomi