View in English

  • メニューを開く メニューを閉じる
  • Apple Developer
検索
検索を終了
  • Apple Developer
  • ニュース
  • 見つける
  • デザイン
  • 開発
  • 配信
  • サポート
  • アカウント
次の内容に検索結果を絞り込む

クイックリンク

5 クイックリンク

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • トピック
  • すべてのビデオ
  • 利用方法

その他のビデオ

ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。

  • 概要
  • トランスクリプト
  • コード
  • 失敗せずにFHIRを扱う

    FHIRModelsが、すべてのFHIRリソースにネイティブデータを作成する方法、リソースの整合性を確実にし、FHIRスペックの複数のバージョンにわたり構造的に無効なリソースが作成されるのを防ぐ方法をお伝えします。診療データをHealthKitから入手しても、診療システムから直接入手しても、FHIRModelsがあればFHIRの扱いが容易になります。

    リソース

    • Accessing a User’s Clinical Records
    • FHIRModels Swift Package on GitHub
      • HDビデオ
      • SDビデオ

    関連ビデオ

    WWDC21

    • 検証可能な医療記録の詳細

    WWDC20

    • ヘルスデータをHealthKitに同期する
    • CareKitの新機能
    • HealthKitの新機能
  • ダウンロード

    こんにちは ようこそWWDCへ “失敗せずにFHIRを扱う” パスカルです このセッションは “失敗せずにFHIRを扱う”です 2018年の初めからHealthアプリケーションは 医療情報交換の標準規格に対応しており “FHIR”という この規格に基づき 臨床データをダウンロードできます

    これはHL7とSMARTチームによる オープン規格のおかげで実現しました

    すべての始まりはHealthアプリケーションです HealthはヘルスプロバイダーのAPIへ 安全な接続を確立し FHIRデータをiOS端末に 直接ダウンロードします

    HealthKit内に安全に保管されるデータは 複数の機関から集められます そしてHealthKit API経由で これらは入手できます

    ダウンロードするとHealthアプリケーション上に 臨床データが並んで表示されます

    ではアプリケーションでFHIRデータを 取得して扱う方法を見てみましょう まず アプリケーションはユーザーに アクセス許可を要求します

    ユーザーは3つの画面で 許可を求められます 1つ目の画面ではアクセス許可に伴う 一般的な情報が表示されます

    次にアプリケーションのInfo.plistに 入れた説明文が プライバシーポリシーへの リンクと共に表示されます プライバシーポリシーは 私たちがレビューします この投薬リストアプリケーションの単純な例では 薬剤へのアクセスのみが要求されます “必要なデータのみにアクセスする”という 原則に従っているのです アプリケーションとデフォルトで共有できるのは 端末に既存のデータのみです FHIRデータを問い合わせる度に アクセス許可を要求してください 新しいデータへのアクセスを ユーザーが許可するようにするのです 許可の必要がない場合 シートは表示されません

    このプロセスの詳細は 2018年のWWDCをご覧ください

    臨床ヘルスレコードにアクセス可能になったら 次はFHIRデータを見てみましょう これはFHIR処方箋リソースの簡略版で 様々なフィールドタイプがあります シンプルな文字列や コードという特定の値だけの文字列 日付と時間の ISO 8601 1に似た書式の文字列 ブール値や数値など 他のプリミティブ型があり 複雑な入れ子構造が成されています 以前はネイティブ形式でFHIRデータを扱う際 Swift Codableを書き込む必要がありました 特定のデータ要素を見るだけで データが均一なら簡単そうに思えます 例えばここでは処方箋の 状況 日付 薬剤を見たいだけです

    しかしFHIRリソースの深さや複雑さ そして数の多さにすぐ気づくでしょう こちらが処方箋リソースの定義すべてです ご自身で このモデルを作りたくはないでしょう

    ではFHIRデータの使用を助ける FHIRModelsを紹介します これはGithubで入手可能な オープンソースのSwiftパッケージです 問題の報告や 機能のリクエスト フィードバックを送ることができます 複数のFHIRリリースに対応しており 全リソースのデータモデルがあります エンコードとデコードの リソース完全性が強制され 構造的に無効なリソース作成を防ぎます 日付と時間のパースや コードフィールドを強制するenum value xの多相プロパティを 強制するenumなどです 新しいFHIRとSwiftリリースで パッケージは最新の状態を保ちます パッケージにはDSTU2やR4 最新ビルドリリースのライブラリが含まれます 新しいリリースが出たら サポートは追加されます

    これはCareKitと共に Githubで入手可能です

    ではFHIRを使ってみましょう

    HealthKit APIで得た臨床データから 本格的なFHIRデータモデルを取得する方法です まずFHIRModelsパッケージから HealthKitとDSTU2ライブラリをインポート HealthKitからHKClinicalRecordと 付随するfhirResourceを得ます fhirResourceの型は 調べれば分かります

    リソースのJSONデータをパースして MedicationOrderインスタンスを受け取ると ノートを出力できます

    少し難しくなりますが 複雑な入れ子構造から 投薬量の指示とそのデータ範囲を 一緒に表示しましょう

    まずTimingRepeatに extensionを書き込みます これはFHIRModelsにある型です bounds periodの startとendの日付を拡張します 実際にはNull許容型のチェックや 確実なDateFormatterなど もっと拡張性を 持たせた方がよいでしょう 次に処方箋の投薬量の全指示を マッピングします 新しいextensionを使って これらの指示が有効だった 日付範囲のものにprefixを付けます

    色々なリリースが使用されているのも FHIRの面白さです 2014年の秋 ドラフト第1弾のDSTU1が 試験的にリリースされました その後 これまでに メジャーリリースが3回ありました

    まもなくリリース5が出る予定です しかし新しいリリースの発行時に 既存のAPIは自動更新されません 人気の高いDSTU2のサポートが あと数年は望まれることでしょう では FHIRModelsで 複数のFHIRリリースに対応する方法です まずFHIRModelsから 適切なライブラリをインポート サポートしたい全FHIRリリースの値を持つ FHIRRelease enumがあるとして リリースを切り替え 適切なモデル型でJSONデコーダを使います ここではDSTU2にはMedicationOrderを R4にはMedicationRequestを使います それぞれに適したプロパティにして 抽出したい値に達します FHIRModelsでは 他にも多くのことが可能です

    FHIRModelsは複雑なFHIRリソースや FHIRリリースの扱いも手助けします HealthKit APIで得た臨床データを扱うには このパッケージをご使用ください “What's new in CareKit”を ご覧になれば CareKitとFHIRでの ケアアプリケーションの作成方法が分かります もちろん独自のFHIRアプリケーションの強化にも このパッケージをご活用ください

    ライブラリのクローンを作成し プロジェクトに追加して コードの探索を始めましょう 問題の報告やフィードバック 質問をお寄せください サンプルアプリケーションを入手すれば HealthKit APIを用いたアプリケーションでの FHIRModelsの統合方法が分かります またchat.fhir.org.では FHIRの詳細を得たり 話し合いに参加したりできます

    さあ コーディングを楽しみましょう

    • 4:32 - Use FHIRModels with Health Records FHIR data from HealthKit

      // Use with Health Records FHIR data from HealthKit
      import HealthKit
      import ModelsDSTU2
      
      // Grab HKClinicalRecord from HealthKit API
      let clinicalRecord: HKClinicalRecord
      let resource = clinicalRecord.fhirResource!
      
      // Print the prescription note
      let decoder = JSONDecoder()
      let prescription = try decoder.decode(MedicationOrder.self, from: resource.data)
      print("\(prescription.note)")
    • 5:04 - Use FHIRModels with Health Records FHIR data from HealthKit, part 2

      // Make using "TimingRepeat" period dates easier by writing an extension
      extension TimingRepeat {
          var periodDisplayString: String? {
              if case .period(let period) = bounds {
                  return "\(period.start) - \(period.end)"
              }
              return nil
          }
      }
      
      // Collect all dosage instructions on medication prescriptions
      let instructions: [String] = prescription.dosageInstruction?.map { dosage in
          guard let period = dosage.timing?.repeat?.periodDisplayString else {
              return "\(dosage.text)"
          }
          return "\(period): \(dosage.text)"
      }
    • 6:20 - Supporting multiple FHIR releases

      // Supporting multiple releases
      import ModelsDSTU2
      import ModelsR4
      
      let decoder = JSONDecoder()
      let release: FHIRRelease
      let data: Data
      
      let note: String? = nil
      switch release {
      case .dstu2:
          let model = try decoder.decode(ModelsDSTU2.MedicationOrder.self, from: data)
          note = model.note?.value?.string
      case .r4:
          let model = try decoder.decode(ModelsR4.MedicationRequest.self, from: data)
          note = model.note?.compactMap({ $0.text.value?.string }).joined(separator: "\n")
      default:
          note = "Unsupported FHIR release \(release)"
      }
  • 特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。

    クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。

Developer Footer

  • ビデオ
  • WWDC20
  • 失敗せずにFHIRを扱う
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード(英語)
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    Apple Developerアプリを入手する
    Copyright © 2025 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン