@cosyte/synth 0.1.5 → 0.1.6

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 (46) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/astm/index.cjs +55 -18
  3. package/dist/astm/index.cjs.map +1 -1
  4. package/dist/astm/index.d.cts +7 -0
  5. package/dist/astm/index.d.ts +7 -0
  6. package/dist/astm/index.mjs +54 -18
  7. package/dist/astm/index.mjs.map +1 -1
  8. package/dist/ccda/index.cjs +76 -26
  9. package/dist/ccda/index.cjs.map +1 -1
  10. package/dist/ccda/index.d.cts +6 -0
  11. package/dist/ccda/index.d.ts +6 -0
  12. package/dist/ccda/index.mjs +63 -14
  13. package/dist/ccda/index.mjs.map +1 -1
  14. package/dist/deid/index.cjs +207 -118
  15. package/dist/deid/index.cjs.map +1 -1
  16. package/dist/deid/index.mjs +194 -106
  17. package/dist/deid/index.mjs.map +1 -1
  18. package/dist/fhir/index.cjs +146 -74
  19. package/dist/fhir/index.cjs.map +1 -1
  20. package/dist/fhir/index.d.cts +6 -0
  21. package/dist/fhir/index.d.ts +6 -0
  22. package/dist/fhir/index.mjs +145 -74
  23. package/dist/fhir/index.mjs.map +1 -1
  24. package/dist/hl7/index.cjs +53 -9
  25. package/dist/hl7/index.cjs.map +1 -1
  26. package/dist/hl7/index.d.cts +6 -0
  27. package/dist/hl7/index.d.ts +6 -0
  28. package/dist/hl7/index.mjs +52 -9
  29. package/dist/hl7/index.mjs.map +1 -1
  30. package/dist/index.cjs +1 -3
  31. package/dist/index.cjs.map +1 -1
  32. package/dist/index.mjs +1 -3
  33. package/dist/index.mjs.map +1 -1
  34. package/dist/ncpdp/index.cjs +74 -22
  35. package/dist/ncpdp/index.cjs.map +1 -1
  36. package/dist/ncpdp/index.d.cts +7 -0
  37. package/dist/ncpdp/index.d.ts +7 -0
  38. package/dist/ncpdp/index.mjs +73 -22
  39. package/dist/ncpdp/index.mjs.map +1 -1
  40. package/dist/x12/index.cjs +65 -17
  41. package/dist/x12/index.cjs.map +1 -1
  42. package/dist/x12/index.d.cts +6 -0
  43. package/dist/x12/index.d.ts +6 -0
  44. package/dist/x12/index.mjs +64 -17
  45. package/dist/x12/index.mjs.map +1 -1
  46. package/package.json +20 -15
@@ -1,8 +1,15 @@
1
1
  'use strict';
2
2
 
3
- var script = require('@cosyte/ncpdp/script');
4
- var common = require('@cosyte/ncpdp/common');
5
- var telecom = require('@cosyte/ncpdp/telecom');
3
+ var module$1 = require('module');
4
+ var url = require('url');
5
+
6
+ var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
7
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
8
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
9
+ }) : x)(function(x) {
10
+ if (typeof require !== "undefined") return require.apply(this, arguments);
11
+ throw Error('Dynamic require of "' + x + '" is not supported');
12
+ });
6
13
 
7
14
  // src/rng/splitmix32.ts
8
15
  function splitmix32(seed) {
@@ -152,6 +159,7 @@ function createRng(seed) {
152
159
  }
153
160
 
154
161
  // src/corpus.ts
162
+ var UNCHECKED = Object.freeze([]);
155
163
  function makeCorpus(seed, artifacts, quirks = []) {
156
164
  const counts = {};
157
165
  const formats = /* @__PURE__ */ new Set();
@@ -530,6 +538,30 @@ var EXAMPLE_SIG_TEXT = Object.freeze([
530
538
  "Inhale 2 puffs by mouth every 4 to 6 hours as needed"
531
539
  ]);
532
540
  var DAW_CODES = Object.freeze(["0", "1", "2"]);
541
+ function defaultHost() {
542
+ if (typeof undefined !== "function") return { require: __require, resolve: void 0 };
543
+ return { require: module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href))), resolve: (s) => undefined(s) };
544
+ }
545
+ function isRequireEsmRefusal(error) {
546
+ return error?.code === "ERR_REQUIRE_ESM";
547
+ }
548
+ function loadPeer(specifier, host) {
549
+ if (host.resolve === void 0) return host.require(specifier);
550
+ const entry = url.fileURLToPath(host.resolve(specifier));
551
+ try {
552
+ return host.require(entry);
553
+ } catch (error) {
554
+ if (!isRequireEsmRefusal(error)) throw error;
555
+ return host.require(specifier);
556
+ }
557
+ }
558
+ function lazyPeer(specifier, host) {
559
+ let loaded;
560
+ return () => loaded ??= loadPeer(specifier, defaultHost());
561
+ }
562
+ var ncpdpScriptPeer = lazyPeer("@cosyte/ncpdp/script");
563
+ var ncpdpTelecomPeer = lazyPeer("@cosyte/ncpdp/telecom");
564
+ var ncpdpCommonPeer = lazyPeer("@cosyte/ncpdp/common");
533
565
 
