@f1studio/form-spec 5.0.0-alpha.167 → 5.0.0-alpha.169

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 (194) hide show
  1. package/FormSpec.FS/BlueprintValidation.d.ts +6 -3
  2. package/FormSpec.FS/BlueprintValidation.d.ts.map +1 -1
  3. package/FormSpec.FS/BlueprintValidation.js +39 -15
  4. package/FormSpec.FS/BlueprintValidation.js.map +1 -1
  5. package/FormSpec.FS/Designer.d.ts.map +1 -1
  6. package/FormSpec.FS/Designer.js +1 -1
  7. package/FormSpec.FS/Designer.js.map +1 -1
  8. package/FormSpec.FS/FormSpec.d.ts +108 -58
  9. package/FormSpec.FS/FormSpec.d.ts.map +1 -1
  10. package/FormSpec.FS/FormSpec.js +319 -129
  11. package/FormSpec.FS/FormSpec.js.map +1 -1
  12. package/FormSpec.FS/FormSpecHelpers.d.ts.map +1 -1
  13. package/FormSpec.FS/FormSpecHelpers.js +1 -1
  14. package/FormSpec.FS/FormSpecHelpers.js.map +1 -1
  15. package/FormSpec.FS/FormSpecValues.d.ts.map +1 -1
  16. package/FormSpec.FS/FormSpecValues.js +5 -2
  17. package/FormSpec.FS/FormSpecValues.js.map +1 -1
  18. package/FormSpec.FS/Helpers.d.ts.map +1 -1
  19. package/FormSpec.FS/Helpers.js +14 -9
  20. package/FormSpec.FS/Helpers.js.map +1 -1
  21. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFieldTypeMapper.d.ts.map +1 -1
  22. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFieldTypeMapper.js +1 -1
  23. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFieldTypeMapper.js.map +1 -1
  24. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFormSpecValidator.d.ts +1 -1
  25. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFormSpecValidator.d.ts.map +1 -1
  26. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFormSpecValidator.js +1 -1
  27. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFormSpecValidator.js.map +1 -1
  28. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSectioning.d.ts +3 -3
  29. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSectioning.d.ts.map +1 -1
  30. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSectioning.js +7 -5
  31. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSectioning.js.map +1 -1
  32. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSemanticReportBuilder.d.ts.map +1 -1
  33. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSemanticReportBuilder.js +11 -10
  34. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSemanticReportBuilder.js.map +1 -1
  35. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRStepsBuilder.d.ts.map +1 -1
  36. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRStepsBuilder.js +1 -9
  37. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRStepsBuilder.js.map +1 -1
  38. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateMapper.d.ts +11 -4
  39. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateMapper.d.ts.map +1 -1
  40. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateMapper.js +30 -28
  41. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateMapper.js.map +1 -1
  42. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateToFormSpec.d.ts +3 -9
  43. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateToFormSpec.d.ts.map +1 -1
  44. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateToFormSpec.js +4 -31
  45. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateToFormSpec.js.map +1 -1
  46. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMREncoder.d.ts.map +1 -1
  47. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMREncoder.js +2 -6
  48. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMREncoder.js.map +1 -1
  49. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRImportPipeline.d.ts +45 -0
  50. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRImportPipeline.d.ts.map +1 -0
  51. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRImportPipeline.js +141 -0
  52. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRImportPipeline.js.map +1 -0
  53. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRImporterAnalysis.d.ts +326 -0
  54. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRImporterAnalysis.d.ts.map +1 -0
  55. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRImporterAnalysis.js +1743 -0
  56. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRImporterAnalysis.js.map +1 -0
  57. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRSourceMap.d.ts +8 -8
  58. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRSourceMap.d.ts.map +1 -1
  59. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRSourceMap.js +6 -6
  60. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRSourceMap.js.map +1 -1
  61. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRTriggerEnrichment.d.ts +21 -15
  62. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRTriggerEnrichment.d.ts.map +1 -1
  63. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRTriggerEnrichment.js +83 -80
  64. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRTriggerEnrichment.js.map +1 -1
  65. package/FormSpec.FS/Integrations/CorEMR/CoreMRPathwayMapper.d.ts +51 -0
  66. package/FormSpec.FS/Integrations/CorEMR/CoreMRPathwayMapper.d.ts.map +1 -0
  67. package/FormSpec.FS/Integrations/CorEMR/CoreMRPathwayMapper.js +939 -0
  68. package/FormSpec.FS/Integrations/CorEMR/CoreMRPathwayMapper.js.map +1 -0
  69. package/FormSpec.FS/Integrations/CorEMR/CoreMRTypes.d.ts +2 -17
  70. package/FormSpec.FS/Integrations/CorEMR/CoreMRTypes.d.ts.map +1 -1
  71. package/FormSpec.FS/Integrations/CorEMR/CoreMRTypes.js +1 -66
  72. package/FormSpec.FS/Integrations/CorEMR/{TemplateManifestDecoder.d.ts → FormTemplateDecoder.d.ts} +53 -45
  73. package/FormSpec.FS/Integrations/CorEMR/FormTemplateDecoder.d.ts.map +1 -0
  74. package/FormSpec.FS/Integrations/CorEMR/{TemplateManifestDecoder.js → FormTemplateDecoder.js} +544 -254
  75. package/FormSpec.FS/Integrations/CorEMR/FormTemplateDecoder.js.map +1 -0
  76. package/FormSpec.FS/Integrations/CorEMR/FormTemplateDomainDecoder.d.ts +7 -0
  77. package/FormSpec.FS/Integrations/CorEMR/FormTemplateDomainDecoder.d.ts.map +1 -0
  78. package/FormSpec.FS/Integrations/CorEMR/FormTemplateDomainDecoder.js +280 -0
  79. package/FormSpec.FS/Integrations/CorEMR/FormTemplateDomainDecoder.js.map +1 -0
  80. package/FormSpec.FS/Interop/FormSpec.Api.Helpers.d.ts +16 -4
  81. package/FormSpec.FS/Interop/FormSpec.Api.Helpers.d.ts.map +1 -1
  82. package/FormSpec.FS/Interop/FormSpec.Api.Helpers.js +63 -18
  83. package/FormSpec.FS/Interop/FormSpec.Api.Helpers.js.map +1 -1
  84. package/FormSpec.FS/Interop/FormSpec.Api.Option.d.ts +4 -4
  85. package/FormSpec.FS/Interop/FormSpec.Api.Option.d.ts.map +1 -1
  86. package/FormSpec.FS/Interop/FormSpec.Api.Option.js +2 -2
  87. package/FormSpec.FS/Interop/FormSpec.Api.Option.js.map +1 -1
  88. package/FormSpec.FS/PathwayDataExtractor.d.ts.map +1 -1
  89. package/FormSpec.FS/PathwayDataExtractor.js +39 -18
  90. package/FormSpec.FS/PathwayDataExtractor.js.map +1 -1
  91. package/FormSpec.FS/PathwayExecutor.d.ts +10 -10
  92. package/FormSpec.FS/PathwayExecutor.d.ts.map +1 -1
  93. package/FormSpec.FS/PathwayExecutor.js +14 -14
  94. package/FormSpec.FS/PathwayExecutor.js.map +1 -1
  95. package/FormSpec.FS/PathwayValidator.d.ts.map +1 -1
  96. package/FormSpec.FS/PathwayValidator.js +8 -5
  97. package/FormSpec.FS/PathwayValidator.js.map +1 -1
  98. package/FormSpec.FS/Provenance.d.ts +15 -7
  99. package/FormSpec.FS/Provenance.d.ts.map +1 -1
  100. package/FormSpec.FS/Provenance.js +11 -11
  101. package/FormSpec.FS/Provenance.js.map +1 -1
  102. package/FormSpec.FS/Renderers/FormSpecMarkdownRenderer.d.ts.map +1 -1
  103. package/FormSpec.FS/Renderers/FormSpecMarkdownRenderer.js +16 -7
  104. package/FormSpec.FS/Renderers/FormSpecMarkdownRenderer.js.map +1 -1
  105. package/FormSpec.FS/Renderers/MermaidRenderer.d.ts.map +1 -1
  106. package/FormSpec.FS/Renderers/MermaidRenderer.js +4 -8
  107. package/FormSpec.FS/Renderers/MermaidRenderer.js.map +1 -1
  108. package/FormSpec.FS/Renderers/PathwayRenderers.d.ts.map +1 -1
  109. package/FormSpec.FS/Renderers/PathwayRenderers.js +5 -4
  110. package/FormSpec.FS/Renderers/PathwayRenderers.js.map +1 -1
  111. package/FormSpec.FS/TriggerActionDto.d.ts +32 -21
  112. package/FormSpec.FS/TriggerActionDto.d.ts.map +1 -1
  113. package/FormSpec.FS/TriggerActionDto.js +247 -61
  114. package/FormSpec.FS/TriggerActionDto.js.map +1 -1
  115. package/README.md +7 -7
  116. package/package.json +1 -1
  117. package/plugins/allergyfinder/src/AllergyFinderField.d.ts.map +1 -1
  118. package/plugins/allergyfinder/src/AllergyFinderField.js +2 -2
  119. package/plugins/allergyfinder/src/AllergyFinderField.js.map +1 -1
  120. package/plugins/bmi/src/BMIField.d.ts.map +1 -1
  121. package/plugins/bmi/src/BMIField.js +21 -15
  122. package/plugins/bmi/src/BMIField.js.map +1 -1
  123. package/plugins/demographics/src/DemographicsField.d.ts.map +1 -1
  124. package/plugins/demographics/src/DemographicsField.js +4 -4
  125. package/plugins/demographics/src/DemographicsField.js.map +1 -1
  126. package/plugins/likert/src/LikertField.d.ts.map +1 -1
  127. package/plugins/likert/src/LikertField.js +40 -35
  128. package/plugins/likert/src/LikertField.js.map +1 -1
  129. package/plugins/signature/src/SignatureField.d.ts.map +1 -1
  130. package/plugins/signature/src/SignatureField.js +4 -3
  131. package/plugins/signature/src/SignatureField.js.map +1 -1
  132. package/plugins/vitals/src/VitalsField.d.ts.map +1 -1
  133. package/plugins/vitals/src/VitalsField.js +4 -4
  134. package/plugins/vitals/src/VitalsField.js.map +1 -1
  135. package/src/FormSpec.FS/BlueprintValidation.ts +55 -24
  136. package/src/FormSpec.FS/Designer.ts +2 -2
  137. package/src/FormSpec.FS/FormSpec.ts +223 -100
  138. package/src/FormSpec.FS/FormSpecHelpers.ts +2 -2
  139. package/src/FormSpec.FS/FormSpecValues.ts +6 -3
  140. package/src/FormSpec.FS/Helpers.ts +16 -11
  141. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFieldTypeMapper.ts +2 -2
  142. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFormSpecValidator.ts +3 -3
  143. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSectioning.ts +10 -8
  144. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSemanticReportBuilder.ts +6 -5
  145. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRStepsBuilder.ts +1 -10
  146. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateMapper.ts +35 -30
  147. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateToFormSpec.ts +7 -26
  148. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMREncoder.ts +2 -6
  149. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRImportPipeline.ts +115 -0
  150. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRImporterAnalysis.ts +1059 -0
  151. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRSourceMap.ts +10 -10
  152. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRTriggerEnrichment.ts +61 -88
  153. package/src/FormSpec.FS/Integrations/CorEMR/CoreMRPathwayMapper.ts +926 -0
  154. package/src/FormSpec.FS/Integrations/CorEMR/CoreMRTypes.ts +3 -37
  155. package/src/FormSpec.FS/Integrations/CorEMR/FormTemplateDecoder.ts +1284 -0
  156. package/src/FormSpec.FS/Integrations/CorEMR/FormTemplateDomainDecoder.ts +287 -0
  157. package/src/FormSpec.FS/Interop/FormSpec.Api.Helpers.ts +76 -25
  158. package/src/FormSpec.FS/Interop/FormSpec.Api.Option.ts +6 -6
  159. package/src/FormSpec.FS/PathwayDataExtractor.ts +40 -20
  160. package/src/FormSpec.FS/PathwayExecutor.ts +26 -26
  161. package/src/FormSpec.FS/PathwayValidator.ts +8 -5
  162. package/src/FormSpec.FS/Provenance.ts +23 -15
  163. package/src/FormSpec.FS/Renderers/FormSpecMarkdownRenderer.ts +18 -8
  164. package/src/FormSpec.FS/Renderers/MermaidRenderer.ts +6 -10
  165. package/src/FormSpec.FS/Renderers/PathwayRenderers.ts +5 -5
  166. package/src/FormSpec.FS/TriggerActionDto.ts +247 -74
  167. package/src/plugins/allergyfinder/src/AllergyFinderField.ts +3 -3
  168. package/src/plugins/bmi/src/BMIField.ts +12 -5
  169. package/src/plugins/demographics/src/DemographicsField.ts +5 -5
  170. package/src/plugins/likert/src/LikertField.ts +16 -11
  171. package/src/plugins/signature/src/SignatureField.ts +4 -3
  172. package/src/plugins/vitals/src/VitalsField.ts +5 -5
  173. package/src/vye-os-contracts-fs/src/Core/Ids.ts +8 -8
  174. package/src/vye-os-contracts-fs/src/CoreMR/FormTemplate.ts +715 -0
  175. package/vye-os-contracts-fs/src/Core/Ids.d.ts +4 -4
  176. package/vye-os-contracts-fs/src/Core/Ids.d.ts.map +1 -1
  177. package/vye-os-contracts-fs/src/Core/Ids.js +18 -18
  178. package/vye-os-contracts-fs/src/CoreMR/FormTemplate.d.ts +310 -0
  179. package/vye-os-contracts-fs/src/CoreMR/FormTemplate.d.ts.map +1 -0
  180. package/vye-os-contracts-fs/src/CoreMR/FormTemplate.js +1242 -0
  181. package/vye-os-contracts-fs/src/CoreMR/FormTemplate.js.map +1 -0
  182. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTriggerConverter.d.ts +0 -69
  183. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTriggerConverter.d.ts.map +0 -1
  184. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTriggerConverter.js +0 -447
  185. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTriggerConverter.js.map +0 -1
  186. package/FormSpec.FS/Integrations/CorEMR/ItemTriggerConverter.d.ts +0 -19
  187. package/FormSpec.FS/Integrations/CorEMR/ItemTriggerConverter.d.ts.map +0 -1
  188. package/FormSpec.FS/Integrations/CorEMR/ItemTriggerConverter.js +0 -643
  189. package/FormSpec.FS/Integrations/CorEMR/ItemTriggerConverter.js.map +0 -1
  190. package/FormSpec.FS/Integrations/CorEMR/TemplateManifestDecoder.d.ts.map +0 -1
  191. package/FormSpec.FS/Integrations/CorEMR/TemplateManifestDecoder.js.map +0 -1
  192. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTriggerConverter.ts +0 -412
  193. package/src/FormSpec.FS/Integrations/CorEMR/ItemTriggerConverter.ts +0 -588
  194. package/src/FormSpec.FS/Integrations/CorEMR/TemplateManifestDecoder.ts +0 -1054
