Làm thế nào để tạo một hồ sơ nhận dạng DICOM tùy chỉnh từ CSV, JSON hoặc XML
Hướng dẫn này cho thấy làm thế nào để tạo hồ sơ nhận dạng tùy chỉnh DICOM bằng cách sử dụng CSV, JSON, hoặc XML tệp trong C#. Hồ sơ tùy chọn cho phép bạn xác định chính xác các thẻ nào nên được xóa, thay thế, hay giữ theo chính sách bảo mật cụ thể của tổ chức của bạn.
Tại sao nên tạo hồ sơ tùy chỉnh?
Các hồ sơ DICOM PS3.15 đã được xác định trước có thể không đáp ứng tất cả các yêu cầu tổ chức.
- Giữ các ID tổ chức cụ thể cho khả năng theo dõi nội bộ
- Thực hiện các quy tắc riêng tư cụ thể cho tổ chức
- đáp ứng các yêu cầu quy định độc đáo trong thẩm quyền của bạn
Tag hành động giải thích
Các hành động sau đây có thể được áp dụng cho các thẻ DICOM:
| hành động | Mã | Mô tả |
|---|---|---|
| xóa | D | Xóa thẻ hoàn toàn khỏi bộ dữ liệu |
| 0 0 0 | Z | Thay thế giá trị bằng giá cả trống hoặc không |
| xóa | X | Xóa nếu có (cũng giống như xóa) |
| Keep | K | Giữ giá trị ban đầu không thay đổi |
| Clean | C | Xóa giá trị bằng cách xóa thông tin nhận dạng |
| Thay thế với UID | U | Thay thế với một UID được tạo mới |
Chủ đề: Chuẩn bị môi trường
- Cài đặt Visual Studio hoặc bất kỳ IDE .NET tương thích nào.
- Tạo một dự án ứng dụng .NET 8 mới.
- Cài đặt Aspose.Medical từ NuGet Package Manager.
- Chuẩn bị tệp định nghĩa hồ sơ tùy chỉnh của bạn.
Hướng dẫn từng bước để tạo hồ sơ tùy chỉnh
Bước 1: Cài đặt Aspose.Medical
Thêm thư viện Aspose.Medical vào dự án của bạn bằng NuGet.
Install-Package Aspose.MedicalBước 2: Tạo định nghĩa hồ sơ CSV
Tạo một tệp CSV với các mô hình tag và hành động. mỗi dòng chỉ định một tag and its action.
- Hồ sơ.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=“Mã copy”
<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>
Hồ sơ này:
- Tên và ID bệnh nhân Zeros
- Xóa ngày sinh
- Kiểu tình dục bệnh nhân
- Thay thế Studio, Series, và SOP Instance UIDs
- Xóa thông tin tổ chức
- Cleans nghiên cứu mô tả
Bước 3: Tạo định nghĩa JSON Profile (Tùy chọn)
Tạo một tệp JSON với cùng một định nghĩa tag.
- Hồ sơ .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" }
]Bước 4: Tạo định nghĩa hồ sơ XML (tùy chọn)
Tạo một tệp XML với cùng một định nghĩa tag.
- Hồ sơ 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>Bước 5: Tải hồ sơ tùy chỉnh
Tải về hồ sơ tùy chỉnh bằng cách sử dụng phương pháp phù hợp cho định dạng tệp của bạn.
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
);Bước 6: Sử dụng hồ sơ tùy chỉnh
Tạo một Anonymizer với hồ sơ tải lên và áp dụng nó cho các tệp 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");Mẫu mã đầy đủ với hồ sơ CSV
Dưới đây là một ví dụ đầy đủ sử dụng một hồ sơ tùy chỉnh dựa trên 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!");Ví dụ kịch bản thực tế
Kịch bản 1: Retain Institution ID for Internal Tracking
TagPattern;Action
(0010,0010);Z
(0010,0020);Z
(0008,0080);K
(0008,0081);KKịch bản 2: Thay thế tất cả UID trong khi duy trì mối quan hệ
TagPattern;Action
(0020,000D);U
(0020,000E);U
(0008,0018);U
(0008,0016);KKịch bản 3: Quyền riêng tư tối đa cho chia sẻ bên ngoài
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);XChứng nhận: Kiểm tra hồ sơ cá nhân của bạn
Luôn xác nhận hồ sơ tùy chỉnh trước khi sử dụng sản xuất:
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
Hướng dẫn File Invalid
Nếu file hồ sơ không thể tìm thấy:
string profilePath = "profile.csv";
if (!File.Exists(profilePath))
{
Console.WriteLine($"Profile file not found: {profilePath}");
return;
}Invalid Tag Pattern hoặc hành động
Bảo đảm các mô hình tag theo định dạng (GGGG,EEEE) nơi GGGG là nhóm và EEEE là yếu tố trong hexadecimal. hành động hợp lệ là: D, Z, X, K, C, U.
Thực hành tốt nhất cho hồ sơ tùy chỉnh
- Version Control: Lưu tập tin hồ sơ trong phiên bản điều khiển để theo dõi thay đổi theo thời gian.
- Documentation: Thêm bình luận giải thích tại sao các hành động cụ thể được chọn cho mỗi tag.
- Testing: Chứng nhận các hồ sơ với dữ liệu thử nghiệm trước khi áp dụng cho việc sản xuất các tệp DICOM.
- Backup: Luôn giữ sao lưu các tập tin hồ sơ ban đầu.
- Review: Kiểm tra hồ sơ thường xuyên để đảm bảo chúng vẫn đáp ứng các yêu cầu quy định.
Thông tin bổ sung
- Hãy xem xét việc tạo ra nhiều hồ sơ cho các trường hợp sử dụng khác nhau (cách chia sẻ nội bộ, nghiên cứu bên ngoài, vv).
- Tài liệu mà hồ sơ đã được sử dụng khi vô danh các tập tin cho mục đích kiểm toán.
- Các định dạng JSON và XML cung cấp cấu trúc tốt hơn cho các hồ sơ phức tạp với định nghĩa mờ.
Kết luận
Hướng dẫn này đã chứng minh làm thế nào để tạo hồ sơ danh tính tùy chỉnh DICOM bằng cách sử dụng CSV, JSON, hoặc XML tệp trong C# với Aspose.Medical.