@cosyte/synth 0.0.9 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/README.md +21 -12
  3. package/dist/astm/index.cjs +18 -6
  4. package/dist/astm/index.cjs.map +1 -1
  5. package/dist/astm/index.d.cts +2 -2
  6. package/dist/astm/index.d.ts +2 -2
  7. package/dist/astm/index.mjs +18 -6
  8. package/dist/astm/index.mjs.map +1 -1
  9. package/dist/ccda/index.cjs +23 -7
  10. package/dist/ccda/index.cjs.map +1 -1
  11. package/dist/ccda/index.d.cts +2 -2
  12. package/dist/ccda/index.d.ts +2 -2
  13. package/dist/ccda/index.mjs +23 -7
  14. package/dist/ccda/index.mjs.map +1 -1
  15. package/dist/deid/index.cjs +26 -8
  16. package/dist/deid/index.cjs.map +1 -1
  17. package/dist/deid/index.d.cts +2 -2
  18. package/dist/deid/index.d.ts +2 -2
  19. package/dist/deid/index.mjs +26 -8
  20. package/dist/deid/index.mjs.map +1 -1
  21. package/dist/fhir/index.cjs +174 -7
  22. package/dist/fhir/index.cjs.map +1 -1
  23. package/dist/fhir/index.d.cts +163 -2
  24. package/dist/fhir/index.d.ts +163 -2
  25. package/dist/fhir/index.mjs +171 -9
  26. package/dist/fhir/index.mjs.map +1 -1
  27. package/dist/hl7/index.cjs +18 -6
  28. package/dist/hl7/index.cjs.map +1 -1
  29. package/dist/hl7/index.d.cts +2 -2
  30. package/dist/hl7/index.d.ts +2 -2
  31. package/dist/hl7/index.mjs +18 -6
  32. package/dist/hl7/index.mjs.map +1 -1
  33. package/dist/index.cjs +37 -6
  34. package/dist/index.cjs.map +1 -1
  35. package/dist/index.d.cts +172 -38
  36. package/dist/index.d.ts +172 -38
  37. package/dist/index.mjs +36 -7
  38. package/dist/index.mjs.map +1 -1
  39. package/dist/ncpdp/index.cjs +18 -6
  40. package/dist/ncpdp/index.cjs.map +1 -1
  41. package/dist/ncpdp/index.d.cts +1 -1
  42. package/dist/ncpdp/index.d.ts +1 -1
  43. package/dist/ncpdp/index.mjs +18 -6
  44. package/dist/ncpdp/index.mjs.map +1 -1
  45. package/dist/{providers-B9uVinAe.d.cts → providers-BQtPk3PN.d.cts} +18 -4
  46. package/dist/{providers-B9uVinAe.d.ts → providers-BQtPk3PN.d.ts} +18 -4
  47. package/dist/{quirk-HZdznAkM.d.ts → quirk-Bzx9g8KG.d.ts} +1 -1
  48. package/dist/{quirk-IaHp4z7N.d.cts → quirk-C_lZrspq.d.cts} +1 -1
  49. package/dist/x12/index.cjs +18 -6
  50. package/dist/x12/index.cjs.map +1 -1
  51. package/dist/x12/index.d.cts +1 -1
  52. package/dist/x12/index.d.ts +1 -1
  53. package/dist/x12/index.mjs +18 -6
  54. package/dist/x12/index.mjs.map +1 -1
  55. package/package.json +54 -30
@@ -1,8 +1,8 @@
1
1
  import { Hl7MessageKind } from '../hl7/index.cjs';
2
2
  import { DeidPolicy, GenericLocus } from '@cosyte/deid';
3
3
  import '@cosyte/hl7';
4
- import '../providers-B9uVinAe.cjs';
5
- import '../quirk-IaHp4z7N.cjs';
4
+ import '../providers-BQtPk3PN.cjs';
5
+ import '../quirk-C_lZrspq.cjs';
6
6
 
7
7
  /**
8
8
  * The format-agnostic core of the **`@cosyte/deid` pairing loop**: a **closed-loop
@@ -1,8 +1,8 @@
1
1
  import { Hl7MessageKind } from '../hl7/index.js';
2
2
  import { DeidPolicy, GenericLocus } from '@cosyte/deid';
3
3
  import '@cosyte/hl7';
4
- import '../providers-B9uVinAe.js';
5
- import '../quirk-HZdznAkM.js';
4
+ import '../providers-BQtPk3PN.js';
5
+ import '../quirk-Bzx9g8KG.js';
6
6
 
7
7
  /**
8
8
  * The format-agnostic core of the **`@cosyte/deid` pairing loop**: a **closed-loop
@@ -57,8 +57,7 @@ var SYNTH_FATAL_CODES = {
57
57
  * see `resolveKind`: a selector union is erased at run time, and a selector that falls through
58
58
  * either mislabels the fixture or hands the value to a peer builder that quotes it back.
59
59
  */
