@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
@@ -8,7 +8,7 @@ import { bind, map, defaultArg, Option, value as value_3 } from "@fable-org/fabl
8
8
  import { int64 } from "@fable-org/fable-library-js/BigInt.js";
9
9
  import { Spec_FormClassification_General, Spec_FormStep$1, Spec_FormField$1, Spec_MultiChoiceInfo, Spec_SingleChoiceInfo, Shared_FieldOption, Spec_FormSpec$1_$reflection, Spec_FieldType_$reflection, Spec_FieldType_$union, Spec_FormSpec$1, Spec_FormClassification_$reflection, Spec_FormClassification_$union, Shared_FieldKey_$reflection, Shared_FieldKey, Shared_MatrixItemKey_$reflection, Shared_MatrixItemKey, Shared_FieldOptionKey_$reflection, Shared_FieldOptionKey } from "../../../FormSpec.js";
10
10
  import { tryFind as tryFind_1, choose, item as item_1, length, mapIndexed, sortBy, empty, FSharpList } from "@fable-org/fable-library-js/List.js";
11
- import { FormScoring_$reflection, FormScoring, ItemTrigger_$reflection, ItemTrigger } from "../../CorEMR/TemplateManifestDecoder.js";
11
+ import { FormScoring_$reflection, FormScoring, ItemTrigger_$reflection, ItemTrigger } from "../../CorEMR/FormTemplateDecoder.js";
12
12
  import { CoreMRFormData, CoreMRItem, CoreMRChoice, CoreMRTag_$reflection, CoreMRTrigger_$reflection, CoreMRTag, CoreMRTrigger } from "../../CorEMR/CoreMRTypes.js";
13
13
  import { List_groupBy } from "@fable-org/fable-library-js/Seq2.js";
14
14
  import { detectHeadings, groupItemsByHeadings, Section, HeadingItem } from "./CorEMRSectioning.js";
