Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
의료 앱을 위한 환자 동의 플랫폼
데이터 계층에 내장된 동의: OAuth 2.1 및 SMART 범위, 사용자가 선택하는 목적 및 만료일, 사용자가 볼 수 있는 액세스 로그, 다음 요청 시 취소, 앱이 여전히 소유하는 것.
환자 동의 플랫폼을 통해 개인은 어떤 애플리케이션이 자신의 건강 기록을 어떤 목적으로, 얼마나 오랫동안 읽거나 변경할 수 있는지 결정할 수 있으며, 언제든지 해당 액세스를 확인하고 철회할 수 있습니다. Anpheros는 동의를 데이터 계층에 내장합니다. 애플리케이션은 개인이 Anpheros 동의 페이지에서 승인한 허가를 통해서만 환자의 FHIR R4 레코드에 접근할 수 있으며, 해당 허가 하의 모든 읽기 및 쓰기는 개인이 볼 수 있도록 기록되고, 철회는 다음 요청 시 효력을 발휘합니다. 이 페이지에서는 해당 기능이 어떻게 작동하는지, 애플리케이션이 무엇을 해야 하는지, 그리고 무엇을 직접 구축할 필요가 없는지를 보여줍니다.
- 1 · Your app asksOAuth 2.1 with PKCE: SMART scopes, a purpose and the patient's language
- 2 · The person decidesOn the Anpheros consent page: what, for whom and for how long — 30, 90, 180 or 365 days
- 3 · Your app readsOne patient's record, only the granted resource types and categories
- 4 · Every access is loggedThe person sees each read and write by your application
- 5 · The person revokesThe next request fails; a refresh token cannot bring access back
데이터 계층에 동의가 필요한 이유
대부분의 건강 앱은 자체 데이터베이스에 체크박스로 동의를 기록하고 애플리케이션 코드에서 이를 강제합니다. 이는 두 번째 앱, 클리닉 통합 또는 AI 기능이 동일한 데이터가 필요한 시점까지 작동합니다. 각 앱은 규칙을 다시 구현해야 하며, 해당 사용자는 누가 접근 권한을 가지고 있는지 볼 수 있는 단일 장소가 없습니다. 기록을 저장하는 플랫폼이 동의를 강제하면 모든 클라이언트는 동일한 규칙을 적용받고, 사용자는 검토할 수 있는 애플리케이션 목록을 하나만 갖게 됩니다.
| 앱 내 플래그로서의 동의 | 데이터 계층(Anpheros)에서의 동의 | |
|---|---|---|
| 강제 적용 위치 | 각 애플리케이션의 코드 | 모든 API 요청 시, 플랫폼에서 |
| 접근 범위 | 앱이 읽기로 결정한 모든 것 | 부여된 리소스 유형 및 카테고리만 |
| 만료 | 거의 구현되지 않음 | 사용자가 선택: 30일, 90일, 180일 또는 365일 |
| 사용자가 보는 것 | 앱에 따라 다름 | 모든 애플리케이션, 해당 범위 및 만료일, 접근 로그 |
| 철회 | 수동으로 전파해야 함 | 다음 요청 실패; 갱신 토큰 작동 중지 |
환자가 제어하는 항목
애플리케이션이 동의를 요청하는 방법
Anpheros는 PKCE를 사용하는 OAuth 2.1 및 SMART on FHIR v2 스코프를 사용합니다. 앱은 필요한 스코프와 선택적 목적을 포함하여 동의 페이지로 사용자를 보냅니다. 승인 후 앱은 정확히 한 명의 환자에 대한 액세스 토큰(30분)과 순환 갱신 토큰(30일)을 받습니다.
import { OAuthFlow, generatePkce } from '@anpheros/sdk';
const flow = new OAuthFlow({
baseUrl: 'https://platform.anpheros.com',
clientId: process.env.ANPHEROS_CLIENT_ID!,
redirectUri: 'https://your.app/callback',
});
const pkce = await generatePkce();
const url = flow.authorizeUrl({
scopes: ['patient/Observation.rs?category=laboratory', 'patient/Condition.rs', 'offline_access'],
purpose: 'treatment',
state: crypto.randomUUID(),
pkce,
lang: 'en',
});
// redirect the person to `url`; on the callback exchange the code (see the authentication guide)
patient/Observation.rs?category=laboratory과 같은 스코프는 검사 결과 읽기를 제한하며, 카테고리 필터는 서버에서 적용됩니다. 부여되지 않은 리소스 유형은 403를 반환하고, 부여되지 않은 환자는 404를 반환하므로 ID를 탐색할 수 없습니다.
권한 취소에 대한 반응
사용자가 권한을 종료하면 해당 토큰을 사용한 다음 요청이 실패하며, 새로고침 토큰으로 액세스를 복원할 수 없습니다. 즉시 정리하려면 consent.revoked 웹훅을 구독하십시오. 이 웹훅은 grant_id, 표시되는 환자 ID, 범위 및 revoked_at을 전달합니다.
await anpheros.webhooks.create('https://your.app/anpheros/hook', { events: ['consent.granted', 'consent.revoked'] });
Anpheros의 기능 범위
- 마케팅 또는 연구 참여와 같이 데이터 액세스 범위를 벗어나는 목적에 대한 동의를 수집하지 않습니다.
- 법적 근거를 결정하지 않습니다. 액세스에 대한 동의는 하나의 제어 수단이며, 개인정보 처리 방침, 계약 및 처리 기록은 귀하의 책임입니다.
- 프로젝트 자체의 API 키는 승인 없이도 해당 프로젝트에서 생성한 환자를 볼 수 있습니다. 다른 애플리케이션의 액세스는 동의로 제어됩니다.
자주 묻는 질문
환자 동의 플랫폼이란 무엇인가요?
개인이 자신의 건강 데이터에 접근하도록 허용하는 애플리케이션을 기록하고, 모든 요청에서 해당 선택을 강제하며, 누가 무엇에 접근했는지 보여주고, 접근 권한을 철회할 수 있도록 하는 소프트웨어입니다. Anpheros에서는 동의가 별도의 서비스가 아닌 FHIR R4 레코드 자체의 일부입니다.
Anpheros는 환자 동의에 어떤 표준을 사용하나요?
권한 부여 흐름에는 OAuth 2.1 with PKCE를 사용하고, 애플리케이션이 읽거나 쓸 수 있는 내용에는 SMART on FHIR v2 환자 범위(patient/<Type>.<cruds>, 선택적으로 ?category= 필터 포함)를 사용합니다. OpenID Connect는 openid fhirUser을 요청할 때 ID 토큰을 추가합니다.
환자가 자신의 데이터 중 일부에만 접근을 제한할 수 있나요?
예. 접근은 부여된 범위의 리소스 유형 및 범주로 제한됩니다. 예를 들어, 실험실 관찰(laboratory Observations)만 해당됩니다. 그 외의 모든 것은 오류를 반환합니다.
동의는 얼마나 오래 지속되나요?
동의 페이지에서 30일, 90일, 180일 또는 365일을 선택합니다. 그 후에는 부여가 만료되며 애플리케이션은 다시 요청해야 합니다.
환자가 애플리케이션이 접근 권한을 사용하여 무엇을 했는지 볼 수 있나요?
예. 접근 권한이 있는 모든 애플리케이션, 해당 범위 및 만료일, 그리고 각 애플리케이션이 읽거나 쓴 내용을 나열하는 접근 로그를 볼 수 있습니다.
동의가 철회되면 어떻게 되나요?
해당 액세스 토큰을 사용한 다음 요청이 실패하고, 새로고침 토큰을 사용하여 새 토큰을 얻을 수 없으며, 서버가 구독한 경우 consent.revoked 웹훅을 수신합니다.
관련 정보
- 동의 및 액세스 모델: 전체 규칙
- 인증 및 OAuth: 토큰, 범위 및 코드 교환
- SMART on FHIR을 사용한 환자 동의 구현 방법
- 웹훅:
consent.granted및consent.revoked - 의료 데이터 출처 설명
- 종단 환자 데이터 API
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card