60
- SYNTH_UNSUPPORTED_KIND: "SYNTH_UNSUPPORTED_KIND"
61
- };
60
+ SYNTH_UNSUPPORTED_KIND: "SYNTH_UNSUPPORTED_KIND"};
62
61
  var SYNTH_FATAL_MESSAGES = Object.freeze({
63
62
  SYNTH_UNSUPPORTED_FORMAT: "The requested format is not generable by this build. A generator has no byte fallback: it builds through a parser's own serializer or it refuses.",
64
63
  SYNTH_UNSUPPORTED_QUIRK: "The requested vendor quirk is not in the target format's quirk registry. Compare the request against that format's exported registry (HL7_QUIRKS, CCDA_QUIRKS, ASTM_QUIRKS).",
@@ -69,7 +68,8 @@ var SYNTH_FATAL_MESSAGES = Object.freeze({
69
68
  SYNTH_INVALID_RANGE: "An integer range was requested with its maximum below its minimum.",
70
69
  SYNTH_EMPTY_POOL: "A value was drawn from an empty pool.",
71
70
  SYNTH_INVALID_PROFILE: "defineSynthProfile requires a non-empty string name.",
72
- SYNTH_UNSUPPORTED_KIND: "The requested kind, document type, corpus mix entry, variant or profile is not one this generator supports. The supported set is the exported union for that option."
71
+ SYNTH_UNSUPPORTED_KIND: "The requested kind, document type, corpus mix entry, variant or profile is not one this generator supports. The supported set is the exported union for that option.",
72
+ SYNTH_PROFILE_NOT_GENERATED: "The requested profile is published by the adopted implementation guide, and this build does not generate it. The coverage surface reports, per adopted profile, whether it is generated."
73
73
  });
74
74
  var SynthError = class extends Error {
75
75
  /** The stable fatal code. */
@@ -134,7 +134,7 @@ function componentsField(components) {
134
134
  var SYNTHETIC_ASSIGNING_AUTHORITY = Object.freeze({
135
135
  /** The human-readable assigning-authority namespace id (HL7 HD.1). */
136
136
  namespaceId: "COSYTE-SYNTH",
137
- /** The universal id, an OID under HL7's example arc `2.16.840.1.113883.19` (HD.2). */
137
+ /** The universal id, an OID this package chose under the root `2.16.840.1.113883.19` (HD.2). */
138
138
  universalId: "2.16.840.1.113883.19.999",
139
139
  /** The universal id type (HD.3). */
140
140
  universalIdType: "ISO"
@@ -153,6 +153,18 @@ var TEST_NET_V4_PREFIXES = Object.freeze([
153
153
  // TEST-NET-3
154
154
  ]);
155
155
  var DOC_V6_PREFIX = "2001:db8";
156
+ var ITIN_GROUP_RANGES = Object.freeze([
157
+ Object.freeze({ min: 50, max: 65 }),
158
+ Object.freeze({ min: 70, max: 88 }),
159
+ Object.freeze({ min: 90, max: 92 }),
160
+ Object.freeze({ min: 94, max: 99 })
161
+ ]);
162
+ var ITIN_EXCLUDED_GROUPS = Object.freeze([89, 93]);
163
+ var SSN_SYNTHETIC_GROUPS = Object.freeze(
164
+ Array.from({ length: 100 }, (_unused, group) => group).filter(
165
+ (group) => !ITIN_GROUP_RANGES.some((range) => group >= range.min && group <= range.max) && !ITIN_EXCLUDED_GROUPS.includes(group)
166
+ ).map((group) => String(group).padStart(2, "0"))
167
+ );
156
168
  var NPI_LUHN_PREFIX = "80840";
157
169
  function luhnMod10(digits) {
158
170
  let sum = 0;
@@ -261,10 +273,10 @@ var SYNTHETIC_CITY_NAMES = Object.freeze([
261
273
  // src/safe/providers.ts
262
274
  function ssn(rng, block = "never-issued") {
263
275
  if (block === "advertising") {
264
- return `987-65-432${String(rng.int(0, 9))}`;
276
+ return `987-00-432${String(rng.int(0, 9))}`;
265
277
  }
266
278
  const area = rng.int(900, 999);
267
- const group = rng.digits(2);
279
+ const group = rng.pick(SSN_SYNTHETIC_GROUPS);
268
280
  const serial = rng.digits(4);
269
281
  return `${String(area)}-${group}-${serial}`;
270
282
  }
@@ -812,7 +824,9 @@ var US_CORE_PROFILE = Object.freeze({
812
824
  /** US Core AllergyIntolerance. */
813
825
  ALLERGY_INTOLERANCE: "http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance",
814
826
  /** US Core Procedure. */
815
- PROCEDURE: "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure"
827
+ PROCEDURE: "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure",
828
+ /** US Core Provenance. */
829
+ PROVENANCE: "http://hl7.org/fhir/us/core/StructureDefinition/us-core-provenance"
816
830
  });
817
831
  var US_CORE_RACE_EXTENSION = "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race";
818
832
  var US_CORE_ETHNICITY_EXTENSION = "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity";
@@ -849,7 +863,11 @@ var SYSTEM = Object.freeze({
849
863
  /** HL7 Terminology `allergyintolerance-clinical`, `AllergyIntolerance.clinicalStatus`. */
850
864
  ALLERGY_CLINICAL: "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical",
851
865
  /** HL7 Terminology `allergyintolerance-verification`, `AllergyIntolerance.verificationStatus`. */
852
- ALLERGY_VERIFICATION: "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification"
866
+ ALLERGY_VERIFICATION: "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification",
867
+ /** HL7 Terminology `provenance-participant-type`, `Provenance.agent.type` (`author`). */
868
+ PROVENANCE_PARTICIPANT_TYPE: "http://terminology.hl7.org/CodeSystem/provenance-participant-type",
869
+ /** US Core `us-core-provenance-participant-type`, `Provenance.agent.type` (`transmitter`). */
870
+ US_CORE_PROVENANCE_PARTICIPANT_TYPE: "http://hl7.org/fhir/us/core/CodeSystem/us-core-provenance-participant-type"
853
871
  });
854
872
 
855
873
  // src/fhir/builder.ts