ในขณะที่โปรไฟล์ความเป็นส่วนตัว DICOM PS3.15 ที่กําหนดไว้ครอบคลุมกรณีการใช้งานจํานวนมากสถาบันการดูแลสุขภาพมักมีข้อกําหนดความส่วนตัวที่ไม่ซ้ํากัน ในคู่มือนี้คุณจะเรียนรู้วิธีการออกแบบโปรφίλการอ้างอิงของคุณที่กําหนดเองซึ่งตรงกับนโยบายที่เฉพาะเจาะจงขององค์กรของคุณ เราจะปกป้องรูปแบบแท็กการกระทําและให้รูปแบบในรูปแบบ CSV, JSON และ XML
ตารางเนื้อหา
- ทําไมโปรไฟล์ที่กําหนดเองจําเป็น
- ทําความเข้าใจรูปแบบ Tag และกระทํา
- สร้างโปรไฟล์ที่กําหนดเอง
- ดาวน์โหลดโปรไฟล์ที่กําหนดเองในรหัส
- ตัวอย่างสถานการณ์โลกจริง
- การยืนยันและการทดสอบ
- ข้อสรุป
ทําไมโปรไฟล์ที่กําหนดเองเป็นสิ่งจําเป็น
โปรไฟล์ความเป็นส่วนตัวที่กําหนดไว้ให้พื้นฐานที่แข็งแกร่ง แต่พวกเขาอาจไม่ตอบสนองความต้องการทางสถาบันทั้งหมด คุณอาจต้องการโปรไฟล์แบบกําหนดเองเมื่อองค์กรของคุณต้องการการเก็บรวบรวมตัวระบุขององค์กรเฉพาะเพื่อความสามารถในการติดตามภายในในขณะที่ยังคง匿名ข้อมูลผู้ป่วย บางงานวิจัยอาจจําเป็นต้องเก็บข้อมูลประชากรบางอย่างโดยการลบตัวรับรองโดยตรง กระแสการทํางานการรับประกันคุณภาพภายในอาจต้องใช้ข้อมูลของอุปกรณ์ที่รายละเอียดมาตรฐานจะถอดออก นอกจากนี้กฎระเบียบภูมิภาคอาจบังคับให้การจัดการเฉพาะขององค์ประกอบข้อมูล tertentu
โปรไฟล์ที่กําหนดเองช่วยให้คุณมีการควบคุมอย่างแม่นยําว่า DICOM แท็กจะมีการเปลี่ยนแปลงและวิธีการที่ให้การปฏิบัติตามนโยบายการจัดการข้อมูลเฉพาะของคุณ
ความเข้าใจแท็กรูปแบบและกระทํา
แท็ก DICOM ได้รับการระบุโดยกลุ่มและหมายเลของค์ประกอบในรูปแบบ (GGGG,EEEE) ตัวอย่างเช่น ชื่อผู้ป่วยคือ (0010,0010) และ ID ผู้ป่วยเป็น ( 0010.0020) โปรไฟล์ที่กําหนดเองระบุรูปแบบที่ตรงกับแท็กเหล่านี้และกระทําที่ต้องใช้
การดําเนินการที่มีอยู่รวมถึง D (Delete) ซึ่งลบแท็กทั้งหมดจากชุดข้อมูล Z (Zero)** ซึ่งแทนที่ค่าด้วยค่าที่ว่างเปล่าหรือไม่มีความยาว X (Remove)* ซึ่งกําจัดแท็คถ้ามีลักษณะคล้ายกับ Delete **K (Keep) ** ซึ่งรักษาค่าเดิมไม่เปลี่ยนแปลง **C (Clean) *** ซึ่งทําความสะอาดค่าโดยการล้างข้อมูลการระบุแบบ contextually และ **U (Change with UID) * ซึ่งเปลี่ยนด้วยตัวระบุที่ไม่ซ้ํากันที่สร้างใหม่
การเลือกการกระทําที่เหมาะสมขึ้นอยู่กับกรณีที่คุณใช้ ใช้ D หรือ X สําหรับแท็กที่ไม่ควรปรากฏในผลลัพธ์ที่匿名 ใช้ Z เมื่อแท็คต้องมี แต่ควรว่างเปล่า ใช้ K สําหรับ แท็กที่คุณต้องการเก็บไว้อย่างแม่นยํา ใช้ C สําหรับฟิลด์ข้อความที่อาจมีตัวระบุแบบบูรณาการ ใช้ U สําหรับ UIDs ที่ต้องถูกแทนที่ในขณะที่รักษาความเป็นเอกลักษณ์
การสร้างโปรไฟล์ที่กําหนดเอง
โปรไฟล์ที่กําหนดเองสามารถกําหนดไว้ในสามรูปแบบ เลือกหนึ่งที่เหมาะสมที่สุดกับกระบวนการทํางานของคุณ
รูปแบบ 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
(0008,103E);C
(0010,1010);K
(0010,1030);K
โปรไฟล์นี้ zeros ชื่อและ ID ของผู้ป่วย, ลบวันที่เกิด, รักษาเพศของผู้ป่วยและประวัติศาสตร์, เปลี่ยน UID ทั้งหมดลบข้อมูลขององค์กร, และทําความสะอาดคําอธิบาย
รูปแบบ JSON
JSON ให้โครงสร้างที่ดีขึ้นสําหรับโปรไฟล์ที่ซับซ้อนพร้อม metadata:
{
"profileName": "Hospital Research Profile",
"version": "1.0",
"description": "Custom profile for research data sharing",
"actions": [
{ "TagPattern": "(0010,0010)", "Action": "Z", "Comment": "Patient Name" },
{ "TagPattern": "(0010,0020)", "Action": "Z", "Comment": "Patient ID" },
{ "TagPattern": "(0010,0030)", "Action": "X", "Comment": "Birth Date" },
{ "TagPattern": "(0010,0040)", "Action": "K", "Comment": "Patient Sex" },
{ "TagPattern": "(0020,000D)", "Action": "U", "Comment": "Study Instance UID" },
{ "TagPattern": "(0020,000E)", "Action": "U", "Comment": "Series Instance UID" },
{ "TagPattern": "(0008,0018)", "Action": "U", "Comment": "SOP Instance UID" },
{ "TagPattern": "(0008,0080)", "Action": "D", "Comment": "Institution Name" },
{ "TagPattern": "(0008,0081)", "Action": "D", "Comment": "Institution Address" },
{ "TagPattern": "(0008,1030)", "Action": "C", "Comment": "Study Description" }
]
}
รูปแบบ XML
XML เป็นสิ่งอํานวยความสะดวกสําหรับสภาพแวดล้อมที่มีเครื่องมือ XML ที่มีอยู่:
<?xml version="1.0" encoding="utf-8"?>
<ConfidentialityProfile name="Hospital Research Profile" version="1.0">
<Description>Custom profile for research data sharing</Description>
<TagActions>
<TagAction TagPattern="(0010,0010)" Action="Z">Patient Name</TagAction>
<TagAction TagPattern="(0010,0020)" Action="Z">Patient ID</TagAction>
<TagAction TagPattern="(0010,0030)" Action="X">Birth Date</TagAction>
<TagAction TagPattern="(0010,0040)" Action="K">Patient Sex</TagAction>
<TagAction TagPattern="(0020,000D)" Action="U">Study Instance UID</TagAction>
<TagAction TagPattern="(0020,000E)" Action="U">Series Instance UID</TagAction>
<TagAction TagPattern="(0008,0018)" Action="U">SOP Instance UID</TagAction>
<TagAction TagPattern="(0008,0080)" Action="D">Institution Name</TagAction>
<TagAction TagPattern="(0008,0081)" Action="D">Institution Address</TagAction>
<TagAction TagPattern="(0008,1030)" Action="C">Study Description</TagAction>
</TagActions>
</ConfidentialityProfile>
โหลดโปรไฟล์ที่กําหนดเองในรหัส
การโหลดโปรไฟล์ที่กําหนดเองในแอพ .NET ของคุณเป็นเรื่องง่าย:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Anonymization;
// Load from CSV
ConfidentialityProfile csvProfile = ConfidentialityProfile.LoadFromCsvFile(
"profiles/hospital_research.csv",
ConfidentialityProfileOptions.All
);
// Load from JSON
ConfidentialityProfile jsonProfile = ConfidentialityProfile.LoadFromJsonFile(
"profiles/hospital_research.json",
ConfidentialityProfileOptions.All
);
// Load from XML
ConfidentialityProfile xmlProfile = ConfidentialityProfile.LoadFromXmlFile(
"profiles/hospital_research.xml",
ConfidentialityProfileOptions.All
);
// Create anonymizer with custom profile
Anonymizer anonymizer = new(csvProfile);
// Anonymize files
DicomFile dcm = DicomFile.Open("patient_study.dcm");
DicomFile anonymizedDcm = anonymizer.Anonymize(dcm);
anonymizedDcm.Save("anonymized_study.dcm");
Console.WriteLine("Anonymization completed with custom profile!");
ตัวอย่างสถานการณ์โลกจริง
ฉาก 1: การรับประกันคุณภาพภายใน
เก็บข้อมูลหน่วยงานและอุปกรณ์สําหรับการติดตามภายในในขณะที่ระบุข้อมูลผู้ป่วย:
TagPattern;Action
(0010,0010);Z
(0010,0020);Z
(0010,0030);X
(0008,0080);K
(0008,0081);K
(0008,1010);K
(0008,1090);K
(0018,1000);K
ฉาก 2: การทํางานร่วมในการวิจัยภายนอก
การอัญมณีสูงสุดพร้อมดิจิตอลที่เก็บไว้สําหรับการศึกษาการประชากร:
TagPattern;Action
(0010,0010);X
(0010,0020);X
(0010,0030);X
(0010,0040);K
(0010,1010);K
(0010,1020);K
(0010,1030);K
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0080);X
(0008,0081);X
(0008,1030);X
(0008,103E);X
สภาพแวดล้อม 3: การ协调การศึกษาหลายเว็บไซต์
เปลี่ยน UID ในขณะที่รักษาความสัมพันธ์ในการศึกษาสําหรับการเชื่อมต่อข้อมูล:
TagPattern;Action
(0010,0010);Z
(0010,0020);Z
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0016);K
(0020,0010);K
(0020,0011);K
(0020,0013);K
การยืนยันและการทดสอบ
เสมอยืนยันโปรไฟล์ที่กําหนดเองก่อนการติดตั้งการผลิต:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Anonymization;
string profilePath = "profiles/custom_profile.csv";
string testDataFolder = "test_samples";
string outputFolder = "validation_output";
// Load custom profile
ConfidentialityProfile profile = ConfidentialityProfile.LoadFromCsvFile(
profilePath,
ConfidentialityProfileOptions.All
);
Anonymizer anonymizer = new(profile);
Directory.CreateDirectory(outputFolder);
// Process test files
string[] testFiles = Directory.GetFiles(testDataFolder, "*.dcm");
int successCount = 0;
int failCount = 0;
foreach (string filePath in testFiles)
{
try
{
DicomFile dcm = DicomFile.Open(filePath);
DicomFile anonymized = anonymizer.Anonymize(dcm);
string outputPath = Path.Combine(outputFolder, Path.GetFileName(filePath));
anonymized.Save(outputPath);
Console.WriteLine($"✓ {Path.GetFileName(filePath)}");
successCount++;
}
catch (Exception ex)
{
Console.WriteLine($"✗ {Path.GetFileName(filePath)}: {ex.Message}");
failCount++;
}
}
Console.WriteLine($"\nValidation Summary:");
Console.WriteLine($" Succeeded: {successCount}");
Console.WriteLine($" Failed: {failCount}");
Console.WriteLine($"\nReview output files in: {outputFolder}");
หลังจากการดําเนินการการยืนยันเปิดไฟล์ที่ไม่ได้รับชื่อในตัวดู DICOM และตรวจสอบว่าแท็กที่คาดหวังจะมีการเปลี่ยนแปลงอย่างถูกต้อง แท็คที่เก็บไว้จะถูกเก็บรักษา UIDs จะถูกแทนที่อย่างเหมาะสมและไม่มีข้อมูลที่ละเอียดอ่อนจะยังคงอยู่ในฟิลด์ที่ทําความสะอาด
ข้อสรุป
โปรไฟล์ความเป็นส่วนตัวที่กําหนดเองช่วยให้คุณมีความยืดหยุ่นในการนําไปใช้การระบุชื่อของ DICOM ซึ่งตรงกับนโยบายส่วนบุคคลของหน่วยงานของคุณ ไม่ว่าคุณต้องเก็บตัวระบุเฉพาะสําหรับการใช้งานภายในการรักษาข้อมูลประชากรสําหรับการวิจัยหรือใช้แอนโนมัติสูงสุดสําหรับการแบ่งปันภายนอกโปรไฟล์ที่ปรับแต่งจะทําให้มันเป็นไปได้
คําแนะนําหลักรวมถึงการเอกสารตัวเลือกโปรไฟล์ของคุณเพื่อวัตถุประสงค์การตรวจสอบไฟล์โปรφίλการควบคุมเวอร์ชันเพื่อติดตามการเปลี่ยนแปลงการทดสอบรายละเอียดอย่างละเอียดก่อนการใช้การผลิตและการตรวจสอบรายละเอียดเป็นประจําเมื่อความต้องการพัฒนา
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการระบุชื่อของ DICOM และ API Aspose.Medical เยี่ยมชม การรับรอง. ตัวอย่างสําหรับสถาปัตยกรรมโปรไฟล์ทั่วไปสามารถใช้ได้ในส่วนตัวอย่าง
More in this category
- การเตรียม DICOM Datasets สําหรับ AI และ Machine Learning ด้วย Aspose.Medical
- ทําไม DICOM Anonymization เป็นสิ่งสําคัญสําหรับ HIPAA และ GDPR ใน .NET Workflows
- สร้าง DICOM Anonymization Microservice ใน ASP.NET Core
- การจัดเก็บข้อมูล DICOM ในฐานข้อมูล SQL และ NoSQL ด้วย C#
- DICOM Anonymization สําหรับ Cloud PACS และ Teleradiology ใน C#