# @cosyte/synth 中文文档

规范地址：https://npmcn.com/package/%40cosyte/synth/

版本：0\.1\.5
npm 元数据更新时间：2026-11-10T11:54:49.889Z
中文译文更新时间：2026-11-10T21:04:19.032Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40cosyte/synth
原文对照：https://npmcn.com/package/%40cosyte/synth/?lang=original
项目主页：https://docs.cosyte.com/synth
源码仓库：https://github.com/cosyte/synth

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

- 包体积（解压后）：4.3 MB，58 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.0\.0
- 运行依赖：0 个
- peer 依赖：@cosyte/hl7 ^0\.1\.0，@cosyte/x12 ^0\.1\.0，@cosyte/astm ^0\.1\.0，@cosyte/ccda ^0\.1\.0，@cosyte/deid ^0\.1\.0，@cosyte/fhir ^0\.1\.0，@cosyte/ncpdp ^0\.1\.0
- 首次发布：2026-07-29T21:59:46.053Z
- 最新版本发布：2026-11-10T11:54:49.559Z
- 近 30 天下载量：6926（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：15（近 12 个月 15 个）

## 中文简介

用于节点.js和TypeScript的定型、可种子的合成保健试验装置:HL7 v2、FHIR R4和美国Core、C-CDA、X12、NCPDP和ASTM,通过建筑进行光谱清理,从未进行真正的PHI.

## 安装

```sh
npm install @cosyte/synth
```

也可以使用：`pnpm add @cosyte/synth`、`yarn add @cosyte/synth`、`bun add @cosyte/synth`

## README

[![The Cosyte logo on its own white ground: the icon beside the word Cosyte.](https://cosyte.com/tile/cosyte-lockup-tile-on-light-1200x300.png)](https://cosyte.com/)

# @ cosyte/ synth (英语)

> 种子可复制 **合成保健装置** 用于Node.js和TypeScript: spec-clean,从未真实的PHI.

[![npm version](https://img.shields.io/npm/v/@cosyte/synth.svg)](https://www.npmjs.com/package/@cosyte/synth) [![CI](https://img.shields.io/github/actions/workflow/status/cosyte/synth/ci.yml?branch=main&label=CI)](https://github.com/cosyte/synth/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/cosyte/synth/blob/main/LICENSE) [![Node](https://img.shields.io/badge/node-%3E%3D22.0.0-brightgreen.svg)](https://nodejs.org/)

用于节点.js和TypeScript的定型、可种子的合成保健试验装置:HL7 v2、FHIR R4和美国Core、C-CDA、X12、NCPDP和ASTM,通过建筑进行光谱清理,从未进行真正的PHI.

## 为什么会这样

医疗一体化测试套件需要信息和文件 看起来像什么 发送系统产生, 并且它决不能持有 一个真正的病人的数据。 复制生产样品 并用手擦洗它们 就会冒第二个风险 手写固定装置很少得到第一个 还有 无法将每次运行中的变化作为黄金文件执行.

`@cosyte/synth` 生成可复制的合成测试 corpora 跨越了六种 Cosyte 格式 (HL7 v2,), FHIR R4 / US Core, C-CDA, X12, NCPDP,和ASTM). 这是一个 **消费者** 会 议 日 程 和 议 程 它建造了每个文物 **通过剖析器自己的构建器/序列器** (所以每个文物通过解析器重新分出零警告) 并绘制每个标识符,名称, 日期、电话和地址 **保证不碰撞合成源**这是一个 **格式/符合生成器,而不是临床模拟器**: 它不模拟疾病发展 (这是Synthea).

## 状态

0.1行,发布为npm. npm 软件包页面上显示的版本是 即为活;此页面从不重复。 在1.0以下,一个破碎的更改提高了小版本和 changelog说什么坏了。 发电机是 **特性完成**页:1 种子-PRNG核心、合成-安全供应商和回程操纵; **跨越所有 六种格式**页:1`ADT`编号 :`ORU`编号 :`ORM`编号 :`SIU`编号 :`VXU`),FHIR R4 / US Core (全临床) 设置 + `collection`编号 :`transaction`编号 :`document` C-CDA R2.1(《公约》+转介说明),X12 005010 837P/I/D, 835, 271), NCPDP (SCRIPT NewRx / RxRxRevewal / RxChange + Telecom B1/B2/B3),和ASTM (E1394) 记录报告 + E1381 框架),每个构建 **通过其解析器自己的构建器/序列器**· ; **供应商 模式**,用于三个最富有的剖面图系统(**HL7 v2, C- CDA, ASTM**, (中文(简体) ), (一) 每一发件准确达到预定的发件警告(预定的发件警告合同) **`@cosyte/deid` 配对循环**,一个闭合验证带,可以去除生成的输出 并证明所有人工合成的 PHI 哨兵都被取出.

**被推迟(实际上目前已超出范围):** 怪异的食谱 **FHIR / X12 / 国家CPDP** (还有任何怪事) - 需要私人供应商调查 **270国** 资格 _请求_ nCPDP STRIPT 生命周期 **答复** (两者都跟踪剖析器的构建者表面); **NCPDP STRIPT / ASTM / DICOM 互联网档案馆的存檔,存档日期2013-10-02** 取消识别 配对( 无) `@cosyte/deid` 适配器,或未生成);和 可选 **合成** 临床内容摄取.

## 安装

```bash
npm install @cosyte/synth @cosyte/hl7 @cosyte/fhir @cosyte/ccda @cosyte/x12 @cosyte/ncpdp @cosyte/astm
```

节点js22或后期,于22,24和26日进行测试.

`@cosyte/hl7`, (中文(简体) ), `@cosyte/fhir`, (中文(简体) ), `@cosyte/ccda`, (中文(简体) ), `@cosyte/x12`, (中文(简体) ), `@cosyte/ncpdp`, (中文(简体) ), `@cosyte/astm`,以及 `@cosyte/deid` 为: **可选同伴依赖关系**,每个都只需要它的子路径(`@cosyte/synth/hl7`, (中文(简体) ), `@cosyte/synth/fhir`, (中文(简体) ), `@cosyte/synth/ccda`, (中文(简体) ), `@cosyte/synth/x12`, (中文(简体) ), `@cosyte/synth/ncpdp`, (中文(简体) ), `@cosyte/synth/astm`,以及 `@cosyte/synth/deid`: 最后一个负载 `@cosyte/deid` **加号** 五个人 解说成对, `@cosyte/hl7`, (中文(简体) ), `@cosyte/fhir`, (中文(简体) ), `@cosyte/ccda`, (中文(简体) ), `@cosyte/x12`,以及 `@cosyte/ncpdp`, (中文(简体) ), :只安装您生成的固定件。 软件包核心 **无第三方运行时间依赖关系**。 。 。 .

## 使用量

下面的每一个值都是由构造合成的. 附有每种格式的指南的全文是: 打开 [docs.cosyte.com/synth 页面存档备份,存于互联网档案馆](https://docs.cosyte.com/synth)。 。 。 .

### 生成 spec- clean HL7 v2 消息

HL7 v2 套装封面 `ADT` (单位:千美元)`A01`编号 :`A04`编号 :`A08`, (中文(简体) ), `ORU^R01`, (中文(简体) ), `ORM^O01`, (中文(简体) ), `SIU^S12`,以及 `VXU^V04`数字 : 每一个通过 `@cosyte/hl7`是因为 `buildMessage`,所以它是 spec-clean 通过建筑.

```ts
import { generateAdt, generateOru, generateHl7, hl7Corpus, roundTrip } from "@cosyte/synth/hl7";

// Same seed → byte-identical message, on any machine, any run.
const adt = generateAdt({ seed: 12345, trigger: "A01" });
const oru = generateOru({ seed: 12345 });

// Spec-clean by construction: it round-trips through @cosyte/hl7 with zero warnings.
console.log(roundTrip(adt).specClean); // true
console.log(roundTrip(oru).specClean); // true

// Or generate a reproducible mixed corpus across every family:
const corpus = hl7Corpus({ seed: 42, count: 7 }); // one of each family, cycled
console.log(corpus.artifacts.every((a) => a.warnings.length === 0)); // true, all spec-clean

// Dispatch by kind when the message type is data:
console.log(roundTrip(generateHl7("VXU^V04", 12345)).content.split("\r")[0]); // its MSH segment
```

### 生成 spec- clean FHIR R4 / US 核心资源

这个 `@cosyte/synth/fhir` 子路径构建资源 **结束 `@cosyte/fhir`模型构造器**这样 它们通过构造来进行光谱清理: `validateResource` 和,反对 **真实的美国 核心6.1.0简介** (亲亲亲亲亲亲) `StructureDefinition`s,没有捆绑),符合"美国核心". 诊疗范围包括: `Patient` (基准+美国核心), `Condition`, (中文(简体) ), `Observation` (美国核心实验室) 结果+生命迹象, `MedicationRequest`, (中文(简体) ), `Encounter`, (中文(简体) ), `DiagnosticReport`, (中文(简体) ), `Immunization`, (中文(简体) ), `AllergyIntolerance`, (中文(简体) ), `Procedure`,以及 `Provenance`组装成 `collection`, (中文(简体) ), `transaction`,或 `document` `Bundle`。 。 。 .

也可以请求固定 **由美国Core 6.1.0 简介名称**。 。 。 . `usCoreCoverage()` 报告1 指南所出版的每个配置文件的条目, 以及其库名 URL 以及此构建是否生成 (a) 与《公约》有关的规定; `generateUsCoreProfile()` 返回被覆盖的相片, 否则会被拒绝 生成任何东西。 见 [它做和不做](https://npmcn.com/package/%40cosyte/synth/docs-content/limitations.md)。 。 。 .

```ts
import { generatePatient, generateBundle, fhirCorpus, roundTrip } from "@cosyte/synth/fhir";

// A US Core Patient: same seed → byte-identical resource, anywhere.
const patient = generatePatient({ seed: 12345, profile: "us-core" });

// Spec-clean by construction: it round-trips through @cosyte/fhir with zero errors, byte-stable.
roundTrip(patient).specClean; // true

// A self-contained Bundle assembling a patient + its clinical spine, wired by urn:uuid references:
const bundle = generateBundle({ seed: 42, type: "transaction" });

// Or a reproducible mixed corpus across the whole spine:
const corpus = fhirCorpus({ seed: 2026, count: 6 });
corpus.artifacts.every((a) => a.warnings.length === 0); // true, all spec-clean
```

`@cosyte/fhir` 是一个 **可选同伴依赖**,仅需要用于 `@cosyte/synth/fhir` 子路径.

### 生成 spec- clean C- CDA 文档

这个 `@cosyte/synth/ccda` 子路径构建合并 CDA R2.1 文档 **结束 `@cosyte/ccda`是因为 `buildCcda`**因此,模板ID、LOINC部分代码和结构化/说明性协议是 建构者自己: 文档回转通过 `parseCcda` 与 **无警告**它发出一个 **《防治荒漠化公约》** (单位:千美元)`generateCcd`或一个 **转引说明** (单位:千美元)`generateReferralNote`),各有CCD部分 (问题、过敏、药物、结果、生命迹象、免疫、程序、社会历史) 被重新利用的 干净许可的范例码池里的人.

```ts
import { serializeCcda } from "@cosyte/ccda";
import { generateCcd, generateReferralNote, ccdaCorpus, roundTrip } from "@cosyte/synth/ccda";

// Same seed → byte-identical document. The patient name is from the shipped fake-name pool, the MRN
// lives under a synthetic assigning-authority OID, and every date comes from the seeded generator.
const ccd = generateCcd({ seed: 12345 });
serializeCcda(ccd); // spec-clean C-CDA R2.1 XML

// Spec-clean by construction: it round-trips through @cosyte/ccda with zero warnings.
roundTrip(ccd).specClean; // true
roundTrip(generateReferralNote({ seed: 12345 })).specClean; // true

// Or a reproducible mixed corpus (CCD + Referral Note, cycled):
const corpus = ccdaCorpus({ seed: 42, count: 4 });
corpus.artifacts.every((a) => a.warnings.length === 0); // true, all spec-clean
```

`@cosyte/ccda` 是一个 **可选同伴依赖**,仅需要用于 `@cosyte/synth/ccda` 子路径.

### 生成 X12 交易

这个 `@cosyte/synth/x12` 子路径构建 HIPAA **005010 (韩语)** 交易 **结束 `@cosyte/x12`域名 建设者** (单位:千美元)`build837P/I/D`, (中文(简体) ), `build835`, (中文(简体) ), `build271`因此,ISA/GS/ST.SE/GE/IEA信封 计算出HL的脊椎,控制号,每个段都是建设者自己的:每笔交易 往返 `@cosyte/x12` 与 **无警告**它会发出 **837 (简体中文)** 专业/机构 / 牙科索赔 **835号** 汇款(通过建筑工程核对余额)和 **第271条** 资格 反应.

```ts
import { generate837P, generate835, generate271, x12Corpus, roundTrip } from "@cosyte/synth/x12";

// Same seed → byte-identical EDI. Every subscriber/patient/provider identifier is
// synthetic-by-construction: the provider NPI has a deliberately-INVALID Luhn check digit (so it can
// never be a NPPES-issued NPI), the provider tax id is an SSA never-issued 900-range SSN, member ids
// live under a synthetic assigning authority, and names come from the shipped fake-name pool.
const claim = generate837P({ seed: 12345 });
roundTrip(claim).specClean; // true, re-parses through @cosyte/x12 with zero warnings, byte-stable
roundTrip(generate835({ seed: 7 })).specClean; // true
roundTrip(generate271({ seed: 3 })).specClean; // true

// Or a reproducible mixed corpus (837P/I/D + 835 + 271):
const corpus = x12Corpus({ seed: 42 });
corpus.artifacts.every((a) => a.warnings.length === 0); // true
```

`@cosyte/x12` 是一个 **可选同伴依赖**,仅需要用于 `@cosyte/synth/x12` 子路径.

**推迟:** 页:1 **270国** 资格 _请求_ (单位:千美元)`@cosyte/x12` 船舶 `build270` 在它的0.1行,但是 `synth` 尚未生成270个)和 **供应商-quirk 模式**。 。 。 .

