@cosyte/fhir (英语)
读取真实世界的 FHIR R4, 将每个值都精确地保留在它上, 并对照您的配置文件验证它 .
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,则aterminology用于代码有效性的服务. - 读取状态和否定.
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. 见 自由主义名称 此软件包工作的标准和代码系统属于其所有者;见 贸易。 。 。 .