Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
의료 앱 백엔드 및 데이터베이스
의료 앱 백엔드와 데이터베이스가 처리해야 하는 것, Anpheros가 관리형 의료 데이터베이스로 제공하는 부분, 백엔드에 남는 부분, 연결하는 세 가지 방법, 웹훅으로 동기화 유지 방법.
의료 앱 백엔드는 헬스케어 애플리케이션의 서버 측입니다. 환자 데이터를 저장하고, 누가 데이터를 볼 수 있는지 강제하며, 변경 이력을 유지하고, 실험실, 클리닉 및 기타 서비스와 통신합니다. Anpheros를 사용하면 백엔드의 의료 부분, 즉 각 환자의 기록, 변경 이력, 동의, 출처, 감사, 실험실 가져오기 및 이벤트를 보유하는 헬스케어 데이터베이스는 API를 통해 플랫폼에서 제공되며, 자체 백엔드는 제품에 특정한 내용만 유지합니다.
의료 백엔드가 처리해야 하는 사항
| 책임 | 의료 분야에서 어려운 이유 | Anpheros 사용 시 |
|---|---|---|
| 의료 데이터 모델 | 수십 가지 종류의 데이터, 각 표준 코드 포함 | HL7 FHIR R4, 26가지 리소스 유형, LOINC / ICD-10 / ATC / UCUM |
| 버전 관리 | 의료 데이터는 수정되지만, 조용히 덮어쓰여지지 않음 | 모든 업데이트는 새 버전; 조건부 업데이트 시 If-Match |
| 문서 | 원본은 변경되지 않고 추적 가능해야 함 | SHA-256으로 불변 원본, 고객 관리 키로 암호화된 EU 스토리지 |
| 접근 제어 | 환자별, 애플리케이션별, 데이터 유형별 | 프로젝트 격리, 쌍별 ID, 카테고리 필터가 있는 OAuth 범위 |
| 동의 | 환자가 결정하고 마음을 바꿀 수 있음 | 30~365일 동안 부여, 철회 가능, FHIR Consent로 미러링 |
| 감사 | 환자와 규제 기관이 누가 무엇을 보았는지 질문함 | 모든 읽기 및 쓰기 기록이 환자에게 표시됨 |
| 출처 | 실험실의 값은 환자가 입력한 값이 아님 | 모든 쓰기에 작성자 유형, 조직, 실무자 및 소스 시스템 포함 |
| 통합 | 실험실은 CSV, HL7 v2, JSON 전송; 앱은 이벤트 필요 | 실험실 가져오기, FHIR 트랜잭션, 서명된 웹훅 |
| 안전한 재시도 | 중복된 약물 또는 결과는 임상 오류 | 모든 생성 시 Idempotency-Key |
| 테스트 데이터 | 실제 환자는 개발에 절대 포함될 수 없음 | 합성 환자가 있는 샌드박스 데이터베이스 |
백엔드에 유지해야 할 항목
- 사용자 및 계정 정보와 각 사용자와 Anpheros 환자 ID(프로젝트에서 인식하는 쌍별 ID) 간의 매핑
- 의료 관련이 아닌 제품 데이터: 설정, 구독, 콘텐츠, 알림 일정
- 비즈니스 규칙: 직원 중 누가 제품 내에서 어떤 환자를 볼 수 있는지에 대한 규칙
- API 키: 모바일 또는 웹 앱 내부에 절대 포함해서는 안 되는 항목
연결하는 세 가지 방법
1. 백엔드에서 API 키 보유 (가장 일반적). 앱이 백엔드로 호출하고, 백엔드가 sk_live_ 키를 사용하여 Anpheros에 호출하며, 프로젝트에서 생성한 환자를 확인합니다.
import { Anpheros, apiKey } from '@anpheros/sdk';
const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });
// GET /api/me/vitals in your backend, after your own authentication
export async function myVitals(user: { anpherosPatientId: string }) {
const page = await anpheros.observations.list(user.anpherosPatientId, { category: 'vital-signs', limit: 50 });
return page.data;
}
2. 앱이 OAuth를 통해 환자를 대행. 이미 Anpheros 기록이 있는 사용자의 경우, 모바일 또는 웹 앱은 PKCE를 사용하는 공개 OAuth 클라이언트입니다. 사용자가 호스팅된 페이지에서 동의하면 앱은 해당 기록에 대한 30분 액세스 토큰과 순환 갱신 토큰을 받습니다. SDK는 이 흐름을 구현합니다(OAuthFlow).
3. 서버 간 파트너. 비밀 키(서버에 보관)를 가진 비밀 클라이언트는 authorization-code 흐름 또는 client_credentials을 사용할 수 있으며, 이는 해당 프로젝트에 대한 API 키와 유사하게 작동합니다.
백엔드 동기화 유지
폴링 대신 웹훅을 구독하십시오. 전달은 서명(Anpheros-Signature, 타임스탬프 및 본문에 대한 HMAC-SHA256), 최소 한 번 전달되며 순서가 바뀔 수 있습니다. 이벤트 ID로 중복을 제거하고 오래된 버전을 무시하십시오.
import { verifyWebhookSignature } from '@anpheros/sdk';
app.post('/anpheros/hook', express.raw({ type: 'application/json' }), async (req, res) => {
const ok = await verifyWebhookSignature({ secret: process.env.ANPHEROS_WEBHOOK_SECRET!, header: req.header('anpheros-signature'), body: req.body });
if (!ok) return res.status(400).end();
const event = JSON.parse(req.body.toString()); // ids and versions only — read the resource if you need it
res.status(204).end();
});
오류 및 제한 처리
404은 레코드가 존재하지 않는다는 증거가 아니라 "사용자에게 보이지 않음"으로 처리하십시오.403은 자격 증명이 존재하지만 이 작업을 수행하지 못할 수 있음을 의미합니다. 누락된 범위 또는 다른 조직에서 작성한 리소스일 수 있습니다.429는Retry-After과 함께 제공됩니다. SDK는5xx와 마찬가지로 자동으로 대기하고 다시 시도합니다.- 지원을 위해 실패한 호출의
Anpheros-Request-Id을 보관하십시오.
오류 · 제한 및 속도 제한
자주 묻는 질문
의료 앱은 어떤 데이터베이스를 사용해야 하나요?
의료 데이터를 표준화되고 버전 관리되는 형태로 유지하며 환자별로 접근을 제어하는 데이터베이스를 사용해야 합니다. Anpheros는 HL7 FHIR R4를 기반으로 구축된 관리형 의료 데이터베이스입니다. 각 환자의 기록은 버전 관리 및 검색이 가능하며, 모든 쓰기 작업에는 출처가 기록되고, 애플리케이션은 해당 기록을 생성했거나 환자가 동의한 경우에만 환자 데이터에 접근할 수 있습니다. 제품의 나머지 데이터(계정, 결제, 콘텐츠)는 자체 데이터베이스에 보관하세요. 자체 테이블을 설계하는 것에 대한 절충점은 FHIR vs. 맞춤형 의료 데이터베이스를 참조하세요.
의료 앱을 위한 무료 데이터베이스가 있나요?
네. Anpheros 샌드박스는 무료입니다. Google로 로그인하고 한 번의 클릭으로 키를 발급받으면 프로젝트당 30명의 합성 환자와 하루 최대 10,000개의 쓰기 작업을 사용할 수 있습니다. 프로덕션은 월 €99부터 시작하며 2,500명의 환자를 지원합니다. 첫 달은 무료이며, 프로덕션 접근은 데이터 처리 계약에 서명한 검증된 조직에 제공됩니다. 가격을 참조하세요.
무료 샌드박스에 실제 환자 데이터를 보관할 수 있나요?
아니요. 샌드박스는 합성 데이터 전용입니다. 각 샌드박스 프로젝트는 자체 합성 환자를 가지며, 샌드박스 키는 프로덕션에 접근할 수 없습니다. 실제 환자 기록은 프로덕션 프로젝트에 보관해야 합니다.
관련 자료
- FHIR 대 사용자 정의 의료 데이터베이스: 자체 테이블을 설계해야 할 때와 FHIR을 사용해야 할 때
- TypeScript로 의료 API 구축 방법: Express를 사용한 단계별 튜토리얼
- Flutter로 의료 앱 구축 방법: Dart SDK를 사용한 단계별 튜토리얼
- 의료 소프트웨어 개발
- 의료 앱 구축
- 아키텍처
- 의료 데이터 API
- SDK
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card