### 生成 NCPDP 消息

这个 `@cosyte/synth/ncpdp` 子路径构建国家CPDP标准 **结束 `@cosyte/ncpdp`自己弹出 表面**,因此,每个信件通过解析器绕行 **无警告**它会发出 **苏格兰** e 规定:`generateNewRx` 通过 `buildNewRx`· ; `generateRxRenewalRequest` 编号 : `generateRxChangeRequest` 通过解析器键入 `ScriptMessage` 型号 + `serializeScript`和 **电信** 药店索赔 (单位:千美元)`generateB1` 账单/ `generateB2` 倒转 / `generateB3` 通过 `buildTelecomRequest`) (中文(简体) ).

```ts
import {
  generateNewRx,
  generateB1,
  ncpdpCorpus,
  scriptRoundTrip,
  telecomRoundTrip,
} from "@cosyte/synth/ncpdp";

// Same seed → byte-identical output. NCPDP carries patient AND prescriber identity: the prescriber NPI
// has a deliberately-INVALID Luhn check digit and the prescriber DEA a deliberately-INVALID checksum
// (so neither can denote a real provider); patient/cardholder ids live under a synthetic assigning
// authority, phones are reserved 555-01xx, and names come from the shipped fake-name pool.
scriptRoundTrip(generateNewRx({ seed: 12345 })).specClean; // true, zero warnings, byte-stable
telecomRoundTrip(generateB1({ seed: 777 })).specClean; // true

// Or a reproducible mixed corpus (NewRx + RxRenewal + RxChange + B1 + B2 + B3):
const corpus = ncpdpCorpus({ seed: 42 });
corpus.artifacts.every((a) => a.warnings.length === 0); // true
```