534
566
  // src/ncpdp/script.ts
535
567
  var SCRIPT_VERSION = "2017071";
@@ -560,13 +592,13 @@ function medicationModel(rng, routing) {
560
592
  const written = `${routing.date.slice(0, 4)}-${routing.date.slice(4, 6)}-${routing.date.slice(6, 8)}`;
561
593
  return {
562
594
  description: drug.description,
563
- coded: { productCode: common.codedValue(drug.ndc, "ND") },
595
+ coded: { productCode: ncpdpCommonPeer().codedValue(drug.ndc, "ND") },
564
596
  quantity: {
565
- value: common.decimalValue(String(rng.int(30, 90))),
597
+ value: ncpdpCommonPeer().decimalValue(String(rng.int(30, 90))),
566
598
  unitOfMeasure: drug.form,
567
599
  codeListQualifier: "38"
568
600
  },
569
- daysSupply: common.decimalValue(String(rng.pick([30, 60, 90]))),
601
+ daysSupply: ncpdpCommonPeer().decimalValue(String(rng.pick([30, 60, 90]))),
570
602
  numberOfRefills: String(rng.int(0, 5)),
571
603
  substitutions: rng.pick(["0", "1"]),
572
604
  writtenDate: written,
@@ -590,14 +622,14 @@ function generateNewRx(options) {
590
622
  const pharmacy = pharmacyModel(rng);
591
623
  const prescriber = prescriberModel(rng);
592
624
  const medication = medicationModel(rng, routing);
593
- const message = script.buildNewRx({
625
+ const message = ncpdpScriptPeer().buildNewRx({
594
626
  header: headerModel(routing),
595
627
  patient,
596
628
  pharmacy,
597
629
  prescriber,
598
630
  medication
599
631
  });
600
- return script.serializeScript(message);
632
+ return ncpdpScriptPeer().serializeScript(message);
601
633
  }
602
634
  function lifecycleFields(rng) {
603
635
  const routing = ncpdpScriptRouting(rng);
@@ -614,14 +646,20 @@ function generateRxRenewalRequest(options) {
614
646
  const rng = createRng(options.seed);
615
647
  const { header: header2, ...fields } = lifecycleFields(rng);
616
648
  const body = { kind: "RxRenewalRequest", ...fields };
617
- return script.serializeScript(new script.ScriptMessage({ header: header2, body, warnings: [] }));
649
+ return ncpdpScriptPeer().serializeScript(
650
+ new (ncpdpScriptPeer()).ScriptMessage({ header: header2, body, warnings: [] })
651
+ );
618
652
  }
619
653
  function generateRxChangeRequest(options) {
620
654
  const rng = createRng(options.seed);
621
655
  const { header: header2, ...fields } = lifecycleFields(rng);
622
656
  const body = { kind: "RxChangeRequest", ...fields };
623
- return script.serializeScript(new script.ScriptMessage({ header: header2, body, warnings: [] }));
657
+ return ncpdpScriptPeer().serializeScript(
658
+ new (ncpdpScriptPeer()).ScriptMessage({ header: header2, body, warnings: [] })
659
+ );
624
660
  }
661
+
662
+ // src/ncpdp/telecom.ts
625
663
  var SYNTHETIC_BIN = "999999";
626
664
  function digitsOnly(value) {
627
665
  return value.replace(/\D/g, "");
@@ -721,7 +759,9 @@ function generateTelecom(code, options) {
721
759
  prescriberSegment(rng),
722
760
  claimSegment(rng, false)
723
761
  ];
724
- return telecom.serializeTelecom(telecom.buildTelecomRequest({ header: head, segments }));
762
+ return ncpdpTelecomPeer().serializeTelecom(
763
+ ncpdpTelecomPeer().buildTelecomRequest({ header: head, segments })
764
+ );
725
765
  }
726
766
  function generateB1(options) {
727
767
  return generateTelecom("B1", options);
@@ -732,18 +772,30 @@ function generateB2(options) {
732
772
  function generateB3(options) {
733
773
  return generateTelecom("B3", options);
734
774
  }
775
+
776
+ // src/ncpdp/round-trip.ts
735
777
  function scriptRoundTrip(xml) {
736
- const message = script.parseScript(xml);
778
+ const message = ncpdpScriptPeer().parseScript(xml);
737
779
  const warnings = message.warnings.map((w) => String(w.code));
738
- const byteStable = script.serializeScript(message) === xml;
780
+ const byteStable = ncpdpScriptPeer().serializeScript(message) === xml;
739
781
  return { content: xml, warnings, byteStable, specClean: warnings.length === 0 && byteStable };
740
782
  }
741
783
  function telecomRoundTrip(wire) {
742
- const transaction = telecom.parseTelecom(wire);
784
+ const transaction = ncpdpTelecomPeer().parseTelecom(wire);
743
785
  const warnings = transaction.warnings.map((w) => String(w.code));
744
- const byteStable = telecom.serializeTelecom(transaction) === wire;
786
+ const byteStable = ncpdpTelecomPeer().serializeTelecom(transaction) === wire;
745
787
  return { content: wire, warnings, byteStable, specClean: warnings.length === 0 && byteStable };
746
788
  }
789
+ function scriptCorpusArtifact(xml, verify) {
790
+ if (!verify) return { content: xml, warnings: UNCHECKED };
791
+ const warnings = ncpdpScriptPeer().parseScript(xml).warnings.map((w) => String(w.code));
792
+ return { content: xml, warnings };
793
+ }
794
+ function telecomCorpusArtifact(wire, verify) {
795
+ if (!verify) return { content: wire, warnings: UNCHECKED };
796
+ const warnings = ncpdpTelecomPeer().parseTelecom(wire).warnings.map((w) => String(w.code));
797
+ return { content: wire, warnings };
798
+ }
747
799
 
748
800
  // src/select.ts
749
801
  function resolveKind(allowed, requested) {
@@ -766,29 +818,29 @@ var ALL_KINDS = Object.freeze([
766
818
  "B3"
767
819
  ]);
768
820
  var DEFAULT_MIX = ALL_KINDS;
769
- function generateKind(kind, seed) {
821
+ function generateKind(kind, seed, verify) {
770
822
  switch (kind) {
771
823
  case "NewRx":
772
- return scriptRoundTrip(generateNewRx({ seed }));
824
+ return scriptCorpusArtifact(generateNewRx({ seed }), verify);
773
825
  case "RxRenewalRequest":
774
- return scriptRoundTrip(generateRxRenewalRequest({ seed }));
826
+ return scriptCorpusArtifact(generateRxRenewalRequest({ seed }), verify);
775
827
  case "RxChangeRequest":
776
- return scriptRoundTrip(generateRxChangeRequest({ seed }));
828
+ return scriptCorpusArtifact(generateRxChangeRequest({ seed }), verify);
777
829
  case "B1":
778
830
  case "B2":
779
831
  case "B3":
780
- return telecomRoundTrip(generateTelecom(kind, { seed }));
832
+ return telecomCorpusArtifact(generateTelecom(kind, { seed }), verify);
781
833
  }
782
834
  }
783
835
  function ncpdpCorpus(options) {
784
- const { seed } = options;
836
+ const { seed, verify = true } = options;
785
837
  const mix = resolveMix(ALL_KINDS, options.mix, DEFAULT_MIX);
786
838
  const count = options.count ?? mix.length;
787
839
  const seedStream = createRng(seed);
788
840
  const artifacts = Array.from({ length: count }, (_unused, i) => {
789
841
  const kind = mix[i % mix.length] ?? "NewRx";
790
842
  const txSeed = seedStream.nextUint32();
791
- const rt = generateKind(kind, txSeed);
843
+ const rt = generateKind(kind, txSeed, verify);
792
844
  return {
793
845
  format: "ncpdp",
794
846
  kind,