# AI 에이전트를 위한 건강 패턴 (베타)

> 환자 기록에서 변경된 내용과 고정된 통계 규칙으로 계산된 반복되는 내용: 추세, 개인의 평소 수준에서의 벗어남, 증상 반복. 각 항목은 주기, 증거 및 제한 사항을 포함합니다. 진단이 아닙니다.

Source: https://developers.anpheros.com/ko/guides/health-patterns

**Anpheros는 고정된 통계 규칙을 사용하여 환자 기록에서 변경된 내용과 반복되는 내용을 계산하고, 각 결과와 함께 주기, 해당 결과의 기반이 되는 리소스, 메서드 버전 및 제한 사항을 애플리케이션 또는 AI 에이전트에 전달합니다.** 모델은 더 이상 몇 개의 숫자로 추세를 추측할 필요가 없습니다. 추세, 주변의 불확실성 및 인용할 데이터를 직접 얻을 수 있습니다.

베타. 샌드박스에서는 모든 샌드박스 자격 증명(`sk_test_…` 키 및 샌드박스 OAuth 연결)과 함께 작동합니다. 프로덕션 기록에서는 별도의 `anpheros/patterns` 권한을 포함하는 환자의 OAuth 동의 하에서만 실행됩니다. 프로덕션 API 키는 403 오류를 반환합니다.

## 무엇을 찾아내는지

| 유형 | 답하는 질문 | 방법 |
|---|---|---|
| `trend` | 측정값이 기간 동안 증가하거나 감소하고 있습니까? | Mann–Kendall을 이용한 Theil–Sen 기울기 (일일 한 개의 값, 밀집된 관찰 데이터의 주간 중앙값), 인접한 날짜가 동일할 경우 보정 |
| `trend` (`change_between_results`) | 두세 개의 결과가 있는 검사 결과는 어떻게 변했습니까? | 첫 번째와 마지막 결과, 보고서의 참조 범위에 대한 최신 결과; 테스트가 아닌 설명 |
| `trend` (`event_rate_change`) | 증상이 더 자주 또는 덜 자주 기록되고 있습니까? | 사람이 무언가를 기록한 날짜 대비 증상 발생 날짜, 지난 30일 대 이전 90일, 정확한 검정 |
| `baseline_deviation` | 이번 주가 이 사람에게 특이한 주입니까? | 지난 7일 대 8일–60일, Mann–Whitney 또는 자기 상관 보정된 평균 차이 |
| `recurrence` | 증상 에피소드가 규칙적인 간격으로 다시 발생합니까? | 에피소드 시작 간의 간격, 무작위로 배치된 에피소드에 대한 시드 몬테카를로 |
| `association` (`around_medication_start`, sandbox) | 약물 시작 시점부터 증상이 더 자주 또는 덜 자주 기록되고 있습니까? | 약물 시작 시점부터 30일 동안의 활동일 대비 증상 발생일 대 이전 최대 90일, 정확한 검정 |
| `association` (`after_short_sleep`, sandbox) | 6시간 미만 수면 후 증상이 더 자주 기록됩니까? | 수면이 측정되고 사람이 기록한 날짜, 짧은 밤 대 긴 밤, Fisher의 정확한 검정 |
| `convergence` (`recent_changes_together`, sandbox) | 최근 같은 기간에 여러 가지 일이 변경되었습니까? | 새로운 테스트 없음: 통계적으로 지원되는 최소 두 가지 최근 변경 사항(특이한 주, 증상이 더 자주 또는 덜 자주 발생)을 그룹화합니다. 함께 발생했다는 사실만 말합니다. |

한 번의 실행에서 모든 검정은 함께 보정됩니다(Benjamini–Hochberg). 발견은 보정된 q-값이 0.05 미만이고 **그리고** 변경 사항이 해당 측정값의 임계값 이상일 때만 `statistically_supported`입니다.

## 무엇이 아닙니까