`@cosyte/ncpdp` 是一个 **可选同伴依赖**,仅需要用于 `@cosyte/synth/ncpdp` 子路径.

**推迟:** 销售商-quirk模式。 STRIPT覆盖跟踪剖析器的构建者表面: 续订/更改 _答复_ 土地为 `@cosyte/ncpdp` 增长造行者.

### 生成 ASTM 信件

这个 `@cosyte/synth/astm` 子路径构建 ASTM 实验室消息 **结束 `@cosyte/astm`自己弹出 表面**数字 : `buildAstmMessage` 为E1394记录层, `composeAstmFrames` e1381型机车 层,因此每封信件绕行通过解析器 **无警告**它释放出 `H`编号 :`P`编号 :`O`编号 :`R`.../ (中文(简体) )`C`编号 :`L` **结果报告** (单位:千美元)`generateAstmResult`页:1 `H`编号 :`P`编号 :`O`编号 :`L` **顺序** (单位:千美元)`generateAstmOrder`页:1 **设置** 双胞胎`generateAstmResultFramed`) (中文(简体) ).

```ts
import {
  generateAstmResult,
  generateAstmResultFramed,
  astmRoundTrip,
  astmFramedRoundTrip,
  astmCorpus,
} from "@cosyte/synth/astm";

// Same seed → byte-identical output. The P (patient) record carries the name, birthdate, and the
// practice- and laboratory-assigned patient ids, all synthetic-by-construction: names from the shipped
// fake-name pool, DOB seeded, and the two ids minted independently under a synthetic assigning authority
// (so they stay DISTINCT, exactly as @cosyte/astm keeps them on parse).
astmRoundTrip(generateAstmResult({ seed: 12345 })).specClean; // true, zero warnings, byte-stable

// The E1381-framed twin: the modulo-256 checksum and 0 to 7 frame numbers are computed by @cosyte/astm.
astmFramedRoundTrip(generateAstmResultFramed({ seed: 12345 })).specClean; // true

// Or a reproducible mixed corpus (a result report + an order):
const corpus = astmCorpus({ seed: 42 });
corpus.artifacts.every((a) => a.warnings.length === 0); // true
```

