@cosyte/dicom 0.0.11 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +512 -3
- package/README.md +10 -8
- package/dist/index.cjs +651 -279
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +282 -73
- package/dist/index.d.ts +282 -73
- package/dist/index.mjs +652 -280
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -11,7 +11,7 @@ var __export = (target, all) => {
|
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
// src/version.ts
|
|
14
|
-
var VERSION = "0.0.
|
|
14
|
+
var VERSION = "0.0.13";
|
|
15
15
|
|
|
16
16
|
// src/dictionary/index.ts
|
|
17
17
|
var dictionary_exports = {};
|
|
@@ -10579,6 +10579,11 @@ var UIDS = {
|
|
|
10579
10579
|
"1.2.840.10008.1.2.4.110": { uid: "1.2.840.10008.1.2.4.110", name: "JPEG XL Lossless", type: "TransferSyntax", retired: false },
|
|
10580
10580
|
"1.2.840.10008.1.2.4.111": { uid: "1.2.840.10008.1.2.4.111", name: "JPEG XL JPEG Recompression", type: "TransferSyntax", retired: false },
|
|
10581
10581
|
"1.2.840.10008.1.2.4.112": { uid: "1.2.840.10008.1.2.4.112", name: "JPEG XL", type: "TransferSyntax", retired: false },
|
|
10582
|
+
"1.2.840.10008.1.2.4.201": { uid: "1.2.840.10008.1.2.4.201", name: "High-Throughput JPEG 2000 Image Compression (Lossless Only)", type: "TransferSyntax", retired: false },
|
|
10583
|
+
"1.2.840.10008.1.2.4.202": { uid: "1.2.840.10008.1.2.4.202", name: "High-Throughput JPEG 2000 with RPCL Options Image Compression (Lossless Only)", type: "TransferSyntax", retired: false },
|
|
10584
|
+
"1.2.840.10008.1.2.4.203": { uid: "1.2.840.10008.1.2.4.203", name: "High-Throughput JPEG 2000 Image Compression", type: "TransferSyntax", retired: false },
|
|
10585
|
+
"1.2.840.10008.1.2.4.204": { uid: "1.2.840.10008.1.2.4.204", name: "JPIP HTJ2K Referenced", type: "TransferSyntax", retired: false },
|
|
10586
|
+
"1.2.840.10008.1.2.4.205": { uid: "1.2.840.10008.1.2.4.205", name: "JPIP HTJ2K Referenced Deflate", type: "TransferSyntax", retired: false },
|
|
10582
10587
|
"1.2.840.10008.1.2.4.50": { uid: "1.2.840.10008.1.2.4.50", name: "JPEG Baseline (Process 1)", type: "TransferSyntax", retired: false },
|
|
10583
10588
|
"1.2.840.10008.1.2.4.51": { uid: "1.2.840.10008.1.2.4.51", name: "JPEG Extended (Process 2 & 4)", type: "TransferSyntax", retired: false },
|
|
10584
10589
|
"1.2.840.10008.1.2.4.52": { uid: "1.2.840.10008.1.2.4.52", name: "JPEG Extended (Process 3 & 5)", type: "TransferSyntax", retired: true },
|
|
@@ -10611,20 +10616,98 @@ var UIDS = {
|
|
|
10611
10616
|
"1.2.840.10008.1.2.7.1": { uid: "1.2.840.10008.1.2.7.1", name: "SMPTE ST 2110-20 Uncompressed Progressive Active Video", type: "TransferSyntax", retired: false },
|
|
10612
10617
|
"1.2.840.10008.1.2.7.2": { uid: "1.2.840.10008.1.2.7.2", name: "SMPTE ST 2110-20 Uncompressed Interlaced Active Video", type: "TransferSyntax", retired: false },
|
|
10613
10618
|
"1.2.840.10008.1.2.7.3": { uid: "1.2.840.10008.1.2.7.3", name: "SMPTE ST 2110-30 PCM Digital Audio", type: "TransferSyntax", retired: false },
|
|
10619
|
+
"1.2.840.10008.1.2.8.1": { uid: "1.2.840.10008.1.2.8.1", name: "Deflated Image Frame Compression", type: "TransferSyntax", retired: false },
|
|
10620
|
+
"1.2.840.10008.1.20": { uid: "1.2.840.10008.1.20", name: "Papyrus 3 Implicit VR Little Endian", type: "TransferSyntax", retired: true },
|
|
10614
10621
|
"1.2.840.10008.1.20.1": { uid: "1.2.840.10008.1.20.1", name: "Storage Commitment Push Model SOP Class", type: "SOPClass", retired: false },
|
|
10615
10622
|
"1.2.840.10008.1.20.1.1": { uid: "1.2.840.10008.1.20.1.1", name: "Storage Commitment Push Model SOP Instance", type: "WellKnownSOPInstance", retired: false },
|
|
10623
|
+
"1.2.840.10008.1.20.2": { uid: "1.2.840.10008.1.20.2", name: "Storage Commitment Pull Model SOP Class", type: "SOPClass", retired: true },
|
|
10624
|
+
"1.2.840.10008.1.20.2.1": { uid: "1.2.840.10008.1.20.2.1", name: "Storage Commitment Pull Model SOP Instance", type: "WellKnownSOPInstance", retired: true },
|
|
10616
10625
|
"1.2.840.10008.1.3.10": { uid: "1.2.840.10008.1.3.10", name: "Media Storage Directory Storage", type: "SOPClass", retired: false },
|
|
10617
10626
|
"1.2.840.10008.1.4.1.1": { uid: "1.2.840.10008.1.4.1.1", name: "Talairach Brain Atlas Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10627
|
+
"1.2.840.10008.1.4.1.10": { uid: "1.2.840.10008.1.4.1.10", name: "SPM2 GRAY Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10628
|
+
"1.2.840.10008.1.4.1.11": { uid: "1.2.840.10008.1.4.1.11", name: "SPM2 WHITE Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10629
|
+
"1.2.840.10008.1.4.1.12": { uid: "1.2.840.10008.1.4.1.12", name: "SPM2 CSF Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10630
|
+
"1.2.840.10008.1.4.1.13": { uid: "1.2.840.10008.1.4.1.13", name: "SPM2 BRAINMASK Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10631
|
+
"1.2.840.10008.1.4.1.14": { uid: "1.2.840.10008.1.4.1.14", name: "SPM2 AVG305T1 Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10632
|
+
"1.2.840.10008.1.4.1.15": { uid: "1.2.840.10008.1.4.1.15", name: "SPM2 AVG152T1 Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10633
|
+
"1.2.840.10008.1.4.1.16": { uid: "1.2.840.10008.1.4.1.16", name: "SPM2 AVG152T2 Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10634
|
+
"1.2.840.10008.1.4.1.17": { uid: "1.2.840.10008.1.4.1.17", name: "SPM2 AVG152PD Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10635
|
+
"1.2.840.10008.1.4.1.18": { uid: "1.2.840.10008.1.4.1.18", name: "SPM2 SINGLESUBJT1 Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10618
10636
|
"1.2.840.10008.1.4.1.2": { uid: "1.2.840.10008.1.4.1.2", name: "SPM2 T1 Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10619
10637
|
"1.2.840.10008.1.4.1.3": { uid: "1.2.840.10008.1.4.1.3", name: "SPM2 T2 Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10620
10638
|
"1.2.840.10008.1.4.1.4": { uid: "1.2.840.10008.1.4.1.4", name: "SPM2 PD Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10621
10639
|
"1.2.840.10008.1.4.1.5": { uid: "1.2.840.10008.1.4.1.5", name: "SPM2 EPI Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10640
|
+
"1.2.840.10008.1.4.1.6": { uid: "1.2.840.10008.1.4.1.6", name: "SPM2 FIL T1 Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10641
|
+
"1.2.840.10008.1.4.1.7": { uid: "1.2.840.10008.1.4.1.7", name: "SPM2 PET Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10642
|
+
"1.2.840.10008.1.4.1.8": { uid: "1.2.840.10008.1.4.1.8", name: "SPM2 TRANSM Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10643
|
+
"1.2.840.10008.1.4.1.9": { uid: "1.2.840.10008.1.4.1.9", name: "SPM2 SPECT Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10622
10644
|
"1.2.840.10008.1.4.2.1": { uid: "1.2.840.10008.1.4.2.1", name: "ICBM 452 T1 Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10623
10645
|
"1.2.840.10008.1.4.2.2": { uid: "1.2.840.10008.1.4.2.2", name: "ICBM Single Subject MRI Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10646
|
+
"1.2.840.10008.1.4.3.1": { uid: "1.2.840.10008.1.4.3.1", name: "IEC 61217 Fixed Coordinate System Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10647
|
+
"1.2.840.10008.1.4.3.2": { uid: "1.2.840.10008.1.4.3.2", name: "Standard Robotic-Arm Coordinate System Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10648
|
+
"1.2.840.10008.1.4.3.3": { uid: "1.2.840.10008.1.4.3.3", name: "IEC 61217 Table Top Coordinate System Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10649
|
+
"1.2.840.10008.1.4.4.1": { uid: "1.2.840.10008.1.4.4.1", name: "SRI24 Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10650
|
+
"1.2.840.10008.1.4.5.1": { uid: "1.2.840.10008.1.4.5.1", name: "Colin27 Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10651
|
+
"1.2.840.10008.1.4.6.1": { uid: "1.2.840.10008.1.4.6.1", name: "LPBA40/AIR Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10652
|
+
"1.2.840.10008.1.4.6.2": { uid: "1.2.840.10008.1.4.6.2", name: "LPBA40/FLIRT Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10653
|
+
"1.2.840.10008.1.4.6.3": { uid: "1.2.840.10008.1.4.6.3", name: "LPBA40/SPM5 Frame of Reference", type: "WellKnownFrameOfReference", retired: false },
|
|
10624
10654
|
"1.2.840.10008.1.40": { uid: "1.2.840.10008.1.40", name: "Procedural Event Logging SOP Class", type: "SOPClass", retired: false },
|
|
10625
10655
|
"1.2.840.10008.1.40.1": { uid: "1.2.840.10008.1.40.1", name: "Procedural Event Logging SOP Instance", type: "WellKnownSOPInstance", retired: false },
|
|
10626
10656
|
"1.2.840.10008.1.42": { uid: "1.2.840.10008.1.42", name: "Substance Administration Logging SOP Class", type: "SOPClass", retired: false },
|
|
10627
10657
|
"1.2.840.10008.1.42.1": { uid: "1.2.840.10008.1.42.1", name: "Substance Administration Logging SOP Instance", type: "WellKnownSOPInstance", retired: false },
|
|
10658
|
+
"1.2.840.10008.1.5.1": { uid: "1.2.840.10008.1.5.1", name: "Hot Iron Color Palette SOP Instance", type: "WellKnownSOPInstance", retired: false },
|
|
10659
|
+
"1.2.840.10008.1.5.2": { uid: "1.2.840.10008.1.5.2", name: "PET Color Palette SOP Instance", type: "WellKnownSOPInstance", retired: false },
|
|
10660
|
+
"1.2.840.10008.1.5.3": { uid: "1.2.840.10008.1.5.3", name: "Hot Metal Blue Color Palette SOP Instance", type: "WellKnownSOPInstance", retired: false },
|
|
10661
|
+
"1.2.840.10008.1.5.4": { uid: "1.2.840.10008.1.5.4", name: "PET 20 Step Color Palette SOP Instance", type: "WellKnownSOPInstance", retired: false },
|
|
10662
|
+
"1.2.840.10008.1.5.5": { uid: "1.2.840.10008.1.5.5", name: "Spring Color Palette SOP Instance", type: "WellKnownSOPInstance", retired: false },
|
|
10663
|
+
"1.2.840.10008.1.5.6": { uid: "1.2.840.10008.1.5.6", name: "Summer Color Palette SOP Instance", type: "WellKnownSOPInstance", retired: false },
|
|
10664
|
+
"1.2.840.10008.1.5.7": { uid: "1.2.840.10008.1.5.7", name: "Fall Color Palette SOP Instance", type: "WellKnownSOPInstance", retired: false },
|
|
10665
|
+
"1.2.840.10008.1.5.8": { uid: "1.2.840.10008.1.5.8", name: "Winter Color Palette SOP Instance", type: "WellKnownSOPInstance", retired: false },
|
|
10666
|
+
"1.2.840.10008.1.9": { uid: "1.2.840.10008.1.9", name: "Basic Study Content Notification SOP Class", type: "SOPClass", retired: true },
|
|
10667
|
+
"1.2.840.10008.10.1": { uid: "1.2.840.10008.10.1", name: "Video Endoscopic Image Real-Time Communication", type: "SOPClass", retired: false },
|
|
10668
|
+
"1.2.840.10008.10.2": { uid: "1.2.840.10008.10.2", name: "Video Photographic Image Real-Time Communication", type: "SOPClass", retired: false },
|
|
10669
|
+
"1.2.840.10008.10.3": { uid: "1.2.840.10008.10.3", name: "Audio Waveform Real-Time Communication", type: "SOPClass", retired: false },
|
|
10670
|
+
"1.2.840.10008.10.4": { uid: "1.2.840.10008.10.4", name: "Rendition Selection Document Real-Time Communication", type: "SOPClass", retired: false },
|
|
10671
|
+
"1.2.840.10008.15.0.3.1": { uid: "1.2.840.10008.15.0.3.1", name: "dicomDeviceName", type: "Other", retired: false },
|
|
10672
|
+
"1.2.840.10008.15.0.3.10": { uid: "1.2.840.10008.15.0.3.10", name: "dicomAssociationInitiator", type: "Other", retired: false },
|
|
10673
|
+
"1.2.840.10008.15.0.3.11": { uid: "1.2.840.10008.15.0.3.11", name: "dicomAssociationAcceptor", type: "Other", retired: false },
|
|
10674
|
+
"1.2.840.10008.15.0.3.12": { uid: "1.2.840.10008.15.0.3.12", name: "dicomHostname", type: "Other", retired: false },
|
|
10675
|
+
"1.2.840.10008.15.0.3.13": { uid: "1.2.840.10008.15.0.3.13", name: "dicomPort", type: "Other", retired: false },
|
|
10676
|
+
"1.2.840.10008.15.0.3.14": { uid: "1.2.840.10008.15.0.3.14", name: "dicomSOPClass", type: "Other", retired: false },
|
|
10677
|
+
"1.2.840.10008.15.0.3.15": { uid: "1.2.840.10008.15.0.3.15", name: "dicomTransferRole", type: "Other", retired: false },
|
|
10678
|
+
"1.2.840.10008.15.0.3.16": { uid: "1.2.840.10008.15.0.3.16", name: "dicomTransferSyntax", type: "Other", retired: false },
|
|
10679
|
+
"1.2.840.10008.15.0.3.17": { uid: "1.2.840.10008.15.0.3.17", name: "dicomPrimaryDeviceType", type: "Other", retired: false },
|
|
10680
|
+
"1.2.840.10008.15.0.3.18": { uid: "1.2.840.10008.15.0.3.18", name: "dicomRelatedDeviceReference", type: "Other", retired: false },
|
|
10681
|
+
"1.2.840.10008.15.0.3.19": { uid: "1.2.840.10008.15.0.3.19", name: "dicomPreferredCalledAETitle", type: "Other", retired: false },
|
|
10682
|
+
"1.2.840.10008.15.0.3.2": { uid: "1.2.840.10008.15.0.3.2", name: "dicomDescription", type: "Other", retired: false },
|
|
10683
|
+
"1.2.840.10008.15.0.3.20": { uid: "1.2.840.10008.15.0.3.20", name: "dicomTLSCyphersuite", type: "Other", retired: false },
|
|
10684
|
+
"1.2.840.10008.15.0.3.21": { uid: "1.2.840.10008.15.0.3.21", name: "dicomAuthorizedNodeCertificateReference", type: "Other", retired: false },
|
|
10685
|
+
"1.2.840.10008.15.0.3.22": { uid: "1.2.840.10008.15.0.3.22", name: "dicomThisNodeCertificateReference", type: "Other", retired: false },
|
|
10686
|
+
"1.2.840.10008.15.0.3.23": { uid: "1.2.840.10008.15.0.3.23", name: "dicomInstalled", type: "Other", retired: false },
|
|
10687
|
+
"1.2.840.10008.15.0.3.24": { uid: "1.2.840.10008.15.0.3.24", name: "dicomStationName", type: "Other", retired: false },
|
|
10688
|
+
"1.2.840.10008.15.0.3.25": { uid: "1.2.840.10008.15.0.3.25", name: "dicomDeviceSerialNumber", type: "Other", retired: false },
|
|
10689
|
+
"1.2.840.10008.15.0.3.26": { uid: "1.2.840.10008.15.0.3.26", name: "dicomInstitutionName", type: "Other", retired: false },
|
|
10690
|
+
"1.2.840.10008.15.0.3.27": { uid: "1.2.840.10008.15.0.3.27", name: "dicomInstitutionAddress", type: "Other", retired: false },
|
|
10691
|
+
"1.2.840.10008.15.0.3.28": { uid: "1.2.840.10008.15.0.3.28", name: "dicomInstitutionDepartmentName", type: "Other", retired: false },
|
|
10692
|
+
"1.2.840.10008.15.0.3.29": { uid: "1.2.840.10008.15.0.3.29", name: "dicomIssuerOfPatientID", type: "Other", retired: false },
|
|
10693
|
+
"1.2.840.10008.15.0.3.3": { uid: "1.2.840.10008.15.0.3.3", name: "dicomManufacturer", type: "Other", retired: false },
|
|
10694
|
+
"1.2.840.10008.15.0.3.30": { uid: "1.2.840.10008.15.0.3.30", name: "dicomPreferredCallingAETitle", type: "Other", retired: false },
|
|
10695
|
+
"1.2.840.10008.15.0.3.31": { uid: "1.2.840.10008.15.0.3.31", name: "dicomSupportedCharacterSet", type: "Other", retired: false },
|
|
10696
|
+
"1.2.840.10008.15.0.3.4": { uid: "1.2.840.10008.15.0.3.4", name: "dicomManufacturerModelName", type: "Other", retired: false },
|
|
10697
|
+
"1.2.840.10008.15.0.3.5": { uid: "1.2.840.10008.15.0.3.5", name: "dicomSoftwareVersion", type: "Other", retired: false },
|
|
10698
|
+
"1.2.840.10008.15.0.3.6": { uid: "1.2.840.10008.15.0.3.6", name: "dicomVendorData", type: "Other", retired: false },
|
|
10699
|
+
"1.2.840.10008.15.0.3.7": { uid: "1.2.840.10008.15.0.3.7", name: "dicomAETitle", type: "Other", retired: false },
|
|
10700
|
+
"1.2.840.10008.15.0.3.8": { uid: "1.2.840.10008.15.0.3.8", name: "dicomNetworkConnectionReference", type: "Other", retired: false },
|
|
10701
|
+
"1.2.840.10008.15.0.3.9": { uid: "1.2.840.10008.15.0.3.9", name: "dicomApplicationCluster", type: "Other", retired: false },
|
|
10702
|
+
"1.2.840.10008.15.0.4.1": { uid: "1.2.840.10008.15.0.4.1", name: "dicomConfigurationRoot", type: "Other", retired: false },
|
|
10703
|
+
"1.2.840.10008.15.0.4.2": { uid: "1.2.840.10008.15.0.4.2", name: "dicomDevicesRoot", type: "Other", retired: false },
|
|
10704
|
+
"1.2.840.10008.15.0.4.3": { uid: "1.2.840.10008.15.0.4.3", name: "dicomUniqueAETitlesRegistryRoot", type: "Other", retired: false },
|
|
10705
|
+
"1.2.840.10008.15.0.4.4": { uid: "1.2.840.10008.15.0.4.4", name: "dicomDevice", type: "Other", retired: false },
|
|
10706
|
+
"1.2.840.10008.15.0.4.5": { uid: "1.2.840.10008.15.0.4.5", name: "dicomNetworkAE", type: "Other", retired: false },
|
|
10707
|
+
"1.2.840.10008.15.0.4.6": { uid: "1.2.840.10008.15.0.4.6", name: "dicomNetworkConnection", type: "Other", retired: false },
|
|
10708
|
+
"1.2.840.10008.15.0.4.7": { uid: "1.2.840.10008.15.0.4.7", name: "dicomUniqueAETitle", type: "Other", retired: false },
|
|
10709
|
+
"1.2.840.10008.15.0.4.8": { uid: "1.2.840.10008.15.0.4.8", name: "dicomTransferCapability", type: "Other", retired: false },
|
|
10710
|
+
"1.2.840.10008.15.1.1": { uid: "1.2.840.10008.15.1.1", name: "Universal Coordinated Time", type: "Other", retired: false },
|
|
10628
10711
|
"1.2.840.10008.2.16.10": { uid: "1.2.840.10008.2.16.10", name: "Dublin Core", type: "CodingScheme", retired: false },
|
|
10629
10712
|
"1.2.840.10008.2.16.11": { uid: "1.2.840.10008.2.16.11", name: "New York University Melanoma Clinical Cooperative Group", type: "CodingScheme", retired: false },
|
|
10630
10713
|
"1.2.840.10008.2.16.12": { uid: "1.2.840.10008.2.16.12", name: "Mayo Clinic Non-radiological Images Specific Body Structure Anatomical Surface Region Guide", type: "CodingScheme", retired: false },
|
|
@@ -10640,7 +10723,50 @@ var UIDS = {
|
|
|
10640
10723
|
"1.2.840.10008.2.16.7": { uid: "1.2.840.10008.2.16.7", name: "Integrated Taxonomic Information System (ITIS) Taxonomic Serial Number (TSN)", type: "CodingScheme", retired: false },
|
|
10641
10724
|
"1.2.840.10008.2.16.8": { uid: "1.2.840.10008.2.16.8", name: "Mouse Genome Initiative (MGI)", type: "CodingScheme", retired: false },
|
|
10642
10725
|
"1.2.840.10008.2.16.9": { uid: "1.2.840.10008.2.16.9", name: "PubChem Compound CID", type: "CodingScheme", retired: false },
|
|
10726
|
+
"1.2.840.10008.2.6.1": { uid: "1.2.840.10008.2.6.1", name: "DICOM UID Registry", type: "CodingScheme", retired: false },
|
|
10643
10727
|
"1.2.840.10008.3.1.1.1": { uid: "1.2.840.10008.3.1.1.1", name: "DICOM Application Context Name", type: "ApplicationContext", retired: false },
|
|
10728
|
+
"1.2.840.10008.3.1.2.1.1": { uid: "1.2.840.10008.3.1.2.1.1", name: "Detached Patient Management SOP Class", type: "SOPClass", retired: true },
|
|
10729
|
+
"1.2.840.10008.3.1.2.1.4": { uid: "1.2.840.10008.3.1.2.1.4", name: "Detached Patient Management Meta SOP Class", type: "MetaSOPClass", retired: true },
|
|
10730
|
+
"1.2.840.10008.3.1.2.2.1": { uid: "1.2.840.10008.3.1.2.2.1", name: "Detached Visit Management SOP Class", type: "SOPClass", retired: true },
|
|
10731
|
+
"1.2.840.10008.3.1.2.3.1": { uid: "1.2.840.10008.3.1.2.3.1", name: "Detached Study Management SOP Class", type: "SOPClass", retired: true },
|
|
10732
|
+
"1.2.840.10008.3.1.2.3.2": { uid: "1.2.840.10008.3.1.2.3.2", name: "Study Component Management SOP Class", type: "SOPClass", retired: true },
|
|
10733
|
+
"1.2.840.10008.3.1.2.3.3": { uid: "1.2.840.10008.3.1.2.3.3", name: "Modality Performed Procedure Step SOP Class", type: "SOPClass", retired: false },
|
|
10734
|
+
"1.2.840.10008.3.1.2.3.4": { uid: "1.2.840.10008.3.1.2.3.4", name: "Modality Performed Procedure Step Retrieve SOP Class", type: "SOPClass", retired: false },
|
|
10735
|
+
"1.2.840.10008.3.1.2.3.5": { uid: "1.2.840.10008.3.1.2.3.5", name: "Modality Performed Procedure Step Notification SOP Class", type: "SOPClass", retired: false },
|
|
10736
|
+
"1.2.840.10008.3.1.2.5.1": { uid: "1.2.840.10008.3.1.2.5.1", name: "Detached Results Management SOP Class", type: "SOPClass", retired: true },
|
|
10737
|
+
"1.2.840.10008.3.1.2.5.4": { uid: "1.2.840.10008.3.1.2.5.4", name: "Detached Results Management Meta SOP Class", type: "MetaSOPClass", retired: true },
|
|
10738
|
+
"1.2.840.10008.3.1.2.5.5": { uid: "1.2.840.10008.3.1.2.5.5", name: "Detached Study Management Meta SOP Class", type: "MetaSOPClass", retired: true },
|
|
10739
|
+
"1.2.840.10008.3.1.2.6.1": { uid: "1.2.840.10008.3.1.2.6.1", name: "Detached Interpretation Management SOP Class", type: "SOPClass", retired: true },
|
|
10740
|
+
"1.2.840.10008.4.2": { uid: "1.2.840.10008.4.2", name: "Storage Service Class", type: "ServiceClass", retired: false },
|
|
10741
|
+
"1.2.840.10008.5.1.1.1": { uid: "1.2.840.10008.5.1.1.1", name: "Basic Film Session SOP Class", type: "SOPClass", retired: false },
|
|
10742
|
+
"1.2.840.10008.5.1.1.14": { uid: "1.2.840.10008.5.1.1.14", name: "Print Job SOP Class", type: "SOPClass", retired: false },
|
|
10743
|
+
"1.2.840.10008.5.1.1.15": { uid: "1.2.840.10008.5.1.1.15", name: "Basic Annotation Box SOP Class", type: "SOPClass", retired: false },
|
|
10744
|
+
"1.2.840.10008.5.1.1.16": { uid: "1.2.840.10008.5.1.1.16", name: "Printer SOP Class", type: "SOPClass", retired: false },
|
|
10745
|
+
"1.2.840.10008.5.1.1.16.376": { uid: "1.2.840.10008.5.1.1.16.376", name: "Printer Configuration Retrieval SOP Class", type: "SOPClass", retired: false },
|
|
10746
|
+
"1.2.840.10008.5.1.1.17": { uid: "1.2.840.10008.5.1.1.17", name: "Printer SOP Instance", type: "WellKnownSOPInstance", retired: false },
|
|
10747
|
+
"1.2.840.10008.5.1.1.17.376": { uid: "1.2.840.10008.5.1.1.17.376", name: "Printer Configuration Retrieval SOP Instance", type: "WellKnownSOPInstance", retired: false },
|
|
10748
|
+
"1.2.840.10008.5.1.1.18": { uid: "1.2.840.10008.5.1.1.18", name: "Basic Color Print Management Meta SOP Class", type: "MetaSOPClass", retired: false },
|
|
10749
|
+
"1.2.840.10008.5.1.1.18.1": { uid: "1.2.840.10008.5.1.1.18.1", name: "Referenced Color Print Management Meta SOP Class", type: "MetaSOPClass", retired: true },
|
|
10750
|
+
"1.2.840.10008.5.1.1.2": { uid: "1.2.840.10008.5.1.1.2", name: "Basic Film Box SOP Class", type: "SOPClass", retired: false },
|
|
10751
|
+
"1.2.840.10008.5.1.1.22": { uid: "1.2.840.10008.5.1.1.22", name: "VOI LUT Box SOP Class", type: "SOPClass", retired: false },
|
|
10752
|
+
"1.2.840.10008.5.1.1.23": { uid: "1.2.840.10008.5.1.1.23", name: "Presentation LUT SOP Class", type: "SOPClass", retired: false },
|
|
10753
|
+
"1.2.840.10008.5.1.1.24": { uid: "1.2.840.10008.5.1.1.24", name: "Image Overlay Box SOP Class", type: "SOPClass", retired: true },
|
|
10754
|
+
"1.2.840.10008.5.1.1.24.1": { uid: "1.2.840.10008.5.1.1.24.1", name: "Basic Print Image Overlay Box SOP Class", type: "SOPClass", retired: true },
|
|
10755
|
+
"1.2.840.10008.5.1.1.25": { uid: "1.2.840.10008.5.1.1.25", name: "Print Queue SOP Instance", type: "WellKnownSOPInstance", retired: true },
|
|
10756
|
+
"1.2.840.10008.5.1.1.26": { uid: "1.2.840.10008.5.1.1.26", name: "Print Queue Management SOP Class", type: "SOPClass", retired: true },
|
|
10757
|
+
"1.2.840.10008.5.1.1.27": { uid: "1.2.840.10008.5.1.1.27", name: "Stored Print Storage SOP Class", type: "SOPClass", retired: true },
|
|
10758
|
+
"1.2.840.10008.5.1.1.29": { uid: "1.2.840.10008.5.1.1.29", name: "Hardcopy Grayscale Image Storage SOP Class", type: "SOPClass", retired: true },
|
|
10759
|
+
"1.2.840.10008.5.1.1.30": { uid: "1.2.840.10008.5.1.1.30", name: "Hardcopy Color Image Storage SOP Class", type: "SOPClass", retired: true },
|
|
10760
|
+
"1.2.840.10008.5.1.1.31": { uid: "1.2.840.10008.5.1.1.31", name: "Pull Print Request SOP Class", type: "SOPClass", retired: true },
|
|
10761
|
+
"1.2.840.10008.5.1.1.32": { uid: "1.2.840.10008.5.1.1.32", name: "Pull Stored Print Management Meta SOP Class", type: "MetaSOPClass", retired: true },
|
|
10762
|
+
"1.2.840.10008.5.1.1.33": { uid: "1.2.840.10008.5.1.1.33", name: "Media Creation Management SOP Class UID", type: "SOPClass", retired: false },
|
|
10763
|
+
"1.2.840.10008.5.1.1.4": { uid: "1.2.840.10008.5.1.1.4", name: "Basic Grayscale Image Box SOP Class", type: "SOPClass", retired: false },
|
|
10764
|
+
"1.2.840.10008.5.1.1.4.1": { uid: "1.2.840.10008.5.1.1.4.1", name: "Basic Color Image Box SOP Class", type: "SOPClass", retired: false },
|
|
10765
|
+
"1.2.840.10008.5.1.1.4.2": { uid: "1.2.840.10008.5.1.1.4.2", name: "Referenced Image Box SOP Class", type: "SOPClass", retired: true },
|
|
10766
|
+
"1.2.840.10008.5.1.1.40": { uid: "1.2.840.10008.5.1.1.40", name: "Display System SOP Class", type: "SOPClass", retired: false },
|
|
10767
|
+
"1.2.840.10008.5.1.1.40.1": { uid: "1.2.840.10008.5.1.1.40.1", name: "Display System SOP Instance", type: "WellKnownSOPInstance", retired: false },
|
|
10768
|
+
"1.2.840.10008.5.1.1.9": { uid: "1.2.840.10008.5.1.1.9", name: "Basic Grayscale Print Management Meta SOP Class", type: "MetaSOPClass", retired: false },
|
|
10769
|
+
"1.2.840.10008.5.1.1.9.1": { uid: "1.2.840.10008.5.1.1.9.1", name: "Referenced Grayscale Print Management Meta SOP Class", type: "MetaSOPClass", retired: true },
|
|
10644
10770
|
"1.2.840.10008.5.1.4.1.1.1": { uid: "1.2.840.10008.5.1.4.1.1.1", name: "Computed Radiography Image Storage", type: "SOPClass", retired: false },
|
|
10645
10771
|
"1.2.840.10008.5.1.4.1.1.1.1": { uid: "1.2.840.10008.5.1.4.1.1.1.1", name: "Digital X-Ray Image Storage - For Presentation", type: "SOPClass", retired: false },
|
|
10646
10772
|
"1.2.840.10008.5.1.4.1.1.1.1.1": { uid: "1.2.840.10008.5.1.4.1.1.1.1.1", name: "Digital X-Ray Image Storage - For Processing", type: "SOPClass", retired: false },
|
|
@@ -10648,11 +10774,13 @@ var UIDS = {
|
|
|
10648
10774
|
"1.2.840.10008.5.1.4.1.1.1.2.1": { uid: "1.2.840.10008.5.1.4.1.1.1.2.1", name: "Digital Mammography X-Ray Image Storage - For Processing", type: "SOPClass", retired: false },
|
|
10649
10775
|
"1.2.840.10008.5.1.4.1.1.1.3": { uid: "1.2.840.10008.5.1.4.1.1.1.3", name: "Digital Intra-Oral X-Ray Image Storage - For Presentation", type: "SOPClass", retired: false },
|
|
10650
10776
|
"1.2.840.10008.5.1.4.1.1.1.3.1": { uid: "1.2.840.10008.5.1.4.1.1.1.3.1", name: "Digital Intra-Oral X-Ray Image Storage - For Processing", type: "SOPClass", retired: false },
|
|
10777
|
+
"1.2.840.10008.5.1.4.1.1.10": { uid: "1.2.840.10008.5.1.4.1.1.10", name: "Standalone Modality LUT Storage", type: "SOPClass", retired: true },
|
|
10651
10778
|
"1.2.840.10008.5.1.4.1.1.104.1": { uid: "1.2.840.10008.5.1.4.1.1.104.1", name: "Encapsulated PDF Storage", type: "SOPClass", retired: false },
|
|
10652
10779
|
"1.2.840.10008.5.1.4.1.1.104.2": { uid: "1.2.840.10008.5.1.4.1.1.104.2", name: "Encapsulated CDA Storage", type: "SOPClass", retired: false },
|
|
10653
10780
|
"1.2.840.10008.5.1.4.1.1.104.3": { uid: "1.2.840.10008.5.1.4.1.1.104.3", name: "Encapsulated STL Storage", type: "SOPClass", retired: false },
|
|
10654
10781
|
"1.2.840.10008.5.1.4.1.1.104.4": { uid: "1.2.840.10008.5.1.4.1.1.104.4", name: "Encapsulated OBJ Storage", type: "SOPClass", retired: false },
|
|
10655
10782
|
"1.2.840.10008.5.1.4.1.1.104.5": { uid: "1.2.840.10008.5.1.4.1.1.104.5", name: "Encapsulated MTL Storage", type: "SOPClass", retired: false },
|
|
10783
|
+
"1.2.840.10008.5.1.4.1.1.11": { uid: "1.2.840.10008.5.1.4.1.1.11", name: "Standalone VOI LUT Storage", type: "SOPClass", retired: true },
|
|
10656
10784
|
"1.2.840.10008.5.1.4.1.1.11.1": { uid: "1.2.840.10008.5.1.4.1.1.11.1", name: "Grayscale Softcopy Presentation State Storage", type: "SOPClass", retired: false },
|
|
10657
10785
|
"1.2.840.10008.5.1.4.1.1.11.10": { uid: "1.2.840.10008.5.1.4.1.1.11.10", name: "Segmented Volume Rendering Volumetric Presentation State Storage", type: "SOPClass", retired: false },
|
|
10658
10786
|
"1.2.840.10008.5.1.4.1.1.11.11": { uid: "1.2.840.10008.5.1.4.1.1.11.11", name: "Multiple Volume Rendering Volumetric Presentation State Storage", type: "SOPClass", retired: false },
|
|
@@ -10669,8 +10797,10 @@ var UIDS = {
|
|
|
10669
10797
|
"1.2.840.10008.5.1.4.1.1.12.1.1": { uid: "1.2.840.10008.5.1.4.1.1.12.1.1", name: "Enhanced XA Image Storage", type: "SOPClass", retired: false },
|
|
10670
10798
|
"1.2.840.10008.5.1.4.1.1.12.2": { uid: "1.2.840.10008.5.1.4.1.1.12.2", name: "X-Ray Radiofluoroscopic Image Storage", type: "SOPClass", retired: false },
|
|
10671
10799
|
"1.2.840.10008.5.1.4.1.1.12.2.1": { uid: "1.2.840.10008.5.1.4.1.1.12.2.1", name: "Enhanced XRF Image Storage", type: "SOPClass", retired: false },
|
|
10800
|
+
"1.2.840.10008.5.1.4.1.1.12.3": { uid: "1.2.840.10008.5.1.4.1.1.12.3", name: "X-Ray Angiographic Bi-Plane Image Storage", type: "SOPClass", retired: true },
|
|
10672
10801
|
"1.2.840.10008.5.1.4.1.1.128": { uid: "1.2.840.10008.5.1.4.1.1.128", name: "Positron Emission Tomography Image Storage", type: "SOPClass", retired: false },
|
|
10673
10802
|
"1.2.840.10008.5.1.4.1.1.128.1": { uid: "1.2.840.10008.5.1.4.1.1.128.1", name: "Legacy Converted Enhanced PET Image Storage", type: "SOPClass", retired: false },
|
|
10803
|
+
"1.2.840.10008.5.1.4.1.1.129": { uid: "1.2.840.10008.5.1.4.1.1.129", name: "Standalone PET Curve Storage", type: "SOPClass", retired: true },
|
|
10674
10804
|
"1.2.840.10008.5.1.4.1.1.13.1.1": { uid: "1.2.840.10008.5.1.4.1.1.13.1.1", name: "X-Ray 3D Angiographic Image Storage", type: "SOPClass", retired: false },
|
|
10675
10805
|
"1.2.840.10008.5.1.4.1.1.13.1.2": { uid: "1.2.840.10008.5.1.4.1.1.13.1.2", name: "X-Ray 3D Craniofacial Image Storage", type: "SOPClass", retired: false },
|
|
10676
10806
|
"1.2.840.10008.5.1.4.1.1.13.1.3": { uid: "1.2.840.10008.5.1.4.1.1.13.1.3", name: "Breast Tomosynthesis Image Storage", type: "SOPClass", retired: false },
|
|
@@ -10683,13 +10813,26 @@ var UIDS = {
|
|
|
10683
10813
|
"1.2.840.10008.5.1.4.1.1.2": { uid: "1.2.840.10008.5.1.4.1.1.2", name: "CT Image Storage", type: "SOPClass", retired: false },
|
|
10684
10814
|
"1.2.840.10008.5.1.4.1.1.2.1": { uid: "1.2.840.10008.5.1.4.1.1.2.1", name: "Enhanced CT Image Storage", type: "SOPClass", retired: false },
|
|
10685
10815
|
"1.2.840.10008.5.1.4.1.1.2.2": { uid: "1.2.840.10008.5.1.4.1.1.2.2", name: "Legacy Converted Enhanced CT Image Storage", type: "SOPClass", retired: false },
|
|
10816
|
+
"1.2.840.10008.5.1.4.1.1.2.3": { uid: "1.2.840.10008.5.1.4.1.1.2.3", name: "CT Image Storage - For Processing", type: "SOPClass", retired: false },
|
|
10817
|
+
"1.2.840.10008.5.1.4.1.1.2.4": { uid: "1.2.840.10008.5.1.4.1.1.2.4", name: "Enhanced CT Image Storage - For Processing", type: "SOPClass", retired: false },
|
|
10818
|
+
"1.2.840.10008.5.1.4.1.1.2.5": { uid: "1.2.840.10008.5.1.4.1.1.2.5", name: "Legacy Converted Enhanced CT Image Storage - For Processing", type: "SOPClass", retired: false },
|
|
10686
10819
|
"1.2.840.10008.5.1.4.1.1.20": { uid: "1.2.840.10008.5.1.4.1.1.20", name: "Nuclear Medicine Image Storage", type: "SOPClass", retired: false },
|
|
10687
10820
|
"1.2.840.10008.5.1.4.1.1.200.1": { uid: "1.2.840.10008.5.1.4.1.1.200.1", name: "CT Defined Procedure Protocol Storage", type: "SOPClass", retired: false },
|
|
10688
10821
|
"1.2.840.10008.5.1.4.1.1.200.2": { uid: "1.2.840.10008.5.1.4.1.1.200.2", name: "CT Performed Procedure Protocol Storage", type: "SOPClass", retired: false },
|
|
10689
10822
|
"1.2.840.10008.5.1.4.1.1.200.3": { uid: "1.2.840.10008.5.1.4.1.1.200.3", name: "Protocol Approval Storage", type: "SOPClass", retired: false },
|
|
10823
|
+
"1.2.840.10008.5.1.4.1.1.200.4": { uid: "1.2.840.10008.5.1.4.1.1.200.4", name: "Protocol Approval Information Model - FIND", type: "SOPClass", retired: false },
|
|
10824
|
+
"1.2.840.10008.5.1.4.1.1.200.5": { uid: "1.2.840.10008.5.1.4.1.1.200.5", name: "Protocol Approval Information Model - MOVE", type: "SOPClass", retired: false },
|
|
10825
|
+
"1.2.840.10008.5.1.4.1.1.200.6": { uid: "1.2.840.10008.5.1.4.1.1.200.6", name: "Protocol Approval Information Model - GET", type: "SOPClass", retired: false },
|
|
10690
10826
|
"1.2.840.10008.5.1.4.1.1.200.7": { uid: "1.2.840.10008.5.1.4.1.1.200.7", name: "XA Defined Procedure Protocol Storage", type: "SOPClass", retired: false },
|
|
10691
10827
|
"1.2.840.10008.5.1.4.1.1.200.8": { uid: "1.2.840.10008.5.1.4.1.1.200.8", name: "XA Performed Procedure Protocol Storage", type: "SOPClass", retired: false },
|
|
10692
10828
|
"1.2.840.10008.5.1.4.1.1.201.1": { uid: "1.2.840.10008.5.1.4.1.1.201.1", name: "Inventory Storage", type: "SOPClass", retired: false },
|
|
10829
|
+
"1.2.840.10008.5.1.4.1.1.201.1.1": { uid: "1.2.840.10008.5.1.4.1.1.201.1.1", name: "Storage Management SOP Instance", type: "WellKnownSOPInstance", retired: false },
|
|
10830
|
+
"1.2.840.10008.5.1.4.1.1.201.2": { uid: "1.2.840.10008.5.1.4.1.1.201.2", name: "Inventory - FIND", type: "SOPClass", retired: false },
|
|
10831
|
+
"1.2.840.10008.5.1.4.1.1.201.3": { uid: "1.2.840.10008.5.1.4.1.1.201.3", name: "Inventory - MOVE", type: "SOPClass", retired: false },
|
|
10832
|
+
"1.2.840.10008.5.1.4.1.1.201.4": { uid: "1.2.840.10008.5.1.4.1.1.201.4", name: "Inventory - GET", type: "SOPClass", retired: false },
|
|
10833
|
+
"1.2.840.10008.5.1.4.1.1.201.5": { uid: "1.2.840.10008.5.1.4.1.1.201.5", name: "Inventory Creation", type: "SOPClass", retired: false },
|
|
10834
|
+
"1.2.840.10008.5.1.4.1.1.201.6": { uid: "1.2.840.10008.5.1.4.1.1.201.6", name: "Repository Query", type: "SOPClass", retired: false },
|
|
10835
|
+
"1.2.840.10008.5.1.4.1.1.3": { uid: "1.2.840.10008.5.1.4.1.1.3", name: "Ultrasound Multi-frame Image Storage", type: "SOPClass", retired: true },
|
|
10693
10836
|
"1.2.840.10008.5.1.4.1.1.3.1": { uid: "1.2.840.10008.5.1.4.1.1.3.1", name: "Ultrasound Multi-frame Image Storage", type: "SOPClass", retired: false },
|
|
10694
10837
|
"1.2.840.10008.5.1.4.1.1.30": { uid: "1.2.840.10008.5.1.4.1.1.30", name: "Parametric Map Storage", type: "SOPClass", retired: false },
|
|
10695
10838
|
"1.2.840.10008.5.1.4.1.1.4": { uid: "1.2.840.10008.5.1.4.1.1.4", name: "MR Image Storage", type: "SOPClass", retired: false },
|
|
@@ -10722,9 +10865,23 @@ var UIDS = {
|
|
|
10722
10865
|
"1.2.840.10008.5.1.4.1.1.481.7": { uid: "1.2.840.10008.5.1.4.1.1.481.7", name: "RT Treatment Summary Record Storage", type: "SOPClass", retired: false },
|
|
10723
10866
|
"1.2.840.10008.5.1.4.1.1.481.8": { uid: "1.2.840.10008.5.1.4.1.1.481.8", name: "RT Ion Plan Storage", type: "SOPClass", retired: false },
|
|
10724
10867
|
"1.2.840.10008.5.1.4.1.1.481.9": { uid: "1.2.840.10008.5.1.4.1.1.481.9", name: "RT Ion Beams Treatment Record Storage", type: "SOPClass", retired: false },
|
|
10868
|
+
"1.2.840.10008.5.1.4.1.1.5": { uid: "1.2.840.10008.5.1.4.1.1.5", name: "Nuclear Medicine Image Storage", type: "SOPClass", retired: true },
|
|
10869
|
+
"1.2.840.10008.5.1.4.1.1.501.1": { uid: "1.2.840.10008.5.1.4.1.1.501.1", name: "DICOS CT Image Storage", type: "SOPClass", retired: false },
|
|
10870
|
+
"1.2.840.10008.5.1.4.1.1.501.2.1": { uid: "1.2.840.10008.5.1.4.1.1.501.2.1", name: "DICOS Digital X-Ray Image Storage - For Presentation", type: "SOPClass", retired: false },
|
|
10871
|
+
"1.2.840.10008.5.1.4.1.1.501.2.2": { uid: "1.2.840.10008.5.1.4.1.1.501.2.2", name: "DICOS Digital X-Ray Image Storage - For Processing", type: "SOPClass", retired: false },
|
|
10872
|
+
"1.2.840.10008.5.1.4.1.1.501.3": { uid: "1.2.840.10008.5.1.4.1.1.501.3", name: "DICOS Threat Detection Report Storage", type: "SOPClass", retired: false },
|
|
10873
|
+
"1.2.840.10008.5.1.4.1.1.501.4": { uid: "1.2.840.10008.5.1.4.1.1.501.4", name: "DICOS 2D AIT Storage", type: "SOPClass", retired: false },
|
|
10874
|
+
"1.2.840.10008.5.1.4.1.1.501.5": { uid: "1.2.840.10008.5.1.4.1.1.501.5", name: "DICOS 3D AIT Storage", type: "SOPClass", retired: false },
|
|
10875
|
+
"1.2.840.10008.5.1.4.1.1.501.6": { uid: "1.2.840.10008.5.1.4.1.1.501.6", name: "DICOS Quadrupole Resonance (QR) Storage", type: "SOPClass", retired: false },
|
|
10876
|
+
"1.2.840.10008.5.1.4.1.1.6": { uid: "1.2.840.10008.5.1.4.1.1.6", name: "Ultrasound Image Storage", type: "SOPClass", retired: true },
|
|
10725
10877
|
"1.2.840.10008.5.1.4.1.1.6.1": { uid: "1.2.840.10008.5.1.4.1.1.6.1", name: "Ultrasound Image Storage", type: "SOPClass", retired: false },
|
|
10726
10878
|
"1.2.840.10008.5.1.4.1.1.6.2": { uid: "1.2.840.10008.5.1.4.1.1.6.2", name: "Enhanced US Volume Storage", type: "SOPClass", retired: false },
|
|
10727
10879
|
"1.2.840.10008.5.1.4.1.1.6.3": { uid: "1.2.840.10008.5.1.4.1.1.6.3", name: "Photoacoustic Image Storage", type: "SOPClass", retired: false },
|
|
10880
|
+
"1.2.840.10008.5.1.4.1.1.601.1": { uid: "1.2.840.10008.5.1.4.1.1.601.1", name: "Eddy Current Image Storage", type: "SOPClass", retired: false },
|
|
10881
|
+
"1.2.840.10008.5.1.4.1.1.601.2": { uid: "1.2.840.10008.5.1.4.1.1.601.2", name: "Eddy Current Multi-frame Image Storage", type: "SOPClass", retired: false },
|
|
10882
|
+
"1.2.840.10008.5.1.4.1.1.601.3": { uid: "1.2.840.10008.5.1.4.1.1.601.3", name: "Thermography Image Storage", type: "SOPClass", retired: false },
|
|
10883
|
+
"1.2.840.10008.5.1.4.1.1.601.4": { uid: "1.2.840.10008.5.1.4.1.1.601.4", name: "Thermography Multi-frame Image Storage", type: "SOPClass", retired: false },
|
|
10884
|
+
"1.2.840.10008.5.1.4.1.1.601.5": { uid: "1.2.840.10008.5.1.4.1.1.601.5", name: "Ultrasound Waveform Storage", type: "SOPClass", retired: false },
|
|
10728
10885
|
"1.2.840.10008.5.1.4.1.1.66": { uid: "1.2.840.10008.5.1.4.1.1.66", name: "Raw Data Storage", type: "SOPClass", retired: false },
|
|
10729
10886
|
"1.2.840.10008.5.1.4.1.1.66.1": { uid: "1.2.840.10008.5.1.4.1.1.66.1", name: "Spatial Registration Storage", type: "SOPClass", retired: false },
|
|
10730
10887
|
"1.2.840.10008.5.1.4.1.1.66.2": { uid: "1.2.840.10008.5.1.4.1.1.66.2", name: "Spatial Fiducials Storage", type: "SOPClass", retired: false },
|
|
@@ -10732,6 +10889,8 @@ var UIDS = {
|
|
|
10732
10889
|
"1.2.840.10008.5.1.4.1.1.66.4": { uid: "1.2.840.10008.5.1.4.1.1.66.4", name: "Segmentation Storage", type: "SOPClass", retired: false },
|
|
10733
10890
|
"1.2.840.10008.5.1.4.1.1.66.5": { uid: "1.2.840.10008.5.1.4.1.1.66.5", name: "Surface Segmentation Storage", type: "SOPClass", retired: false },
|
|
10734
10891
|
"1.2.840.10008.5.1.4.1.1.66.6": { uid: "1.2.840.10008.5.1.4.1.1.66.6", name: "Tractography Results Storage", type: "SOPClass", retired: false },
|
|
10892
|
+
"1.2.840.10008.5.1.4.1.1.66.7": { uid: "1.2.840.10008.5.1.4.1.1.66.7", name: "Label Map Segmentation Storage", type: "SOPClass", retired: false },
|
|
10893
|
+
"1.2.840.10008.5.1.4.1.1.66.8": { uid: "1.2.840.10008.5.1.4.1.1.66.8", name: "Height Map Segmentation Storage", type: "SOPClass", retired: false },
|
|
10735
10894
|
"1.2.840.10008.5.1.4.1.1.67": { uid: "1.2.840.10008.5.1.4.1.1.67", name: "Real World Value Mapping Storage", type: "SOPClass", retired: false },
|
|
10736
10895
|
"1.2.840.10008.5.1.4.1.1.68.1": { uid: "1.2.840.10008.5.1.4.1.1.68.1", name: "Surface Scan Mesh Storage", type: "SOPClass", retired: false },
|
|
10737
10896
|
"1.2.840.10008.5.1.4.1.1.68.2": { uid: "1.2.840.10008.5.1.4.1.1.68.2", name: "Surface Scan Point Cloud Storage", type: "SOPClass", retired: false },
|
|
@@ -10740,6 +10899,7 @@ var UIDS = {
|
|
|
10740
10899
|
"1.2.840.10008.5.1.4.1.1.7.2": { uid: "1.2.840.10008.5.1.4.1.1.7.2", name: "Multi-frame Grayscale Byte Secondary Capture Image Storage", type: "SOPClass", retired: false },
|
|
10741
10900
|
"1.2.840.10008.5.1.4.1.1.7.3": { uid: "1.2.840.10008.5.1.4.1.1.7.3", name: "Multi-frame Grayscale Word Secondary Capture Image Storage", type: "SOPClass", retired: false },
|
|
10742
10901
|
"1.2.840.10008.5.1.4.1.1.7.4": { uid: "1.2.840.10008.5.1.4.1.1.7.4", name: "Multi-frame True Color Secondary Capture Image Storage", type: "SOPClass", retired: false },
|
|
10902
|
+
"1.2.840.10008.5.1.4.1.1.77.1": { uid: "1.2.840.10008.5.1.4.1.1.77.1", name: "VL Image Storage - Trial", type: "SOPClass", retired: true },
|
|
10743
10903
|
"1.2.840.10008.5.1.4.1.1.77.1.1": { uid: "1.2.840.10008.5.1.4.1.1.77.1.1", name: "VL Endoscopic Image Storage", type: "SOPClass", retired: false },
|
|
10744
10904
|
"1.2.840.10008.5.1.4.1.1.77.1.1.1": { uid: "1.2.840.10008.5.1.4.1.1.77.1.1.1", name: "Video Endoscopic Image Storage", type: "SOPClass", retired: false },
|
|
10745
10905
|
"1.2.840.10008.5.1.4.1.1.77.1.2": { uid: "1.2.840.10008.5.1.4.1.1.77.1.2", name: "VL Microscopic Image Storage", type: "SOPClass", retired: false },
|
|
@@ -10759,6 +10919,7 @@ var UIDS = {
|
|
|
10759
10919
|
"1.2.840.10008.5.1.4.1.1.77.1.7": { uid: "1.2.840.10008.5.1.4.1.1.77.1.7", name: "Dermoscopic Photography Image Storage", type: "SOPClass", retired: false },
|
|
10760
10920
|
"1.2.840.10008.5.1.4.1.1.77.1.8": { uid: "1.2.840.10008.5.1.4.1.1.77.1.8", name: "Confocal Microscopy Image Storage", type: "SOPClass", retired: false },
|
|
10761
10921
|
"1.2.840.10008.5.1.4.1.1.77.1.9": { uid: "1.2.840.10008.5.1.4.1.1.77.1.9", name: "Confocal Microscopy Tiled Pyramidal Image Storage", type: "SOPClass", retired: false },
|
|
10922
|
+
"1.2.840.10008.5.1.4.1.1.77.2": { uid: "1.2.840.10008.5.1.4.1.1.77.2", name: "VL Multi-frame Image Storage - Trial", type: "SOPClass", retired: true },
|
|
10762
10923
|
"1.2.840.10008.5.1.4.1.1.78.1": { uid: "1.2.840.10008.5.1.4.1.1.78.1", name: "Lensometry Measurements Storage", type: "SOPClass", retired: false },
|
|
10763
10924
|
"1.2.840.10008.5.1.4.1.1.78.2": { uid: "1.2.840.10008.5.1.4.1.1.78.2", name: "Autorefraction Measurements Storage", type: "SOPClass", retired: false },
|
|
10764
10925
|
"1.2.840.10008.5.1.4.1.1.78.3": { uid: "1.2.840.10008.5.1.4.1.1.78.3", name: "Keratometry Measurements Storage", type: "SOPClass", retired: false },
|
|
@@ -10768,14 +10929,19 @@ var UIDS = {
|
|
|
10768
10929
|
"1.2.840.10008.5.1.4.1.1.78.7": { uid: "1.2.840.10008.5.1.4.1.1.78.7", name: "Ophthalmic Axial Measurements Storage", type: "SOPClass", retired: false },
|
|
10769
10930
|
"1.2.840.10008.5.1.4.1.1.78.8": { uid: "1.2.840.10008.5.1.4.1.1.78.8", name: "Intraocular Lens Calculations Storage", type: "SOPClass", retired: false },
|
|
10770
10931
|
"1.2.840.10008.5.1.4.1.1.79.1": { uid: "1.2.840.10008.5.1.4.1.1.79.1", name: "Macular Grid Thickness and Volume Report Storage", type: "SOPClass", retired: false },
|
|
10932
|
+
"1.2.840.10008.5.1.4.1.1.8": { uid: "1.2.840.10008.5.1.4.1.1.8", name: "Standalone Overlay Storage", type: "SOPClass", retired: true },
|
|
10771
10933
|
"1.2.840.10008.5.1.4.1.1.80.1": { uid: "1.2.840.10008.5.1.4.1.1.80.1", name: "Ophthalmic Visual Field Static Perimetry Measurements Storage", type: "SOPClass", retired: false },
|
|
10772
10934
|
"1.2.840.10008.5.1.4.1.1.81.1": { uid: "1.2.840.10008.5.1.4.1.1.81.1", name: "Ophthalmic Thickness Map Storage", type: "SOPClass", retired: false },
|
|
10773
10935
|
"1.2.840.10008.5.1.4.1.1.82.1": { uid: "1.2.840.10008.5.1.4.1.1.82.1", name: "Corneal Topography Map Storage", type: "SOPClass", retired: false },
|
|
10936
|
+
"1.2.840.10008.5.1.4.1.1.88.1": { uid: "1.2.840.10008.5.1.4.1.1.88.1", name: "Text SR Storage - Trial", type: "SOPClass", retired: true },
|
|
10774
10937
|
"1.2.840.10008.5.1.4.1.1.88.11": { uid: "1.2.840.10008.5.1.4.1.1.88.11", name: "Basic Text SR Storage", type: "SOPClass", retired: false },
|
|
10938
|
+
"1.2.840.10008.5.1.4.1.1.88.2": { uid: "1.2.840.10008.5.1.4.1.1.88.2", name: "Audio SR Storage - Trial", type: "SOPClass", retired: true },
|
|
10775
10939
|
"1.2.840.10008.5.1.4.1.1.88.22": { uid: "1.2.840.10008.5.1.4.1.1.88.22", name: "Enhanced SR Storage", type: "SOPClass", retired: false },
|
|
10940
|
+
"1.2.840.10008.5.1.4.1.1.88.3": { uid: "1.2.840.10008.5.1.4.1.1.88.3", name: "Detail SR Storage - Trial", type: "SOPClass", retired: true },
|
|
10776
10941
|
"1.2.840.10008.5.1.4.1.1.88.33": { uid: "1.2.840.10008.5.1.4.1.1.88.33", name: "Comprehensive SR Storage", type: "SOPClass", retired: false },
|
|
10777
10942
|
"1.2.840.10008.5.1.4.1.1.88.34": { uid: "1.2.840.10008.5.1.4.1.1.88.34", name: "Comprehensive 3D SR Storage", type: "SOPClass", retired: false },
|
|
10778
10943
|
"1.2.840.10008.5.1.4.1.1.88.35": { uid: "1.2.840.10008.5.1.4.1.1.88.35", name: "Extensible SR Storage", type: "SOPClass", retired: false },
|
|
10944
|
+
"1.2.840.10008.5.1.4.1.1.88.4": { uid: "1.2.840.10008.5.1.4.1.1.88.4", name: "Comprehensive SR Storage - Trial", type: "SOPClass", retired: true },
|
|
10779
10945
|
"1.2.840.10008.5.1.4.1.1.88.40": { uid: "1.2.840.10008.5.1.4.1.1.88.40", name: "Procedure Log Storage", type: "SOPClass", retired: false },
|
|
10780
10946
|
"1.2.840.10008.5.1.4.1.1.88.50": { uid: "1.2.840.10008.5.1.4.1.1.88.50", name: "Mammography CAD SR Storage", type: "SOPClass", retired: false },
|
|
10781
10947
|
"1.2.840.10008.5.1.4.1.1.88.59": { uid: "1.2.840.10008.5.1.4.1.1.88.59", name: "Key Object Selection Document Storage", type: "SOPClass", retired: false },
|
|
@@ -10790,10 +10956,15 @@ var UIDS = {
|
|
|
10790
10956
|
"1.2.840.10008.5.1.4.1.1.88.74": { uid: "1.2.840.10008.5.1.4.1.1.88.74", name: "Planned Imaging Agent Administration SR Storage", type: "SOPClass", retired: false },
|
|
10791
10957
|
"1.2.840.10008.5.1.4.1.1.88.75": { uid: "1.2.840.10008.5.1.4.1.1.88.75", name: "Performed Imaging Agent Administration SR Storage", type: "SOPClass", retired: false },
|
|
10792
10958
|
"1.2.840.10008.5.1.4.1.1.88.76": { uid: "1.2.840.10008.5.1.4.1.1.88.76", name: "Enhanced X-Ray Radiation Dose SR Storage", type: "SOPClass", retired: false },
|
|
10959
|
+
"1.2.840.10008.5.1.4.1.1.88.77": { uid: "1.2.840.10008.5.1.4.1.1.88.77", name: "Waveform Annotation SR Storage", type: "SOPClass", retired: false },
|
|
10960
|
+
"1.2.840.10008.5.1.4.1.1.9": { uid: "1.2.840.10008.5.1.4.1.1.9", name: "Standalone Curve Storage", type: "SOPClass", retired: true },
|
|
10961
|
+
"1.2.840.10008.5.1.4.1.1.9.1": { uid: "1.2.840.10008.5.1.4.1.1.9.1", name: "Waveform Storage - Trial", type: "SOPClass", retired: true },
|
|
10793
10962
|
"1.2.840.10008.5.1.4.1.1.9.1.1": { uid: "1.2.840.10008.5.1.4.1.1.9.1.1", name: "12-lead ECG Waveform Storage", type: "SOPClass", retired: false },
|
|
10794
10963
|
"1.2.840.10008.5.1.4.1.1.9.1.2": { uid: "1.2.840.10008.5.1.4.1.1.9.1.2", name: "General ECG Waveform Storage", type: "SOPClass", retired: false },
|
|
10795
10964
|
"1.2.840.10008.5.1.4.1.1.9.1.3": { uid: "1.2.840.10008.5.1.4.1.1.9.1.3", name: "Ambulatory ECG Waveform Storage", type: "SOPClass", retired: false },
|
|
10796
10965
|
"1.2.840.10008.5.1.4.1.1.9.1.4": { uid: "1.2.840.10008.5.1.4.1.1.9.1.4", name: "General 32-bit ECG Waveform Storage", type: "SOPClass", retired: false },
|
|
10966
|
+
"1.2.840.10008.5.1.4.1.1.9.100.1": { uid: "1.2.840.10008.5.1.4.1.1.9.100.1", name: "Waveform Presentation State Storage", type: "SOPClass", retired: false },
|
|
10967
|
+
"1.2.840.10008.5.1.4.1.1.9.100.2": { uid: "1.2.840.10008.5.1.4.1.1.9.100.2", name: "Waveform Acquisition Presentation State Storage", type: "SOPClass", retired: false },
|
|
10797
10968
|
"1.2.840.10008.5.1.4.1.1.9.2.1": { uid: "1.2.840.10008.5.1.4.1.1.9.2.1", name: "Hemodynamic Waveform Storage", type: "SOPClass", retired: false },
|
|
10798
10969
|
"1.2.840.10008.5.1.4.1.1.9.3.1": { uid: "1.2.840.10008.5.1.4.1.1.9.3.1", name: "Cardiac Electrophysiology Waveform Storage", type: "SOPClass", retired: false },
|
|
10799
10970
|
"1.2.840.10008.5.1.4.1.1.9.4.1": { uid: "1.2.840.10008.5.1.4.1.1.9.4.1", name: "Basic Voice Audio Waveform Storage", type: "SOPClass", retired: false },
|
|
@@ -10814,14 +10985,69 @@ var UIDS = {
|
|
|
10814
10985
|
"1.2.840.10008.5.1.4.1.2.2.1": { uid: "1.2.840.10008.5.1.4.1.2.2.1", name: "Study Root Query/Retrieve Information Model - FIND", type: "SOPClass", retired: false },
|
|
10815
10986
|
"1.2.840.10008.5.1.4.1.2.2.2": { uid: "1.2.840.10008.5.1.4.1.2.2.2", name: "Study Root Query/Retrieve Information Model - MOVE", type: "SOPClass", retired: false },
|
|
10816
10987
|
"1.2.840.10008.5.1.4.1.2.2.3": { uid: "1.2.840.10008.5.1.4.1.2.2.3", name: "Study Root Query/Retrieve Information Model - GET", type: "SOPClass", retired: false },
|
|
10988
|
+
"1.2.840.10008.5.1.4.1.2.3.1": { uid: "1.2.840.10008.5.1.4.1.2.3.1", name: "Patient/Study Only Query/Retrieve Information Model - FIND", type: "SOPClass", retired: true },
|
|
10989
|
+
"1.2.840.10008.5.1.4.1.2.3.2": { uid: "1.2.840.10008.5.1.4.1.2.3.2", name: "Patient/Study Only Query/Retrieve Information Model - MOVE", type: "SOPClass", retired: true },
|
|
10990
|
+
"1.2.840.10008.5.1.4.1.2.3.3": { uid: "1.2.840.10008.5.1.4.1.2.3.3", name: "Patient/Study Only Query/Retrieve Information Model - GET", type: "SOPClass", retired: true },
|
|
10991
|
+
"1.2.840.10008.5.1.4.1.2.4.2": { uid: "1.2.840.10008.5.1.4.1.2.4.2", name: "Composite Instance Root Retrieve - MOVE", type: "SOPClass", retired: false },
|
|
10992
|
+
"1.2.840.10008.5.1.4.1.2.4.3": { uid: "1.2.840.10008.5.1.4.1.2.4.3", name: "Composite Instance Root Retrieve - GET", type: "SOPClass", retired: false },
|
|
10993
|
+
"1.2.840.10008.5.1.4.1.2.5.3": { uid: "1.2.840.10008.5.1.4.1.2.5.3", name: "Composite Instance Retrieve Without Bulk Data - GET", type: "SOPClass", retired: false },
|
|
10994
|
+
"1.2.840.10008.5.1.4.20.1": { uid: "1.2.840.10008.5.1.4.20.1", name: "Defined Procedure Protocol Information Model - FIND", type: "SOPClass", retired: false },
|
|
10995
|
+
"1.2.840.10008.5.1.4.20.2": { uid: "1.2.840.10008.5.1.4.20.2", name: "Defined Procedure Protocol Information Model - MOVE", type: "SOPClass", retired: false },
|
|
10996
|
+
"1.2.840.10008.5.1.4.20.3": { uid: "1.2.840.10008.5.1.4.20.3", name: "Defined Procedure Protocol Information Model - GET", type: "SOPClass", retired: false },
|
|
10817
10997
|
"1.2.840.10008.5.1.4.31": { uid: "1.2.840.10008.5.1.4.31", name: "Modality Worklist Information Model - FIND", type: "SOPClass", retired: false },
|
|
10998
|
+
"1.2.840.10008.5.1.4.32": { uid: "1.2.840.10008.5.1.4.32", name: "General Purpose Worklist Management Meta SOP Class", type: "MetaSOPClass", retired: true },
|
|
10999
|
+
"1.2.840.10008.5.1.4.32.1": { uid: "1.2.840.10008.5.1.4.32.1", name: "General Purpose Worklist Information Model - FIND", type: "SOPClass", retired: true },
|
|
11000
|
+
"1.2.840.10008.5.1.4.32.2": { uid: "1.2.840.10008.5.1.4.32.2", name: "General Purpose Scheduled Procedure Step SOP Class", type: "SOPClass", retired: true },
|
|
11001
|
+
"1.2.840.10008.5.1.4.32.3": { uid: "1.2.840.10008.5.1.4.32.3", name: "General Purpose Performed Procedure Step SOP Class", type: "SOPClass", retired: true },
|
|
11002
|
+
"1.2.840.10008.5.1.4.33": { uid: "1.2.840.10008.5.1.4.33", name: "Instance Availability Notification SOP Class", type: "SOPClass", retired: false },
|
|
11003
|
+
"1.2.840.10008.5.1.4.34.1": { uid: "1.2.840.10008.5.1.4.34.1", name: "RT Beams Delivery Instruction Storage - Trial", type: "SOPClass", retired: true },
|
|
10818
11004
|
"1.2.840.10008.5.1.4.34.10": { uid: "1.2.840.10008.5.1.4.34.10", name: "RT Brachy Application Setup Delivery Instruction Storage", type: "SOPClass", retired: false },
|
|
11005
|
+
"1.2.840.10008.5.1.4.34.2": { uid: "1.2.840.10008.5.1.4.34.2", name: "RT Conventional Machine Verification - Trial", type: "SOPClass", retired: true },
|
|
11006
|
+
"1.2.840.10008.5.1.4.34.3": { uid: "1.2.840.10008.5.1.4.34.3", name: "RT Ion Machine Verification - Trial", type: "SOPClass", retired: true },
|
|
11007
|
+
"1.2.840.10008.5.1.4.34.4": { uid: "1.2.840.10008.5.1.4.34.4", name: "Unified Worklist and Procedure Step Service Class - Trial", type: "ServiceClass", retired: true },
|
|
11008
|
+
"1.2.840.10008.5.1.4.34.4.1": { uid: "1.2.840.10008.5.1.4.34.4.1", name: "Unified Procedure Step - Push SOP Class - Trial", type: "SOPClass", retired: true },
|
|
11009
|
+
"1.2.840.10008.5.1.4.34.4.2": { uid: "1.2.840.10008.5.1.4.34.4.2", name: "Unified Procedure Step - Watch SOP Class - Trial", type: "SOPClass", retired: true },
|
|
11010
|
+
"1.2.840.10008.5.1.4.34.4.3": { uid: "1.2.840.10008.5.1.4.34.4.3", name: "Unified Procedure Step - Pull SOP Class - Trial", type: "SOPClass", retired: true },
|
|
11011
|
+
"1.2.840.10008.5.1.4.34.4.4": { uid: "1.2.840.10008.5.1.4.34.4.4", name: "Unified Procedure Step - Event SOP Class - Trial", type: "SOPClass", retired: true },
|
|
11012
|
+
"1.2.840.10008.5.1.4.34.5": { uid: "1.2.840.10008.5.1.4.34.5", name: "UPS Global Subscription SOP Instance", type: "WellKnownSOPInstance", retired: false },
|
|
11013
|
+
"1.2.840.10008.5.1.4.34.5.1": { uid: "1.2.840.10008.5.1.4.34.5.1", name: "UPS Filtered Global Subscription SOP Instance", type: "WellKnownSOPInstance", retired: false },
|
|
11014
|
+
"1.2.840.10008.5.1.4.34.6": { uid: "1.2.840.10008.5.1.4.34.6", name: "Unified Worklist and Procedure Step Service Class", type: "ServiceClass", retired: false },
|
|
11015
|
+
"1.2.840.10008.5.1.4.34.6.1": { uid: "1.2.840.10008.5.1.4.34.6.1", name: "Unified Procedure Step - Push SOP Class", type: "SOPClass", retired: false },
|
|
11016
|
+
"1.2.840.10008.5.1.4.34.6.2": { uid: "1.2.840.10008.5.1.4.34.6.2", name: "Unified Procedure Step - Watch SOP Class", type: "SOPClass", retired: false },
|
|
11017
|
+
"1.2.840.10008.5.1.4.34.6.3": { uid: "1.2.840.10008.5.1.4.34.6.3", name: "Unified Procedure Step - Pull SOP Class", type: "SOPClass", retired: false },
|
|
11018
|
+
"1.2.840.10008.5.1.4.34.6.4": { uid: "1.2.840.10008.5.1.4.34.6.4", name: "Unified Procedure Step - Event SOP Class", type: "SOPClass", retired: false },
|
|
11019
|
+
"1.2.840.10008.5.1.4.34.6.5": { uid: "1.2.840.10008.5.1.4.34.6.5", name: "Unified Procedure Step - Query SOP Class", type: "SOPClass", retired: false },
|
|
10819
11020
|
"1.2.840.10008.5.1.4.34.7": { uid: "1.2.840.10008.5.1.4.34.7", name: "RT Beams Delivery Instruction Storage", type: "SOPClass", retired: false },
|
|
11021
|
+
"1.2.840.10008.5.1.4.34.8": { uid: "1.2.840.10008.5.1.4.34.8", name: "RT Conventional Machine Verification", type: "SOPClass", retired: false },
|
|
11022
|
+
"1.2.840.10008.5.1.4.34.9": { uid: "1.2.840.10008.5.1.4.34.9", name: "RT Ion Machine Verification", type: "SOPClass", retired: false },
|
|
11023
|
+
"1.2.840.10008.5.1.4.37.1": { uid: "1.2.840.10008.5.1.4.37.1", name: "General Relevant Patient Information Query", type: "SOPClass", retired: false },
|
|
11024
|
+
"1.2.840.10008.5.1.4.37.2": { uid: "1.2.840.10008.5.1.4.37.2", name: "Breast Imaging Relevant Patient Information Query", type: "SOPClass", retired: false },
|
|
11025
|
+
"1.2.840.10008.5.1.4.37.3": { uid: "1.2.840.10008.5.1.4.37.3", name: "Cardiac Relevant Patient Information Query", type: "SOPClass", retired: false },
|
|
10820
11026
|
"1.2.840.10008.5.1.4.38.1": { uid: "1.2.840.10008.5.1.4.38.1", name: "Hanging Protocol Storage", type: "SOPClass", retired: false },
|
|
11027
|
+
"1.2.840.10008.5.1.4.38.2": { uid: "1.2.840.10008.5.1.4.38.2", name: "Hanging Protocol Information Model - FIND", type: "SOPClass", retired: false },
|
|
11028
|
+
"1.2.840.10008.5.1.4.38.3": { uid: "1.2.840.10008.5.1.4.38.3", name: "Hanging Protocol Information Model - MOVE", type: "SOPClass", retired: false },
|
|
11029
|
+
"1.2.840.10008.5.1.4.38.4": { uid: "1.2.840.10008.5.1.4.38.4", name: "Hanging Protocol Information Model - GET", type: "SOPClass", retired: false },
|
|
10821
11030
|
"1.2.840.10008.5.1.4.39.1": { uid: "1.2.840.10008.5.1.4.39.1", name: "Color Palette Storage", type: "SOPClass", retired: false },
|
|
11031
|
+
"1.2.840.10008.5.1.4.39.2": { uid: "1.2.840.10008.5.1.4.39.2", name: "Color Palette Query/Retrieve Information Model - FIND", type: "SOPClass", retired: false },
|
|
11032
|
+
"1.2.840.10008.5.1.4.39.3": { uid: "1.2.840.10008.5.1.4.39.3", name: "Color Palette Query/Retrieve Information Model - MOVE", type: "SOPClass", retired: false },
|
|
11033
|
+
"1.2.840.10008.5.1.4.39.4": { uid: "1.2.840.10008.5.1.4.39.4", name: "Color Palette Query/Retrieve Information Model - GET", type: "SOPClass", retired: false },
|
|
11034
|
+
"1.2.840.10008.5.1.4.41": { uid: "1.2.840.10008.5.1.4.41", name: "Product Characteristics Query SOP Class", type: "SOPClass", retired: false },
|
|
11035
|
+
"1.2.840.10008.5.1.4.42": { uid: "1.2.840.10008.5.1.4.42", name: "Substance Approval Query SOP Class", type: "SOPClass", retired: false },
|
|
10822
11036
|
"1.2.840.10008.5.1.4.43.1": { uid: "1.2.840.10008.5.1.4.43.1", name: "Generic Implant Template Storage", type: "SOPClass", retired: false },
|
|
11037
|
+
"1.2.840.10008.5.1.4.43.2": { uid: "1.2.840.10008.5.1.4.43.2", name: "Generic Implant Template Information Model - FIND", type: "SOPClass", retired: false },
|
|
11038
|
+
"1.2.840.10008.5.1.4.43.3": { uid: "1.2.840.10008.5.1.4.43.3", name: "Generic Implant Template Information Model - MOVE", type: "SOPClass", retired: false },
|
|
11039
|
+
"1.2.840.10008.5.1.4.43.4": { uid: "1.2.840.10008.5.1.4.43.4", name: "Generic Implant Template Information Model - GET", type: "SOPClass", retired: false },
|
|
10823
11040
|
"1.2.840.10008.5.1.4.44.1": { uid: "1.2.840.10008.5.1.4.44.1", name: "Implant Assembly Template Storage", type: "SOPClass", retired: false },
|
|
10824
|
-
"1.2.840.10008.5.1.4.
|
|
11041
|
+
"1.2.840.10008.5.1.4.44.2": { uid: "1.2.840.10008.5.1.4.44.2", name: "Implant Assembly Template Information Model - FIND", type: "SOPClass", retired: false },
|
|
11042
|
+
"1.2.840.10008.5.1.4.44.3": { uid: "1.2.840.10008.5.1.4.44.3", name: "Implant Assembly Template Information Model - MOVE", type: "SOPClass", retired: false },
|
|
11043
|
+
"1.2.840.10008.5.1.4.44.4": { uid: "1.2.840.10008.5.1.4.44.4", name: "Implant Assembly Template Information Model - GET", type: "SOPClass", retired: false },
|
|
11044
|
+
"1.2.840.10008.5.1.4.45.1": { uid: "1.2.840.10008.5.1.4.45.1", name: "Implant Template Group Storage", type: "SOPClass", retired: false },
|
|
11045
|
+
"1.2.840.10008.5.1.4.45.2": { uid: "1.2.840.10008.5.1.4.45.2", name: "Implant Template Group Information Model - FIND", type: "SOPClass", retired: false },
|
|
11046
|
+
"1.2.840.10008.5.1.4.45.3": { uid: "1.2.840.10008.5.1.4.45.3", name: "Implant Template Group Information Model - MOVE", type: "SOPClass", retired: false },
|
|
11047
|
+
"1.2.840.10008.5.1.4.45.4": { uid: "1.2.840.10008.5.1.4.45.4", name: "Implant Template Group Information Model - GET", type: "SOPClass", retired: false },
|
|
11048
|
+
"1.2.840.10008.7.1.1": { uid: "1.2.840.10008.7.1.1", name: "Native DICOM Model", type: "Other", retired: false },
|
|
11049
|
+
"1.2.840.10008.7.1.2": { uid: "1.2.840.10008.7.1.2", name: "Abstract Multi-Dimensional Image Model", type: "Other", retired: false },
|
|
11050
|
+
"1.2.840.10008.8.1.1": { uid: "1.2.840.10008.8.1.1", name: "DICOM Content Mapping Resource", type: "Other", retired: false }
|
|
10825
11051
|
};
|
|
10826
11052
|
|
|
10827
11053
|
// src/dictionary/index.ts
|
|
@@ -11503,6 +11729,277 @@ function makeEmitter(ctx) {
|
|
|
11503
11729
|
}
|
|
11504
11730
|
};
|
|
11505
11731
|
}
|
|
11732
|
+
|
|
11733
|
+
// src/parser/endian.ts
|
|
11734
|
+
var BE_VR_STRIDE = Object.freeze({
|
|
11735
|
+
// 2-byte swaps
|
|
11736
|
+
AT: 2,
|
|
11737
|
+
US: 2,
|
|
11738
|
+
SS: 2,
|
|
11739
|
+
OW: 2,
|
|
11740
|
+
// 4-byte swaps
|
|
11741
|
+
UL: 4,
|
|
11742
|
+
SL: 4,
|
|
11743
|
+
FL: 4,
|
|
11744
|
+
OF: 4,
|
|
11745
|
+
OL: 4,
|
|
11746
|
+
// 8-byte swaps (64-bit floats + 2018 64-bit integer additions)
|
|
11747
|
+
FD: 8,
|
|
11748
|
+
OD: 8,
|
|
11749
|
+
OV: 8,
|
|
11750
|
+
SV: 8,
|
|
11751
|
+
UV: 8,
|
|
11752
|
+
// No swap - byte streams (D-24) and ASCII / spec-defined VRs.
|
|
11753
|
+
OB: 0,
|
|
11754
|
+
UN: 0,
|
|
11755
|
+
AE: 0,
|
|
11756
|
+
AS: 0,
|
|
11757
|
+
CS: 0,
|
|
11758
|
+
DA: 0,
|
|
11759
|
+
DS: 0,
|
|
11760
|
+
DT: 0,
|
|
11761
|
+
IS: 0,
|
|
11762
|
+
LO: 0,
|
|
11763
|
+
LT: 0,
|
|
11764
|
+
PN: 0,
|
|
11765
|
+
SH: 0,
|
|
11766
|
+
ST: 0,
|
|
11767
|
+
TM: 0,
|
|
11768
|
+
UC: 0,
|
|
11769
|
+
UI: 0,
|
|
11770
|
+
UR: 0,
|
|
11771
|
+
UT: 0,
|
|
11772
|
+
SQ: 0
|
|
11773
|
+
});
|
|
11774
|
+
var KNOWN_VRS = Object.freeze(
|
|
11775
|
+
new Set(Object.keys(BE_VR_STRIDE))
|
|
11776
|
+
);
|
|
11777
|
+
function isRecognizedVr(vr) {
|
|
11778
|
+
return KNOWN_VRS.has(vr);
|
|
11779
|
+
}
|
|
11780
|
+
|
|
11781
|
+
// src/parser/tokens.ts
|
|
11782
|
+
var WITHHELD = "<withheld>";
|
|
11783
|
+
function safePrivateCreator(creator, profile) {
|
|
11784
|
+
if (profile === void 0) return WITHHELD;
|
|
11785
|
+
return profile.privateDictionary.has(creator) ? creator : WITHHELD;
|
|
11786
|
+
}
|
|
11787
|
+
function renderVr(vr) {
|
|
11788
|
+
return vr !== void 0 && KNOWN_VRS.has(vr) ? vr : WITHHELD;
|
|
11789
|
+
}
|
|
11790
|
+
|
|
11791
|
+
// src/parser/fatals.ts
|
|
11792
|
+
var SUPPORTED_TRANSFER_SYNTAXES = "1.2.840.10008.1.2, 1.2.840.10008.1.2.1, 1.2.840.10008.1.2.2, 1.2.840.10008.1.2.1.99";
|
|
11793
|
+
var ZLIB_CODES = Object.freeze(
|
|
11794
|
+
/* @__PURE__ */ new Set([
|
|
11795
|
+
"Z_OK",
|
|
11796
|
+
"Z_STREAM_END",
|
|
11797
|
+
"Z_NEED_DICT",
|
|
11798
|
+
"Z_ERRNO",
|
|
11799
|
+
"Z_STREAM_ERROR",
|
|
11800
|
+
"Z_DATA_ERROR",
|
|
11801
|
+
"Z_MEM_ERROR",
|
|
11802
|
+
"Z_BUF_ERROR",
|
|
11803
|
+
"Z_VERSION_ERROR"
|
|
11804
|
+
])
|
|
11805
|
+
);
|
|
11806
|
+
var FATAL_MESSAGES = Object.freeze({
|
|
11807
|
+
EMPTY_INPUT: {
|
|
11808
|
+
code: FATAL_CODES.EMPTY_INPUT,
|
|
11809
|
+
message: "Input is empty."
|
|
11810
|
+
},
|
|
11811
|
+
EMPTY_INPUT_AFTER_NORMALIZATION: {
|
|
11812
|
+
code: FATAL_CODES.EMPTY_INPUT,
|
|
11813
|
+
message: "Input is empty after normalization."
|
|
11814
|
+
},
|
|
11815
|
+
NOT_DICOM_PART_10_REQUIRED: {
|
|
11816
|
+
code: FATAL_CODES.NOT_DICOM_PART_10,
|
|
11817
|
+
message: "Missing DICM magic at offset 128 (stripPreamble='require')."
|
|
11818
|
+
},
|
|
11819
|
+
NOT_DICOM_PART_10: {
|
|
11820
|
+
code: FATAL_CODES.NOT_DICOM_PART_10,
|
|
11821
|
+
message: "Input is not a DICOM Part 10 file (no DICM magic at offset 128 and no recognizable File Meta group at offset 0)."
|
|
11822
|
+
},
|
|
11823
|
+
// `{ts}` is NOT the UID. It is the PS3.6 registry's own name for the UID, or a
|
|
11824
|
+
// fixed phrase when PS3.6 does not publish one - see `renderTransferSyntax`.
|
|
11825
|
+
UNSUPPORTED_TRANSFER_SYNTAX: {
|
|
11826
|
+
code: FATAL_CODES.UNSUPPORTED_TRANSFER_SYNTAX,
|
|
11827
|
+
message: `{ts} in (0002,0010) is not supported by @cosyte/dicom v1 (supported: ${SUPPORTED_TRANSFER_SYNTAXES}).`
|
|
11828
|
+
},
|
|
11829
|
+
FILE_META_TRUNCATED: {
|
|
11830
|
+
code: FATAL_CODES.INVALID_FILE_META,
|
|
11831
|
+
message: "File Meta is truncated."
|
|
11832
|
+
},
|
|
11833
|
+
// The declared group length is deliberately absent. It is four bytes of the
|
|
11834
|
+
// document read as a 32-bit integer, and this code fires precisely when those
|
|
11835
|
+
// four bytes are not what they claim to be.
|
|
11836
|
+
FILE_META_GROUP_LENGTH_OVERRUNS: {
|
|
11837
|
+
code: FATAL_CODES.INVALID_FILE_META,
|
|
11838
|
+
message: "(0002,0000) FileMetaInformationGroupLength declares more bytes than remain in the input; {n} bytes remain. The declared length is withheld; the byte offset locates the group."
|
|
11839
|
+
},
|
|
11840
|
+
FILE_META_TRANSFER_SYNTAX_MISSING: {
|
|
11841
|
+
code: FATAL_CODES.INVALID_FILE_META,
|
|
11842
|
+
message: "Required File Meta element (0002,0010) Transfer Syntax UID is missing or not UI."
|
|
11843
|
+
},
|
|
11844
|
+
TRUNCATED_DATASET_HEADER: {
|
|
11845
|
+
code: FATAL_CODES.INVALID_FILE_META,
|
|
11846
|
+
message: "Truncated dataset (header read past buffer end)."
|
|
11847
|
+
},
|
|
11848
|
+
TRUNCATED_FFFE_HEADER: {
|
|
11849
|
+
code: FATAL_CODES.INVALID_FILE_META,
|
|
11850
|
+
message: "Truncated dataset (FFFE header read past buffer end)."
|
|
11851
|
+
},
|
|
11852
|
+
TRUNCATED_EXPLICIT_VR_HEADER: {
|
|
11853
|
+
code: FATAL_CODES.INVALID_FILE_META,
|
|
11854
|
+
message: "Truncated dataset (Explicit VR header read past buffer end)."
|
|
11855
|
+
},
|
|
11856
|
+
SQ_ITEM_HEADER_TRUNCATED: {
|
|
11857
|
+
code: FATAL_CODES.INVALID_FILE_META,
|
|
11858
|
+
message: "Truncated dataset (SQ item header read past buffer end)."
|
|
11859
|
+
},
|
|
11860
|
+
// Neither the marker's element number nor its length field is here. Both are
|
|
11861
|
+
// read at a position the reader may have desynchronized to, so both are
|
|
11862
|
+
// document content: the length field measured as 1109414477, `"MR B"`.
|
|
11863
|
+
UNEXPECTED_FFFE_AT_DATASET_LEVEL: {
|
|
11864
|
+
code: FATAL_CODES.INVALID_FILE_META,
|
|
11865
|
+
message: "An (FFFE,xxxx) delimitation item appears at Data Set level under Explicit VR, where no sequence is open. Its element number and its length field are withheld; the byte offset locates it."
|
|
11866
|
+
},
|
|
11867
|
+
UNEXPECTED_FFFE_AT_DATASET_ROOT: {
|
|
11868
|
+
code: FATAL_CODES.INVALID_FILE_META,
|
|
11869
|
+
message: "An (FFFE,xxxx) delimitation item appears at Data Set level under Implicit VR LE, where no sequence is open. Its element number is withheld; the byte offset locates it."
|
|
11870
|
+
},
|
|
11871
|
+
UNDEFINED_LENGTH_ON_NON_SQ_EXPLICIT: {
|
|
11872
|
+
code: FATAL_CODES.INVALID_FILE_META,
|
|
11873
|
+
message: "An element with VR={vr} declares undefined length (0xFFFFFFFF) under Explicit VR. PS3.5 2026c permits that for a Sequence (7.5.2 Delimitation of The Sequence of Items), for encapsulated (7FE0,0010) Pixel Data (A.4), and for the UN form CP-246 addresses (6.2.2 Unknown (UN) Value Representation), and this element is none of them. Its tag is withheld; the byte offset locates it."
|
|
11874
|
+
},
|
|
11875
|
+
UNDEFINED_LENGTH_ON_NON_SQ_IMPLICIT: {
|
|
11876
|
+
code: FATAL_CODES.INVALID_FILE_META,
|
|
11877
|
+
message: "An element whose VR resolved to {vr} declares undefined length (0xFFFFFFFF) under Implicit VR LE, and the descent as an Implicit VR LE item stream (PS3.5 2026c 6.2.2, the UN form CP-246 addresses) did not succeed. Its tag is withheld; the byte offset locates it."
|
|
11878
|
+
},
|
|
11879
|
+
ELEMENT_LENGTH_EXCEEDS_BUFFER: {
|
|
11880
|
+
code: FATAL_CODES.INVALID_FILE_META,
|
|
11881
|
+
message: "An element declares a Value Length reaching past the end of the bytes being read; {n} bytes remain. Its tag and its declared length are withheld; the byte offset locates it."
|
|
11882
|
+
},
|
|
11883
|
+
UNEXPECTED_TAG_INSIDE_SEQUENCE: {
|
|
11884
|
+
code: FATAL_CODES.INVALID_FILE_META,
|
|
11885
|
+
message: "A sequence's item stream holds a tag that is neither (FFFE,E000) Item nor (FFFE,E0DD) Sequence Delimitation Item (PS3.5 7.5). That tag is withheld: a value being read as an item stream makes its four bytes document content. The byte offset locates it."
|
|
11886
|
+
},
|
|
11887
|
+
ENCAPSULATED_FRAGMENT_EXCEEDS_BUFFER: {
|
|
11888
|
+
code: FATAL_CODES.INVALID_FILE_META,
|
|
11889
|
+
message: "An encapsulated Pixel Data fragment declares a length reaching past the end of the bytes being read. The declared length is withheld; the byte offset locates the fragment."
|
|
11890
|
+
},
|
|
11891
|
+
ITEM_LENGTH_EXCEEDS_BUFFER: {
|
|
11892
|
+
code: FATAL_CODES.INVALID_FILE_META,
|
|
11893
|
+
message: "An (FFFE,E000) Item declares a length reaching past the end of the bytes being read. The declared length is withheld; the byte offset locates the item."
|
|
11894
|
+
},
|
|
11895
|
+
SQ_NESTING_DEPTH_EXCEEDED: {
|
|
11896
|
+
code: FATAL_CODES.INVALID_FILE_META,
|
|
11897
|
+
message: "SQ nesting depth exceeds {n}."
|
|
11898
|
+
},
|
|
11899
|
+
INFLATED_PAYLOAD_EXCEEDS_CAP: {
|
|
11900
|
+
code: FATAL_CODES.INVALID_FILE_META,
|
|
11901
|
+
message: "Inflated Deflated TS payload exceeds {n}-byte cap."
|
|
11902
|
+
},
|
|
11903
|
+
// `{zlib}` is a member of the nine-name `zlib.codes` table or nothing. zlib's
|
|
11904
|
+
// own `err.message` is never forwarded: it is a string from a library handed
|
|
11905
|
+
// the sender's bytes, which is the one shape of third-party text this parser
|
|
11906
|
+
// cannot vouch for.
|
|
11907
|
+
INFLATE_FAILED: {
|
|
11908
|
+
code: FATAL_CODES.INVALID_FILE_META,
|
|
11909
|
+
message: "Failed to inflate Deflated TS payload (zlib error code: {zlib})."
|
|
11910
|
+
}
|
|
11911
|
+
});
|
|
11912
|
+
function renderTransferSyntax(ts) {
|
|
11913
|
+
if (ts === void 0) return "The Transfer Syntax UID";
|
|
11914
|
+
const name = uid(ts)?.name ?? "";
|
|
11915
|
+
return name.length > 0 ? `Transfer Syntax ${name}` : "The Transfer Syntax UID";
|
|
11916
|
+
}
|
|
11917
|
+
function renderZlibCode(code) {
|
|
11918
|
+
return code !== void 0 && ZLIB_CODES.has(code) ? code : WITHHELD;
|
|
11919
|
+
}
|
|
11920
|
+
function build(key, byteOffset, snippet, tokens = {}) {
|
|
11921
|
+
const entry = FATAL_MESSAGES[key];
|
|
11922
|
+
const message = entry.message.replace("{vr}", renderVr(tokens.vr)).replace("{ts}", renderTransferSyntax(tokens.ts)).replace("{zlib}", renderZlibCode(tokens.zlib)).replace("{n}", String(tokens.n ?? 0));
|
|
11923
|
+
return new DicomParseError(entry.code, message, byteOffset, snippet);
|
|
11924
|
+
}
|
|
11925
|
+
function at(key, buffer, offset, tokens = {}) {
|
|
11926
|
+
return build(key, offset, buildSnippet(buffer, offset), tokens);
|
|
11927
|
+
}
|
|
11928
|
+
function emptyInput() {
|
|
11929
|
+
return build("EMPTY_INPUT", 0, "");
|
|
11930
|
+
}
|
|
11931
|
+
function emptyInputAfterNormalization() {
|
|
11932
|
+
return build("EMPTY_INPUT_AFTER_NORMALIZATION", 0, "");
|
|
11933
|
+
}
|
|
11934
|
+
function notDicomPart10Required(buffer, offset) {
|
|
11935
|
+
return at("NOT_DICOM_PART_10_REQUIRED", buffer, offset);
|
|
11936
|
+
}
|
|
11937
|
+
function notDicomPart10(buffer, offset) {
|
|
11938
|
+
return at("NOT_DICOM_PART_10", buffer, offset);
|
|
11939
|
+
}
|
|
11940
|
+
function unsupportedTransferSyntax(buffer, offset, ts) {
|
|
11941
|
+
const name = uid(ts)?.name ?? "";
|
|
11942
|
+
return build(
|
|
11943
|
+
"UNSUPPORTED_TRANSFER_SYNTAX",
|
|
11944
|
+
offset,
|
|
11945
|
+
name.length > 0 ? name : buildSnippet(buffer, offset),
|
|
11946
|
+
{ ts }
|
|
11947
|
+
);
|
|
11948
|
+
}
|
|
11949
|
+
function fileMetaTruncated(buffer, offset) {
|
|
11950
|
+
return at("FILE_META_TRUNCATED", buffer, offset);
|
|
11951
|
+
}
|
|
11952
|
+
function fileMetaGroupLengthOverruns(buffer, offset, remaining) {
|
|
11953
|
+
return at("FILE_META_GROUP_LENGTH_OVERRUNS", buffer, offset, { n: remaining });
|
|
11954
|
+
}
|
|
11955
|
+
function fileMetaTransferSyntaxMissing(buffer, offset) {
|
|
11956
|
+
return at("FILE_META_TRANSFER_SYNTAX_MISSING", buffer, offset);
|
|
11957
|
+
}
|
|
11958
|
+
function truncatedDatasetHeader(buffer, offset) {
|
|
11959
|
+
return at("TRUNCATED_DATASET_HEADER", buffer, offset);
|
|
11960
|
+
}
|
|
11961
|
+
function truncatedFffeHeader(buffer, offset) {
|
|
11962
|
+
return at("TRUNCATED_FFFE_HEADER", buffer, offset);
|
|
11963
|
+
}
|
|
11964
|
+
function truncatedExplicitVrHeader(buffer, offset) {
|
|
11965
|
+
return at("TRUNCATED_EXPLICIT_VR_HEADER", buffer, offset);
|
|
11966
|
+
}
|
|
11967
|
+
function sqItemHeaderTruncated(buffer, offset) {
|
|
11968
|
+
return at("SQ_ITEM_HEADER_TRUNCATED", buffer, offset);
|
|
11969
|
+
}
|
|
11970
|
+
function unexpectedFffeAtDatasetLevel(buffer, offset) {
|
|
11971
|
+
return at("UNEXPECTED_FFFE_AT_DATASET_LEVEL", buffer, offset);
|
|
11972
|
+
}
|
|
11973
|
+
function unexpectedFffeAtDatasetRoot(buffer, offset) {
|
|
11974
|
+
return at("UNEXPECTED_FFFE_AT_DATASET_ROOT", buffer, offset);
|
|
11975
|
+
}
|
|
11976
|
+
function undefinedLengthOnNonSqExplicit(buffer, offset, vr) {
|
|
11977
|
+
return at("UNDEFINED_LENGTH_ON_NON_SQ_EXPLICIT", buffer, offset, { vr });
|
|
11978
|
+
}
|
|
11979
|
+
function undefinedLengthOnNonSqImplicit(buffer, offset, vr) {
|
|
11980
|
+
return at("UNDEFINED_LENGTH_ON_NON_SQ_IMPLICIT", buffer, offset, { vr });
|
|
11981
|
+
}
|
|
11982
|
+
function elementLengthExceedsBuffer(buffer, offset, remaining) {
|
|
11983
|
+
return at("ELEMENT_LENGTH_EXCEEDS_BUFFER", buffer, offset, { n: remaining });
|
|
11984
|
+
}
|
|
11985
|
+
function unexpectedTagInsideSequence(buffer, offset) {
|
|
11986
|
+
return at("UNEXPECTED_TAG_INSIDE_SEQUENCE", buffer, offset);
|
|
11987
|
+
}
|
|
11988
|
+
function encapsulatedFragmentExceedsBuffer(buffer, offset) {
|
|
11989
|
+
return at("ENCAPSULATED_FRAGMENT_EXCEEDS_BUFFER", buffer, offset);
|
|
11990
|
+
}
|
|
11991
|
+
function itemLengthExceedsBuffer(buffer, offset) {
|
|
11992
|
+
return at("ITEM_LENGTH_EXCEEDS_BUFFER", buffer, offset);
|
|
11993
|
+
}
|
|
11994
|
+
function sqNestingDepthExceeded(buffer, offset, limit) {
|
|
11995
|
+
return at("SQ_NESTING_DEPTH_EXCEEDED", buffer, offset, { n: limit });
|
|
11996
|
+
}
|
|
11997
|
+
function inflatedPayloadExceedsCap(buffer, offset, cap) {
|
|
11998
|
+
return at("INFLATED_PAYLOAD_EXCEEDS_CAP", buffer, offset, { n: cap });
|
|
11999
|
+
}
|
|
12000
|
+
function inflateFailed(buffer, offset, code) {
|
|
12001
|
+
return at("INFLATE_FAILED", buffer, offset, ...code !== void 0 ? [{ zlib: code }] : []);
|
|
12002
|
+
}
|
|
11506
12003
|
function copyValueBytes(src) {
|
|
11507
12004
|
const out = buffer.Buffer.allocUnsafeSlow(src.length);
|
|
11508
12005
|
src.copy(out);
|
|
@@ -11574,13 +12071,6 @@ var ByteCursor = class {
|
|
|
11574
12071
|
}
|
|
11575
12072
|
};
|
|
11576
12073
|
|
|
11577
|
-
// src/parser/tokens.ts
|
|
11578
|
-
var WITHHELD = "<withheld>";
|
|
11579
|
-
function safePrivateCreator(creator, profile) {
|
|
11580
|
-
if (profile === void 0) return WITHHELD;
|
|
11581
|
-
return profile.privateDictionary.has(creator) ? creator : WITHHELD;
|
|
11582
|
-
}
|
|
11583
|
-
|
|
11584
12074
|
// src/dataset/vr/charset.ts
|
|
11585
12075
|
var TERM_TO_LABEL = /* @__PURE__ */ new Map([
|
|
11586
12076
|
// Default repertoire (ISO 646 IRV / ASCII). Latin-1 is a lenient,
|
|
@@ -11662,54 +12152,6 @@ function decodeText(bytes, terms) {
|
|
|
11662
12152
|
}
|
|
11663
12153
|
}
|
|
11664
12154
|
|
|
11665
|
-
// src/parser/endian.ts
|
|
11666
|
-
var BE_VR_STRIDE = Object.freeze({
|
|
11667
|
-
// 2-byte swaps
|
|
11668
|
-
AT: 2,
|
|
11669
|
-
US: 2,
|
|
11670
|
-
SS: 2,
|
|
11671
|
-
OW: 2,
|
|
11672
|
-
// 4-byte swaps
|
|
11673
|
-
UL: 4,
|
|
11674
|
-
SL: 4,
|
|
11675
|
-
FL: 4,
|
|
11676
|
-
OF: 4,
|
|
11677
|
-
OL: 4,
|
|
11678
|
-
// 8-byte swaps (64-bit floats + 2018 64-bit integer additions)
|
|
11679
|
-
FD: 8,
|
|
11680
|
-
OD: 8,
|
|
11681
|
-
OV: 8,
|
|
11682
|
-
SV: 8,
|
|
11683
|
-
UV: 8,
|
|
11684
|
-
// No swap - byte streams (D-24) and ASCII / spec-defined VRs.
|
|
11685
|
-
OB: 0,
|
|
11686
|
-
UN: 0,
|
|
11687
|
-
AE: 0,
|
|
11688
|
-
AS: 0,
|
|
11689
|
-
CS: 0,
|
|
11690
|
-
DA: 0,
|
|
11691
|
-
DS: 0,
|
|
11692
|
-
DT: 0,
|
|
11693
|
-
IS: 0,
|
|
11694
|
-
LO: 0,
|
|
11695
|
-
LT: 0,
|
|
11696
|
-
PN: 0,
|
|
11697
|
-
SH: 0,
|
|
11698
|
-
ST: 0,
|
|
11699
|
-
TM: 0,
|
|
11700
|
-
UC: 0,
|
|
11701
|
-
UI: 0,
|
|
11702
|
-
UR: 0,
|
|
11703
|
-
UT: 0,
|
|
11704
|
-
SQ: 0
|
|
11705
|
-
});
|
|
11706
|
-
var KNOWN_VRS = Object.freeze(
|
|
11707
|
-
new Set(Object.keys(BE_VR_STRIDE))
|
|
11708
|
-
);
|
|
11709
|
-
function isRecognizedVr(vr) {
|
|
11710
|
-
return KNOWN_VRS.has(vr);
|
|
11711
|
-
}
|
|
11712
|
-
|
|
11713
12155
|
// src/parser/warnings.ts
|
|
11714
12156
|
var WARNING_CODES = {
|
|
11715
12157
|
// === Phase 2 actively emits (D-08 active list - alphabetical-within-prefix per CONTEXT specifics §) ===
|
|
@@ -11748,6 +12190,8 @@ var WARNING_CODES = {
|
|
|
11748
12190
|
// emitted by deidentify(), never by the parser
|
|
11749
12191
|
DICOM_DEIDENT_METHOD_NOT_ADDED: "DICOM_DEIDENT_METHOD_NOT_ADDED",
|
|
11750
12192
|
// emitted by deidentify(), never by the parser
|
|
12193
|
+
DICOM_DEIDENT_METHOD_NOT_LO: "DICOM_DEIDENT_METHOD_NOT_LO",
|
|
12194
|
+
// emitted by deidentify(), never by the parser
|
|
11751
12195
|
DICOM_DEIDENT_METHOD_PRIOR_RETAINED: "DICOM_DEIDENT_METHOD_PRIOR_RETAINED",
|
|
11752
12196
|
// emitted by deidentify(), never by the parser
|
|
11753
12197
|
DICOM_DEIDENT_SEQUENCE_NOT_AUDITABLE: "DICOM_DEIDENT_SEQUENCE_NOT_AUDITABLE",
|
|
@@ -11797,6 +12241,11 @@ var WARNING_MESSAGES = Object.freeze({
|
|
|
11797
12241
|
// constant of this code rather than composed from input, as in the two
|
|
11798
12242
|
// (0002,0000) messages above.
|
|
11799
12243
|
DICOM_DEIDENT_METHOD_NOT_ADDED: "The De-identification Method this run recorded could not be added beside the value (0012,0063) already carried without exceeding the largest Value Length that VR can encode, so the earlier value was replaced (PS3.15 E.1.1). The replaced text is not in the output.",
|
|
12244
|
+
// No value, no length AND NO VR. The VR is two bytes read from the file, and a
|
|
12245
|
+
// fabricated header makes those two bytes document content - the shape that
|
|
12246
|
+
// put "ITHS" into DICOM_NONZERO_RESERVED_BYTES. Naming the VR here would read
|
|
12247
|
+
// as harmless and is exactly the same defect.
|
|
12248
|
+
DICOM_DEIDENT_METHOD_NOT_LO: "The (0012,0063) value the source file carried is encoded under a Value Representation other than LO, which is not a De-identification Method this run can add its own text to (PS3.15 E.1.1), so the earlier value was replaced. The replaced text is not in the output. The text and the VR are both withheld from this message.",
|
|
11800
12249
|
// No value and no length, for the same reason as the code above: the retained
|
|
11801
12250
|
// text is the file's own. The tag is a constant of this code.
|
|
11802
12251
|
DICOM_DEIDENT_METHOD_PRIOR_RETAINED: "A De-identification Method (0012,0063) value the source file already carried was kept beside the one this run recorded, as PS3.15 E.1.1 requires. That attribute is not in Table E.1-1, so no rule in this run inspected, audited or redacted those bytes: if the sender wrote identifying text there it is in the de-identified output, under (0012,0062) = YES. The text is withheld from this message.",
|
|
@@ -11812,7 +12261,11 @@ var WARNING_MESSAGES = Object.freeze({
|
|
|
11812
12261
|
// Deliberately short. One of these is raised per un-auditable element, so a
|
|
11813
12262
|
// long message is multiplied by an element count the input controls; the
|
|
11814
12263
|
// reasoning belongs in the docs, not in a string repeated thousands of times.
|
|
11815
|
-
|
|
12264
|
+
// 🛑 IT DOES NOT SAY "is VR=SQ", AND THAT IS NOT A WORDING PREFERENCE. One of
|
|
12265
|
+
// its two producers is an element the profile declares a Sequence while the
|
|
12266
|
+
// wire says UN or OB, so naming a VR here would state a fact about the file
|
|
12267
|
+
// that the file contradicts - on the one channel this class designates.
|
|
12268
|
+
DICOM_DEIDENT_SEQUENCE_NOT_AUDITABLE: "Element ({tag}) is a Sequence carrier with no parsed items, so its {n} recorded bytes could not be audited (PS3.15 E.1.1); emptied. See report.unauditableSequences.",
|
|
11816
12269
|
// Deliberately short for the same reason as the code above: one per element,
|
|
11817
12270
|
// and the element count is chosen by the input.
|
|
11818
12271
|
//
|
|
@@ -11839,127 +12292,127 @@ var TAG_SHAPE = /^[0-9A-F]{8}$/u;
|
|
|
11839
12292
|
function renderTag(tag) {
|
|
11840
12293
|
return tag !== void 0 && TAG_SHAPE.test(tag) ? tag : WITHHELD;
|
|
11841
12294
|
}
|
|
11842
|
-
function
|
|
11843
|
-
return vr !== void 0 && KNOWN_VRS.has(vr) ? vr : WITHHELD;
|
|
11844
|
-
}
|
|
11845
|
-
function build(code, position, tokens = {}) {
|
|
12295
|
+
function build2(code, position, tokens = {}) {
|
|
11846
12296
|
const message = WARNING_MESSAGES[code].replace("{tag}", renderTag(tokens.tag)).replace("{vr2}", renderVr(tokens.vr2)).replace("{vr}", renderVr(tokens.vr)).replace("{n2}", String(tokens.n2 ?? 0)).replace("{n}", String(tokens.n ?? 0));
|
|
11847
12297
|
return { code, message, position };
|
|
11848
12298
|
}
|
|
11849
12299
|
function missingPreamble(position) {
|
|
11850
|
-
return
|
|
12300
|
+
return build2(WARNING_CODES.DICOM_MISSING_PREAMBLE, position);
|
|
11851
12301
|
}
|
|
11852
12302
|
function fileMetaGroupLengthMissing(position) {
|
|
11853
|
-
return
|
|
12303
|
+
return build2(WARNING_CODES.DICOM_FILE_META_GROUP_LENGTH_MISSING, position);
|
|
11854
12304
|
}
|
|
11855
12305
|
function fileMetaGroupLengthMismatch(position, declared, actual) {
|
|
11856
|
-
return
|
|
12306
|
+
return build2(WARNING_CODES.DICOM_FILE_META_GROUP_LENGTH_MISMATCH, position, {
|
|
11857
12307
|
n: declared,
|
|
11858
12308
|
n2: actual
|
|
11859
12309
|
});
|
|
11860
12310
|
}
|
|
11861
12311
|
function undefinedLengthInExplicitVR(position, tag) {
|
|
11862
|
-
return
|
|
12312
|
+
return build2(WARNING_CODES.DICOM_UNDEFINED_LENGTH_IN_EXPLICIT_VR, position, { tag });
|
|
11863
12313
|
}
|
|
11864
12314
|
function oddLengthValuePadded(position, tag, declaredLength) {
|
|
11865
|
-
return
|
|
12315
|
+
return build2(WARNING_CODES.DICOM_ODD_LENGTH_VALUE_PADDED, position, {
|
|
11866
12316
|
tag,
|
|
11867
12317
|
n: declaredLength
|
|
11868
12318
|
});
|
|
11869
12319
|
}
|
|
11870
12320
|
function vrMismatch(position, tag, dictVR, fileVR) {
|
|
11871
|
-
return
|
|
12321
|
+
return build2(WARNING_CODES.DICOM_VR_MISMATCH, position, { tag, vr: dictVR, vr2: fileVR });
|
|
11872
12322
|
}
|
|
11873
12323
|
function privateTagNoCreator(position, tag) {
|
|
11874
|
-
return
|
|
12324
|
+
return build2(WARNING_CODES.DICOM_PRIVATE_TAG_NO_CREATOR, position, { tag });
|
|
11875
12325
|
}
|
|
11876
12326
|
function groupLengthInDataset(position, tag) {
|
|
11877
|
-
return
|
|
12327
|
+
return build2(WARNING_CODES.DICOM_GROUP_LENGTH_IN_DATASET, position, { tag });
|
|
11878
12328
|
}
|
|
11879
12329
|
function nonzeroReservedBytes(position, first, second) {
|
|
11880
|
-
return
|
|
12330
|
+
return build2(WARNING_CODES.DICOM_NONZERO_RESERVED_BYTES, position, {
|
|
11881
12331
|
n: first,
|
|
11882
12332
|
n2: second
|
|
11883
12333
|
});
|
|
11884
12334
|
}
|
|
11885
12335
|
function unParsedAsSQ(position, tag) {
|
|
11886
|
-
return
|
|
12336
|
+
return build2(WARNING_CODES.DICOM_UN_PARSED_AS_SQ, position, { tag });
|
|
11887
12337
|
}
|
|
11888
12338
|
function sqNotDescended(position, tag) {
|
|
11889
|
-
return
|
|
12339
|
+
return build2(WARNING_CODES.DICOM_SQ_NOT_DESCENDED, position, { tag });
|
|
11890
12340
|
}
|
|
11891
12341
|
function itemCrossesSequenceEnd(position, tag, availableLength) {
|
|
11892
|
-
return
|
|
12342
|
+
return build2(WARNING_CODES.DICOM_ITEM_CROSSES_SEQUENCE_END, position, {
|
|
11893
12343
|
tag,
|
|
11894
12344
|
n2: availableLength
|
|
11895
12345
|
});
|
|
11896
12346
|
}
|
|
11897
12347
|
function emptyItemInSequence(position, tag) {
|
|
11898
|
-
return
|
|
12348
|
+
return build2(WARNING_CODES.DICOM_EMPTY_ITEM_IN_SEQUENCE, position, { tag });
|
|
11899
12349
|
}
|
|
11900
12350
|
function duplicateTagInDataSet(position) {
|
|
11901
|
-
return
|
|
12351
|
+
return build2(WARNING_CODES.DICOM_DUPLICATE_TAG_IN_DATA_SET, position);
|
|
11902
12352
|
}
|
|
11903
12353
|
function duplicateFileMetaElement(position) {
|
|
11904
|
-
return
|
|
12354
|
+
return build2(WARNING_CODES.DICOM_DUPLICATE_FILE_META_ELEMENT, position);
|
|
11905
12355
|
}
|
|
11906
12356
|
function implicitVRForPrivateTagWithoutVR(position, tag) {
|
|
11907
|
-
return
|
|
12357
|
+
return build2(WARNING_CODES.DICOM_IMPLICIT_VR_FOR_PRIVATE_TAG_WITHOUT_VR, position, { tag });
|
|
11908
12358
|
}
|
|
11909
12359
|
function privateCreatorUnknown(position, tag) {
|
|
11910
|
-
return
|
|
12360
|
+
return build2(WARNING_CODES.DICOM_PRIVATE_CREATOR_UNKNOWN, position, { tag });
|
|
11911
12361
|
}
|
|
11912
12362
|
function burnedInAnnotationNotRemoved(position) {
|
|
11913
|
-
return
|
|
12363
|
+
return build2(WARNING_CODES.DICOM_BURNED_IN_ANNOTATION_NOT_REMOVED, position);
|
|
11914
12364
|
}
|
|
11915
12365
|
function deidentMethodNotAdded(position) {
|
|
11916
|
-
return
|
|
12366
|
+
return build2(WARNING_CODES.DICOM_DEIDENT_METHOD_NOT_ADDED, position);
|
|
12367
|
+
}
|
|
12368
|
+
function deidentMethodNotLo(position) {
|
|
12369
|
+
return build2(WARNING_CODES.DICOM_DEIDENT_METHOD_NOT_LO, position);
|
|
11917
12370
|
}
|
|
11918
12371
|
function deidentMethodPriorRetained(position) {
|
|
11919
|
-
return
|
|
12372
|
+
return build2(WARNING_CODES.DICOM_DEIDENT_METHOD_PRIOR_RETAINED, position);
|
|
11920
12373
|
}
|
|
11921
12374
|
function embeddedAttributeRemoved(position, tag, vr, count) {
|
|
11922
|
-
return
|
|
12375
|
+
return build2(WARNING_CODES.DICOM_DEIDENT_EMBEDDED_ATTRIBUTE_REMOVED, position, {
|
|
11923
12376
|
tag,
|
|
11924
12377
|
vr,
|
|
11925
12378
|
n: count
|
|
11926
12379
|
});
|
|
11927
12380
|
}
|
|
11928
12381
|
function sequenceNotAuditable(position, tag, byteLength) {
|
|
11929
|
-
return
|
|
12382
|
+
return build2(WARNING_CODES.DICOM_DEIDENT_SEQUENCE_NOT_AUDITABLE, position, {
|
|
11930
12383
|
tag,
|
|
11931
12384
|
n: byteLength
|
|
11932
12385
|
});
|
|
11933
12386
|
}
|
|
11934
12387
|
function undefinedVrNotAuditable(position, byteLength) {
|
|
11935
|
-
return
|
|
12388
|
+
return build2(WARNING_CODES.DICOM_DEIDENT_UNDEFINED_VR_NOT_AUDITABLE, position, {
|
|
11936
12389
|
n: byteLength,
|
|
11937
12390
|
n2: position.byteOffset
|
|
11938
12391
|
});
|
|
11939
12392
|
}
|
|
11940
12393
|
function bomInTextVR(position, tag, vr) {
|
|
11941
|
-
return
|
|
12394
|
+
return build2(WARNING_CODES.DICOM_BOM_IN_TEXT_VR, position, { tag, vr });
|
|
11942
12395
|
}
|
|
11943
12396
|
function trailingNullInTextVR(position, tag, vr) {
|
|
11944
|
-
return
|
|
12397
|
+
return build2(WARNING_CODES.DICOM_TRAILING_NULL_IN_TEXT_VR, position, { tag, vr });
|
|
11945
12398
|
}
|
|
11946
12399
|
function uiTrailingSpace(position, tag) {
|
|
11947
|
-
return
|
|
12400
|
+
return build2(WARNING_CODES.DICOM_UI_TRAILING_SPACE, position, { tag });
|
|
11948
12401
|
}
|
|
11949
12402
|
function nonAsciiInAsciiVR(position, tag, vr) {
|
|
11950
|
-
return
|
|
12403
|
+
return build2(WARNING_CODES.DICOM_NON_ASCII_IN_ASCII_VR, position, { tag, vr });
|
|
11951
12404
|
}
|
|
11952
12405
|
function isNonintegerValue(position, tag) {
|
|
11953
|
-
return
|
|
12406
|
+
return build2(WARNING_CODES.DICOM_IS_NONINTEGER_VALUE, position, { tag });
|
|
11954
12407
|
}
|
|
11955
12408
|
function daLegacyFormat(position, tag) {
|
|
11956
|
-
return
|
|
12409
|
+
return build2(WARNING_CODES.DICOM_DA_LEGACY_FORMAT, position, { tag });
|
|
11957
12410
|
}
|
|
11958
12411
|
function dtNonstandardOffset(position, tag) {
|
|
11959
|
-
return
|
|
12412
|
+
return build2(WARNING_CODES.DICOM_DT_NONSTANDARD_OFFSET, position, { tag });
|
|
11960
12413
|
}
|
|
11961
12414
|
function unsupportedCharset(position, valueIndex) {
|
|
11962
|
-
return
|
|
12415
|
+
return build2(WARNING_CODES.DICOM_UNSUPPORTED_CHARSET, position, { n: valueIndex });
|
|
11963
12416
|
}
|
|
11964
12417
|
|
|
11965
12418
|
// src/profiles/lookup.ts
|
|
@@ -12134,12 +12587,7 @@ function parseFileMeta(buffer$1, datasetStart, ctx, emit) {
|
|
|
12134
12587
|
firstElement = readExplicitLeElement(cursor);
|
|
12135
12588
|
} catch (err) {
|
|
12136
12589
|
if (err instanceof RangeError) {
|
|
12137
|
-
throw
|
|
12138
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
12139
|
-
"File Meta is truncated.",
|
|
12140
|
-
fmStart,
|
|
12141
|
-
buildSnippet(buffer$1, fmStart)
|
|
12142
|
-
);
|
|
12590
|
+
throw fileMetaTruncated(buffer$1, fmStart);
|
|
12143
12591
|
}
|
|
12144
12592
|
throw err;
|
|
12145
12593
|
}
|
|
@@ -12149,12 +12597,7 @@ function parseFileMeta(buffer$1, datasetStart, ctx, emit) {
|
|
|
12149
12597
|
if (firstElement.tag === "00020000" && firstElement.vr === "UL" && firstElement.value.length === 4) {
|
|
12150
12598
|
declaredFmLength = firstElement.value.readUInt32LE(0);
|
|
12151
12599
|
if (cursor.position + declaredFmLength > buffer$1.length) {
|
|
12152
|
-
throw
|
|
12153
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
12154
|
-
`File Meta group length declares ${String(declaredFmLength)} bytes but only ${String(buffer$1.length - cursor.position)} bytes remain.`,
|
|
12155
|
-
fmStart,
|
|
12156
|
-
buildSnippet(buffer$1, fmStart)
|
|
12157
|
-
);
|
|
12600
|
+
throw fileMetaGroupLengthOverruns(buffer$1, fmStart, buffer$1.length - cursor.position);
|
|
12158
12601
|
}
|
|
12159
12602
|
} else {
|
|
12160
12603
|
emit(fileMetaGroupLengthMissing({ byteOffset: fmStart, fileMeta: true }));
|
|
@@ -12171,12 +12614,7 @@ function parseFileMeta(buffer$1, datasetStart, ctx, emit) {
|
|
|
12171
12614
|
next = readExplicitLeElement(cursor);
|
|
12172
12615
|
} catch (err) {
|
|
12173
12616
|
if (err instanceof RangeError) {
|
|
12174
|
-
throw
|
|
12175
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
12176
|
-
"File Meta is truncated.",
|
|
12177
|
-
fmStart,
|
|
12178
|
-
buildSnippet(buffer$1, fmStart)
|
|
12179
|
-
);
|
|
12617
|
+
throw fileMetaTruncated(buffer$1, fmStart);
|
|
12180
12618
|
}
|
|
12181
12619
|
throw err;
|
|
12182
12620
|
}
|
|
@@ -12200,12 +12638,7 @@ function parseFileMeta(buffer$1, datasetStart, ctx, emit) {
|
|
|
12200
12638
|
next = readExplicitLeElement(cursor);
|
|
12201
12639
|
} catch (err) {
|
|
12202
12640
|
if (err instanceof RangeError) {
|
|
12203
|
-
throw
|
|
12204
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
12205
|
-
"File Meta is truncated.",
|
|
12206
|
-
fmStart,
|
|
12207
|
-
buildSnippet(buffer$1, fmStart)
|
|
12208
|
-
);
|
|
12641
|
+
throw fileMetaTruncated(buffer$1, fmStart);
|
|
12209
12642
|
}
|
|
12210
12643
|
throw err;
|
|
12211
12644
|
}
|
|
@@ -12224,12 +12657,7 @@ function parseFileMeta(buffer$1, datasetStart, ctx, emit) {
|
|
|
12224
12657
|
}
|
|
12225
12658
|
const tsElement = fmElements.find((e) => e.tag === "00020010");
|
|
12226
12659
|
if (tsElement === void 0 || tsElement.vr !== "UI") {
|
|
12227
|
-
throw
|
|
12228
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
12229
|
-
"Required File Meta element (0002,0010) Transfer Syntax UID is missing or not UI.",
|
|
12230
|
-
fmStart,
|
|
12231
|
-
buildSnippet(buffer$1, fmStart)
|
|
12232
|
-
);
|
|
12660
|
+
throw fileMetaTransferSyntaxMissing(buffer$1, fmStart);
|
|
12233
12661
|
}
|
|
12234
12662
|
const extraElements = fmElements.filter((e) => !MODELED_FM_TAGS.has(e.tag)).map((e) => Object.freeze({ tag: e.tag, vr: e.vr, value: buffer.Buffer.from(e.value) }));
|
|
12235
12663
|
const fileMeta = {
|
|
@@ -12313,23 +12741,13 @@ function parsePart10Header(buffer, ctx, emit) {
|
|
|
12313
12741
|
return { datasetStart: 132, hadPreamble: true };
|
|
12314
12742
|
}
|
|
12315
12743
|
if (ctx.stripPreamble === "require") {
|
|
12316
|
-
throw
|
|
12317
|
-
FATAL_CODES.NOT_DICOM_PART_10,
|
|
12318
|
-
"Missing DICM magic at offset 128 (stripPreamble='require').",
|
|
12319
|
-
0,
|
|
12320
|
-
buildSnippet(buffer, 0)
|
|
12321
|
-
);
|
|
12744
|
+
throw notDicomPart10Required(buffer, 0);
|
|
12322
12745
|
}
|
|
12323
12746
|
if (looksLikeFileMetaGroupLengthAtOffsetZero(buffer)) {
|
|
12324
12747
|
emit(missingPreamble({ byteOffset: 0 }));
|
|
12325
12748
|
return { datasetStart: 0, hadPreamble: false };
|
|
12326
12749
|
}
|
|
12327
|
-
throw
|
|
12328
|
-
FATAL_CODES.NOT_DICOM_PART_10,
|
|
12329
|
-
"Input is not a DICOM Part 10 file (no DICM magic at offset 128 and no recognizable File Meta group at offset 0).",
|
|
12330
|
-
0,
|
|
12331
|
-
buildSnippet(buffer, 0)
|
|
12332
|
-
);
|
|
12750
|
+
throw notDicomPart10(buffer, 0);
|
|
12333
12751
|
}
|
|
12334
12752
|
function looksLikeFileMetaGroupLengthAtOffsetZero(buffer) {
|
|
12335
12753
|
if (buffer.length < 12) return false;
|
|
@@ -12740,12 +13158,7 @@ function parseSequence(buffer, valueStart, ctx, emit, opts) {
|
|
|
12740
13158
|
ctx.nestingDepth += 1;
|
|
12741
13159
|
if (ctx.nestingDepth > NESTING_DEPTH_LIMIT) {
|
|
12742
13160
|
ctx.nestingDepth -= 1;
|
|
12743
|
-
throw
|
|
12744
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
12745
|
-
`SQ nesting depth exceeds ${String(NESTING_DEPTH_LIMIT)}.`,
|
|
12746
|
-
valueStart,
|
|
12747
|
-
buildSnippet(buffer, valueStart)
|
|
12748
|
-
);
|
|
13161
|
+
throw sqNestingDepthExceeded(buffer, valueStart, NESTING_DEPTH_LIMIT);
|
|
12749
13162
|
}
|
|
12750
13163
|
ctx.encodingContextStack.push(
|
|
12751
13164
|
opts.encapsulatedPixelData === true ? "EncapsulatedPixelData" : "SqItem"
|
|
@@ -12781,12 +13194,7 @@ function parseSequence(buffer, valueStart, ctx, emit, opts) {
|
|
|
12781
13194
|
itemLength = cursor.readUInt32();
|
|
12782
13195
|
} catch (err) {
|
|
12783
13196
|
if (err instanceof RangeError) {
|
|
12784
|
-
throw
|
|
12785
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
12786
|
-
"Truncated dataset (SQ item header read past buffer end).",
|
|
12787
|
-
itemHeaderStart,
|
|
12788
|
-
buildSnippet(buffer, itemHeaderStart)
|
|
12789
|
-
);
|
|
13197
|
+
throw sqItemHeaderTruncated(buffer, itemHeaderStart);
|
|
12790
13198
|
}
|
|
12791
13199
|
throw err;
|
|
12792
13200
|
}
|
|
@@ -12795,12 +13203,7 @@ function parseSequence(buffer, valueStart, ctx, emit, opts) {
|
|
|
12795
13203
|
return { items, endOffset: cursor.position };
|
|
12796
13204
|
}
|
|
12797
13205
|
if (itemTag !== ITEM_TAG) {
|
|
12798
|
-
throw
|
|
12799
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
12800
|
-
`Unexpected tag ${itemTag} inside sequence (expected FFFE,E000 or FFFE,E0DD).`,
|
|
12801
|
-
itemHeaderStart,
|
|
12802
|
-
buildSnippet(buffer, itemHeaderStart)
|
|
12803
|
-
);
|
|
13206
|
+
throw unexpectedTagInsideSequence(buffer, itemHeaderStart);
|
|
12804
13207
|
}
|
|
12805
13208
|
if (itemLength === 0) {
|
|
12806
13209
|
emit(emptyItemInSequence({ byteOffset: itemHeaderStart }, itemTag));
|
|
@@ -12816,12 +13219,7 @@ function parseSequence(buffer, valueStart, ctx, emit, opts) {
|
|
|
12816
13219
|
}
|
|
12817
13220
|
if (opts.encapsulatedPixelData === true) {
|
|
12818
13221
|
if (cursor.position + itemLength > buffer.length) {
|
|
12819
|
-
throw
|
|
12820
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
12821
|
-
`Encapsulated pixel data fragment length=${String(itemLength)} exceeds remaining buffer.`,
|
|
12822
|
-
itemHeaderStart,
|
|
12823
|
-
buildSnippet(buffer, itemHeaderStart)
|
|
12824
|
-
);
|
|
13222
|
+
throw encapsulatedFragmentExceedsBuffer(buffer, itemHeaderStart);
|
|
12825
13223
|
}
|
|
12826
13224
|
cursor.position += itemLength;
|
|
12827
13225
|
items.push(new Item({ warnings: [], elements: /* @__PURE__ */ new Map(), index: itemIndex }));
|
|
@@ -12847,15 +13245,17 @@ function parseSequence(buffer, valueStart, ctx, emit, opts) {
|
|
|
12847
13245
|
);
|
|
12848
13246
|
}
|
|
12849
13247
|
if (cursor.position + itemLength > buffer.length) {
|
|
12850
|
-
throw
|
|
12851
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
12852
|
-
`Item length=${String(itemLength)} exceeds remaining buffer.`,
|
|
12853
|
-
itemHeaderStart,
|
|
12854
|
-
buildSnippet(buffer, itemHeaderStart)
|
|
12855
|
-
);
|
|
13248
|
+
throw itemLengthExceedsBuffer(buffer, itemHeaderStart);
|
|
12856
13249
|
}
|
|
12857
13250
|
const itemSlice = buffer.subarray(cursor.position, cursor.position + itemLength);
|
|
12858
|
-
const
|
|
13251
|
+
const enclosingFrame = ctx.buffer;
|
|
13252
|
+
let inner;
|
|
13253
|
+
try {
|
|
13254
|
+
ctx.buffer = itemSlice;
|
|
13255
|
+
inner = opts.innerStrategy(itemSlice, 0, ctx, emit);
|
|
13256
|
+
} finally {
|
|
13257
|
+
ctx.buffer = enclosingFrame;
|
|
13258
|
+
}
|
|
12859
13259
|
items.push(new Item({ warnings: [], elements: inner.elements, index: itemIndex }));
|
|
12860
13260
|
cursor.position += itemLength;
|
|
12861
13261
|
}
|
|
@@ -12879,11 +13279,18 @@ function tryParseDefinedLengthSQ(buffer, valueStart, valueLength, ctx, emit, imp
|
|
|
12879
13279
|
const savedWarningsLen = ctx.warnings.length;
|
|
12880
13280
|
try {
|
|
12881
13281
|
const slice = buffer.subarray(valueStart, valueStart + valueLength);
|
|
12882
|
-
const
|
|
12883
|
-
|
|
12884
|
-
|
|
12885
|
-
|
|
12886
|
-
|
|
13282
|
+
const enclosingFrame = ctx.buffer;
|
|
13283
|
+
let result;
|
|
13284
|
+
try {
|
|
13285
|
+
ctx.buffer = slice;
|
|
13286
|
+
result = parseSequence(slice, 0, ctx, emit, {
|
|
13287
|
+
explicitLength: valueLength,
|
|
13288
|
+
littleEndian: true,
|
|
13289
|
+
innerStrategy: implicitLeInner
|
|
13290
|
+
});
|
|
13291
|
+
} finally {
|
|
13292
|
+
ctx.buffer = enclosingFrame;
|
|
13293
|
+
}
|
|
12887
13294
|
return { success: true, items: result.items };
|
|
12888
13295
|
} catch (err) {
|
|
12889
13296
|
if (isStrictEscalation(err)) throw err;
|
|
@@ -12910,7 +13317,14 @@ function tryParseUnAsSQ(buffer, valueStart, valueLength, ctx, emit, implicitLeIn
|
|
|
12910
13317
|
// CP-246: Implicit VR LE inner per D-30.
|
|
12911
13318
|
innerStrategy: implicitLeInner
|
|
12912
13319
|
};
|
|
12913
|
-
const
|
|
13320
|
+
const enclosingFrame = ctx.buffer;
|
|
13321
|
+
let result;
|
|
13322
|
+
try {
|
|
13323
|
+
ctx.buffer = slice;
|
|
13324
|
+
result = parseSequence(slice, 0, ctx, emit, opts);
|
|
13325
|
+
} finally {
|
|
13326
|
+
ctx.buffer = enclosingFrame;
|
|
13327
|
+
}
|
|
12914
13328
|
emit(unParsedAsSQ({ byteOffset: valueStart }, tag));
|
|
12915
13329
|
return {
|
|
12916
13330
|
success: true,
|
|
@@ -12947,12 +13361,7 @@ function parseImplicitLE(buffer, datasetStart, ctx, emit, opts = {}) {
|
|
|
12947
13361
|
length = cursor.readUInt32();
|
|
12948
13362
|
} catch (err) {
|
|
12949
13363
|
if (err instanceof RangeError) {
|
|
12950
|
-
throw
|
|
12951
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
12952
|
-
"Truncated dataset (header read past buffer end).",
|
|
12953
|
-
headerStart,
|
|
12954
|
-
buildSnippet(buffer, headerStart)
|
|
12955
|
-
);
|
|
13364
|
+
throw truncatedDatasetHeader(buffer, headerStart);
|
|
12956
13365
|
}
|
|
12957
13366
|
throw err;
|
|
12958
13367
|
}
|
|
@@ -12961,12 +13370,7 @@ function parseImplicitLE(buffer, datasetStart, ctx, emit, opts = {}) {
|
|
|
12961
13370
|
if (opts.stopOnItemDelim === true && tag === "FFFEE00D") {
|
|
12962
13371
|
return { elements, endOffset: cursor.position };
|
|
12963
13372
|
}
|
|
12964
|
-
throw
|
|
12965
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
12966
|
-
`Unexpected FFFE marker (${tag}) at dataset root.`,
|
|
12967
|
-
headerStart,
|
|
12968
|
-
buildSnippet(buffer, headerStart)
|
|
12969
|
-
);
|
|
13373
|
+
throw unexpectedFffeAtDatasetRoot(buffer, headerStart);
|
|
12970
13374
|
}
|
|
12971
13375
|
const position = { byteOffset: headerStart };
|
|
12972
13376
|
const vr = resolveImplicitVR(tag, ctx, emit, position);
|
|
@@ -13033,20 +13437,10 @@ function parseImplicitLE(buffer, datasetStart, ctx, emit, opts = {}) {
|
|
|
13033
13437
|
continue;
|
|
13034
13438
|
}
|
|
13035
13439
|
}
|
|
13036
|
-
throw
|
|
13037
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
13038
|
-
`Undefined length on non-SQ element ${tag} (vr=${vr}) under Implicit VR LE.`,
|
|
13039
|
-
headerStart,
|
|
13040
|
-
buildSnippet(buffer, headerStart)
|
|
13041
|
-
);
|
|
13440
|
+
throw undefinedLengthOnNonSqImplicit(buffer, headerStart, vr);
|
|
13042
13441
|
}
|
|
13043
13442
|
if (cursor.position + length > buffer.length) {
|
|
13044
|
-
throw
|
|
13045
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
13046
|
-
`Element ${tag} declared length=${String(length)} exceeds remaining buffer (${String(buffer.length - cursor.position)} bytes).`,
|
|
13047
|
-
headerStart,
|
|
13048
|
-
buildSnippet(buffer, headerStart)
|
|
13049
|
-
);
|
|
13443
|
+
throw elementLengthExceedsBuffer(buffer, headerStart, buffer.length - cursor.position);
|
|
13050
13444
|
}
|
|
13051
13445
|
const valueStart = cursor.position;
|
|
13052
13446
|
const valueEnd = valueStart + length;
|
|
@@ -13122,31 +13516,20 @@ function _parseExplicit(buffer, datasetStart, ctx, emit, mode, opts = {}) {
|
|
|
13122
13516
|
peekGroup = cursor.readUInt16At(cursor.position);
|
|
13123
13517
|
} catch (err) {
|
|
13124
13518
|
if (err instanceof RangeError) {
|
|
13125
|
-
throw
|
|
13126
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
13127
|
-
"Truncated dataset (header read past buffer end).",
|
|
13128
|
-
headerStart,
|
|
13129
|
-
buildSnippet(buffer, headerStart)
|
|
13130
|
-
);
|
|
13519
|
+
throw truncatedDatasetHeader(buffer, headerStart);
|
|
13131
13520
|
}
|
|
13132
13521
|
throw err;
|
|
13133
13522
|
}
|
|
13134
13523
|
if (peekGroup === 65534) {
|
|
13135
13524
|
let grp;
|
|
13136
13525
|
let ele;
|
|
13137
|
-
let len;
|
|
13138
13526
|
try {
|
|
13139
13527
|
grp = cursor.readUInt16();
|
|
13140
13528
|
ele = cursor.readUInt16();
|
|
13141
|
-
|
|
13529
|
+
cursor.readUInt32();
|
|
13142
13530
|
} catch (err) {
|
|
13143
13531
|
if (err instanceof RangeError) {
|
|
13144
|
-
throw
|
|
13145
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
13146
|
-
"Truncated dataset (FFFE header read past buffer end).",
|
|
13147
|
-
headerStart,
|
|
13148
|
-
buildSnippet(buffer, headerStart)
|
|
13149
|
-
);
|
|
13532
|
+
throw truncatedFffeHeader(buffer, headerStart);
|
|
13150
13533
|
}
|
|
13151
13534
|
throw err;
|
|
13152
13535
|
}
|
|
@@ -13154,24 +13537,14 @@ function _parseExplicit(buffer, datasetStart, ctx, emit, mode, opts = {}) {
|
|
|
13154
13537
|
if (opts.stopOnItemDelim === true && fffeTag === "FFFEE00D") {
|
|
13155
13538
|
return { elements, endOffset: cursor.position };
|
|
13156
13539
|
}
|
|
13157
|
-
throw
|
|
13158
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
13159
|
-
`Unexpected FFFE marker ${fffeTag} (length=${String(len)}) at dataset level.`,
|
|
13160
|
-
headerStart,
|
|
13161
|
-
buildSnippet(buffer, headerStart)
|
|
13162
|
-
);
|
|
13540
|
+
throw unexpectedFffeAtDatasetLevel(buffer, headerStart);
|
|
13163
13541
|
}
|
|
13164
13542
|
let header;
|
|
13165
13543
|
try {
|
|
13166
13544
|
header = readExplicitElementHeader(cursor, ctx, emit);
|
|
13167
13545
|
} catch (err) {
|
|
13168
13546
|
if (err instanceof RangeError) {
|
|
13169
|
-
throw
|
|
13170
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
13171
|
-
"Truncated dataset (Explicit VR header read past buffer end).",
|
|
13172
|
-
headerStart,
|
|
13173
|
-
buildSnippet(buffer, headerStart)
|
|
13174
|
-
);
|
|
13547
|
+
throw truncatedExplicitVrHeader(buffer, headerStart);
|
|
13175
13548
|
}
|
|
13176
13549
|
throw err;
|
|
13177
13550
|
}
|
|
@@ -13311,20 +13684,10 @@ function _parseExplicit(buffer, datasetStart, ctx, emit, mode, opts = {}) {
|
|
|
13311
13684
|
continue;
|
|
13312
13685
|
}
|
|
13313
13686
|
if (length === UNDEFINED_LENGTH2) {
|
|
13314
|
-
throw
|
|
13315
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
13316
|
-
`Undefined length on non-SQ element ${tag} (vr=${vr}) under Explicit VR.`,
|
|
13317
|
-
headerStart,
|
|
13318
|
-
buildSnippet(buffer, headerStart)
|
|
13319
|
-
);
|
|
13687
|
+
throw undefinedLengthOnNonSqExplicit(buffer, headerStart, vr);
|
|
13320
13688
|
}
|
|
13321
13689
|
if (cursor.position + length > buffer.length) {
|
|
13322
|
-
throw
|
|
13323
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
13324
|
-
`Element ${tag} declared length=${String(length)} exceeds remaining buffer (${String(buffer.length - cursor.position)} bytes).`,
|
|
13325
|
-
headerStart,
|
|
13326
|
-
buildSnippet(buffer, headerStart)
|
|
13327
|
-
);
|
|
13690
|
+
throw elementLengthExceedsBuffer(buffer, headerStart, buffer.length - cursor.position);
|
|
13328
13691
|
}
|
|
13329
13692
|
const valueStart = cursor.position;
|
|
13330
13693
|
const valueEnd = valueStart + length;
|
|
@@ -13385,20 +13748,9 @@ function parseDeflatedLEWithCap(buffer, datasetStart, ctx, emit, maxInflatedByte
|
|
|
13385
13748
|
const code = errAny.code;
|
|
13386
13749
|
const message = errAny.message ?? String(err);
|
|
13387
13750
|
if (code === "ERR_BUFFER_TOO_LARGE" || err instanceof RangeError && /maxOutputLength|too large/i.test(message)) {
|
|
13388
|
-
throw
|
|
13389
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
13390
|
-
`Inflated Deflated TS payload exceeds ${String(maxInflatedBytes)}-byte cap.`,
|
|
13391
|
-
datasetStart,
|
|
13392
|
-
buildSnippet(buffer, datasetStart)
|
|
13393
|
-
);
|
|
13751
|
+
throw inflatedPayloadExceedsCap(buffer, datasetStart, maxInflatedBytes);
|
|
13394
13752
|
}
|
|
13395
|
-
|
|
13396
|
-
throw new DicomParseError(
|
|
13397
|
-
FATAL_CODES.INVALID_FILE_META,
|
|
13398
|
-
`Failed to inflate Deflated TS payload (zlib error code: ${zlibCode}).`,
|
|
13399
|
-
datasetStart,
|
|
13400
|
-
buildSnippet(buffer, datasetStart)
|
|
13401
|
-
);
|
|
13753
|
+
throw inflateFailed(buffer, datasetStart, code);
|
|
13402
13754
|
}
|
|
13403
13755
|
const innerCtx = { ...ctx, buffer: inflated };
|
|
13404
13756
|
const innerChokepoint = makeEmitter(innerCtx);
|
|
@@ -13434,19 +13786,13 @@ var TRANSFER_SYNTAX_PARSERS = Object.freeze({
|
|
|
13434
13786
|
});
|
|
13435
13787
|
|
|
13436
13788
|
// src/parser/index.ts
|
|
13437
|
-
var SUPPORTED_TRANSFER_SYNTAXES = Object.keys(TRANSFER_SYNTAX_PARSERS).join(", ");
|
|
13438
13789
|
function parseDicom(input, options = {}) {
|
|
13439
13790
|
if (rawInputIsEmpty(input)) {
|
|
13440
|
-
throw
|
|
13791
|
+
throw emptyInput();
|
|
13441
13792
|
}
|
|
13442
13793
|
const buffer = normalizeInput(input);
|
|
13443
13794
|
if (buffer.length === 0) {
|
|
13444
|
-
throw
|
|
13445
|
-
FATAL_CODES.EMPTY_INPUT,
|
|
13446
|
-
"Input is empty after normalization.",
|
|
13447
|
-
0,
|
|
13448
|
-
""
|
|
13449
|
-
);
|
|
13795
|
+
throw emptyInputAfterNormalization();
|
|
13450
13796
|
}
|
|
13451
13797
|
const warnings = [];
|
|
13452
13798
|
const ctx = buildContext(buffer, options, warnings);
|
|
@@ -13456,14 +13802,7 @@ function parseDicom(input, options = {}) {
|
|
|
13456
13802
|
const tsUid = fileMeta.transferSyntaxUID;
|
|
13457
13803
|
const strategy = TRANSFER_SYNTAX_PARSERS[tsUid];
|
|
13458
13804
|
if (strategy === void 0) {
|
|
13459
|
-
|
|
13460
|
-
const named = tsName.length > 0 ? `Transfer Syntax ${tsName}` : "The Transfer Syntax UID";
|
|
13461
|
-
throw new DicomParseError(
|
|
13462
|
-
FATAL_CODES.UNSUPPORTED_TRANSFER_SYNTAX,
|
|
13463
|
-
`${named} in (0002,0010) is not supported by @cosyte/dicom v1 (supported: ${SUPPORTED_TRANSFER_SYNTAXES}).`,
|
|
13464
|
-
fileMetaEnd,
|
|
13465
|
-
tsName.length > 0 ? tsName : buildSnippet(buffer, fileMetaEnd)
|
|
13466
|
-
);
|
|
13805
|
+
throw unsupportedTransferSyntax(buffer, fileMetaEnd, tsUid);
|
|
13467
13806
|
}
|
|
13468
13807
|
const { elements } = strategy(buffer, fileMetaEnd, ctx, emit);
|
|
13469
13808
|
return new Dataset({ fileMeta, warnings: ctx.warnings, elements });
|
|
@@ -15154,7 +15493,10 @@ function isUnauditableSequence(el) {
|
|
|
15154
15493
|
return el.vr === "SQ" && el.items === void 0;
|
|
15155
15494
|
}
|
|
15156
15495
|
function emptyUnauditableSequence(el, ctx, contextPath, out) {
|
|
15157
|
-
|
|
15496
|
+
emptyUnauditableCarrier(el, ctx, contextPath, out, rebuildSequence(el, [], ctx.encoding));
|
|
15497
|
+
}
|
|
15498
|
+
function emptyUnauditableCarrier(el, ctx, contextPath, out, replacement) {
|
|
15499
|
+
out.elements.set(el.tag, replacement);
|
|
15158
15500
|
if (ctx.budget.unauditableSequences >= MAX_UNAUDITABLE_SEQUENCE_FINDINGS) return;
|
|
15159
15501
|
ctx.budget.unauditableSequences += 1;
|
|
15160
15502
|
out.unauditableSequences.push({
|
|
@@ -15189,15 +15531,15 @@ function itemStreamOverrunsSequence(el, encoding) {
|
|
|
15189
15531
|
function settledBound(source, encoding) {
|
|
15190
15532
|
let index = source.length;
|
|
15191
15533
|
let byteOffset;
|
|
15192
|
-
for (const [
|
|
15534
|
+
for (const [at2, el] of source.entries()) {
|
|
15193
15535
|
if (!itemStreamOverrunsSequence(el, encoding) && !isUnauditableSequence(el)) continue;
|
|
15194
|
-
if (index === source.length) index =
|
|
15536
|
+
if (index === source.length) index = at2 + 1;
|
|
15195
15537
|
if (byteOffset === void 0 || el.byteOffset < byteOffset) byteOffset = el.byteOffset;
|
|
15196
15538
|
}
|
|
15197
15539
|
return { index, byteOffset };
|
|
15198
15540
|
}
|
|
15199
|
-
function isSettled(el,
|
|
15200
|
-
return
|
|
15541
|
+
function isSettled(el, at2, bound) {
|
|
15542
|
+
return at2 < bound.index && (bound.byteOffset === void 0 || el.byteOffset <= bound.byteOffset);
|
|
15201
15543
|
}
|
|
15202
15544
|
function keepsPrivate(el, ctx, creators) {
|
|
15203
15545
|
if (!ctx.active.has("RetainSafePrivate") || ctx.profile === void 0) return false;
|
|
@@ -15208,6 +15550,27 @@ function keepsPrivate(el, ctx, creators) {
|
|
|
15208
15550
|
if (creator === void 0) return false;
|
|
15209
15551
|
return resolvePrivateTag(ctx.profile, el.tag, creator) !== void 0;
|
|
15210
15552
|
}
|
|
15553
|
+
function declaredPrivateVr(el, ctx, creators) {
|
|
15554
|
+
if (ctx.profile === void 0 || isPrivateCreatorElement(el.tag)) return void 0;
|
|
15555
|
+
const creator = creatorFor(el.tag, creators);
|
|
15556
|
+
if (creator === void 0) return void 0;
|
|
15557
|
+
return resolvePrivateTag(ctx.profile, el.tag, creator)?.vr;
|
|
15558
|
+
}
|
|
15559
|
+
function keepRetainedPrivate(el, ctx, contextPath, out, reservationsUsable, creators) {
|
|
15560
|
+
if (el.vr === "SQ") {
|
|
15561
|
+
if (isUnauditableSequence(el)) {
|
|
15562
|
+
emptyUnauditableSequence(el, ctx, contextPath, out);
|
|
15563
|
+
return;
|
|
15564
|
+
}
|
|
15565
|
+
out.elements.set(el.tag, descendSequence(el, ctx, contextPath, out, reservationsUsable));
|
|
15566
|
+
return;
|
|
15567
|
+
}
|
|
15568
|
+
if (!hasUndefinedVr(el) && el.length > 0 && declaredPrivateVr(el, ctx, creators) === "SQ") {
|
|
15569
|
+
emptyUnauditableCarrier(el, ctx, contextPath, out, freshScalar(el, buffer.Buffer.alloc(0), 0));
|
|
15570
|
+
return;
|
|
15571
|
+
}
|
|
15572
|
+
keepOrEmpty(el, ctx, contextPath, out);
|
|
15573
|
+
}
|
|
15211
15574
|
function processElements(source, ctx, contextPath, reservationsUsable) {
|
|
15212
15575
|
const out = {
|
|
15213
15576
|
elements: /* @__PURE__ */ new Map(),
|
|
@@ -15219,11 +15582,11 @@ function processElements(source, ctx, contextPath, reservationsUsable) {
|
|
|
15219
15582
|
warnings: []
|
|
15220
15583
|
};
|
|
15221
15584
|
const bound = settledBound(source, ctx.encoding);
|
|
15222
|
-
const creators = creatorsInScope(source.filter((el,
|
|
15223
|
-
for (const [
|
|
15585
|
+
const creators = creatorsInScope(source.filter((el, at2) => isSettled(el, at2, bound)));
|
|
15586
|
+
for (const [at2, el] of source.entries()) {
|
|
15224
15587
|
if (isPrivateTag(el.tag)) {
|
|
15225
|
-
if (reservationsUsable && isSettled(el,
|
|
15226
|
-
|
|
15588
|
+
if (reservationsUsable && isSettled(el, at2, bound) && keepsPrivate(el, ctx, creators))
|
|
15589
|
+
keepRetainedPrivate(el, ctx, contextPath, out, reservationsUsable, creators);
|
|
15227
15590
|
else out.removedPrivateTags.push(el.tag);
|
|
15228
15591
|
continue;
|
|
15229
15592
|
}
|
|
@@ -15351,19 +15714,23 @@ function rebuildFileMeta(fileMeta, ctx) {
|
|
|
15351
15714
|
mediaStorageSOPInstanceUID: ctx.remap.map(fileMeta.mediaStorageSOPInstanceUID)
|
|
15352
15715
|
};
|
|
15353
15716
|
}
|
|
15717
|
+
var DEFAULT_METHOD_PROFILE = "@cosyte/dicom Basic Application Level Confidentiality Profile";
|
|
15354
15718
|
function defaultMethod(active) {
|
|
15355
|
-
const
|
|
15356
|
-
return
|
|
15719
|
+
const options = DEIDENTIFY_OPTIONS.filter((option) => active.has(option));
|
|
15720
|
+
return [DEFAULT_METHOD_PROFILE, ...options].join(String.fromCharCode(VALUE_DELIMITER));
|
|
15357
15721
|
}
|
|
15358
15722
|
var VALUE_DELIMITER = 92;
|
|
15359
15723
|
var MAX_SHORT_FORM_VALUE_BYTES = 65534;
|
|
15360
15724
|
function addDeidentificationMethod(existing, method) {
|
|
15361
15725
|
const added = trimTrailingPad(buffer.Buffer.from(method, "latin1"));
|
|
15362
|
-
|
|
15363
|
-
|
|
15726
|
+
const none = { replacedPrior: false, retainedPrior: false, replacedNonLoPrior: false };
|
|
15727
|
+
if (existing === void 0) return { value: added, ...none };
|
|
15728
|
+
if (existing.vr !== "LO") {
|
|
15729
|
+
const lost = trimTrailingPad(existing.rawBytes).length > 0;
|
|
15730
|
+
return { value: added, ...none, replacedNonLoPrior: lost };
|
|
15364
15731
|
}
|
|
15365
15732
|
const kept = buffer.Buffer.from(trimTrailingPad(existing.rawBytes));
|
|
15366
|
-
if (kept.length === 0) return { value: added,
|
|
15733
|
+
if (kept.length === 0) return { value: added, ...none };
|
|
15367
15734
|
const keptValues = splitValues(kept).map(trimTrailingPad);
|
|
15368
15735
|
const missing = added.length === 0 ? [] : splitValues(added).filter((v) => !keptValues.some((k) => k.equals(trimTrailingPad(v))));
|
|
15369
15736
|
const parts = [kept];
|
|
@@ -15372,9 +15739,9 @@ function addDeidentificationMethod(existing, method) {
|
|
|
15372
15739
|
}
|
|
15373
15740
|
const value = trimTrailingPad(buffer.Buffer.concat(parts));
|
|
15374
15741
|
if (value.length > MAX_SHORT_FORM_VALUE_BYTES) {
|
|
15375
|
-
return { value: added, replacedPrior: true
|
|
15742
|
+
return { value: added, ...none, replacedPrior: true };
|
|
15376
15743
|
}
|
|
15377
|
-
return { value,
|
|
15744
|
+
return { value, ...none, retainedPrior: true };
|
|
15378
15745
|
}
|
|
15379
15746
|
function trimTrailingPad(value) {
|
|
15380
15747
|
let end = value.length;
|
|
@@ -15446,6 +15813,11 @@ function deidentify(ds, options = {}) {
|
|
|
15446
15813
|
deidentMethodPriorRetained({ byteOffset: priorMethod?.byteOffset ?? 0, fileMeta: false })
|
|
15447
15814
|
);
|
|
15448
15815
|
}
|
|
15816
|
+
if (deidentMethod.replacedNonLoPrior) {
|
|
15817
|
+
warnings.push(
|
|
15818
|
+
deidentMethodNotLo({ byteOffset: priorMethod?.byteOffset ?? 0, fileMeta: false })
|
|
15819
|
+
);
|
|
15820
|
+
}
|
|
15449
15821
|
if (hasUncleanedBurnedIn(ds)) {
|
|
15450
15822
|
const offset = ds.get(TAG_PIXEL_DATA)?.byteOffset ?? 0;
|
|
15451
15823
|
warnings.push(burnedInAnnotationNotRemoved({ byteOffset: offset, fileMeta: false }));
|