@@ -142,8 +142,8 @@ export function CoreMRFieldAnchor_$reflection(): TypeInfo {
142
142
  export class CoreMRStepAnchor extends Record implements IEquatable<CoreMRStepAnchor>, IComparable<CoreMRStepAnchor> {
143
143
  readonly HeadingItemId: Option<int32>;
144
144
  readonly HeadingSequence: int32;
145
- readonly HeadingLabel: string;
146
- constructor(HeadingItemId: Option<int32>, HeadingSequence: int32, HeadingLabel: string) {
145
+ readonly HeadingLabel: Option<string>;
146
+ constructor(HeadingItemId: Option<int32>, HeadingSequence: int32, HeadingLabel: Option<string>) {
147
147
  super();
148
148
  this.HeadingItemId = HeadingItemId;
149
149
  this.HeadingSequence = (HeadingSequence | 0);
@@ -152,7 +152,7 @@ export class CoreMRStepAnchor extends Record implements IEquatable<CoreMRStepAnc
152
152
  }
153
153
 
154
154
  export function CoreMRStepAnchor_$reflection(): TypeInfo {
155
- return record_type("FormSpec.Integrations.CorEMR.CoreMRSourceMap.CoreMRStepAnchor", [], CoreMRStepAnchor, () => [["HeadingItemId", option_type(int32_type)], ["HeadingSequence", int32_type], ["HeadingLabel", string_type]]);
155
+ return record_type("FormSpec.Integrations.CorEMR.CoreMRSourceMap.CoreMRStepAnchor", [], CoreMRStepAnchor, () => [["HeadingItemId", option_type(int32_type)], ["HeadingSequence", int32_type], ["HeadingLabel", option_type(string_type)]]);
156
156
  }
157
157
 
158
158
  export class CoreMRAbsorbedItem extends Record implements IEquatable<CoreMRAbsorbedItem>, IComparable<CoreMRAbsorbedItem> {
@@ -195,7 +195,7 @@ export class CoreMRSourceMap extends Record implements IEquatable<CoreMRSourceMa
195
195
  readonly FormId: int32;
196
196
  readonly VersionId: int32;
197
197
  readonly VersionNumber: int32;
198
- readonly FormName: Option<string>;
198
+ readonly FormName: string;
199
199
  readonly FormCode: string;
200
200
  readonly FormCodeSource: string;
201
201
  readonly Description: Option<string>;
@@ -213,7 +213,7 @@ export class CoreMRSourceMap extends Record implements IEquatable<CoreMRSourceMa
213
213
  readonly Triggers: FSharpList<CoreMRTrigger>;
214
214
  readonly Tags: FSharpList<CoreMRTag>;
215
215
  readonly FormSpecId: string;
216
- constructor(FormId: int32, VersionId: int32, VersionNumber: int32, FormName: Option<string>, FormCode: string, FormCodeSource: string, Description: Option<string>, RequiresSignature: boolean, IsIntake: boolean, Scoring: Option<FormScoring>, EncounterTypes: FSharpList<string>, Usage: Option<string>, Classification: Spec_FormClassification_$union, StructureHash: Option<string>, ClinicalHash: Option<string>, CosmeticHash: Option<string>, Steps: FSharpList<CoreMRStepMap>, AbsorbedItems: FSharpList<CoreMRAbsorbedItem>, Triggers: FSharpList<CoreMRTrigger>, Tags: FSharpList<CoreMRTag>, FormSpecId: string) {
216
+ constructor(FormId: int32, VersionId: int32, VersionNumber: int32, FormName: string, FormCode: string, FormCodeSource: string, Description: Option<string>, RequiresSignature: boolean, IsIntake: boolean, Scoring: Option<FormScoring>, EncounterTypes: FSharpList<string>, Usage: Option<string>, Classification: Spec_FormClassification_$union, StructureHash: Option<string>, ClinicalHash: Option<string>, CosmeticHash: Option<string>, Steps: FSharpList<CoreMRStepMap>, AbsorbedItems: FSharpList<CoreMRAbsorbedItem>, Triggers: FSharpList<CoreMRTrigger>, Tags: FSharpList<CoreMRTag>, FormSpecId: string) {
217
217
  super();
218
218
  this.FormId = (FormId | 0);
219
219
  this.VersionId = (VersionId | 0);
@@ -240,7 +240,7 @@ export class CoreMRSourceMap extends Record implements IEquatable<CoreMRSourceMa
240
240
  }
241
241
 
242
242
  export function CoreMRSourceMap_$reflection(): TypeInfo {
243
- return record_type("FormSpec.Integrations.CorEMR.CoreMRSourceMap.CoreMRSourceMap", [], CoreMRSourceMap, () => [["FormId", int32_type], ["VersionId", int32_type], ["VersionNumber", int32_type], ["FormName", option_type(string_type)], ["FormCode", string_type], ["FormCodeSource", string_type], ["Description", option_type(string_type)], ["RequiresSignature", bool_type], ["IsIntake", bool_type], ["Scoring", option_type(FormScoring_$reflection())], ["EncounterTypes", list_type(string_type)], ["Usage", option_type(string_type)], ["Classification", Spec_FormClassification_$reflection()], ["StructureHash", option_type(string_type)], ["ClinicalHash", option_type(string_type)], ["CosmeticHash", option_type(string_type)], ["Steps", list_type(CoreMRStepMap_$reflection())], ["AbsorbedItems", list_type(CoreMRAbsorbedItem_$reflection())], ["Triggers", list_type(CoreMRTrigger_$reflection())], ["Tags", list_type(CoreMRTag_$reflection())], ["FormSpecId", class_type("System.Guid")]]);
243
+ return record_type("FormSpec.Integrations.CorEMR.CoreMRSourceMap.CoreMRSourceMap", [], CoreMRSourceMap, () => [["FormId", int32_type], ["VersionId", int32_type], ["VersionNumber", int32_type], ["FormName", string_type], ["FormCode", string_type], ["FormCodeSource", string_type], ["Description", option_type(string_type)], ["RequiresSignature", bool_type], ["IsIntake", bool_type], ["Scoring", option_type(FormScoring_$reflection())], ["EncounterTypes", list_type(string_type)], ["Usage", option_type(string_type)], ["Classification", Spec_FormClassification_$reflection()], ["StructureHash", option_type(string_type)], ["ClinicalHash", option_type(string_type)], ["CosmeticHash", option_type(string_type)], ["Steps", list_type(CoreMRStepMap_$reflection())], ["AbsorbedItems", list_type(CoreMRAbsorbedItem_$reflection())], ["Triggers", list_type(CoreMRTrigger_$reflection())], ["Tags", list_type(CoreMRTag_$reflection())], ["FormSpecId", class_type("System.Guid")]]);
244
244
  }
245
245
 
246
246
  export class CoreMRConversionResult extends Record implements IEquatable<CoreMRConversionResult>, IComparable<CoreMRConversionResult> {
@@ -339,7 +339,7 @@ export function ListMetadata_$reflection(): TypeInfo {
339
339
  * Build the complete SourceMap from raw CoreMR data and the resulting FormSpec.
340
340
  * When listMetadata is Some (from the templates catalog during import), Scoring, EncounterTypes,
341
341
  * Usage and Classification are populated. IsIntake always comes from formData.Metadata.
342
- * When elementTypes is Some (from bridge templates endpoint), use it for ValueEncoding; else fallback to CorEMRElementTypeMap.
342
+ * `elementTypes`: `None` = the ENCODING comes from `CorEMRElementTypeMap`'s constant — FLIP-8's to replace (named, not hidden).
343
343
  */
344
344
  export function buildSourceMap(elementTypes: Option<FSharpMap<int32, ElementTypeInfo>>, triggersByItemId: FSharpMap<int32, FSharpList<ItemTrigger>>, formData: CoreMRFormData, formSpec: Spec_FormSpec$1<Spec_FieldType_$union>, listMetadata: Option<ListMetadata>): CoreMRSourceMap {
345
345
  const formCode: string = defaultArg(formSpec.Code, `CORE-${formData.Metadata.FormId}`);
@@ -378,7 +378,7 @@ export function buildSourceMap(elementTypes: Option<FSharpMap<int32, ElementType
378
378
  * Convert CoreMR form data to FormSpec with full source mapping.
379
379
  * When listMetadata is Some (from the templates catalog during import), Scoring, EncounterTypes,
380
380
  * Usage and Classification are populated. IsIntake always comes from formData.Metadata.
381
- * When elementTypes is Some (from bridge templates endpoint), use it for ValueEncoding; else fallback to CorEMRElementTypeMap.
381
+ * `elementTypes`: `None` = the ENCODING comes from `CorEMRElementTypeMap`'s constant — FLIP-8's to replace (named, not hidden).
382
382
  */
383
383
  export function convertWithMap(formData: CoreMRFormData, listMetadata: Option<ListMetadata>, elementTypes: Option<FSharpMap<int32, ElementTypeInfo>>, triggersByItemId: FSharpMap<int32, FSharpList<ItemTrigger>>): CoreMRConversionResult {
384
384
  const formSpec: Spec_FormSpec$1<Spec_FieldType_$union> = convertToFormSpec(bind<ListMetadata, FormScoring>((m: ListMetadata): Option<FormScoring> => m.Scoring, listMetadata), formData);
@@ -389,7 +389,7 @@ export function convertWithMap(formData: CoreMRFormData, listMetadata: Option<Li
389
389
  * Convert CoreMR form data to FormSpec with Provenance attached (for persist on import).
390
390
  * When listMetadata is Some (from the templates catalog during import), Scoring, EncounterTypes,
391
391
  * Usage and Classification are populated. IsIntake always comes from formData.Metadata.
392
- * When elementTypes is Some (from bridge templates endpoint), use it for ValueEncoding; else fallback to CorEMRElementTypeMap.
392
+ * `elementTypes`: `None` = the ENCODING comes from `CorEMRElementTypeMap`'s constant — FLIP-8's to replace (named, not hidden).
393
393
  * ⭐ `origin` is REQUIRED. A blueprint imported without naming its tenant and database produces a
394
394
  * provenance that cannot be resolved back — measured 2026-09-23: 228 of 228 imports were unresolvable.
395
395
  */
@@ -1,106 +1,79 @@
1
- import { List_distinctBy } from "@fable-org/fable-library-js/Seq2.js";
2
- import { TriggerCondition, TriggerAction, ItemTrigger } from "../../CorEMR/TemplateManifestDecoder.js";
3
- import { tryParse, int32 } from "@fable-org/fable-library-js/Int32.js";
4
- import { map as map_1, tryHead, ofArray, tryFind, tryPick, FSharpList, collect } from "@fable-org/fable-library-js/List.js";
5
- import { CoreMRSourceMap_$reflection, CoreMRSourceMap, CoreMRStepMap, CoreMRFieldAnchor } from "./CoreMRSourceMap.js";
6
- import { uncurry2, numberHash } from "@fable-org/fable-library-js/Util.js";
7
- import { FSharpRef } from "@fable-org/fable-library-js/Types.js";
8
- import { value as value_1, bind, defaultArg, map, Option } from "@fable-org/fable-library-js/Option.js";
9
- import { tryFind as tryFind_1 } from "@fable-org/fable-library-js/Map.js";
10
- import { TriggerAction as TriggerAction_1 } from "../../../../vye-os-contracts-fs/src/Clinical/TriggerAction.js";
11
- import { convertActionsToBaseDtos } from "../../../TriggerActionDto.js";
12
- import { IntegrationProvenance } from "../../../Provenance.js";
13
- import { Auto_generateBoxedDecoder_Z6670B51, fromString } from "../../../../Thoth.Json/packages/Thoth.Json/Decode.js";
14
- import { FSharpResult$2_$union } from "@fable-org/fable-library-js/Result.js";
15
- import { Spec_FieldType_$union, Spec_FormSpec$1, ClinicalPathway_ActionInfo_$union } from "../../../FormSpec.js";
1
+ import { Record } from "@fable-org/fable-library-js/Types.js";
2
+ import { IComparable, IEquatable } from "@fable-org/fable-library-js/Util.js";
3
+ import { list_type, record_type, string_type, TypeInfo } from "@fable-org/fable-library-js/Reflection.js";
4
+ import { choose, map, FSharpList } from "@fable-org/fable-library-js/List.js";
5
+ import { TriggerAction_$reflection, TriggerAction } from "../../../../vye-os-contracts-fs/src/Clinical/TriggerAction.js";
6
+ import { ActionWrite_$union, convertActionToBaseDto } from "../../../TriggerActionDto.js";
7
+ import { ClinicalPathway_PathwayAction, ClinicalPathway_CoreMRTriggerRef, ClinicalPathway_ActionOrigin_$union } from "../../../FormSpec.js";
8
+ import { FSharpResult$2_$union, FSharpResult$2_Ok, FSharpResult$2_Error } from "@fable-org/fable-library-js/Result.js";
9
+ import { Option } from "@fable-org/fable-library-js/Option.js";
16
10
 
17
- function collectTriggers(sourceMap: CoreMRSourceMap): FSharpList<ItemTrigger> {
18
- return List_distinctBy<ItemTrigger, int32>((t: ItemTrigger): int32 => t.TriggerId, collect<CoreMRStepMap, ItemTrigger>((step: CoreMRStepMap): FSharpList<ItemTrigger> => collect<CoreMRFieldAnchor, ItemTrigger>((anchor: CoreMRFieldAnchor): FSharpList<ItemTrigger> => anchor.Triggers, step.FieldAnchors), sourceMap.Steps), {
19
- Equals: (x: int32, y: int32): boolean => (x === y),
20
- GetHashCode: numberHash,
21
- });
22
- }
23
-
24
- function tryParseInt(s: string): Option<int32> {
25
- let matchValue: [boolean, int32];
26
- let outArg = 0;
27
- matchValue = ([tryParse(s, 511, false, 32, new FSharpRef<int32>((): int32 => outArg, (v: int32): void => {
28
- outArg = (v | 0);
29
- })), outArg] as [boolean, int32]);
30
- if (matchValue[0]) {
31
- return matchValue[1];
32
- }
33
- else {
34
- return undefined;
11
+ export class NotWrittenAction extends Record implements IEquatable<NotWrittenAction>, IComparable<NotWrittenAction> {
12
+ readonly Action: string;
13
+ readonly Reason: string;
14
+ constructor(Action: string, Reason: string) {
15
+ super();
16
+ this.Action = Action;
17
+ this.Reason = Reason;
35
18
  }
36
19
  }
37
20
 
38
- function findMatchingTriggerAction(dto: TriggerAction_1, triggers: FSharpList<ItemTrigger>): Option<[ItemTrigger, TriggerAction]> {
39
- return tryPick<ItemTrigger, [ItemTrigger, TriggerAction]>((trigger: ItemTrigger): Option<[ItemTrigger, TriggerAction]> => map<TriggerAction, [ItemTrigger, TriggerAction]>((action_1: TriggerAction): [ItemTrigger, TriggerAction] => ([trigger, action_1] as [ItemTrigger, TriggerAction]), tryFind<TriggerAction>((action: TriggerAction): boolean => {
40
- if ((action.ActionType.toLowerCase() === dto.ActionType) ? true : ((dto.ActionType === "recurring_task") && (action.ActionType.toLowerCase() === "recurring_task"))) {
41
- return defaultArg(tryPick<string, int32>((key: string): Option<int32> => bind<string, int32>(tryParseInt, tryFind_1<string, string>(key, action.Params)), ofArray(["id", "category_id", "cat_id", "problem_list_id", "medset_id"])), 0) === dto.CategoryId;
42
- }
43
- else {
44
- return false;
45
- }
46
- }, trigger.Actions)), triggers);
21
+ export function NotWrittenAction_$reflection(): TypeInfo {
22
+ return record_type("FormSpec.Integrations.CorEMR.CoreMRTriggerEnrichment.NotWrittenAction", [], NotWrittenAction, () => [["Action", string_type], ["Reason", string_type]]);
47
23
  }
48
24
 
49
- function enrichDto(triggers: FSharpList<ItemTrigger>, dto: TriggerAction_1): TriggerAction_1 {
50
- const matchValue: Option<[ItemTrigger, TriggerAction]> = findMatchingTriggerAction(dto, triggers);
51
- if (matchValue == null) {
52
- return dto;
53
- }
54
- else {
55
- const trigger: ItemTrigger = value_1(matchValue)[0];
56
- return new TriggerAction_1(dto.ActionType, trigger.TriggerId, value_1(matchValue)[1].ActionId, dto.CategoryId, dto.CategoryName, dto.Priority, dto.Description, dto.DateStart, dto.AllDay, dto.ScheduleEnd, dto.ProblemListId, map<TriggerCondition, int32>((c: TriggerCondition): int32 => c.SourceFieldId, tryHead<TriggerCondition>(trigger.Conditions)), dto.TreatmentId, dto.ScheduleId, dto.ProviderId, dto.Signature, dto.SourceRelatedId, dto.RelatedType, dto.Chronic, dto.Severity, dto.Inflammation, dto.MedsetId, dto.PharmacyId);
25
+ export class CoreMRActionWrites extends Record implements IEquatable<CoreMRActionWrites>, IComparable<CoreMRActionWrites> {
26
+ readonly Written: FSharpList<TriggerAction>;
27
+ readonly NotWritten: FSharpList<NotWrittenAction>;
28
+ constructor(Written: FSharpList<TriggerAction>, NotWritten: FSharpList<NotWrittenAction>) {
29
+ super();
30
+ this.Written = Written;
31
+ this.NotWritten = NotWritten;
57
32
  }
58
33
  }
59
34
 
35
+ export function CoreMRActionWrites_$reflection(): TypeInfo {
36
+ return record_type("FormSpec.Integrations.CorEMR.CoreMRTriggerEnrichment.CoreMRActionWrites", [], CoreMRActionWrites, () => [["Written", list_type(TriggerAction_$reflection())], ["NotWritten", list_type(NotWrittenAction_$reflection())]]);
37
+ }
38
+
60
39
  /**
61
- * FULL CoreMR conversion: ActionInfo → TriggerActionDto with provenance enrichment.
62
- *
63
- * THIS is the function production uses (DynamicFormPreview.fs calls this on publish).
64
- * DO NOT call convertActionsToBaseDtos directly for CoreMR publishing — you'll miss
65
- * trigger IDs from provenance.
66
- *
67
- * What it does:
68
- * 1. Converts ALL supported action types via convertActionsToBaseDtos (Task, Alert, Problem, Treatment, Medset)
69
- * 2. Enriches DTOs with triggerId/triggerActionId/formItemId from provenance
70
- * 3. Enriches problem DTOs with chronic flag from trigger params
71
- *
72
- * If no provenance (hand-authored pathway) → returns base DTOs with zeros (safe fallback).
40
+ * The CoreMR write of each executed pathway action, in order: WRITTEN with the identity its origin states, or
41
+ * NOT WRITTEN with the reason (no CoreMR home — `convertActionToBaseDto` — or `Authored`).
42
+ * Production callers: f1-api `FormSpecService` (publish-preview, filled-form export).
73
43
  */
74
- export function convertActionsForCoreMR(actions: FSharpList<ClinicalPathway_ActionInfo_$union>, formSpec: Spec_FormSpec$1<Spec_FieldType_$union>): FSharpList<TriggerAction_1> {
75
- const baseDtos: FSharpList<TriggerAction_1> = convertActionsToBaseDtos(actions);
76
- const matchValue: Option<IntegrationProvenance> = formSpec.Provenance;
77
- let matchResult: int32, p_1: IntegrationProvenance;
78
- if (matchValue != null) {
79
- if (value_1(matchValue).Vendor === "coremr") {
80
- matchResult = 0;
81
- p_1 = value_1(matchValue);
82
- }
83
- else {
84
- matchResult = 1;
85
- }
86
- }
87
- else {
88
- matchResult = 1;
89
- }
90
- switch (matchResult) {
91
- case 0: {
92
- const matchValue_1: FSharpResult$2_$union<CoreMRSourceMap, string> = fromString<CoreMRSourceMap>(uncurry2(Auto_generateBoxedDecoder_Z6670B51(CoreMRSourceMap_$reflection(), undefined, undefined)), p_1!.Payload);
93
- if (matchValue_1.tag === /* Error */ 1) {
94
- return baseDtos;
44
+ export function convertActionsForCoreMR(actions: FSharpList<ClinicalPathway_PathwayAction>): CoreMRActionWrites {
45
+ const outcomes: FSharpList<FSharpResult$2_$union<TriggerAction, NotWrittenAction>> = map<ClinicalPathway_PathwayAction, FSharpResult$2_$union<TriggerAction, NotWrittenAction>>((pa: ClinicalPathway_PathwayAction): FSharpResult$2_$union<TriggerAction, NotWrittenAction> => {
46
+ const matchValue: ActionWrite_$union = convertActionToBaseDto(pa.Action);
47
+ if (matchValue.tag === /* Written */ 0) {
48
+ const dto: TriggerAction = matchValue.fields[0];
49
+ const matchValue_1: ClinicalPathway_ActionOrigin_$union = pa.Origin;
50
+ if (matchValue_1.tag === /* Authored */ 0) {
51
+ return FSharpResult$2_Error<TriggerAction, NotWrittenAction>(new NotWrittenAction(dto.ActionType, "hand-authored: it names no CoreMR trigger action, so CoreMR cannot record it"));
95
52
  }
96
53
  else {
97
- const triggers: FSharpList<ItemTrigger> = collectTriggers(matchValue_1.fields[0]);
98
- return map_1<TriggerAction_1, TriggerAction_1>((dto: TriggerAction_1): TriggerAction_1 => enrichDto(triggers, dto), baseDtos);
54
+ const origin: ClinicalPathway_CoreMRTriggerRef = matchValue_1.fields[0];
55
+ return FSharpResult$2_Ok<TriggerAction, NotWrittenAction>(new TriggerAction(dto.ActionType, origin.TriggerId, origin.ActionId, dto.CategoryId, dto.CategoryName, dto.Priority, dto.Description, dto.DateStart, dto.AllDay, dto.ScheduleEnd, dto.ProblemListId, origin.SourceItem, dto.TreatmentId, dto.ScheduleId, dto.ProviderId, dto.Signature, dto.SourceRelatedId, dto.RelatedType, dto.Chronic, dto.Severity, dto.Inflammation, dto.MedsetId, dto.PharmacyId));
99
56
  }
100
57
  }
101
- default:
102
- return baseDtos;
103
- }
58
+ else {
59
+ return FSharpResult$2_Error<TriggerAction, NotWrittenAction>(new NotWrittenAction(matchValue.fields[0], matchValue.fields[1]));
60
+ }
61
+ }, actions);
62
+ return new CoreMRActionWrites(choose<FSharpResult$2_$union<TriggerAction, NotWrittenAction>, TriggerAction>((_arg: FSharpResult$2_$union<TriggerAction, NotWrittenAction>): Option<TriggerAction> => {
63
+ if (_arg.tag === /* Error */ 1) {
64
+ return undefined;
65
+ }
66
+ else {
67
+ return _arg.fields[0];
68
+ }
69
+ }, outcomes), choose<FSharpResult$2_$union<TriggerAction, NotWrittenAction>, NotWrittenAction>((_arg_1: FSharpResult$2_$union<TriggerAction, NotWrittenAction>): Option<NotWrittenAction> => {
70
+ if (_arg_1.tag === /* Ok */ 0) {
71
+ return undefined;
72
+ }
73
+ else {
74
+ return _arg_1.fields[0];
75
+ }
76
+ }, outcomes));
104
77
  }
105
78
 
106
79
  //# sourceMappingURL=CoreMRTriggerEnrichment.ts.map