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) 앱은 한 사람의 건강 정보 — 결과, 측정값, 진단, 약물, 문서 — 를 한 병원이 아닌 여러 출처에서 수집된, 본인이 제어하는 기록으로 유지합니다. 어려운 부분은 화면이 아닙니다. 검사실, 클리닉 및 기기에서 사용 가능한 형태로 데이터를 가져오고, 각 항목의 출처를 추적하며, 본인이 통제권을 잃지 않고 기록을 공유하도록 하는 것입니다. 이 튜토리얼에서는 Anpheros TypeScript SDK를 사용하여 HL7 FHIR R4 기반 PHR의 백엔드를 구축합니다. 아래 코드는 샌드박스 키를 사용하여 로컬 플랫폼 인스턴스에서 실행되었습니다.

연결형, 비연결형 및 연동형 PHR

종류 데이터 저장 위치 제약 사항
연결형 (병원 환자 포털) 제공자의 EHR 해당 제공자의 데이터만 표시; 환자가 의사를 변경하면 변경됨
비연결형 (독립형 앱 또는 노트북) 앱 자체 데이터베이스 환자가 모든 것을 직접 입력; 데이터가 앱을 거의 벗어나지 않음
연동형 환자의 동의 하에 앱, 실험실 및 진료소에서 읽고 쓸 수 있는 표준 레코드 표준, 동의 및 출처 관리가 필요함

연동형 PHR은 오늘날 구축할 가치가 있는 것입니다. 또한 정책 방향이기도 합니다. 미국에서는 인증된 EHR이 환자에게 데이터에 대한 FHIR 기반 API 액세스(US Core)를 제공해야 하며, 유럽 연합에서는 European Health Data Space가 2029년부터 단계적으로 시행되어 사람들에게 전자 건강 데이터에 액세스하고 원하는 제공자와 공유할 수 있는 권리를 부여합니다.

PHR 데이터 출처

  1. 개인: 가정 측정값, 증상, 복용 중인 약물, 인지하고 있는 질환. 환자 보고(patient-reported)로 표시합니다.
  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_…, 앱에서는 절대 사용하지 않음)를 보유합니다. 앱은 자체 인증으로 사용자를 로그인시키고 백엔드와 통신하며, 백엔드는 각 사용자를 하나의 환자 기록에 매핑합니다.

단계별 안내

SDK(npm install @anpheros/sdk)를 설치하고 대시보드에서 무료 샌드박스 키를 받으세요. 샘플은 두 개의 결과가 있는 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은 한 사람이 여러 명(자녀, 배우자, 노부모)을 위해 관리합니다. 모든 사람의 데이터를 하나로 섞는 대신, 각 개인에게 고유한 레코드를 부여하고 보호자에게 연결하십시오. 그러면 레코드별로 동의가 부여됩니다. Patient medical record에서 모델을 설명합니다.

직접 구축해야 할 것과 그렇지 않은 것

사용자 경험(온보딩, 결과 설명 방식, 알림, 차트, 사용자가 읽는 언어 등)은 직접 구축해야 합니다. Anpheros는 기록, 표준 형식, 동의, 출처, 접근 로그, 그리고 실험실, 문서, 요약 관련 작업을 제공합니다.

오늘날 Anpheros가 PHR을 위해 하지 않는 것들은 다음과 같습니다: 사용자를 대신하여 병원 환자 포털이나 US 환자 접근 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 키를 어디에 보관해야 하나요?

서버에 보관해야 합니다. 프로젝트 키는 프로젝트에서 생성한 모든 레코드를 읽을 수 있으므로 모바일 또는 웹 앱 내부에 절대 포함해서는 안 됩니다. 앱은 백엔드와 통신하며, 다른 사람의 앱은 개인의 동의 하에 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