@cosyte/fhir

中文文档
0.1.8发布于 2026/11/10MITTypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 3441

FHIR R4 for Node.js and TypeScript:一个资源模型,将每个值都完全保持为写入,JSON和XML编码,分层验证,以及状态和否定的安全读取.

中文使用文档
文档目录11 节
  1. 为什么会这样
  2. 状态
  3. 安装
  4. 使用量
  5. API 密码
  6. PHI 与安全
  7. 文档
  8. 支助
  9. 警卫
  10. 捐款
  11. 许可证
The Cosyte logo on its own white ground: the icon beside the word Cosyte.

@cosyte/fhir (英语)

读取真实世界的 FHIR R4, 将每个值都精确地保留在它上, 并对照您的配置文件验证它 .

npm version CI License: MIT Node

FHIR R4 for Node.js and TypeScript:一个资源模型,将每个值都完全保持为写入,JSON和XML编码,分层验证,以及状态和否定的安全读取.

为什么会这样

阅读 FHIR 正确 需要的不只是 JSON 解析: a decimal 写入 0.010 一定要留下来 0.010,一个 integer64 必须保持每一个数字, 地位、修饰或否定绝不必须是 跳过,因为错过了 refuted 读起来正好相反。 我们建造了 @cosyte/fhir 工程师 从服务器或EHR读取FHIR R4(格式ONC HTI-1将§170.315(g)(10)绑入美国) Core and SMART on FHIR),并且必须在不首先读取规格的情况下将这些值正确取出. 类型定义仅描述资源形状,在运行时不检查任何内容,以及 JSON.parse 转弯 0.010 输入数字 0.01 对修饰者一无所知 这个图书馆读,写, 并用零运行时间依赖性验证 FHIR R4,并以编码的理由告诉你它能做什么 不安全阅读.

状态

0.1线. 从0.1算出公共API:导出的名称、选项、结果形状和 发行代码是我们保持稳定的表面。 虽然包裹在1.0以下, 破碎的改变船 在小版本中,并在 更改日志从 0.0.10 变化升级 判决:R4本身的局限性现在在没有提供剖面资料的情况下被评估,因此一个文件读作: 无效。 更改日志列出每个更改.

它所涵盖,针对FHIR R4(4.0.1:读取并写入 JSON 和 XML 成一个不可改变的 模型; 层中的验证(结构、 核心、 值域、 R4 自身对 8个建模资源类型,数量和UCUM,绑定强度,以及您提供或作者的配置 与 defineProfile,包括他们的FHIRPath invatants) readSafety 财务报告和审定财务报表 assertSafeToSummarize 安全读取;和 Bundles, 引用和流出批量数据 NDJSON。 5个R5 和 DSTU2 文档可以读取,因为该模型是无图案的,但是它们不被校验 他们自己的定义.

尚未覆盖:按资源情况分类的模型(内置结构方案包括基本要素) 加上8个示范资源类型), type 财务报告和审定财务报表 profile 歧视者 PROFILE_SLICE_UNCHECKED,然后不检查切片本身的制约因素,因为没有发生 在所支持子集外的FHIRPath(已报告) INVARIANT_UNCHECKED,从未通过),捆绑名词或美国 Core 内容, spec-clean JSON 所写的 从一个读出 XML 的模型中读取,单位转换,以及执行交易 Bundle .

安装

# pnpm (recommended). Also works with: npm install @cosyte/fhir  |  yarn add @cosyte/fhir
pnpm add @cosyte/fhir

节点js22或后期,于22,24和26日进行测试. 一揽子船舶具有无害环境管理和共同JS的双重作用 两者的类别声明,因此 import 财务报告和审定财务报表 require 既工作又不需要兼容性 嘘 零运行时间依赖,它会导入已建的节点.

使用量

阅读文档,保留其准确值,并获得判决. 以下观察是合成的: 其中的值是被编造的,同一文档作为测试固定在此存储库中.

import { parseResource, readObservationValue, validateResource } from "@cosyte/fhir";

const document = `{
  "resourceType": "Observation",
  "id": "syn-0001",
  "status": "final",
  "code": { "coding": [{ "system": "http://loinc.org", "code": "8480-6" }] },
  "subject": { "reference": "Patient/syn-0001" },
  "effectiveDateTime": "2026-01-05",
  "valueQuantity": {
    "value": 120.0,
    "unit": "mmHg",
    "system": "http://unitsofmeasure.org",
    "code": "mm[Hg]"
  }
}`;

const { resource, issues } = parseResource(document);

// The magnitude was written 120.0: the read keeps that exact form and says the protection mattered.
issues.map((issue) => issue.code); // => ["DECIMAL_PRECISION_AT_RISK"]

// Branch on the value[x] type before touching a magnitude, and compare on the UCUM code.
const reading = readObservationValue(resource);
reading?.type; // => "Quantity"
reading?.quantity?.value?.raw; // => "120.0"
reading?.quantity?.code; // => "mm[Hg]"

validateResource(resource).valid; // => true

快速开始 docs.cosyte.com/fhir (中文(简体) ) 同一文档步骤 一步步,和 examples/ 持有四个可运行 程序:读取和验证,安全读取,JSON和XML,以及用 Bulk Data NDJSON 的 Bundles.

API 密码

