# @crvouga/mockingbird-service-caretalk 中文文档

规范地址：https://npmcn.com/package/%40crvouga/mockingbird-service-caretalk/

版本：3\.11\.0
npm 元数据更新时间：2026-11-11T02:05:01.059Z
中文译文更新时间：2026-11-11T04:55:09.138Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40crvouga/mockingbird-service-caretalk
原文对照：https://npmcn.com/package/%40crvouga/mockingbird-service-caretalk/?lang=original
项目主页：https://github.com/crvouga/mockingbird/tree/main/packages/service/caretalk#readme
源码仓库：https://github.com/crvouga/mockingbird

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：4.4 MB，18 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：2 个
- 首次发布：2026-09-22T23:52:57.321Z
- 最新版本发布：2026-11-11T02:05:00.200Z
- 近 30 天下载量：3163（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：42（近 12 个月 42 个）

## 中文简介

状态模拟 CareTalk 外部 API:客户端-登录符,GetForm定义,SavePatientForm回合,患者搜索/插入,状态,免费插槽和预约.

## 安装

```sh
npm install @crvouga/mockingbird-service-caretalk
```

也可以使用：`pnpm add @crvouga/mockingbird-service-caretalk`、`yarn add @crvouga/mockingbird-service-caretalk`、`bun add @crvouga/mockingbird-service-caretalk`

## README

# @crvouga/mockingbird-service-careltalk (英语)

