资讯动态

OpenMed TypeScript 客户端教程:如何用 Node.js 三步接入本地医疗 AI 服务

发布时间:2026/9/17 22:45:12 来源:尧图企业网站定制
OpenMed TypeScript 客户端教程如何用 Node.js 三步接入本地医疗 AI 服务【免费下载链接】openmedLocal-first healthcare AI: clinical NER HIPAA PII de-identification that runs 100% on-device. 2,200 medical models, 21 languages, Apple MLX Python, no cloud, no patient data leaving your network. Apache-2.0项目地址: https://gitcode.com/GitHub_Trending/ope/openmedOpenMed 是一个本地优先的医疗 AI 框架提供临床实体识别NER与 HIPAA 合规的 PII 脱敏能力2,200 医疗模型、21 种语言全部运行在你自己的设备上。它的 TypeScript REST 客户端openmed/rest-client是零运行时依赖的轻量封装让你在 Node.js 中像调用本地函数一样调用 PII 提取、文本脱敏、医学实体分析等 API——无需任何第三方 HTTP 库数据不出内网。为什么选择 OpenMed 的 TypeScript 客户端 很多团队的第一反应是医疗 AI 得用 Python但 OpenMed 的服务端是一个标准 REST APIFastAPI 实现因此任何语言都能接入。官方内置的 TypeScript 客户端 有几个对前端/Node.js 工程师特别友好的特性特性说明零依赖package.json 中dependencies为空只用全局fetch类型安全完整 TypeScript 类型定义请求/响应结构一目了然可注入 fetch方便在测试中 mock、或兼容没有全局 fetch 的运行时统一错误模型非 2xx 响应抛出OpenMedApiError保留服务端错误信封流式脱敏NDJSON 流式接口处理长文本不卡连接客户端源码只有约 760 行核心类是 OpenMedClient实现了analyze、ground、extractPii、deidentify、privacyGateway、createJob等 20 多个方法与 REST 服务的端点一一对应端点清单见 docs/rest-service.md。一键安装步骤从仓库到项目 第 1 步获取仓库git clone https://gitcode.com/GitHub_Trending/ope/openmed第 2 步在你的 Node.js 项目中安装客户端npm install ./openmed/clients/typescript第 3 步类型检查验证npm run typecheck 客户端是 ESM 模块type: module如果你的项目还是 CommonJS建议新建一个 ESM 子包或者用动态import()引入。快速上手5 分钟跑通 PII 脱敏 先确保 OpenMed 服务已在本地运行安装与启动方式参考 docs/rest-service.md 的 Run Locally 章节默认监听127.0.0.1:8080。然后写一个最小示例import { OpenMedClient } from openmed/rest-client; const client new OpenMedClient({ baseUrl: http://localhost:8080, }); // 1. 健康检查确认服务在线 await client.health(); // 2. 提取 PII一条命令找出文本中的个人敏感信息 const pii await client.extractPii({ text: Paciente: Maria Garcia, DNI: 12345678Z, lang: es, use_smart_merging: true, }); // 3. 脱敏mask 方法直接返回掩码后的文本 const deidentified await client.deidentify({ text: Paciente: Maria Garcia, DNI: 12345678Z, method: mask, lang: es, keep_mapping: true, });就这么简单。完整示例含术语锚定、流式脱敏、异步任务等在 clients/typescript/README.md 中可以找到。核心功能TypeScript 客户端能做什么1️⃣ 临床实体分析analyze与术语锚定groundanalyze()调用本地 NER 模型从病历文本中识别疾病、药品等临床实体ground()可将实体映射到 RxNorm、SNOMED 等标准术语库且支持offline: true完全离线运行const grounded await client.ground({ text: Aspirin 81 mg daily, systems: [rxnorm], source_language: en, offline: true, });2️⃣ 流式脱敏长文本不阻塞 ⚡大段病历不该卡住整个请求。deidentifyStream()以 NDJSON 流式返回逐块拿到脱敏后的文本片段const ndjson await client.deidentifyStream({ text: veryLongClinicalNote, method: mask, chunk_size: 1024, }); for (const line of ndjson.split(\n)) { if (!line) continue; const event JSON.parse(line) as { type: string; redacted_text?: string }; if (event.type chunk) emitRedacted(event.redacted_text ?? ); }3️⃣ 异步任务与 Webhook批量脱敏的正确姿势大批量文档脱敏时客户端连接不应该一直挂着。createJob()提交后台任务配合 webhook 在完成后回调再用getJob()轮询状态const job await client.createJob({ documents: [{ id: note-1, text: ... }], method: mask, webhook: { url: https://pipeline.example.com/openmed/jobs, secret: ... }, }); const status await client.getJob(job.id);异步任务机制详见 docs/serving/async-jobs.md。4️⃣ 模型管理检查与卸载服务端的模型是共享缓存的客户端可以查看当前加载了哪些模型、用完即卸载以释放内存const loaded await client.loadedModels(); // 查看已加载模型 await client.unloadModels({ all: true }); // 全部卸载优雅的错误处理 ️所有非 2xx 响应都会抛出OpenMedApiError并完整保留服务端的错误信封code、message、details你可以据此做精确的分支处理try { await client.deidentify({ text: , method: mask }); } catch (error) { if (error instanceof OpenMedApiError) { console.error(error.status); // HTTP 状态码 console.error(error.code); // 如 validation_error console.error(error.details); // 字段级校验细节 } }例如空文本会返回validation_errordetails里会精确指出body.text字段不能为空白。完整错误信封格式见 clients/typescript/README.md 的 Error Handling 一节错误码体系见 docs/api/errors.md。进阶测试与自定义 fetch 注入因为fetch是可注入的单元测试里可以 mock 掉网络层完全离线验证逻辑const client new OpenMedClient({ baseUrl: http://localhost:8080, fetch: async (input, init) mockFetch(input, init), });生产部署注意事项 认证客户端不内置凭据管理认证头通过标准fetch机制处理。对外部署前务必在服务端配置认证docs/serving/authentication.md。传输安全回环地址可用 HTTP任何非本机部署必须走 HTTPS绝不明文传输临床数据。PII 最小化示例中的临床文本均为合成数据请在生产代码中遵循同样原则——日志与测试数据都不放真实患者信息docs/security/no-raw-phi-logging.md。批量性能从批量基准看服务端批量路径比单条处理快 2 倍以上批量调用createJob()是吞吐最优解。基准原始数据见 docs/benchmarks/golden.md。小结 你的场景推荐方法快速验证服务可用性health()livez()单条文本找 PIIextractPii()文本脱敏mask/remove/hash/日期偏移deidentify()超长文档实时脱敏deidentifyStream()批量后台脱敏 回调createJob()/getJob()临床实体识别与术语标准化analyze()/ground()OpenMed 的 TypeScript 客户端证明了零依赖也能覆盖医疗 AI 的全流程一个baseUrl、几行代码Node.js 服务就能获得本地运行、符合 HIPAA Safe Harbor 的 PII 脱敏能力。对于需要把患者数据留在自己网络内的团队这是目前最轻量的接入路径。OpenMed TypeScript 客户端教程如何用 Node.js 三步接入本地医疗 AI 服务OpenMed 是一个本地优先的医疗 AI 框架提供临床实体识别NER与 HIPAA 合规的 PII 脱敏能力内置 2,200 医疗模型、支持 21 种语言全部运行在你自己的设备上。它的 TypeScript REST 客户端openmed/rest-client是零运行时依赖的轻量封装让你在 Node.js 中像调用本地函数一样调用 PII 提取、文本脱敏、临床实体分析等 API——无需任何第三方 HTTP 库患者数据不出内网。为什么选择 OpenMed 的 TypeScript 客户端 很多团队的第一反应是医疗 AI 得用 Python但 OpenMed 的服务端是一个标准 REST APIFastAPI 实现任何语言都能接入。官方内置的 TypeScript 客户端 对 Node.js 工程师有这几个友好特性特性说明零依赖package.json 中dependencies为空只依赖全局fetch类型安全完整 TypeScript 类型定义请求/响应结构一目了然可注入 fetch测试时可 mock兼容没有全局 fetch 的运行时统一错误模型非 2xx 响应抛出OpenMedApiError完整保留服务端错误信封流式脱敏NDJSON 流式接口处理长文本不卡连接客户端源码仅约 760 行核心类是 OpenMedClient实现了analyze、ground、extractPii、deidentify、privacyGateway、createJob等 20 多个方法与 REST 服务端点一一对应端点清单见 docs/rest-service.md。一键安装步骤从仓库到项目 第 1 步获取仓库git clone https://gitcode.com/GitHub_Trending/ope/openmed第 2 步在你的 Node.js 项目中安装客户端npm install ./openmed/clients/typescript第 3 步类型检查验证npm run typecheck 客户端是 ESM 模块type: module。如果项目还是 CommonJS建议用动态import()引入或单独建一个 ESM 子包。快速上手5 分钟跑通 PII 脱敏 先确保 OpenMed 服务已在本地运行安装与启动方式见 docs/rest-service.md 的 Run Locally 章节默认监听127.0.0.1:8080。然后写一个最小示例import { OpenMedClient } from openmed/rest-client; const client new OpenMedClient({ baseUrl: http://localhost:8080, }); // 1. 健康检查确认服务在线 await client.health(); // 2. 提取 PII一条命令找出文本中的个人敏感信息 const pii await client.extractPii({ text: Paciente: Maria Garcia, DNI: 12345678Z, lang: es, use_smart_merging: true, }); // 3. 脱敏mask 方法直接返回掩码后的文本 const deidentified await client.deidentify({ text: Paciente: Maria Garcia, DNI: 12345678Z, method: mask, lang: es, keep_mapping: true, });就这么简单。完整示例含术语锚定、流式脱敏、异步任务等见 clients/typescript/README.md。核心功能TypeScript 客户端能做什么1️⃣ 临床实体分析analyze与术语锚定groundanalyze()调用本地 NER 模型从病历文本中识别疾病、药品等临床实体ground()可将实体映射到 RxNorm、SNOMED 等标准术语库并支持offline: true完全离线运行const grounded await client.ground({ text: Aspirin 81 mg daily, systems: [rxnorm], source_language: en, offline: true, });2️⃣ 流式脱敏长文本不阻塞 ⚡大段病历不该卡住整个请求。deidentifyStream()以 NDJSON 流式返回逐块拿到脱敏后的文本片段const ndjson await client.deidentifyStream({ text: veryLongClinicalNote, method: mask, chunk_size: 1024, }); for (const line of ndjson.split(\n)) { if (!line) continue; const event JSON.parse(line) as { type: string; redacted_text?: string }; if (event.type chunk) emitRedacted(event.redacted_text ?? ); }3️⃣ 异步任务与 Webhook批量脱敏的正确姿势大批量文档脱敏时客户端连接不应该一直挂着。createJob()提交后台任务完成后由 webhook 回调再配合getJob()轮询状态const job await client.createJob({ documents: [{ id: note-1, text: ... }], method: mask, webhook: { url: https://pipeline.example.com/openmed/jobs, secret: ... }, }); const status await client.getJob(job.id);异步任务机制详见 docs/serving/async-jobs.md。4️⃣ 模型管理检查与卸载服务端模型是共享缓存的客户端可检查当前加载了哪些模型用完即卸载以释放内存const loaded await client.loadedModels(); // 查看已加载模型 await client.unloadModels({ all: true }); // 全部卸载优雅的错误处理 ️所有非 2xx 响应都会抛出OpenMedApiError并完整保留服务端的错误信封code、message、details可据此做精确分支处理try { await client.deidentify({ text: , method: mask }); } catch (error) { if (error instanceof OpenMedApiError) { console.error(error.status); // HTTP 状态码 console.error(error.code); // 如 validation_error console.error(error.details); // 字段级校验细节 } }例如空文本会返回validation_errordetails中会精确指出body.text字段不能为空白。错误信封的完整格式见 clients/typescript/README.md 的 Error Handling 一节错误码体系见 docs/api/errors.md。进阶技巧测试中的 fetch 注入因为fetch可注入单元测试能 mock 掉整个网络层完全离线验证逻辑const client new OpenMedClient({ baseUrl: http://localhost:8080, fetch: async (input, init) mockFetch(input, init), });生产部署注意事项 认证客户端不内置凭据管理认证头通过标准fetch机制处理对外部署前务必在服务端配置认证docs/serving/authentication.md。传输安全回环地址可用 HTTP任何非本机部署必须走 HTTPS绝不明文传输临床数据。PII 最小化示例中的临床文本均为合成数据生产代码应遵循同样原则——日志与测试数据都不放真实患者信息docs/security/no-raw-phi-logging.md。批量性能从批量基准看服务端批量路径比单条处理快 2 倍以上批量调用createJob()是吞吐最优解基准数据见 docs/benchmarks/golden.md。小结 你的场景推荐方法快速验证服务可用性health()/livez()单条文本找 PIIextractPii()文本脱敏mask/remove/hash/日期偏移deidentify()超长文档实时脱敏deidentifyStream()批量后台脱敏 回调createJob()/getJob()临床实体识别与术语标准化analyze()/ground()OpenMed 的 TypeScript 客户端证明了零依赖也能覆盖医疗 AI 全流程一个baseUrl、几行代码Node.js 服务就能获得本地运行、符合 HIPAA Safe Harbor 的 PII 脱敏能力。对于需要把患者数据留在自己网络内的团队这是目前最轻量的接入路径。【免费下载链接】openmedLocal-first healthcare AI: clinical NER HIPAA PII de-identification that runs 100% on-device. 2,200 medical models, 21 languages, Apple MLX Python, no cloud, no patient data leaving your network. Apache-2.0项目地址: https://gitcode.com/GitHub_Trending/ope/openmed创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价