# 错误

> 错误目录：HTTP 状态码、OperationOutcome 问题代码以及每种情况的处理方法。

Source: https://developers.anpheros.com/zh/guides/errors

`/fhir/R4` 错误是 `OperationOutcome`；其他情况是 `{"error": {"type", "message", "field"?}}`。每个响应都包含 `Anpheros-Request-Id`；在联系支持人员时请引用它。

| HTTP | `issue.code` / `type` | 含义 | 处理方法 |
|---|---|---|---|
| 400 | `invalid`, `structure`, `value` | JSON 格式错误、FHIR 无效、值不在必需值集中、搜索参数不支持、范围过滤器不支持 | 修复请求；消息中会指明字段 |
| 400 | `too-costly` | 资源嵌套超过 64 层、文本超过 10000 个字符 | 简化资源 |
| 401 | `login` | 凭证丢失、未知、过期或已撤销；同意已失效；响应包含 `WWW-Authenticate: Bearer realm="anpheros"`（当发送了凭证时，包含 `error="invalid_token"`） | 重新认证；对于 OAuth，刷新或重新同意 |
| 403 | `forbidden` | 范围、所有权（由其他组织编写）、只读授权、仅管理员 | 请求正确的范围；编写自己的资源 |
| 404 | `not-found` | 此调用者不存在 | 404 错误不应假设资源存在 |
| 409 | `conflict` | 幂等性键正在处理中；文档已最终确定；端点限制 | 短暂重试 / 使用新密钥 |
| 410 | `deleted` | 资源或文件已删除 | — |
| 412 | `conflict` | `If-Match` 版本不匹配 | 重新读取，然后更新 |
| 413 | `too-costly` | 正文或文档超出限制 | 分割或压缩 |
| 422 | `not-found` / `invalid` | 您引用的患者不存在；资源在患者之间移动；幂等性键与另一个正文重复使用 | 修复引用 |
| 429 | `throttled` | 每个凭证或每个 IP 的速率限制 | 等待 `Retry-After` 秒；SDK 会自动处理 |
| 503 | `transient` | 文档存储不可用 | 使用回退策略重试 |
| 500 | `exception` | 意外错误，已记录并使用请求 ID 进行审计 | 报告请求 ID |
