Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

`@cosyte/synth` generates reproducible synthetic test corpora across the six Cosyte formats (HL7 v2,
FHIR R4 / US Core, C-CDA, X12, NCPDP, and ASTM). It is a **consumer** of the
cosyte parsers, not a parser: it builds each artifact **through the parser's own builder/serializer**
Cosyte parsers, not a parser: it builds each artifact **through the parser's own builder/serializer**
(so each artifact re-parses through that parser with zero warnings) and draws every identifier, name,
date, phone, and address from a **guaranteed-non-colliding synthetic source**. It is a
**format/conformance generator, not a clinical simulator**: it does not model disease progression
Expand Down Expand Up @@ -164,8 +164,8 @@ corpus.artifacts.every((a) => a.warnings.length === 0); // true

`@cosyte/x12` is an **optional peer dependency**, needed only for the `@cosyte/synth/x12` subpath.

**Deferred:** the **270** eligibility _request_ (`@cosyte/x12` ships a `build271` but no `build270`, and
`synth` never hand-writes bytes around a missing builder) and **vendor-quirk mode**.
**Deferred:** the **270** eligibility _request_ (`@cosyte/x12` ships `build270` from 0.1.0, but `synth`
does not generate a 270 yet) and **vendor-quirk mode**.

## Generate an NCPDP message

Expand Down
2 changes: 1 addition & 1 deletion docs-content/concepts-archetype.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ sidebar_position: 1

# Core Concepts

`@cosyte/synth` borrows the cosyte parser archetype's _disciplines_ (immutability, stable typed codes,
`@cosyte/synth` borrows the Cosyte parser archetype's _disciplines_ (immutability, stable typed codes,
the profile system) but its central reflex is neither the parser's liberal parse nor a fail-closed
de-identifier: it is **synthetic-by-construction**.

Expand Down
2 changes: 1 addition & 1 deletion docs-content/guides-deid.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,4 +95,4 @@ DEID_LOOP_SKIPPED.map((s) => s.format); // => ["ncpdp-script", "astm", "dicom"]

`@cosyte/deid` ships no NCPDP **SCRIPT** or **ASTM** adapter, and `synth` does not generate **DICOM**,
so those pairings are deferred until the adapters exist. Optional **Synthea** clinical-content ingestion
(re-serializing Synthea's coherent records through the cosyte parsers) is a documented future concern.
(re-serializing Synthea's coherent records through the Cosyte parsers) is a documented future concern.
6 changes: 3 additions & 3 deletions docs-content/guides-x12.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ failure.

## Deferred

- The **270** eligibility _request_: `@cosyte/x12` ships a `build271` but no `build270` (the 270 is only
read, as the echoed trace on a 271). `synth` never hand-writes bytes around a missing builder, so 270
generation lands when `@cosyte/x12` grows `build270`.
- The **270** eligibility _request_: `@cosyte/x12` ships `build270` from 0.1.0, but `synth` does not
generate a 270 yet. `synth` builds every artifact through the parser's own builder or serializer and
never hand-writes the bytes.
- **Vendor-quirk mode** (deliberately off-spec fixtures) is deferred for X12.
2 changes: 1 addition & 1 deletion docs-content/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Generate **deterministic, seedable synthetic healthcare fixtures** (HL7 v2, FHIR
C-CDA, X12, NCPDP and ASTM) without hand-writing a byte of the wire format, and **without
any chance the "patient" you just generated is a real person**.

`@cosyte/synth` is a **consumer** of the cosyte parsers, not a parser. It builds each artifact **through
`@cosyte/synth` is a **consumer** of the Cosyte parsers, not a parser. It builds each artifact **through
the parser's own builder/serializer** (so each artifact re-parses through that parser with zero
warnings) and draws every
identifier, name, date, phone, and address from a **guaranteed-non-colliding synthetic source** (SSA
Expand Down
10 changes: 5 additions & 5 deletions docs-content/limitations.md
Original file line number Diff line number Diff line change
Expand Up @@ -207,14 +207,15 @@ The generation core is **feature-complete across all six formats**. Quirk mode a
- **The `deid` pairing loop** ships for **HL7 v2, FHIR, C-CDA, X12, and NCPDP Telecom**. NCPDP
**SCRIPT**, **ASTM**, and **DICOM** pairing are deferred (no adapter, or not generated:
`DEID_LOOP_SKIPPED` names each).
- **Format-specific gaps flagged, never faked:** the X12 **270** request (no `build270` upstream) and
NCPDP **SCRIPT lifecycle responses** are not generated, a gap is surfaced, never hand-written.
- **Format-specific gaps flagged, never faked:** the X12 **270** request (`@cosyte/x12` ships
`build270` from 0.1.0; `synth` does not use it yet) and NCPDP **SCRIPT lifecycle responses** are not
generated, a gap is surfaced, never hand-written.
- **Built-in `synth` profiles.** `defineSynthProfile()` is the public growth-loop hook, and
ready-made quirk profiles ship for the three quirk formats; broader **named site/vendor** recipes
stay **consumer-authored** until a public spec grounds a built-in one (the same public-only
discipline the parsers hold).
- **Optional Synthea clinical-content ingestion** (re-serialize Synthea's coherent records through the
cosyte parsers) is a **documented future concern**, not a v1 promise.
Cosyte parsers) is a **documented future concern**, not a v1 promise.

### US Core 6.1.0 profile coverage

Expand Down Expand Up @@ -271,8 +272,7 @@ refusedCode; // => "SYNTH_PROFILE_NOT_GENERATED"

- **The library is MIT.** Third-party **runtime** dependencies are **zero**; the parser and `deid`
peers are first-party, optional, and lazily loaded per format.
- **HIPAA-capable, not HIPAA-compliant**, and here that framing is nearly vacuous, because there is no
real PHI: `synth`'s entire output _looks like_ PHI and contains none, by construction. Every value
- **No real PHI.** `synth`'s entire output _looks like_ PHI and contains none, by construction. Every value
it emits is drawn from the sources in the floor table above, and a `phi-scan` gate sweeps this project's own
sources, fixtures and tooling on every change. You can commit and log a generated corpus without a
PHI review of its contents: that is the whole point.
3 changes: 2 additions & 1 deletion documentation/agent-notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,8 @@ it. The standing rule is **relocate, never delete**: every paragraph below cost
identity-dense synthetic-safety invariant: NPIs carry a **deliberately-invalid Luhn** check digit
(never a real NPI), provider tax ids are 900-range SSNs at `REF*SY`, member ids are synthetic-AA
scoped. The `phi-scan` gains X12-aware structured detection (NM1/PER/REF loci; a Luhn-valid NPI is a
hard hit). **Deferred: the 270 request (`@cosyte/x12` ships no `build270`).** Quirk mode is Phase 7.
hard hit). **Deferred: the 270 request (`@cosyte/x12` ships `build270` from 0.1.0; no 270
generator yet).** Quirk mode is Phase 7.

### NCPDP (SYNTH-7)

Expand Down
Loading