OMHModels

Build and Test codecov

OMHModels 是一个 Swift 库,用于使用 Open mHealthIEEE 1752 模式在 iOS 项目中表示移动健康数据。

安装

可以使用 Swift Package Manager 将此项目添加到您的 Xcode 项目或 Swift Package 中。

Xcode: 对于 Xcode 项目,请按照 将包依赖项添加到您的应用程序 中的说明进行操作。

Swift Package: 您可以按照 Swift Package Manager 关于定义依赖项的文档 将此项目添加为 Swift Package 的依赖项。

模式

此软件包目前支持以下模式

IEEE 1752

Open mHealth (OMH)

用法示例

OMHModels 包可用于根据上述模式在您的 iOS 应用程序中表示移动健康数据。

下面是使用 TotalSleepTime 的示例,但相同的说明适用于包中的任何模式。

初始化

要创建 TotalSleepTime 结构的实例

let sleepTime = TotalSleepTime(
    totalSleepTime: DurationUnitValue(value: 8, unit: .hour),
    effectiveTimeFrame: TimeFrame(timeInterval: 
        TimeInterval(
            startDateTime: // Date, 
            endDateTime: // Date
        ),
    isMainSleep: true,
    descriptiveStatistic: .average,
    descriptiveStatisticDenominator: .week
)

编码为 JSON

要将 TotalSleepTime 实例编码为 JSON

let json: String
do {
    let encoder = JSONEncoder()
    encoder.outputFormatting = [.prettyPrinted, .withoutEscapingSlashes, .sortedKeys]
    
    // Note that both IEEE 1752 and Open mHealth use snake case for its properties when represneted in JSON
    encoder.keyCodingStrategy = .convertToSnakeCase
    
    let data = try encoder.encode(sleepTime)
    json = String(data: jsonData, encoding: .utf8)
} catch {
    print("Error encoding to JSON: \(error)")
}

从 JSON 解码

要将 JSON 字符串解码回 TotalSleepTime 实例

let jsonString = /* your JSON string here */
if let jsonData = jsonString.data(using: .utf8) {
    do {
        let decoder = JSONDecoder()
        let decodedSleepTime = try decoder.decode(TotalSleepTime.self, from: jsonData)
        print(decodedSleepTime)
    } catch {
        print("Error decoding from JSON: \(error)")
    }
}

许可证

此项目已获得 MIT 许可证的许可。 有关更多信息,请参阅 Licenses

声明

此项目未获得 Open mHealth 或 IEEE 的官方认可。

贡献者

此项目是斯坦福大学斯坦福 Byers 生物设计中心的一部分开发的。 有关所有 OMHModels 贡献者的完整列表,请参阅 CONTRIBUTORS.md

Stanford Byers Center for Biodesign Logo Stanford Byers Center for Biodesign Logo