所有船只都从一个入境点出发,没有次道进口.

  • 读而写之. parseResource 财务报告和审定财务报表 serializeResource 为JSON, parseResourceXml 财务报告和审定财务报表 serializeResourceXml 用于XML,超过一个无计划模型,以及 nodesEquivalent 比较a 模型从一个格式读取,模型从另一个格式读取。 A 类 decimal 或一个 integer64 保留 其准确案文(FhirDecimal, (中文(简体) ), FhirInteger64),并从未通过JavaScript的编号.
  • 验出. validateResource 返回时 valid问题,以及 toOperationOutcome() 将提交 他们是一个 OperationOutcome通过 profiles 您正在装入 loadStructureDefinition 或者说 作者为 defineProfile,则a terminology 用于代码有效性的服务.
  • 读取状态和否定. readSafety 表面状态、修饰和否定. assertSafeToSummarize 掷出 FhirSafetyError,仅在资源持有时携带位置 无法诚实总结的东西,比如 modifierExtension 它不理解这一点.
  • 读取测量值 . readObservationValue 树枝 value[x] 键入并保留 大学 code,以及 readMedicationDoses 读取剂量量。 没有一个单位是永远改变.
  • 行李箱和NDJSON. readBundle 从批次中告知交易(全部或无) 既不执行, resolveReference 解决相对、绝对、逻辑和 #fragment 参考文献,以及 streamNdjson 逐行读取 Bulk 数据导出行, 报告一条错误的行 继续.

PHI 与安全

FHIR资源携带受保护的卫生信息, 所以处理你交出的每个文件 作为PHI.

  • 它在记忆中起作用. 它在记忆中读取、验证和写作,没有其他内容。 它打开没有 套接字, 不写入磁盘, 并且不会在运行时获取任何内容; 它没有运行时间依赖性, 导入内置的节点,并调用名词服务,除非您通过.
  • 诊断没有价值. 一个问题是一个代码和一个FHIRPath的位置, 从来没有它的价值 被抚养长大的 一个位置可以重复所提供文档的元素名称, 当该名称有 fHIR 名称的已公布形式,因此将一个位置作为文档的出处.
  • XML 读取器只接受纯 XML . 其它的都用打字机拒绝 FhirXmlError 在输入字符串(在UTF-16代码单元中,不是字节)中带有代码和偏移,永远不会 文档的一角。 阅读器执行不 I/O 并解决不 URI 。 清除出问题的页面 打开 docs.cosyte.com/fhir (中文(简体) ) 列出每次拒绝及其代码.
  • 涅盘有界. 两个读取器在固定的深度停留 输入错误,所以一个深陷 文档会干净的失败, 而不是耗尽堆栈.
  • 地位或否定并非一言不发. assertSafeToSummarize 拒绝资源 携带 modifierExtension 它不理解, 彼此的形状 它不能总结 老实说,而不是让一个摘要走过它.
  • 你仍然拥有的东西. 运输、储存、保留、出入控制、审计记录和 日志行您自己的代码 。 这个图书馆不代表你要求遵守规定.

文档

  • docs.cosyte.com/fhir (中文(简体) ):安装、快速启动、如何启动 指南、核心概念、当前限制、故障排除、API参考,以及我们如何测试 组合并测量其性能.
  • documentation/capabilities.md数字 : 完全的读取能力, 逐个逐层, 每一个都检查什么,它留下什么.
  • documentation/ 存储器中: 功能读取,参照共享的R4兼容套件测量FHIRPath的覆盖范围,以及 架构决定.
  • CHANGELOG.md: 每一变化,与 打破那些呼唤.

支助

错误报告,问题,和 FHIR 怪胎 从服务器和EHRs 你连接的归属 GitHub 问题,最小的复制使用 仅限合成数据. 想法和开放的问题也可以去 讨论情况我们 支持页面 列出每个路径.

需要一个FHIR R4集成, 或者为您托管和运行? 看我们的 融合服务。 。 。 .

警卫

通过GitHub 私人脆弱性报告 这上面 存储器,或者通过电子邮件发送到 安全性@ cosyte.com。使用合成数据 只有这个 我们 安全政策 说里面是什么 范围以及我们支持的版本.

捐款

拉出请求是受欢迎的;每一个固定必须合成,永远不是真正的病人的数据.

pnpm install
pnpm build       # dual ESM + CJS + .d.ts
pnpm typecheck
pnpm lint
pnpm test

每个有意义的变化都有一个变化(pnpm changeset数字 : minor 新能力或中断 在版本低于1.0时更改, patch 而它的总结 成为变化 输入 CHANGELOG.md。见 CONTRIBUTING.md。 。 。 .

许可证

麻省理工学院,版权:Cosyte LLC. 见 自由主义名称 此软件包工作的标准和代码系统属于其所有者;见 贸易。 。 。 .

版本与发布记录

@cosyte/fhir 共发布 10 个版本,首次发布于 2026/08/27;过去 12 个月发布了 10 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.8latest2026/11/10今天
0.1.72026/11/092 天前
0.1.62026/11/082 天前
0.1.52026/11/082 天前
0.1.42026/11/082 天前
0.1.32026/11/082 天前

关于 @cosyte/fhir 的常见问题

@cosyte/fhir 是什么?

FHIR R4 for Node.js and TypeScript:一个资源模型,将每个值都完全保持为写入,JSON和XML编码,分层验证,以及状态和否定的安全读取.

如何安装 @cosyte/fhir?

在项目目录运行 npm install @cosyte/fhir,或使用 pnpm add / yarn add / bun add。

@cosyte/fhir 支持 TypeScript 吗?

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

@cosyte/fhir 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@cosyte/fhir 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@cosyte/fhir 可以商用吗?

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

@cosyte/fhir 的下载量有多少?

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

@cosyte/fhir 还在维护吗?

最新版本 0.1.8 发布于 2026/11/10(今天);至今共发布 10 个版本,其中过去 12 个月发布了 10 个;首次发布于 2026/08/27。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。