`@cosyte/astm` 是一个 **可选同伴依赖**,仅需要用于 `@cosyte/synth/astm` 子路径.

### 生成一个销售商的定点器

光谱清洁固定装置测试,一个解析器读取 _对_ 讯息; **奇特模式** 试验它能容忍 现实的销售商偏离了真实的流量, 并表面完全正确的诊断。 这个 奇特词汇 **是解析器自己的配置文件系统**: 一个怪胎偏离消息 _结构_ 这么说吧 往返 **确切的,一个意图,稳定的警告代码** (单位:千美元) **意向预警合同**),以及 其中内置 **公开** 剖析器剖析器声称偏离, 它的下方是整齐的回转 (被压抑,或重新损坏为: `PROFILE_QUIRK_APPLIED`) (中文(简体) ). 怪怪的从不引入一个真实的价值观: 它会改变形状,永远不出现, 所以合成安全门仍然通过.

Quirks的飞船 三个最富有的简介系统, **HL7 v2, C- CDA, 和ASTM**数字 :

```ts
import { generateHl7Quirk, hl7QuirkRoundTrip } from "@cosyte/synth/hl7";
import { generateCcdaQuirk, ccdaQuirkRoundTrip } from "@cosyte/synth/ccda";
import { generateAstmQuirk, astmQuirkRoundTrip } from "@cosyte/synth/astm";

// A site-defined HL7 v2 Z-segment → exactly UNKNOWN_SEGMENT; the `visage` profile suppresses it.
hl7QuirkRoundTrip(generateHl7Quirk({ seed: 1, quirk: "unknown-zsegment" })).warnings; // ["UNKNOWN_SEGMENT"]

// A deprecated C-CDA LOINC → exactly DEPRECATED_LOINC; `smartScorecard` re-badges it.
ccdaQuirkRoundTrip(generateCcdaQuirk({ seed: 1, quirk: "deprecated-loinc" })).withProfile
  ?.tolerated; // true

// A non-standard ASTM &Z& escape → exactly ASTM_UNKNOWN_ESCAPE_SEQUENCE; `referenceCorpus` re-badges it.
astmQuirkRoundTrip(generateAstmQuirk({ seed: 1, quirk: "unknown-escape" })).intendedWarningHeld; // true
```