- **진단이 아닙니다.** 결과는 기록을 설명하며, 질병명을 명시하거나 치료 변경을 권장하지 않습니다. 모든 결과에는 `safety.not_a_diagnosis = true`와 `safety.causal_claim = false`이 포함됩니다.
- **원인이 아닙니다.** 새로운 약물 투여 후의 변화나 두 가지 항목이 함께 기록된 것은 한 가지가 다른 한 가지의 원인이라는 증거가 아닙니다. 연관성은 두 가지가 같은 시기에 발생했다는 것만을 나타내며, 각 연관성에는 `confounding_possible`과 `not_causal`가 포함됩니다. 또한, 증상에 대해 테스트되는 것은 약물 시작과 수면뿐이며, 모든 쌍이 테스트되는 것은 아닙니다. 현재는 샌드박스 자격 증명으로만 가능합니다.
- **AI 모델이 아니며, 아직 임상 검토를 거치지 않았습니다.** 모든 숫자는 고정되고 버전이 관리되는 통계 규칙에서 나옵니다. AI 모델이 데이터를 분석하지 않습니다. 의미 있는 변화에 대한 임계값은 AI 지원으로 설정되었으며 아직 임상의의 검토를 거치지 않았습니다. 각 결과에는 `review.thresholds_reviewed_by_clinician`에 이 내용이 명시되어 있습니다. 엔진은 알려진 패턴이 삽입된 합성 환자를 대상으로 검증됩니다. 즉, 삽입된 패턴을 찾고 아무것도 없을 때는 조용히 유지됩니다. 이것은 임상 검증이 아닙니다.

## 사용해 보기

모든 샌드박스 프로젝트에는 30명의 합성 환자가 있으며, 그중 6명은 미리 설정된 패턴을 가지고 있습니다. `GET /fhir/R4/Patient?identifier=https://anpheros.com/fhir/sid/sandbox-persona|<key>`를 가진 환자를 찾아보세요.

| 환자 | 설정된 내용 | 엔진 보고 내용 |
|---|---|---|
| p01 Andrei Popescu | 매일 가정 혈압, 6개월 동안 약 8/5 mmHg 하락 | 수축기(8480-6) 및 이완기(8462-4)에 대한 `trend.decreasing` |
| p06 Giulia Rossi | 7일마다 두통, +/- 1일 | 두통(R51)에 대한 `recurrence.intervals` |
| p17 Ciarán Murphy | 지난 30일 중 절반 정도의 피로, 이전에는 12일 중 1일 정도 | 피로(R53)에 대한 `frequency.increased` |
| p19 Felix Gruber | 시계에서 측정한 안정 시 심박수, 지난주 평소보다 약 9 bpm 높음 | 안정 시 심박수(40443-4)에 대한 `baseline.higher` |
| p20 Ivana Horvat | 시계에서 측정한 안정 시 심박수, 6개월 동안 약 16 bpm 하락 | 안정 시 심박수(40443-4)에 대한 `trend.decreasing` |
| p30 Jan Kowalczyk | 밀집된 시계 및 가정 데이터, 설정된 내용 없음 | 지원되지 않는 소견: 엔진은 조용합니다 |

2026년 10월 16일 이전에 생성된 프로젝트는 대시보드에서 합성 환자를 재설정하면 이러한 패턴이 적용됩니다. 재설정은 환자에게 적용된 모든 변경 사항을 대체합니다.

```bash
curl -s https://platform.anpheros.com/v1/patients/$PATIENT/patterns?window_days=180 \
  -H "Authorization: Bearer $ANPHEROS_KEY"
```

TypeScript SDK(`@anpheros/sdk` 0.2.0 이상) 사용:

```ts
const run = await anpheros.patterns.run(patientId, { window_days: 180, min_strength: 'moderate' });
for (const f of run.findings) console.log(f.summary_text, f.strength, f.limitations.map(l => l.code));
```

MCP 서버를 사용하여 에이전트에게 "지난 6개월 동안 이 환자의 기록에서 무엇이 변경되었습니까?"라고 질문하세요. 그러면 `get_health_patterns`을 호출하고 `get_pattern_evidence`, `get_series` 및 `compare_periods`로 후속 조치를 취할 수 있습니다. `POST /v1/context`는 변경 및 관계에 대한 질문이나 `patterns` 요구 사항을 요청할 때 `patterns` 섹션을 추가합니다.

## 엔드포인트

| 엔드포인트 | 반환 내용 |
|---|---|
| `GET /v1/patients/{id}/patterns` | 실행 결과: 발견된 내용, 계산되지 못한 이유, 제외된 동의 사항; 필터 `window_days` (30–730), `end`, `types`, `min_strength` |
| `GET /v1/patients/{id}/patterns/{finding_id}` | 동일한 기간에 대해 재계산된 단일 발견 내용 |
| `GET /v1/patients/{id}/patterns/{finding_id}/evidence` | 페이지별 모든 지원 리소스 |
| `GET /v1/patients/{id}/series?code=…` | 하루에 하나의 값으로 반환되는 단일 측정값 (커버리지, 누락, 소스 변경 포함) |
| `POST /v1/patients/{id}/patterns/compare` | 선택한 두 기간에 대한 단일 측정값 |

