DICOM Anonymization สําหรับ Cloud PACS และ Teleradiology ใน C#

PACS (ระบบบันทึกภาพและสื่อสาร) และบริการโทรเรดวิทยาจะแปลงภาพทางการแพทย์โดยให้การเข้าถึงระยะไกลภาพวินิจฉัย อย่างไรก็ตามการถ่ายโอนข้อมูลผู้ป่วยไปยังสภาพแวดล้อมในคลาวด์ต้องการความสนใจอย่างระมัดระวังเกี่ยวกับความเป็นส่วนตัวและความปลอดภัย คู่มือนี้แสดงให้เห็นว่าวิธีการนําไปใช้การระบุชื่อ DICOM สําหรับการทํางานของระบบ cloud and teleradiology โดยใช้ Aspose.Medical สําหรับ .NET ทําไม Anonymize สําหรับ Cloud และ Teleradiology? เมื่อภาพ DICOM จะออกจากเครือข่ายโรงพยาบาลสําหรับการจัดเก็บคลาวด์หรืออ่านระยะไกลการพิจารณาความเป็นส่วนตัวเพิ่มเติมจะใช้: ข้อมูลที่อยู่อาศัย: ข้อมูลผู้ป่วยอาจข้ามขอบเขตทางภูมิศาสตร์เมื่อกฎระเบียบที่แตกต่างกันใช้ การเข้าถึงบุคคลที่สาม: ซัพพลายเออร์คลาวด์และบริการโทรทัศน์เป็นพันธมิตรทางธุรกิจภายใต้ HIPAA การส่งผ่านเครือข่าย: ข้อมูลผ่านอินเทอร์เน็ตต้องการการป้องกันเพิ่มเติม สภาพแวดล้อมที่หลากหลาย: ระบบคลาวด์สามารถจัดเก็บข้อมูลจากองค์กรการดูแลสุขภาพหลายแห่ง วิทยุระยะไกล: ผู้อ่านภายนอกอาจไม่จําเป็นต้องเข้าถึงตัวระบุผู้ป่วย Anonymization สร้างชั้นรักษาความปลอดภัยที่ปกป้องความเป็นส่วนตัวของผู้ป่วยแม้ว่ามาตรการป้องกันอื่น ๆ ไม่ประสบความสําเร็จ บริการอัปโหลดคลาวด์ Anonymization สร้างบริการที่匿名 DICOM ไฟล์ก่อนอัพโหลดคลาวด์: using Aspose.Medical.Dicom; using Aspose.Medical.Dicom.Anonymization; public class CloudUploadAnonymizer { private readonly ConfidentialityProfile _profile; private readonly Dictionary<string, string> _studyIdMapping; private readonly string _organizationPrefix; public CloudUploadAnonymizer(string organizationPrefix) { _organizationPrefix = organizationPrefix; _studyIdMapping = new Dictionary<string, string>(); // Create profile optimized for cloud storage var options = ConfidentialityProfileOptions.BasicProfile | ConfidentialityProfileOptions.RetainDeviceIdentity | ConfidentialityProfileOptions.CleanDescriptions; _profile = ConfidentialityProfile.CreateDefault(options); } public CloudUploadResult AnonymizeForCloud(string inputPath, string outputPath) { var result = new CloudUploadResult { OriginalPath = inputPath, ProcessedAt = DateTime.UtcNow }; try { DicomFile dicomFile = DicomFile.Open(inputPath); var dataset = dicomFile.Dataset; // Capture original identifiers for mapping string originalStudyUid = dataset.GetString(DicomTag.StudyInstanceUID); string originalPatientId = dataset.GetString(DicomTag.PatientID); string originalAccession = dataset.GetString(DicomTag.AccessionNumber); // Generate cloud-safe identifiers string cloudStudyId = GetOrCreateCloudStudyId(originalStudyUid); result.OriginalStudyUID = originalStudyUid; result.CloudStudyId = cloudStudyId; result.OriginalPatientId = originalPatientId; // Apply anonymization var anonymizer = new Anonymizer(_profile); anonymizer.Anonymize(dataset); // Apply cloud-specific identifiers dataset.AddOrUpdate(DicomTag.PatientID, $"{_organizationPrefix}-{cloudStudyId}"); dataset.AddOrUpdate(DicomTag.PatientName, $"CloudStudy^{cloudStudyId}"); dataset.AddOrUpdate(DicomTag.AccessionNumber, cloudStudyId); // Add cloud tracking metadata dataset.AddOrUpdate(DicomTag.InstitutionName, _organizationPrefix); dicomFile.Save(outputPath); result.CloudPath = outputPath; result.Success = true; } catch (Exception ex) { result.Success = false; result.ErrorMessage = ex.Message; } return result; } private string GetOrCreateCloudStudyId(string originalStudyUid) { if (!_studyIdMapping.ContainsKey(originalStudyUid)) { string timestamp = DateTime.UtcNow.ToString("yyyyMMddHHmmss"); string random = Guid.NewGuid().ToString("N").Substring(0, 8); _studyIdMapping[originalStudyUid] = $"{timestamp}-{random}"; } return _studyIdMapping[originalStudyUid]; } public Dictionary<string, string> GetStudyMapping() { return new Dictionary<string, string>(_studyIdMapping); } } public class CloudUploadResult { public string OriginalPath { get; set; } public string CloudPath { get; set; } public string OriginalStudyUID { get; set; } public string CloudStudyId { get; set; } public string OriginalPatientId { get; set; } public DateTime ProcessedAt { get; set; } public bool Success { get; set; } public string ErrorMessage { get; set; } } การรวมการทํางานของ Teleradiology สร้างท่อการ匿名แบบ Teleradiology ที่สมบูรณ์: ...

กุมภาพันธ์ 25, 2025 · 8 นาที
 Thai