格式配置系统不支持以稳定方式关闭失败 `SYNTH_UNSUPPORTED_QUIRK` 诊断,绝不是沉默的错误,其他选择者也一样:一种信息,一种 文档类型、 实体组合条目、 一种 `837` 变体,一种Bundle类型. 每个都用自己的套装检查 在什么生成之前, 一个未识别的就是致命的 `SYNTH_UNSUPPORTED_KIND` 而不是一个 错误的标签程序。 每一次拒绝都带有一个代码和一个固定的信息 从被冻结的桌子,并引用 没有你通过。 每一个怪胎都被一个 **公开记录** 偏差或剖析器 **公开** 档案,从来不是私人卖主.

**推迟:** 怪异的食谱 **FHIR、X12和NCPDP**和任何需要 **个人, 供应商属性** 到地面上.

### 与 `@cosyte/deid` (对接环)

这个 `@cosyte/synth/deid` 子路径是决定性的 **闭路协同验证装置** 联 合 国 `synth` ⇄ `deid` 双: 它 **生成** 一件艺术品, **植物** 特殊合成 PHI 在医院的哨兵, **删除** 它穿过 `@cosyte/deid`,以及 **核实** 每个 哨兵从输出中消失(幸存的哨兵是一个硬故障),而临床有效载荷 幸存下来的 (防弹衣).

```ts
import {
  hl7DeidLoop,
  fhirDeidLoop,
  x12DeidLoop,
  ncpdpTelecomDeidLoop,
  ccdaDeidLoop,
  summarizeDeidCoverage,
} from "@cosyte/synth/deid";

const r = hl7DeidLoop({ seed: 42, kind: "ORU^R01" });
r.pass; // true
r.survivors; // [], every planted synthetic PHI sentinel was removed
r.clinicalScrubbed; // [], no clinical value was over-scrubbed

const summary = summarizeDeidCoverage([
  hl7DeidLoop({ seed: 1 }),
  fhirDeidLoop({ seed: 1 }),
  x12DeidLoop({ seed: 1, variant: "837P" }),
  ncpdpTelecomDeidLoop({ seed: 1, transaction: "B1" }),
  ccdaDeidLoop({ seed: 1 }),
]);
summary.allPass; // true, zero survivors, zero over-scrub, per format
```