## 진단 읽기

- `summary_text`: 표시하거나 인용해도 안전한 일반 문장입니다.
- `strength`: `strong`, `moderate`, `weak` 또는 `not_tested`. 약하거나 테스트되지 않은 진단은 증거가 아닌 설명입니다.
- `window`, `comparison_window`: 분석된 기간입니다.
- `evidence` (최대 20개, 기간에 걸쳐 분산됨) 및 `evidence_total`: 버전, 날짜, 값 및 작성자 유형과 함께 진단 뒤에 있는 리소스입니다.
- `limitations`: 텍스트와 함께 코딩됩니다. 진단과 함께 표시하십시오.
- `review`: 임상의가 임계값을 검토했는지 여부(현재 `false`) 및 출처입니다.
- `method`, `engine_version`, `input_fingerprint`: 동일한 데이터, 구성 및 버전은 동일한 결과와 동일한 ID를 제공합니다.

## 알아두면 좋은 규칙

- **동의 우선.** OAuth 부여 하에서 엔진은 부여가 허용한 내용만 읽습니다. 읽을 수 없는 내용은 `omitted`에 내용 없이 나열됩니다.
- **ID.** 환자는 프로젝트의 쌍별 ID로 표시됩니다. ID 찾기는 프로젝트별로 파생됩니다. 레코드가 변경되면, 발견 항목은 새 ID를 얻고 이전 ID는 404를 반환합니다.
- **시간.** 읽기 시간(reading's time)에 명시적 오프셋(`2026-10-16T00:30:00+03:00`)이 포함된 경우, 해당 개인의 자체 날짜로 계산됩니다. UTC 시간(`Z`) 또는 오프셋이 없는 시간은 UTC 날짜로 유지됩니다. 각 발견 항목은 `time_basis` (`record_offsets`, `partly_local` 또는 `local_time_unknown`)에 어떤 시간인지 명시합니다. 로컬 날짜는 샌드박스 및 프로덕션 레코드에 사용됩니다. 시간대 패턴은 아직 계산되지 않습니다.
- **제외.** AI가 기록한 값, entered-in-error로 표시된 결과, 월만 알려진 날짜는 사용되지 않으며 계산에 포함됩니다.
- **제한.** 분당 30개의 패턴 실행 (자격 증명당), 일반적인 분당 600개 요청 외 추가입니다.

## 자주 묻는 질문

### 언어 모델을 사용하나요?
아니요. 모든 숫자는 고정되고 버전이 관리되는 통계적 방법에서 나옵니다. 호스팅되거나 로컬에 있는 모든 모델은 결과를 읽을 수 있습니다.

### 제 데이터의 명확한 변경 사항이 약함으로 표시되는 이유는 무엇인가요?
증거가 실행 중인 모든 테스트에 대한 보정을 견디지 못하거나, 시리즈가 짧거나 노이즈가 많거나, 변경 사항이 해당 측정값의 임계값보다 낮기 때문입니다. 이 결과는 여전히 기록이 보여주는 것을 설명합니다.

### 프로덕션 레코드에서도 작동하나요?
예, 2026년 10월 16일부터 가능하지만, 별도의 `anpheros/patterns` 권한을 포함하는 환자의 OAuth 동의 하에서만 가능하며, 동의 화면에 별도의 줄로 표시됩니다. `patient/…` 스코프 옆에 해당 스코프를 요청하십시오. 해당 스코프가 없고 프로덕션 API 키가 있는 경우 403 오류가 발생합니다.

## 관련 자료

- [AI 에이전트를 위한 FHIR MCP 서버](https://developers.anpheros.com/ko/guides/mcp)
- [LLM 애플리케이션 및 의료 데이터](https://developers.anpheros.com/ko/guides/llm-healthcare-data)
- [AI 에이전트 및 의료 데이터](https://developers.anpheros.com/ko/guides/ai-agents-medical-data)
- [환자 동의 기반 의료 API](https://developers.anpheros.com/ko/guides/healthcare-api-patient-consent)