> 本地模拟器。 真正的API合同. 部分 [嘲笑鸟](https://github.com/crvouga/mockingbird)。 。 。 .

状态模拟器 **关卡**外部 API (% 1)`/externalapi`对于测试套房:客户端登录, 形式定义`GetForm`)和保存的形式回合(`SavePatientForm`,表格提交 队列的调用、病人搜索和插入(账户回填)、状态、空位和 任用。 后端需要 careTalk 键在后端, 因此模拟器让一个堆起后端运行 没有β环境的CareTalk路径.

-   行动范围: [支助](https://github.com/crvouga/mockingbird/blob/main/packages/service/caretalk/SUPPORT.md)
-   供应商不公布具体内容:合同`openapi.yaml`由手写自 消费者的zod计划和接口(`caretalk.types.ts`, (中文(简体) ), `caretalk-forms.type.ts`) (中文(简体) ).

## 安装

```bash
npm install -D @crvouga/mockingbird-service-caretalk
```

仅限无害环境管理。 节点 22或 Bun 1.2. 无土生属地. 给它服务 `npx mockingbird-caretalk serve`, (中文(简体) ), `createServer` 从 `./server` (节点),或 `createRuntime` 与任何获取服务器.

## 使用量

点 `CARETALK_API_URL` 在模拟器上(后端验证为 **仅限 https**放松点 用于回路或使用 TLS 的模拟器前. `getFormData` 硬码 `https://api.caretalkbeta.com` (接缝) **G-Y1级**) (中文(简体) ). `CARETALK_USERNAME`, (中文(简体) ), `CARETALK_PASSWORD` 财务报告和审定财务报表 `CARETALK_API_KEY` 除非 `--api-user` 编号 : `--api-key` 钉住他们.

```bash
npx mockingbird-caretalk serve --port 8823 --api-user "$CARETALK_USERNAME:$CARETALK_PASSWORD" --api-key "$CARETALK_API_KEY"
```

```ts
import { createServer } from "@crvouga/mockingbird-service-caretalk/server"

// Test setup: the emulator. The application gets CARETALK_API_URL = server.url.
const server = await createServer()
const baseUrl = server.url

// Application code: log in, then read a form with the token.
const login = await fetch(`${baseUrl}/externalapi/Auth/client-login`, {
  method: "POST",
  headers: { "content-type": "application/json" },
  // Any credentials log in unless --api-user pins them.
  body: JSON.stringify({ userName: "acme-api", password: crypto.randomUUID() }),
})
const { token } = (await login.json()) as { token: string }
const forms = await fetch(`${baseUrl}/externalapi/Forms/GetForm/health-history`, {
  headers: { authorization: `Bearer ${token}` },
})
const [form] = (await forms.json()) as { fullFormDto: { id: number } }[]

// Test control: after the app's form-submission queue runs, assert what reached CareTalk.
const saved = await fetch(`${baseUrl}/__admin/form-submissions`)
const { submissions } = (await saved.json()) as { submissions: unknown[] }
await server.close()
```

### 路线

| 路线 | 行为 |
| --- | --- |
| `POST /externalapi/Auth/client-login` | `{userName, password}` → `{token, expiration}`最后一个托肯 `tokenTtlSeconds` (默认3600,我们的客户端缓存) 在模拟时钟. |
| `GET /externalapi/Forms/GetForm/{formName}` | 姓名或鼻涕,对大小写不敏感: `[{formRoundId, patientAppointmentId, submitDate, fullFormDto}]`; 未知表单为 `[]`与 `PatientId` (和 `AppointmentId`),患者最新保存的圆:选择的答案 `isChecked`,自由文本响应。 接受登录符号或静态 API 密钥. |
| `POST /externalapi/Forms/SavePatientForm?patientId=&patientAppointmentId=` | 划界案`fullFormDto.groups[].groupQuestions[]`) (中文(简体) ). 问题ID必须属于形式,回答问题ID(文本问题采取 `id: 0` 有打出值的),单选题一答;违反为400个"问题细节",未知患者或表404. → `{success: true, message}`。 。 。 . |
| `GET /externalapi/Patients/SearchForPatient?FirstName&LastName&zipCode&DateOfBirth` | 对大小写不敏感的名称, ZIP, 以及其中任何一个中的日期 `YYYY-MM-DD`, (中文(简体) ), `MM/DD/YYYY`,ISO − `{isExists: true, eligibleId, programId}`; 无匹配 **400个** `{isExists: false, message}` (我们的客户读出400"没有这样的病人"). |
| `GET /externalapi/States` | 51个国家 `{id, stateUid, name, abbreviation, …}` (UT为45). |
| `POST /externalapi/Patients` | 创建一个病人并回复 CareTalk的全部记录(`id`, (中文(简体) ), `eligibilityId` =: `id`, (中文(简体) ), `userState`, (中文(简体) ), `formattedUserMobile`, (中文(简体) ), `clientId`(中文(简体) ). |
| `GET /externalapi/PatientAppointments/GetFreeSlots?date&programId&eligibleId` | 两名医生的半小时时间为9:00-16:30,减去预定的医生. |
| `POST /externalapi/PatientAppointments` | `{doctorId, patientId (the eligible id), from, to}` → `{id, patientId: null, eligibilityId, appointmentStatus: 1, physicianId}`;取出或未知槽为400. |
| `GET /externalapi/PatientAppointments/GetPatientAppointmentsByEligibleId/{id}` | 那个病人的预约. |

未校正或已过期的电话是空的 401 与 `WWW-Authenticate: Bearer` (我们的客户端) 登录一次并重试。 校验错误为 ASP.NET 问题详情 `{type, title, status, errors, traceId}`。 。 。 .

### 管理员(超过标准合同)

| 路线 | 效果 |
| --- | --- |
| `GET /__admin/form-submissions[?patientId=]` | 已保存的回合 : `{formRoundId, formId, patientId, patientAppointmentId, submitDate, answers: [{questionId, answerIds, freeAnswerText}]}`。 。 。 . |
| `GET` 编号 : `POST /__admin/patients` | 列出患者,或者直接创建一个(患者POST机构),所以搜索会找到它. |
| `GET /__admin/forms`, (中文(简体) ), `PUT /__admin/forms/:id` | 列出或添加/替换表格定义(`fullFormDto` 形状). |
| `POST /__admin/appointments/:id/status` | `{appointmentStatus}`:更改预约状态代码. |
| `GET/PUT /__admin/settings` | `{tokenTtlSeconds?, users?: [{userName, password}], apiKeys?, programId?}`。 。 。 . |

错误预设( E)`POST /__admin/faults {"preset": "<name>", "count"?: n}`: `login_failure`, (中文(简体) ), `invalid_credentials`, (中文(简体) ), `token_expired` (每项业务适用计数), `server_error`, (中文(简体) ), `gateway_html`, (中文(简体) ), `form_not_found`, (中文(简体) ), `patient_not_found`, (中文(简体) ), `save_rejected`, (中文(简体) ), `connection_drop`, (中文(简体) ), `slow`。 。 。 .

### 命名空间

`x-mockingbird-namespace`页:1 `/__admin/ns/<name>` 前缀在 `CARETALK_API_URL`符号 携带他们被发给的API用户,所以 `PUT /__admin/credentials {"credentials": {"<CARETALK_USERNAME>": "<ns>", "<CARETALK_API_KEY>": "<ns>"}}` 运行两种认证样式.

### 故意不模拟

-   CareTalk在表格背后的临床工作流程(审查,工作人员创建的表格回合), 资格档案、保健大猩猩检索、药物和诊断.
-   真正的医生日历:槽被合成;时区被固定到山上.
-   活形式目录: `DEFAULT_FORMS` 以 CareTalk 形状合成(活平相) 脚本种子模拟器 从β环境的形态代替.

## API 密码

| 导出 | 仁爱 | 说明 |
| --- | --- | --- |
| `CareTalkAPI` | 类 | 进程模拟器 : `fetch(request)`, (中文(简体) ), `reset()`, (中文(简体) ), `addPatient(body)`, (中文(简体) ), `slots(date)`, (中文(简体) ), `setAppointmentStatus(id, status)`, (中文(简体) ), `upsertForm(form)`, (中文(简体) ), `rounds()`, (中文(简体) ), `patients()`选项: `sqlite`, (中文(简体) ), `now`, (中文(简体) ), `namespace`, (中文(简体) ), `forms`, (中文(简体) ), `settings`。 。 。 . |
| `createRuntime` | 函数 | 全面服务合同的仿真器(保健、管理员、命名空间、证书、预设)。 选项 : `forms`, (中文(简体) ), `settings`, (中文(简体) ), `clock`, (中文(简体) ), `seed`, (中文(简体) ), `adminKey`, (中文(简体) ), `onLog`, (中文(简体) ), `sqlite`。 。 。 . |
| `CARETALK_PRESETS` | 对象 | 每个命名的断层预设. |
| `CARETALK_NAMESPACE` | 字符串 | 服务名称, `"caretalk"`。 。 。 . |
| `DEFAULT_FORMS` | 数组 | 种子形式定义(健康史101,AOE问题102). |
| `DEFAULT_DOCTORS` | 数组 | 医生可以免费抽出时间. |
| `US_STATES` | 数组 | 这个 `/externalapi/States` 作行相会. |
| `tokenCredential` | 函数 | API 用户被发一个令牌,或者静态密钥(如何将证书映射到命名空间). |
| `normalizeDate` | 函数 | `YYYY-MM-DD` 从ISO, `YYYY-MM-DD` 或者说 `MM/DD/YYYY`。 。 。 . |
| `problem` | 函数 | 构建 ASP.NET 问题细节响应. |
| `document`, (中文(简体) ), `operationIds`, (中文(简体) ), `supportedOperationIds` | 数值 | OpenAPI合同及其操作代号. |
| `createServer`, (中文(简体) ), `serveTarget`, (中文(简体) ), `DEFAULT_PORT` (单位:千美元)`./server`(中文(简体) ) | 节点 | 服务过来 `node:http`; 数据 `serve` CLI目标(`--api-user`, (中文(简体) ), `--api-key`; 开口8823. |

部分 [嘲笑鸟](https://github.com/crvouga/mockingbird)。 。 。 .

## 常见问题

### @crvouga/mockingbird-service-caretalk 是什么？

状态模拟 CareTalk 外部 API:客户端-登录符,GetForm定义,SavePatientForm回合,患者搜索/插入,状态,免费插槽和预约\.

### 如何安装 @crvouga/mockingbird-service-caretalk？

在项目目录运行 npm install @crvouga/mockingbird-service-caretalk，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 mockingbird-caretalk，可以用 npx mockingbird-caretalk 直接运行。

### @crvouga/mockingbird-service-caretalk 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @crvouga/mockingbird-service-caretalk 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @crvouga/mockingbird-service-caretalk 可以商用吗？

@crvouga/mockingbird-service-caretalk 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @crvouga/mockingbird-service-caretalk 的下载量有多少？

根据 npm 官方下载统计，@crvouga/mockingbird-service-caretalk 在 2026/10/11 – 2026/11/09 这 30 天内被下载 3,163 次，日均约 105 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @crvouga/mockingbird-service-caretalk 还在维护吗？

最新版本 3\.11\.0 发布于 2026/11/11（今天）；至今共发布 42 个版本，其中过去 12 个月发布了 42 个；首次发布于 2026/09/23。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