这是一个 **联合验证手段,而不是独立审计** 联 合 国 `@cosyte/deid` 对抗现实世界 数据:它证明对子在 `synth`自己的输出。 清除检查是 **视网膜**: 仅扫描旧 PHI loci 上剩余的已识别值, 所以提供者/ 组织 身份的去识别者合法保留 从未被理解为虚假的幸存者. `@cosyte/deid` 是一个 **可选同伴依赖**,只需要这个子路径. **跳过并命名** (单位:千美元)`DEID_LOOP_SKIPPED`: 全国CPDP **苏格兰** 财务报告和审定财务报表 **ASTM 系统** (无) `@cosyte/deid` 适配器)和 **迪康** (不由 `synth`) (中文(简体) ).

### 绘制合成值

```ts
import { createRng, safe, isSyntheticSsn, isItinFormatted, isSyntheticNpi } from "@cosyte/synth";

const rng = createRng(42);
const nationalId = safe.ssn(rng);
isSyntheticSsn(nationalId); // true, always an SSA never-issued SSN
isItinFormatted(nationalId); // false, never a validly formatted IRS ITIN either
isSyntheticNpi(safe.npi(rng)); // true, always a deliberately-invalid-Luhn NPI (never a real NPI)
```

## 是什么让它值得信赖

