DCDicom 0.3.2

DCDicom 0.3.2

DCDicom 维护。



DCDicom 0.3.2

  • Lasse Porsch

DCDicom

CI Status Version License Platform

安装

DCDicom 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod 'DCDicom'

作者

Lasse Porsch, [email protected]

许可证

DCDicom 计划在 MIT 许可证下提供。详细信息请参阅 LICENSE 文件。

使用

创建DICOM对象

您可以从URL、数据或任何InputStream中创建一个DicomObject实例。

do {
    let dicomObjectFromURL = try DicomObject(url: dicomURL)
    let dicomObjectFromData = try DicomObject(data: dicomData)
    let dicomObjectFromInputStream = try DicomObject(inputStream: dicomInputStream)
} catch {
    print("Something went wrong! Error: \(error)")
}

读取数据元素

DICOM是由数据元素组成分层数据结构。一旦创建了一个DicomObject实例,您可以通过遍历dataElements直接访问其所有根级数据元素。

dicomObject.dataElements.forEach {
    print("Found DataElement with \($0.tag)")
}

也可以通过索引访问特定的数据元素

let sopInstanceUidDataElement = dicomObject[0x00080018]!

访问类型值

虽然每个数据元素通常都有一个类型为Data的原始值,并且大多数数据元素都有这个原始值的字符串表示形式,但您还可以“检查”数据元素的“实际”数据类型并获取Swift类型值。数据元素的值表示用于此目的。但是,只有当它在DICOM对象中明确提及时,它才是可用的。如果Dicom对象使用隐式值表示,您必须根据相应的DICOM一致性声明和特定Dicom对象的语义手动将原始数据转换为类型值。

guard let vr = dataElement.vr else {
    print("Implicit Value Representation. Cannot determine value type without more context")
}
switch vr {
    case .FD: // Double
        if let doubleValue = (dataElement as! DicomDataElementFD).value {
            print(String(format: "Double value = %f", doubleValue))
        } else {
            print("Empty value")
        }
    case .FL: // Float
        if let floatValue = (dataElement as! DicomDataElementFL).value {
            print(String(format: "Float value = %f", floatValue))
        } else {
            print("Empty value")
        }
    case .DA: // Date
        if let dateValue = (dataElement as! DicomDataElementDA).value {
            let formatter = DateFormatter()
            formatter.dateStyle = .full
            print(String(format: "Date value = %@", formatter.string(from: dateValue)))
        } else {
            print("Empty value")
        }
    default:
        break
}