@crvouga/mockingbird-service-caretalk

中文文档
3.11.0发布于 2026/11/11MITTypeScriptES Module构建来源已验证近 30 天下载 3163

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

中文使用文档
文档目录7 节
  1. 安装
  2. 使用量
  3. 路线
  4. 管理员(超过标准合同)
  5. 命名空间
  6. 故意不模拟
  7. API 密码

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

本地模拟器。 真正的API合同. 部分 嘲笑鸟。 。 。 .

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

  • 行动范围: 支助
  • 供应商不公布具体内容:合同openapi.yaml由手写自 消费者的zod计划和接口(caretalk.types.ts, (中文(简体) ), caretalk-forms.type.ts) (中文(简体) ).

安装

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 钉住他们.

npx mockingbird-caretalk serve --port 8823 --api-user "$CARETALK_USERNAME:$CARETALK_PASSWORD" --api-key "$CARETALK_API_KEY"
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/States51个国家 {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.

部分 嘲笑鸟。 。 。 .

版本与发布记录

@crvouga/mockingbird-service-caretalk 共发布 42 个版本,首次发布于 2026/09/23;过去 12 个月发布了 42 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
3.11.0latest2026/11/11今天
3.10.92026/11/037 天前
3.10.82026/11/038 天前
3.10.72026/11/038 天前
3.10.62026/11/038 天前
3.10.52026/11/038 天前

关于 @crvouga/mockingbird-service-caretalk 的常见问题

@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 和提交记录判断。