-   **逐个合成**中,没有代码路径释放出未从保留区域或 已运出假名池(SSA从未发行的SSN,也并非IRS ITINS), NANP `555-01xx` 电话,RFC 2606/6761 `example.*` rFC 5737/3849 TEST-NET IPs,一种合成分配法 (b) MRN的权威。 一个CI门证明了这一点. **生成的值不能是真实的,也不能是真实的 PHI .**
-   **校对:Soup**通过解析器的保守序列器和 直接反馈到:每件文物再展出零警告.
-   **决定性**手卷出种子的PRNG(`sfc32`编号 :`splitmix32`(三); `Math.random` 被禁绝. 一个种子决定输出, 字节的字节, 在同一解析器版本上, CI 比较这些 横跨22号、24号和26号节点的字节.
-   **不可改变**,生成的文物和 `Corpus` 结果是被冻结的.
-   **0 第三方运行时间依赖关系**,解析器的同伴是第一党 Cosyte 包, 从npm安装用于测试; 双重无害环境管理+CJS,经验证 `attw`。 。 。 .

## 文档

全文见 [docs.cosyte.com/synth 页面存档备份,存于互联网档案馆](https://docs.cosyte.com/synth)数字 :

-   [安装](https://docs.cosyte.com/synth/installation),则 [快速启动](https://docs.cosyte.com/synth/quickstart),以及 教程 : [测试您的 HL7 处理生成的固定装置](https://docs.cosyte.com/synth/test-hl7-handling-with-fixtures)。 。 。 .
-   如何引导 : [HL7 v2 数据](https://docs.cosyte.com/synth/guides-hl7), (中文(简体) ), [FHIR R4和美国核心](https://docs.cosyte.com/synth/guides-fhir), (中文(简体) ), [C-CDA (英语)](https://docs.cosyte.com/synth/guides-ccda), (中文(简体) ), [十进制](https://docs.cosyte.com/synth/guides-x12), (中文(简体) ), [全国CPDP](https://docs.cosyte.com/synth/guides-ncpdp), (中文(简体) ), [ASTM 系统](https://docs.cosyte.com/synth/guides-astm), (中文(简体) ), [供应商怪异](https://docs.cosyte.com/synth/guides-quirks), (中文(简体) ), [页:1 `@cosyte/deid` 配对循环](https://docs.cosyte.com/synth/guides-deid), (中文(简体) ), [合成值](https://docs.cosyte.com/synth/draw-synthetic-values), (中文(简体) ), 财务报告和审定财务报表 [披上金色花纹](https://docs.cosyte.com/synth/guides-overview)。 。 。 .
-   解释: [如何运作](https://docs.cosyte.com/synth/concepts-archetype) 财务报告和审定财务报表 [它做和不做](https://docs.cosyte.com/synth/limitations)。 。 。 .
-   参考: [致命代码](https://docs.cosyte.com/synth/fatal-codes),则 [奇克目录](https://docs.cosyte.com/synth/quirk-catalog),以及 API 参考.
-   [解决问题](https://docs.cosyte.com/synth/troubleshooting), (中文(简体) ), [测试和质量](https://docs.cosyte.com/synth/testing-and-quality),以及 [业绩](https://docs.cosyte.com/synth/performance)。 。 。 .
-   [`CHANGELOG.md`](https://github.com/cosyte/synth/blob/main/CHANGELOG.md):每个放出.

## 支助

提问、错误报告和要求格式或怪异 [GitHub 问题](https://github.com/cosyte/synth/issues)。这个包做的每件固定 合成:从不把真正的病人的数据附在一个问题上. 需要建立和测试一体化,或 为你主持和运行? 看我们的 [融合服务](https://cosyte.com/integration-services)。 。 。 .

## 警卫

私下报告一种脆弱性,从不公开,也没有真正的病人数据。 我们 [安全政策](https://github.com/cosyte/synth/security/policy) 说如何. 生成的值 真实的,或现实的, 足够真实的, 是一种弱点: 以这种方式报告.

## 捐款

**何处可问:** 打开一个问题 : [https://github.com/cosyte/synth/issues (中文(简体) )](https://github.com/cosyte/synth/issues)报告最多 用于种子、 生成器调用以及解析器警告 .

**接受非邀约牵引请求.** 对于任何改变种子生成的字节,添加 生成器选项, 或移动公共 API, 先打开一个问题, 这样可以商定行为 在您写它之前: 一个映射到不同字节的种子 打破了它上的每一个金色文件. Typo,链接,和测试修正可以直接向拉取请求.

**需要什么贡献来澄清**,每个都有一个脚本 这个软件包宣布:

| 检查 | 这是什么 |
| --- | --- |
| `pnpm typecheck` | `tsc --noEmit`,严格(实例: `pnpm test`(中文(简体) ) |
| `pnpm lint` | (原始内容存档于2019-09-31). EsLint, at `--max-warnings=0` |
| `pnpm format:check` | 高级 |
| `pnpm phi-scan` | 跟踪文件中任何地方都没有患者形状值 |
| `pnpm test` | 包括合成-安全套房 |
| `pnpm test:coverage` | 保险门 |
| `pnpm build` | 无害环境管理和CJS两个组合 |
| `pnpm attw` | 消费者按条件分类的分辨率 |
| `pnpm run determinism:digest` | 每个种子产生的字节,与基线相比 |
| `pnpm check:no-emdash` | 房子的标注规则 |
| `pnpm check:no-internal-refs` | 公众表面没有内部簿记 |

新的行为需要测试 旁边,一个改变 消费者会注意到需要一个改变et (单位:千美元)`pnpm changeset`),其摘要成为了更改日志条目. 种子产生的字节变化 在它的变迁中是这样说的.

## 许可证

麻省理工学院,版权:Cosyte LLC. 见 [自由主义](https://github.com/cosyte/synth/blob/main/LICENSE)编辑 标准此软件包名称属于其所有者;参见 [贸易](https://github.com/cosyte/synth/blob/main/TRADEMARKS.md)。 。 。 .

## 常见问题

### @cosyte/synth 是什么？

用于节点\.js和TypeScript的定型、可种子的合成保健试验装置:HL7 v2、FHIR R4和美国Core、C-CDA、X12、NCPDP和ASTM,通过建筑进行光谱清理,从未进行真正的PHI\.

### 如何安装 @cosyte/synth？

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

### @cosyte/synth 支持 TypeScript 吗？

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

### @cosyte/synth 支持 ESM 还是 CommonJS？

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

### @cosyte/synth 需要什么版本的 Node\.js？

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

### @cosyte/synth 可以商用吗？

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

### @cosyte/synth 的下载量有多少？

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

### @cosyte/synth 还在维护吗？

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

