AnpherosAnpheros PlatformDevelopers

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

FHIRによる個人健康記録 (PHR) アプリ

チュートリアル:FHIR R4上のコネクテッドPHRのバックエンド — 個人、検査結果、書類、デバイスからのデータ、タイムライン、共有用IPS、同意。テスト済みコード。

個人健康記録 (PHR) アプリは、個人の健康情報 — 結果、測定値、診断、投薬、文書 — を、1つの病院からではなく、本人が管理する記録に保持します。 難しいのは画面ではなく、検査機関、クリニック、デバイスからデータを使いやすい形式で取り込み、各項目の出所を追跡し、本人が管理を失うことなく記録を共有できるようにすることです。このチュートリアルでは、Anpheros TypeScript SDK を使用して HL7 FHIR R4 上の PHR のバックエンドを構築します。以下のコードは、サンドボックスキーを使用してローカルのプラットフォームインスタンスに対して実行されました。

接続型、非接続型、および連携型 PHR

種類 データ保存場所 制限事項
接続型 (病院の患者ポータル) プロバイダーの EHR そのプロバイダーのデータのみを表示。担当医が変わると変更される
非接続型 (スタンドアロンアプリまたはノートブック) アプリ独自のデータベース すべて手入力。データはアプリからほとんど出ない
連携型 患者の同意を得て、アプリ、ラボ、クリニックが読み書きする標準化された記録 標準、同意、およびプロベナンスが必要

連携型 PHR は、今日構築する価値のあるものです。また、ポリシーもそちらに向かっています。米国では、認定 EHR は患者にデータへの FHIR ベースの API アクセス (US Core) を提供しなければなりません。欧州連合では、European Health Data Space は、人々が自身の電子健康データにアクセスし、選択したプロバイダーと共有する権利を与えています (2029 年から段階的に導入)。

PHRデータの出所

  1. 本人: 自宅での測定値、症状、服用中の薬、自身が認識している病状。これらは患者報告としてマークします。
  2. 検査レポート: ほとんどの人はPDFで受け取りますが、一部の検査機関はHL7 v2またはCSVで送信できます。各結果はコード化されたObservation (Lab results API) になります。
  3. 文書: 退院サマリー、画像診断レポート、処方箋。構造化データと並べて、元のファイルを変更せずに保持します。
  4. デバイスおよびウェアラブル: Apple HealthまたはHealth Connectからの毎日の歩数、心拍数、睡眠、血圧 (wearable data in FHIR)。
  5. 医療提供者: 米国では、病院や保険会社の患者アクセスFHIR API(SMART on FHIRでアクセス)、それ以外の地域では、主に文書やInternational Patient Summaryのようなサマリー。

各ソースは同じレコードに書き込みます。信頼性を保つのは、各項目が誰がそれを書き込んだか、そしてどのシステムから来たかを記録していることです (medical data provenance)。

アーキテクチャ

 person ──► your PHR app (mobile / web) ──► your backend ──► Anpheros: one FHIR R4 record per person
                                               │                 ├─ Observations, Conditions, Medications, Documents…
   lab report, PDF, device data ───────────────┘                 ├─ Provenance on every write
                                                                 ├─ access log the person can see
   other apps, doctors, AI assistants ◄── consent (OAuth) ───────┴─ $summary (IPS) to share

バックエンドはプロジェクトキーを保持します(サンドボックスではsk_test_…、アプリ内では決して保持しません)。アプリは独自の認証でユーザーをサインインさせ、バックエンドと通信します。バックエンドは各ユーザーを1つの患者レコードにマッピングします。

ステップバイステップ

SDK (npm install @anpheros/sdk) をインストールし、ダッシュボード から無料のサンドボックスキーを取得してください。このサンプルでは、2つの結果を持つ HL7 v2 リピッドパネル (lipid-panel.hl7) と任意の PDF (report.pdf) を使用します。

import { readFile } from 'node:fs/promises';
import { Anpheros, apiKey } from '@anpheros/sdk';

const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });

// 1. One record per person who signs up in your PHR app
const jane = await anpheros.patients.create({ given: 'Jane', family: 'Doe', birth_date: '1984-07-19', gender: 'female' });

// 2. Something the person measured at home
await anpheros.observations.create(jane.id, {
  code: '85354-9', category: 'vital-signs', effective_at: '2026-10-01T08:30:00-05:00', author_type: 'patient',
  components: [{ code: '8480-6', value: 128, unit: 'mm[Hg]' }, { code: '8462-4', value: 82, unit: 'mm[Hg]' }],
});

// 3. A diagnosis and a medication the person reports
await anpheros.conditions.create(jane.id, { code: 'E11.9', system: 'http://hl7.org/fhir/sid/icd-10',
  display: 'Type 2 diabetes mellitus without complications', clinical_status: 'active', onset: '2021-03-15', author_type: 'patient' });