@@ -0,0 +1,115 @@
1
+ import { FSharpResult$2_Error, FSharpResult$2_$union, FSharpResult$2_Ok } from "@fable-org/fable-library-js/Result.js";
2
+ import { Record } from "@fable-org/fable-library-js/Types.js";
3
+ import { defaultArg, bind, map, value as value_2, Option } from "@fable-org/fable-library-js/Option.js";
4
+ import { tryFind, ofList, empty, FSharpMap } from "@fable-org/fable-library-js/Map.js";
5
+ import { EncounterTypes, TemplateItem, ItemTrigger, ReleaseAvailability_readList, ReleaseAvailability_statedTrue, TemplateForm, FormTemplateServed, ScoringCatalog, ReleaseAvailability$1_$reflection, InstrumentMapEntry_$reflection, ElementTypeEntry_$reflection, ReleaseAvailability$1_$union, InstrumentMapEntry, ElementTypeEntry } from "../../CorEMR/FormTemplateDecoder.js";
6
+ import { collect, cons, empty as empty_2, isEmpty, filter, map as map_1, singleton, FSharpList } from "@fable-org/fable-library-js/List.js";
7
+ import { Trigger_$reflection, Trigger } from "../../../../vye-os-contracts-fs/src/CoreMR/FormTemplate.js";
8
+ import { int32ToString, comparePrimitives, IComparable, IEquatable } from "@fable-org/fable-library-js/Util.js";
9
+ import { record_type, list_type, option_type, class_type, string_type, TypeInfo } from "@fable-org/fable-library-js/Reflection.js";
10
+ import { int32 } from "@fable-org/fable-library-js/Int32.js";
11
+ import { toCoreMRFormData, mapFormClassification } from "./CorEMRTemplateMapper.js";
12
+ import { Shared_FieldKey, Spec_FieldType_$union, Spec_FormSpec$1, Spec_FormClassification_$union } from "../../../FormSpec.js";
13
+ import { CoreMRFormData } from "../../CorEMR/CoreMRTypes.js";
14
+ import { empty as empty_1, singleton as singleton_1, append, delay, toList } from "@fable-org/fable-library-js/Seq.js";
15
+ import { CoreMRSourceMap_$reflection, CoreMRStepMap, CoreMRFieldAnchor, CoreMRConversionResult, convertWithMap, CoreMRSourceMap, ListMetadata } from "./CoreMRSourceMap.js";
16
+ import { convertFormTriggersToPathway } from "../../CorEMR/CoreMRPathwayMapper.js";
17
+ import { ImportOrigin, ImportOriginModule_provenance } from "../../../Provenance.js";
18
+ import { Auto_generateBoxedEncoder_437914C6, toString } from "../../../../Thoth.Json/packages/Thoth.Json/Encode.js";
19
+
20
+ function ok<$a, $b>(v: $a): FSharpResult$2_$union<$a, $b> {
21
+ return FSharpResult$2_Ok<$a, $b>(v);
22
+ }
23
+
24
+ function err<$a, $b>(v: $a): FSharpResult$2_$union<$b, $a> {
25
+ return FSharpResult$2_Error<$b, $a>(v);
26
+ }
27
+
28
+ export class ServedFacts extends Record implements IEquatable<ServedFacts>, IComparable<ServedFacts> {
29
+ readonly ElementTypes: Option<FSharpMap<string, ElementTypeEntry>>;
30
+ readonly Instruments: FSharpMap<string, InstrumentMapEntry>;
31
+ readonly Triggers: ReleaseAvailability$1_$union<FSharpList<Trigger>>;
32
+ constructor(ElementTypes: Option<FSharpMap<string, ElementTypeEntry>>, Instruments: FSharpMap<string, InstrumentMapEntry>, Triggers: ReleaseAvailability$1_$union<FSharpList<Trigger>>) {
33
+ super();
34
+ this.ElementTypes = ElementTypes;
35
+ this.Instruments = Instruments;
36
+ this.Triggers = Triggers;
37
+ }
38
+ }
39
+
40
+ export function ServedFacts_$reflection(): TypeInfo {
41
+ return record_type("FormSpec.Integrations.CorEMR.CoreMRImportPipeline.ServedFacts", [], ServedFacts, () => [["ElementTypes", option_type(class_type("Microsoft.FSharp.Collections.FSharpMap`2", [string_type, ElementTypeEntry_$reflection()]))], ["Instruments", class_type("Microsoft.FSharp.Collections.FSharpMap`2", [string_type, InstrumentMapEntry_$reflection()])], ["Triggers", ReleaseAvailability$1_$reflection(list_type(Trigger_$reflection()))]]);
42
+ }
43
+
44
+ /**
45
+ * The instrument map conduit states, keyed by form id. ⛔ A release that states no scoring (9704) yields an
46
+ * empty map — the reason travels on the catalog's `Scoring`, not here.
47
+ */
48
+ export function instrumentsOfScoring(scoring: ReleaseAvailability$1_$union<ScoringCatalog>): FSharpMap<string, InstrumentMapEntry> {
49
+ switch (scoring.tag) {
50
+ case /* NotInRelease */ 1:
51
+ case /* NotReadYet */ 2:
52
+ return empty<string, InstrumentMapEntry>({
53
+ Compare: comparePrimitives,
54
+ });
55
+ default:
56
+ return scoring.fields[0].InstrumentMap;
57
+ }
58
+ }
59
+
60
+ /**
61
+ * From ONE served form template — its own vocabulary entries, at most its own instrument entry, its triggers.
62
+ * ⭐ Equivalent for THIS form: `classificationOf` looks up only `string form.FormId`, and the converter
63
+ * looks up only the codes this form's items carry, which is exactly what conduit sent.
64
+ */
65
+ export function ServedFactsModule_ofServed(served: FormTemplateServed): ServedFacts {
66
+ let matchValue: ReleaseAvailability$1_$union<Option<InstrumentMapEntry>>, entry: InstrumentMapEntry;
67
+ return new ServedFacts(served.ElementTypes, (matchValue = served.Instrument, (matchValue.tag === /* NotInRelease */ 1) ? empty<string, InstrumentMapEntry>({
68
+ Compare: comparePrimitives,
69
+ }) : ((matchValue.tag === /* NotReadYet */ 2) ? empty<string, InstrumentMapEntry>({
70
+ Compare: comparePrimitives,
71
+ }) : ((matchValue.fields[0] == null) ? empty<string, InstrumentMapEntry>({
72
+ Compare: comparePrimitives,
73
+ }) : ((entry = value_2(matchValue.fields[0]), ofList<string, InstrumentMapEntry>(singleton([int32ToString(served.Form.FormId), entry] as [string, InstrumentMapEntry]), {
74
+ Compare: comparePrimitives,
75
+ })))))), served.TriggerReads);
76
+ }
77
+
78
+ /**
79
+ * A form's classification: intake, a clinical instrument (CoreMR declares a `form_scores` row for it),
80
+ * or general. ⭐ Extracted from `runPipeline` unchanged so the rule has a test of its own
81
+ * (`FormSpec.FS.Tests` → "CoreMR classification"); the import baseline proves the extraction changed no byte.
82
+ */
83
+ export function classificationOf(instruments: FSharpMap<string, InstrumentMapEntry>, form: TemplateForm): Spec_FormClassification_$union {
84
+ const preferredMapping: Option<InstrumentMapEntry> = tryFind<string, InstrumentMapEntry>(int32ToString(form.FormId), instruments);
85
+ return mapFormClassification(form.IsIntake ? "intake" : ((preferredMapping != null) ? "clinical_instrument" : undefined), map<InstrumentMapEntry, string>((m: InstrumentMapEntry): string => m.InstrumentType, preferredMapping), bind<InstrumentMapEntry, int32>((m_1: InstrumentMapEntry): Option<int32> => m_1.MaxScore, preferredMapping));
86
+ }
87
+
88
+ /**
89
+ * ⭐ `origin` is REQUIRED — the tenant and database this import is read FROM. ⛔ This is Studio's OWN
90
+ * provenance builder, a SECOND one beside `CoreMRSourceMap.convertWithMapAndProvenance`; both now take
91
+ * an origin, so neither can produce a blueprint that cannot be resolved back.
92
+ * ⭐ `importedAt` — the import's ONE clock read, taken by the CALLER at its edge (CTA-013): a pathway's
93
+ * `CreatedDate`. ⛔ Nothing below reads a clock.
94
+ */
95
+ export function runPipeline(origin: ImportOrigin, importedAt: Date, facts: ServedFacts, form: TemplateForm): FSharpResult$2_$union<[Spec_FormSpec$1<Spec_FieldType_$union>, CoreMRSourceMap], FSharpList<string>> {
96
+ let enc: EncounterTypes, bind$0040: Spec_FormSpec$1<Spec_FieldType_$union>;
97
+ const formData: CoreMRFormData = toCoreMRFormData(defaultArg(facts.ElementTypes, empty<string, ElementTypeEntry>({
98
+ Compare: comparePrimitives,
99
+ })), form);
100
+ const listMetadata: ListMetadata = new ListMetadata(form.Scoring, (enc = form.EncounterTypes, toList<string>(delay<string>((): Iterable<string> => append<string>(enc.Medical ? singleton_1<string>("medical") : empty_1<string>(), delay<string>((): Iterable<string> => append<string>(enc.Mental ? singleton_1<string>("mental") : empty_1<string>(), delay<string>((): Iterable<string> => append<string>(enc.Dental ? singleton_1<string>("dental") : empty_1<string>(), delay<string>((): Iterable<string> => (ReleaseAvailability_statedTrue(enc.Other) ? singleton_1<string>("other") : empty_1<string>())))))))))), form.Usage, classificationOf(facts.Instruments, form));
101
+ const triggersByItemId: FSharpMap<int32, FSharpList<ItemTrigger>> = ofList<int32, FSharpList<ItemTrigger>>(map_1<TemplateItem, [int32, FSharpList<ItemTrigger>]>((i_1: TemplateItem): [int32, FSharpList<ItemTrigger>] => ([i_1.ItemId, ReleaseAvailability_readList<ItemTrigger>(i_1.Triggers)] as [int32, FSharpList<ItemTrigger>]), filter<TemplateItem>((i: TemplateItem): boolean => !isEmpty(ReleaseAvailability_readList<ItemTrigger>(i.Triggers)), form.Items)), {
102
+ Compare: comparePrimitives,
103
+ });
104
+ try {
105
+ const result: CoreMRConversionResult = convertWithMap(formData, listMetadata, undefined, triggersByItemId);
106
+ return ok<[Spec_FormSpec$1<Spec_FieldType_$union>, CoreMRSourceMap], FSharpList<string>>([(bind$0040 = result.FormSpec, new Spec_FormSpec$1(bind$0040.Id, bind$0040.Code, bind$0040.Title, bind$0040.Abstract, bind$0040.Version, bind$0040.FormSpecVersion, bind$0040.Steps, bind$0040.CategoryTags, bind$0040.Score, bind$0040.VendorScore, bind$0040.AssociatedCodes, bind$0040.RequiresReview, bind$0040.RequiresReviewAndApproval, convertFormTriggersToPathway(importedAt, form, facts.Triggers, ofList<int32, Shared_FieldKey>(map_1<CoreMRFieldAnchor, [int32, Shared_FieldKey]>((anchor: CoreMRFieldAnchor): [int32, Shared_FieldKey] => ([anchor.ItemId, anchor.FieldKey] as [int32, Shared_FieldKey]), collect<CoreMRStepMap, CoreMRFieldAnchor>((step: CoreMRStepMap): FSharpList<CoreMRFieldAnchor> => step.FieldAnchors, result.SourceMap.Steps)), {
107
+ Compare: comparePrimitives,
108
+ })), bind$0040.Lifecycle, bind$0040.FilledMeta, bind$0040.CustomData, ImportOriginModule_provenance(origin, toString(0, Auto_generateBoxedEncoder_437914C6(CoreMRSourceMap_$reflection(), undefined, undefined, undefined)(result.SourceMap))), result.SourceMap.Classification)), result.SourceMap] as [Spec_FormSpec$1<Spec_FieldType_$union>, CoreMRSourceMap]);
109
+ }
110
+ catch (ex: any) {
111
+ return err<FSharpList<string>, [Spec_FormSpec$1<Spec_FieldType_$union>, CoreMRSourceMap]>(cons("CorEMR conversion failed: " + ex.message, (ex.stack == null) ? empty_2<string>() : singleton(" Stack: " + ex.stack)));
112
+ }
113
+ }
114
+
115
+ //# sourceMappingURL=CoreMRImportPipeline.ts.map