await anpheros.medications.create(jane.id, { code: 'A10BA02', display: 'Metformin 500 mg', status: 'active',
  dosage: '500 mg twice a day', start: '2021-03-20', author_type: 'patient' });

// 4. A lab report the person received, as the lab sent it (HL7 v2)
const lab = await anpheros.labs.importHl7(jane.id, await readFile('lipid-panel.hl7', 'utf8'), { sourceSystem: 'springfield-lis' });

// 5. A PDF they want to keep with the record
const doc = await anpheros.documents.upload(jane.id,
  { title: 'Chest X-ray report', kind: 'imaging_report', content_type: 'application/pdf', date: '2026-10-03' },
  await readFile('report.pdf'));

// 6. One timeline for the home screen
const timeline = await anpheros.timeline.list(jane.id, { limit: 10 });

// 7. A summary to share with a new doctor: the International Patient Summary
const ips = await anpheros.fhir.summary(jane.id);

// 8. Who else can read this record (empty until the person consents to another app)
const grants = await anpheros.grants.of(jane.id);

その実行から印刷されたもの:

lab:       created 2, unmapped []
document:  final
timeline:  2026-10-03  document    Chest X-ray report
           2026-10-02  observation Cholesterol in HDL [Mass/volume] in Serum or Plasma
           2026-10-02  observation Cholesterol [Mass/volume] in Serum or Plasma
           2026-10-01  observation Blood pressure panel
           2021-03-20  medication  Metformin 500 mg
           2021-03-15  condition   Type 2 diabetes mellitus without complications
IPS:       Allergies, Medications, Problems, Results, Vital signs
grants:    0

上記すべては FHIR R4 — Patient, Observation, Condition, MedicationStatement, DocumentReference — として保存されるため、同じレコードは任意の FHIR クライアント (GET /fhir/R4/Patient/{id}/$everything) で読み取ることができ、そのまま別の場所に移動できます。SDK 内の /v1 呼び出しは、同じリソースのよりシンプルなビューです。Medical data API にそれらがリストされています。

管理を失わずに共有する

PHRは、本人の意思に基づいて共有されるものです。

ファミリー

多くのPHRは、子供、配偶者、高齢の親など、複数の家族のために一人の人物によって管理されています。全員のデータを一つに混ぜるのではなく、各個人に独自のレコードを作成し、保護者とリンクさせてください。同意はレコードごとに与えられます。患者の医療記録でモデルについて説明しています。

自分で構築するもの、構築しないもの

ユーザー体験(オンボーディング、結果の説明方法、リマインダー、チャート、ユーザーが読む言語など)は、お客様が構築します。Anpheros は、レコード、標準フォーマット、同意、来歴、アクセスログ、およびラボ、ドキュメント、サマリーの操作を提供します。

現在、PHR において Anpheros が行わないこと:Anpheros は、ユーザーの代わりに病院の患者ポータルや米国の患者アクセス API にログインしません(お客様のアプリは、SMART on FHIR クライアントを使用してこれを行い、受信したものを書き込むことができます)。API を介して PDF レポートを読み取ることも、医療アドバイスを提供することもありません。Anpheros 自身の PHR アプリである Anpheros Daily は、この同じ API 上に構築されています。

よくある質問

個人健康記録(PHR)とは何ですか?

個人の健康情報のうち、本人が管理・保持する記録のことです。単一の医療機関が保持するのではなく、本人による入力、検査機関、クリニック、デバイスなど、複数のソースから収集されます。

PHRとEHRの違いは何ですか?

EHRは医療機関が保持し、その医療機関の提供者が記録した内容を網羅します。PHRは本人が保持し、すべての医療機関やデバイスからのデータを統合できます。テザードPHRは単一の医療機関のEHRへの窓口であり、コネクテッドPHRは標準規格を使用して複数のソースを統合します。

PHRはFHIRを使用すべきですか?

データが医師、他のアプリ、またはAIアシスタントと共有される可能性がある場合は、はい、FHIR R4は、他のシステムが既に理解しているコード化されバージョン管理されたリソースを提供します。これは、米国の患者アクセスAPIおよび欧州の患者サマリーの形式です。

PHRアプリはどのようにして病院からデータを取得しますか?

米国では、認定されたEHRや多くの保険会社が公開しているFHIR患者アクセスAPIを通じて、SMART on FHIRを使用して、本人がアプリを承認できるようにします。それ以外の地域では、ほとんどの場合、ドキュメントやサマリーが構造化データと並べてインポート・保存されます。

PHRアプリはAPIキーをどこに保管すべきですか?

ご自身のサーバーに保管してください。プロジェクトキーは、プロジェクトが作成したすべてのレコードを読み取ることができるため、モバイルアプリやWebアプリ内に含めることは絶対にできません。アプリはバックエンドと通信し、他の人のアプリは本人の同意を得てOAuthを使用します。

関連情報

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy