@f1studio/form-spec 5.0.0-alpha.111 → 5.0.0-alpha.113

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 (191) hide show
  1. package/FormSpec.FS/BitmaskHelpers.d.ts +23 -0
  2. package/FormSpec.FS/BitmaskHelpers.d.ts.map +1 -0
  3. package/FormSpec.FS/BlueprintValidation.d.ts +16 -0
  4. package/FormSpec.FS/BlueprintValidation.d.ts.map +1 -0
  5. package/FormSpec.FS/FormSpec.d.ts +19 -5
  6. package/FormSpec.FS/FormSpec.d.ts.map +1 -1
  7. package/FormSpec.FS/FormSpecHelpers.d.ts +4 -0
  8. package/FormSpec.FS/FormSpecHelpers.d.ts.map +1 -1
  9. package/FormSpec.FS/FormSpecValues.d.ts +5 -0
  10. package/FormSpec.FS/FormSpecValues.d.ts.map +1 -1
  11. package/FormSpec.FS/Helpers.d.ts.map +1 -1
  12. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRAdapter.d.ts +13 -0
  13. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRAdapter.d.ts.map +1 -0
  14. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRElementTypeMap.d.ts +22 -0
  15. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRElementTypeMap.d.ts.map +1 -0
  16. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFieldTypeMapper.d.ts +22 -0
  17. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFieldTypeMapper.d.ts.map +1 -0
  18. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFormSpecValidator.d.ts +130 -0
  19. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFormSpecValidator.d.ts.map +1 -0
  20. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSectioning.d.ts +37 -0
  21. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSectioning.d.ts.map +1 -0
  22. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSemanticReportBuilder.d.ts +231 -0
  23. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSemanticReportBuilder.d.ts.map +1 -0
  24. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRStepsBuilder.d.ts +10 -0
  25. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRStepsBuilder.d.ts.map +1 -0
  26. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateToFormSpec.d.ts +55 -0
  27. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateToFormSpec.d.ts.map +1 -0
  28. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTriggerConverter.d.ts +69 -0
  29. package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTriggerConverter.d.ts.map +1 -0
  30. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMREncoder.d.ts +21 -0
  31. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMREncoder.d.ts.map +1 -0
  32. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRSourceMap.d.ts +133 -0
  33. package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRSourceMap.d.ts.map +1 -0
  34. package/FormSpec.FS/Integrations/Adapters/CorEMR/FormSpecToCoreMRInsert.d.ts +52 -0
  35. package/FormSpec.FS/Integrations/Adapters/CorEMR/FormSpecToCoreMRInsert.d.ts.map +1 -0
  36. package/FormSpec.FS/Integrations/Adapters/FormSystemAdapter.d.ts +46 -0
  37. package/FormSpec.FS/Integrations/Adapters/FormSystemAdapter.d.ts.map +1 -0
  38. package/FormSpec.FS/Integrations/Adapters/ReactHookForm/ReactHookFormAdapter.d.ts +4 -0
  39. package/FormSpec.FS/Integrations/Adapters/ReactHookForm/ReactHookFormAdapter.d.ts.map +1 -0
  40. package/FormSpec.FS/Integrations/Adapters/ReactHookForm/ReactHookFormTypes.d.ts +36 -0
  41. package/FormSpec.FS/Integrations/Adapters/ReactHookForm/ReactHookFormTypes.d.ts.map +1 -0
  42. package/FormSpec.FS/Integrations/CorEMR/CorEmrTemplates.d.ts +95 -0
  43. package/FormSpec.FS/Integrations/CorEMR/CorEmrTemplates.d.ts.map +1 -0
  44. package/FormSpec.FS/Integrations/CorEMR/CoreMRTypes.d.ts +449 -0
  45. package/FormSpec.FS/Integrations/CorEMR/CoreMRTypes.d.ts.map +1 -0
  46. package/FormSpec.FS/Interop/FormSpec.Api.Helpers.d.ts.map +1 -1
  47. package/FormSpec.FS/Interop/FormSpec.Api.Option.d.ts +3 -1
  48. package/FormSpec.FS/Interop/FormSpec.Api.Option.d.ts.map +1 -1
  49. package/FormSpec.FS/Provenance.d.ts +10 -0
  50. package/FormSpec.FS/Provenance.d.ts.map +1 -0
  51. package/FormSpec.FS/Renderers/FormSpecMarkdownRenderer.d.ts.map +1 -1
  52. package/FormSpec.TS/FormSpec.FS/BitmaskHelpers.js +56 -0
  53. package/FormSpec.TS/FormSpec.FS/BitmaskHelpers.js.map +1 -0
  54. package/FormSpec.TS/FormSpec.FS/BitmaskHelpers.ts.map +1 -0
  55. package/FormSpec.TS/FormSpec.FS/BlueprintValidation.js +116 -0
  56. package/FormSpec.TS/FormSpec.FS/BlueprintValidation.js.map +1 -0
  57. package/FormSpec.TS/FormSpec.FS/BlueprintValidation.ts.map +1 -0
  58. package/FormSpec.TS/FormSpec.FS/Designer.js +2 -2
  59. package/FormSpec.TS/FormSpec.FS/Designer.js.map +1 -1
  60. package/FormSpec.TS/FormSpec.FS/Designer.ts.map +1 -1
  61. package/FormSpec.TS/FormSpec.FS/FormSpec.js +72 -3
  62. package/FormSpec.TS/FormSpec.FS/FormSpec.js.map +1 -1
  63. package/FormSpec.TS/FormSpec.FS/FormSpec.ts.map +1 -1
  64. package/FormSpec.TS/FormSpec.FS/FormSpecHelpers.js +201 -3
  65. package/FormSpec.TS/FormSpec.FS/FormSpecHelpers.js.map +1 -1
  66. package/FormSpec.TS/FormSpec.FS/FormSpecHelpers.ts.map +1 -1
  67. package/FormSpec.TS/FormSpec.FS/FormSpecValues.js +38 -3
  68. package/FormSpec.TS/FormSpec.FS/FormSpecValues.js.map +1 -1
  69. package/FormSpec.TS/FormSpec.FS/FormSpecValues.ts.map +1 -1
  70. package/FormSpec.TS/FormSpec.FS/Helpers.js +44 -27
  71. package/FormSpec.TS/FormSpec.FS/Helpers.js.map +1 -1
  72. package/FormSpec.TS/FormSpec.FS/Helpers.ts.map +1 -1
  73. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRAdapter.js +45 -0
  74. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRAdapter.js.map +1 -0
  75. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRAdapter.ts.map +1 -0
  76. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRElementTypeMap.js +145 -0
  77. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRElementTypeMap.js.map +1 -0
  78. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRElementTypeMap.ts.map +1 -0
  79. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFieldTypeMapper.js +139 -0
  80. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFieldTypeMapper.js.map +1 -0
  81. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFieldTypeMapper.ts.map +1 -0
  82. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFormSpecValidator.js +801 -0
  83. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFormSpecValidator.js.map +1 -0
  84. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFormSpecValidator.ts.map +1 -0
  85. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSectioning.js +121 -0
  86. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSectioning.js.map +1 -0
  87. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSectioning.ts.map +1 -0
  88. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSemanticReportBuilder.js +1380 -0
  89. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSemanticReportBuilder.js.map +1 -0
  90. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSemanticReportBuilder.ts.map +1 -0
  91. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRStepsBuilder.js +29 -0
  92. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRStepsBuilder.js.map +1 -0
  93. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRStepsBuilder.ts.map +1 -0
  94. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateToFormSpec.js +172 -0
  95. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateToFormSpec.js.map +1 -0
  96. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateToFormSpec.ts.map +1 -0
  97. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTriggerConverter.js +406 -0
  98. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTriggerConverter.js.map +1 -0
  99. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTriggerConverter.ts.map +1 -0
  100. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMREncoder.js +317 -0
  101. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMREncoder.js.map +1 -0
  102. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMREncoder.ts.map +1 -0
  103. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRSourceMap.js +622 -0
  104. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRSourceMap.js.map +1 -0
  105. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRSourceMap.ts.map +1 -0
  106. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/FormSpecToCoreMRInsert.js +448 -0
  107. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/FormSpecToCoreMRInsert.js.map +1 -0
  108. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/CorEMR/FormSpecToCoreMRInsert.ts.map +1 -0
  109. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/FormSystemAdapter.js +198 -0
  110. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/FormSystemAdapter.js.map +1 -0
  111. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/FormSystemAdapter.ts.map +1 -0
  112. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/ReactHookForm/ReactHookFormAdapter.js +57 -0
  113. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/ReactHookForm/ReactHookFormAdapter.js.map +1 -0
  114. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/ReactHookForm/ReactHookFormAdapter.ts.map +1 -0
  115. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/ReactHookForm/ReactHookFormTypes.js +144 -0
  116. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/ReactHookForm/ReactHookFormTypes.js.map +1 -0
  117. package/FormSpec.TS/FormSpec.FS/Integrations/Adapters/ReactHookForm/ReactHookFormTypes.ts.map +1 -0
  118. package/FormSpec.TS/FormSpec.FS/Integrations/CorEMR/CorEmrTemplates.js +258 -0
  119. package/FormSpec.TS/FormSpec.FS/Integrations/CorEMR/CorEmrTemplates.js.map +1 -0
  120. package/FormSpec.TS/FormSpec.FS/Integrations/CorEMR/CorEmrTemplates.ts.map +1 -0
  121. package/FormSpec.TS/FormSpec.FS/Integrations/CorEMR/CoreMRTypes.js +1768 -0
  122. package/FormSpec.TS/FormSpec.FS/Integrations/CorEMR/CoreMRTypes.js.map +1 -0
  123. package/FormSpec.TS/FormSpec.FS/Integrations/CorEMR/CoreMRTypes.ts.map +1 -0
  124. package/FormSpec.TS/FormSpec.FS/Interop/FormSpec.Api.Helpers.js +22 -18
  125. package/FormSpec.TS/FormSpec.FS/Interop/FormSpec.Api.Helpers.js.map +1 -1
  126. package/FormSpec.TS/FormSpec.FS/Interop/FormSpec.Api.Helpers.ts.map +1 -1
  127. package/FormSpec.TS/FormSpec.FS/Interop/FormSpec.Api.Option.js +18 -6
  128. package/FormSpec.TS/FormSpec.FS/Interop/FormSpec.Api.Option.js.map +1 -1
  129. package/FormSpec.TS/FormSpec.FS/Interop/FormSpec.Api.Option.ts.map +1 -1
  130. package/FormSpec.TS/FormSpec.FS/PathwayExecutor.js +1 -1
  131. package/FormSpec.TS/FormSpec.FS/Provenance.js +41 -0
  132. package/FormSpec.TS/FormSpec.FS/Provenance.js.map +1 -0
  133. package/FormSpec.TS/FormSpec.FS/Provenance.ts.map +1 -0
  134. package/FormSpec.TS/FormSpec.FS/Renderers/FormSpecMarkdownRenderer.js +36 -13
  135. package/FormSpec.TS/FormSpec.FS/Renderers/FormSpecMarkdownRenderer.js.map +1 -1
  136. package/FormSpec.TS/FormSpec.FS/Renderers/FormSpecMarkdownRenderer.ts.map +1 -1
  137. package/FormSpec.TS/FormSpec.FS/Renderers/PathwayRenderers.js +1 -1
  138. package/FormSpec.TS/PathwayExecutor.withPlugins.js +0 -5
  139. package/FormSpec.TS/PathwayExecutor.withPlugins.js.map +1 -1
  140. package/FormSpec.TS/PluginRegistration.js +2 -0
  141. package/FormSpec.TS/PluginRegistration.js.map +1 -1
  142. package/FormSpec.TS/PluginRegistration.ts.map +1 -1
  143. package/FormSpec.TS/fable_modules/Thoth.Json.10.4.1/Encode.fs.js.map +1 -1
  144. package/FormSpec.TS/fable_modules/Thoth.Json.10.4.1/Encode.fs.ts.map +1 -1
  145. package/FormSpec.TS/fable_modules/project_cracked.json +1 -1
  146. package/FormSpec.TS/plugins/demographics/src/DemographicsField.js +918 -0
  147. package/FormSpec.TS/plugins/demographics/src/DemographicsField.js.map +1 -0
  148. package/FormSpec.TS/plugins/demographics/src/DemographicsField.ts.map +1 -0
  149. package/FormSpec.TS/plugins/likert/src/LikertField.js +1 -1
  150. package/PathwayExecutor.withPlugins.d.ts +0 -5
  151. package/PathwayExecutor.withPlugins.d.ts.map +1 -1
  152. package/README.md +7 -7
  153. package/fable_modules/Thoth.Json.10.4.1/Extra.fs.d.ts +3 -0
  154. package/fable_modules/Thoth.Json.10.4.1/Extra.fs.d.ts.map +1 -0
  155. package/package.json +4 -4
  156. package/plugins/demographics/src/DemographicsField.d.ts +104 -0
  157. package/plugins/demographics/src/DemographicsField.d.ts.map +1 -0
  158. package/src/FormSpec.FS/BitmaskHelpers.ts +52 -0
  159. package/src/FormSpec.FS/BlueprintValidation.ts +108 -0
  160. package/src/FormSpec.FS/Designer.ts +2 -2
  161. package/src/FormSpec.FS/FormSpec.ts +39 -8
  162. package/src/FormSpec.FS/FormSpecHelpers.ts +190 -12
  163. package/src/FormSpec.FS/FormSpecValues.ts +42 -3
  164. package/src/FormSpec.FS/Helpers.ts +44 -27
  165. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRAdapter.ts +37 -0
  166. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRElementTypeMap.ts +103 -0
  167. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFieldTypeMapper.ts +129 -0
  168. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFormSpecValidator.ts +490 -0
  169. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSectioning.ts +87 -0
  170. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSemanticReportBuilder.ts +1046 -0
  171. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRStepsBuilder.ts +26 -0
  172. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateToFormSpec.ts +161 -0
  173. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTriggerConverter.ts +386 -0
  174. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMREncoder.ts +320 -0
  175. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRSourceMap.ts +371 -0
  176. package/src/FormSpec.FS/Integrations/Adapters/CorEMR/FormSpecToCoreMRInsert.ts +372 -0
  177. package/src/FormSpec.FS/Integrations/Adapters/FormSystemAdapter.ts +92 -0
  178. package/src/FormSpec.FS/Integrations/Adapters/ReactHookForm/ReactHookFormAdapter.ts +51 -0
  179. package/src/FormSpec.FS/Integrations/Adapters/ReactHookForm/ReactHookFormTypes.ts +71 -0
  180. package/src/FormSpec.FS/Integrations/CorEMR/CorEmrTemplates.ts +15 -0
  181. package/src/FormSpec.FS/Integrations/CorEMR/CoreMRTypes.ts +825 -0
  182. package/src/FormSpec.FS/Interop/FormSpec.Api.Helpers.ts +19 -15
  183. package/src/FormSpec.FS/Interop/FormSpec.Api.Option.ts +13 -7
  184. package/src/FormSpec.FS/PathwayExecutor.ts +1 -1
  185. package/src/FormSpec.FS/Provenance.ts +19 -0
  186. package/src/FormSpec.FS/Renderers/FormSpecMarkdownRenderer.ts +32 -12
  187. package/src/FormSpec.FS/Renderers/PathwayRenderers.ts +1 -1
  188. package/src/PathwayExecutor.withPlugins.ts +0 -5
  189. package/src/PluginRegistration.ts +2 -0
  190. package/src/plugins/demographics/src/DemographicsField.ts +502 -0
  191. package/src/plugins/likert/src/LikertField.ts +1 -1
@@ -0,0 +1,320 @@
1
+ import { fromString, Auto_generateBoxedDecoder_Z6670B51 } from "../../../../fable_modules/Thoth.Json.10.4.1/Decode.fs.js";
2
+ import { CoreMRStepMap, CoreMRSourceMap, CoreMRSourceMap_$reflection, CoreMRFieldAnchor, CoreMRFieldAnchor_$reflection, CoreMRMatrixItemAnchor, CoreMRMatrixItemAnchor_$reflection, CoreMRChoiceAnchor, CoreMRChoiceAnchor_$reflection, ValueEncodingInfo, ValueEncodingInfo_$reflection } from "./CoreMRSourceMap.js";
3
+ import { FSharpResult$2_Ok, FSharpResult$2_Error, FSharpResult$2_$union } from "@fable-org/fable-library-js/Result.js";
4
+ import { ExtraCoders, ErrorReason_$union } from "../../../../fable_modules/Thoth.Json.10.4.1/Types.fs.js";
5
+ import { Spec_FormSpec$1, Spec_FormStep$1, Spec_FormField$1, Shared_PluginDataProperty, Shared_MatrixItemKey, Shared_MatrixAnswer, Shared_FieldAnswer, Shared_FieldValue, Shared_FieldValue_$union, Spec_FieldType_$union, Spec_MultiChoiceInfo, Spec_SingleChoiceInfo, Shared_FieldOption, Shared_FieldOptionKey, Shared_FieldKey, Shared_FieldKey_$reflection } from "../../../FormSpec.js";
6
+ import { toString, Auto_generateBoxedEncoder_437914C6 } from "../../../../fable_modules/Thoth.Json.10.4.1/Encode.fs.js";
7
+ import { newGuid } from "@fable-org/fable-library-js/Guid.js";
8
+ import { FSharpMap, ofList, tryFind as tryFind_1, add } from "@fable-org/fable-library-js/Map.js";
9
+ import { IOptionalGetter, IRequiredGetter, IGetters, list as list_9, bool, string, int, object } from "../../../../fable_modules/Thoth.Json.10.4.1/Decode.fs.js";
10
+ import { comparePrimitives, uncurry2 } from "@fable-org/fable-library-js/Util.js";
11
+ import { int32 } from "@fable-org/fable-library-js/Int32.js";
12
+ import { collect, exists, head, tail, map as map_1, isEmpty, choose, singleton, tryFind, empty, FSharpList } from "@fable-org/fable-library-js/List.js";
13
+ import { orElse, map, value as value_10, Option, bind, defaultArg } from "@fable-org/fable-library-js/Option.js";
14
+ import { empty as empty_1 } from "../../../../fable_modules/Thoth.Json.10.4.1/Extra.fs.js";
15
+ import { CoreMRAnswer, CoreMRFormInsertRequest, CoreMRFormInsertRequest_$reflection } from "./FormSpecToCoreMRInsert.js";
16
+ import { isNullOrWhiteSpace } from "@fable-org/fable-library-js/String.js";
17
+ import { toList, FSharpSet } from "@fable-org/fable-library-js/Set.js";
18
+ import { toInt32 } from "@fable-org/fable-library-js/BigInt.js";
19
+ import { computeBitmask } from "../../../BitmaskHelpers.js";
20
+
21
+ const sourceMapExtra: ExtraCoders = (() => {
22
+ let copyOfStruct: string;
23
+ const valueEncodingDecoder: ((arg0: string) => ((arg0: any) => FSharpResult$2_$union<ValueEncodingInfo, [string, ErrorReason_$union]>)) = Auto_generateBoxedDecoder_Z6670B51(ValueEncodingInfo_$reflection(), undefined, undefined);
24
+ const choiceAnchorDecoder: ((arg0: string) => ((arg0: any) => FSharpResult$2_$union<CoreMRChoiceAnchor, [string, ErrorReason_$union]>)) = Auto_generateBoxedDecoder_Z6670B51(CoreMRChoiceAnchor_$reflection(), undefined, undefined);
25
+ const fieldKeyDecoder: ((arg0: string) => ((arg0: any) => FSharpResult$2_$union<Shared_FieldKey, [string, ErrorReason_$union]>)) = Auto_generateBoxedDecoder_Z6670B51(Shared_FieldKey_$reflection(), undefined, undefined);
26
+ const matrixItemAnchorDecoder: ((arg0: string) => ((arg0: any) => FSharpResult$2_$union<CoreMRMatrixItemAnchor, [string, ErrorReason_$union]>)) = Auto_generateBoxedDecoder_Z6670B51(CoreMRMatrixItemAnchor_$reflection(), undefined, undefined);
27
+ const encoder: ((arg0: CoreMRFieldAnchor) => any) = Auto_generateBoxedEncoder_437914C6(CoreMRFieldAnchor_$reflection(), undefined, undefined, undefined);
28
+ return new ExtraCoders((copyOfStruct = newGuid(), copyOfStruct), add<string, [((arg0: any) => any), ((arg0: string) => ((arg0: any) => FSharpResult$2_$union<any, [string, ErrorReason_$union]>))]>("FormSpec.Integrations.CorEMR.CoreMRSourceMap.CoreMRFieldAnchor", [encoder, (path_8: string): ((arg0: any) => FSharpResult$2_$union<CoreMRFieldAnchor, [string, ErrorReason_$union]>) => ((v: any): FSharpResult$2_$union<CoreMRFieldAnchor, [string, ErrorReason_$union]> => object<CoreMRFieldAnchor>((get$: IGetters): CoreMRFieldAnchor => {
29
+ let objectArg: IRequiredGetter, objectArg_1: IRequiredGetter, objectArg_2: IRequiredGetter, objectArg_3: IRequiredGetter, objectArg_4: IRequiredGetter, objectArg_5: IRequiredGetter, objectArg_6: IOptionalGetter, objectArg_7: IOptionalGetter, objectArg_8: IOptionalGetter, objectArg_9: IOptionalGetter, objectArg_10: IRequiredGetter, objectArg_11: IRequiredGetter, objectArg_12: IRequiredGetter, objectArg_13: IOptionalGetter;
30
+ return new CoreMRFieldAnchor((objectArg = get$.Required, objectArg.Field<int32>("ItemId", uncurry2(int))), (objectArg_1 = get$.Required, objectArg_1.Field<int32>("ItemTypeId", uncurry2(int))), (objectArg_2 = get$.Required, objectArg_2.Field<int32>("Sequence", uncurry2(int))), (objectArg_3 = get$.Required, objectArg_3.Field<int32>("NestingLevel", uncurry2(int))), (objectArg_4 = get$.Required, objectArg_4.Field<string>("Label", string)), (objectArg_5 = get$.Required, objectArg_5.Field<boolean>("IsRequired", bool)), (objectArg_6 = get$.Optional, objectArg_6.Field<string>("SequenceText", string)), (objectArg_7 = get$.Optional, objectArg_7.Field<string>("Code", string)), (objectArg_8 = get$.Optional, objectArg_8.Field<string>("Uuid", string)), (objectArg_9 = get$.Optional, objectArg_9.Field<string>("GenderRequired", string)), (objectArg_10 = get$.Required, objectArg_10.Field<ValueEncodingInfo>("Encoding", uncurry2(valueEncodingDecoder))), (objectArg_11 = get$.Required, objectArg_11.Field<FSharpList<CoreMRChoiceAnchor>>("Choices", (path_6: string, value_6: any): FSharpResult$2_$union<FSharpList<CoreMRChoiceAnchor>, [string, ErrorReason_$union]> => list_9<CoreMRChoiceAnchor>(uncurry2(choiceAnchorDecoder), path_6, value_6))), (objectArg_12 = get$.Required, objectArg_12.Field<Shared_FieldKey>("FieldKey", uncurry2(fieldKeyDecoder))), defaultArg((objectArg_13 = get$.Optional, objectArg_13.Field<FSharpList<CoreMRMatrixItemAnchor>>("MatrixItemAnchors", (path_7: string, value_7: any): FSharpResult$2_$union<FSharpList<CoreMRMatrixItemAnchor>, [string, ErrorReason_$union]> => list_9<CoreMRMatrixItemAnchor>(uncurry2(matrixItemAnchorDecoder), path_7, value_7))), empty<CoreMRMatrixItemAnchor>()));
31
+ }, path_8, v))] as [((arg0: any) => any), ((arg0: string) => ((arg0: any) => FSharpResult$2_$union<any, [string, ErrorReason_$union]>))], empty_1.Coders));
32
+ })();
33
+
34
+ /**
35
+ * Decode provenance payload using Thoth Auto — same type that was encoded by
36
+ * CoreMRSourceMap.convertWithMapAndProvenance (Encode.Auto.toString).
37
+ * Uses sourceMapExtra so MatrixItemAnchors defaults to [] when missing.
38
+ */
39
+ export function tryDecodeSourceMap(payloadJson: string): FSharpResult$2_$union<CoreMRSourceMap, string> {
40
+ return fromString<CoreMRSourceMap>(uncurry2(Auto_generateBoxedDecoder_Z6670B51(CoreMRSourceMap_$reflection(), undefined, sourceMapExtra)), payloadJson);
41
+ }
42
+
43
+ /**
44
+ * Serialize CoreMRFormInsertRequest to JSON for bridge POST body
45
+ */
46
+ export function serializeRequest(req: CoreMRFormInsertRequest): string {
47
+ return toString(0, Auto_generateBoxedEncoder_437914C6(CoreMRFormInsertRequest_$reflection(), undefined, undefined, undefined)(req));
48
+ }
49
+
50
+ function canonicalize(s: string): string {
51
+ if (isNullOrWhiteSpace(s)) {
52
+ return "";
53
+ }
54
+ else {
55
+ return s.trim().toLowerCase();
56
+ }
57
+ }
58
+
59
+ function getFieldKeyGuid(_arg: Shared_FieldKey): string {
60
+ return _arg.fields[0];
61
+ }
62
+
63
+ function getFieldOptionKeyGuid(_arg: Shared_FieldOptionKey): string {
64
+ return _arg.fields[0];
65
+ }
66
+
67
+ function getScoreFromOption(options: FSharpList<Shared_FieldOption>, selectedValue: string): Option<int32> {
68
+ const canonicalSelected: string = canonicalize(selectedValue);
69
+ return bind<Shared_FieldOption, int32>((opt_1: Shared_FieldOption): Option<int32> => opt_1.Score, tryFind<Shared_FieldOption>((opt: Shared_FieldOption): boolean => (canonicalize(opt.Value) === canonicalSelected), options));
70
+ }
71
+
72
+ function getOptionsFromFieldType(ft: Spec_FieldType_$union): FSharpList<Shared_FieldOption> {
73
+ let matchResult: int32, info: Spec_SingleChoiceInfo, info_1: Spec_MultiChoiceInfo;
74
+ switch (ft.tag) {
75
+ case /* Radio */ 12: {
76
+ matchResult = 0;
77
+ info = ft.fields[0];
78
+ break;
79
+ }
80
+ case /* SingleChoice */ 13: {
81
+ matchResult = 0;
82
+ info = ft.fields[0];
83
+ break;
84
+ }
85
+ case /* Dropdown */ 14: {
86
+ matchResult = 0;
87
+ info = ft.fields[0];
88
+ break;
89
+ }
90
+ case /* TextAutoComplete */ 18: {
91
+ matchResult = 0;
92
+ info = ft.fields[0];
93
+ break;
94
+ }
95
+ case /* MultiChoice */ 15: {
96
+ matchResult = 1;
97
+ info_1 = ft.fields[0];
98
+ break;
99
+ }
100
+ case /* CheckboxList */ 16: {
101
+ matchResult = 1;
102
+ info_1 = ft.fields[0];
103
+ break;
104
+ }
105
+ case /* TagList */ 17: {
106
+ matchResult = 1;
107
+ info_1 = ft.fields[0];
108
+ break;
109
+ }
110
+ case /* Matrix */ 19: {
111
+ matchResult = 2;
112
+ break;
113
+ }
114
+ default:
115
+ matchResult = 3;
116
+ }
117
+ switch (matchResult) {
118
+ case 0:
119
+ return info!.Options;
120
+ case 1:
121
+ return info_1!.Options;
122
+ case 2:
123
+ return ft.fields[0].Options;
124
+ default:
125
+ return empty<Shared_FieldOption>();
126
+ }
127
+ }
128
+
129
+ function fieldToAnswers(field: Spec_FormField$1<Spec_FieldType_$union>, anchor: CoreMRFieldAnchor): FSharpList<CoreMRAnswer> {
130
+ let canonicalAnswer: string;
131
+ if (anchor.Encoding.IsSkip) {
132
+ return empty<CoreMRAnswer>();
133
+ }
134
+ else if (anchor.Encoding.IsScaffold) {
135
+ return singleton(new CoreMRAnswer(anchor.Sequence, 2, undefined));
136
+ }
137
+ else {
138
+ const matchValue: Option<Shared_FieldValue_$union> = field.Value;
139
+ if (matchValue != null) {
140
+ switch (value_10(matchValue).tag) {
141
+ case /* Multiple */ 1: {
142
+ const answers: FSharpSet<Shared_FieldAnswer> = (value_10(matchValue) as Shared_FieldValue<1>).fields[0];
143
+ if (anchor.Encoding.ValueEncoding !== "choice_score") {
144
+ return empty<CoreMRAnswer>();
145
+ }
146
+ else {
147
+ const options_1: FSharpList<Shared_FieldOption> = getOptionsFromFieldType(field.FieldType);
148
+ const choicesWithBitPos: FSharpList<[string, int32]> = choose<CoreMRChoiceAnchor, [string, int32]>((c_2: CoreMRChoiceAnchor): Option<[string, int32]> => {
149
+ if (c_2.BitPosition != null) {
150
+ return [getFieldOptionKeyGuid(c_2.FieldOptionKey), value_10(c_2.BitPosition)] as [string, int32];
151
+ }
152
+ else {
153
+ return undefined;
154
+ }
155
+ }, anchor.Choices);
156
+ if (isEmpty(choicesWithBitPos)) {
157
+ return empty<CoreMRAnswer>();
158
+ }
159
+ else {
160
+ return singleton(new CoreMRAnswer(anchor.Sequence, ~~toInt32(computeBitmask(choose<string, int32>((key: string): Option<int32> => map<[string, int32], int32>((tuple: [string, int32]): int32 => tuple[1], tryFind<[string, int32]>((tupledArg: [string, int32]): boolean => (tupledArg[0] === key), choicesWithBitPos)), choose<string, string>((valStr_1: string): Option<string> => map<Shared_FieldOption, string>((opt_2: Shared_FieldOption): string => getFieldOptionKeyGuid(opt_2.OptionKey), tryFind<Shared_FieldOption>((opt_1: Shared_FieldOption): boolean => (canonicalize(opt_1.Value) === canonicalize(valStr_1)), options_1)), map_1<Shared_FieldAnswer, string>((a: Shared_FieldAnswer): string => a.Value, toList<Shared_FieldAnswer>(answers)))))), undefined));
161
+ }
162
+ }
163
+ }
164
+ case /* Matrix */ 2: {
165
+ const matrixAnswer: Shared_MatrixAnswer = (value_10(matchValue) as Shared_FieldValue<2>).fields[0];
166
+ if (isEmpty(anchor.MatrixItemAnchors)) {
167
+ return empty<CoreMRAnswer>();
168
+ }
169
+ else {
170
+ const options_2: FSharpList<Shared_FieldOption> = getOptionsFromFieldType(field.FieldType);
171
+ return choose<CoreMRMatrixItemAnchor, CoreMRAnswer>((rowAnchor: CoreMRMatrixItemAnchor): Option<CoreMRAnswer> => map<string, CoreMRAnswer>((selectedValue: string): CoreMRAnswer => (new CoreMRAnswer(rowAnchor.Sequence, defaultArg(getScoreFromOption(options_2, selectedValue), 0), undefined)), tryFind_1<Shared_MatrixItemKey, string>(rowAnchor.MatrixItemKey, matrixAnswer.Values)), anchor.MatrixItemAnchors);
172
+ }
173
+ }
174
+ case /* PluginData */ 3: {
175
+ const props: FSharpList<Shared_PluginDataProperty> = (value_10(matchValue) as Shared_FieldValue<3>).fields[0];
176
+ let matchResult: int32, p_1: Shared_PluginDataProperty;
177
+ if (!isEmpty(props)) {
178
+ if (isEmpty(tail(props))) {
179
+ if (!isNullOrWhiteSpace(head(props).Value)) {
180
+ matchResult = 0;
181
+ p_1 = head(props);
182
+ }
183
+ else {
184
+ matchResult = 1;
185
+ }
186
+ }
187
+ else {
188
+ matchResult = 1;
189
+ }
190
+ }
191
+ else {
192
+ matchResult = 1;
193
+ }
194
+ switch (matchResult) {
195
+ case 0:
196
+ return singleton(new CoreMRAnswer(anchor.Sequence, 0, p_1!.Value));
197
+ default:
198
+ return empty<CoreMRAnswer>();
199
+ }
200
+ }
201
+ default: {
202
+ const answer: Shared_FieldAnswer = (value_10(matchValue) as Shared_FieldValue<0>).fields[0];
203
+ const options: FSharpList<Shared_FieldOption> = getOptionsFromFieldType(field.FieldType);
204
+ const matchValue_2: string = anchor.Encoding.ValueEncoding;
205
+ switch (matchValue_2) {
206
+ case "choice_score": {
207
+ const matchValue_3: Option<int32> = orElse(getScoreFromOption(options, answer.Value), (canonicalAnswer = canonicalize(answer.Value), map<CoreMRChoiceAnchor, int32>((c_1: CoreMRChoiceAnchor): int32 => c_1.Score, tryFind<CoreMRChoiceAnchor>((c: CoreMRChoiceAnchor): boolean => exists<Shared_FieldOption>((opt: Shared_FieldOption): boolean => {
208
+ if (getFieldOptionKeyGuid(opt.OptionKey) === getFieldOptionKeyGuid(c.FieldOptionKey)) {
209
+ return canonicalize(opt.Value) === canonicalAnswer;
210
+ }
211
+ else {
212
+ return false;
213
+ }
214
+ }, options), anchor.Choices))));
215
+ if (matchValue_3 == null) {
216
+ return singleton(new CoreMRAnswer(anchor.Sequence, 0, undefined));
217
+ }
218
+ else {
219
+ return singleton(new CoreMRAnswer(anchor.Sequence, value_10(matchValue_3), undefined));
220
+ }
221
+ }
222
+ case "1_yes_2_no": {
223
+ const valStr: string = canonicalize(answer.Value);
224
+ return singleton(new CoreMRAnswer(anchor.Sequence, (((valStr === "yes") ? true : (valStr === "true")) ? true : (valStr === "1")) ? 1 : 2, undefined));
225
+ }
226
+ case "zero":
227
+ case "scaffold":
228
+ case "unknown":
229
+ return singleton(new CoreMRAnswer(anchor.Sequence, 0, answer.Value));
230
+ default:
231
+ return singleton(new CoreMRAnswer(anchor.Sequence, 0, answer.Value));
232
+ }
233
+ }
234
+ }
235
+ }
236
+ else {
237
+ const matchValue_1: string = anchor.Encoding.ValueEncoding;
238
+ switch (matchValue_1) {
239
+ case "1_yes_2_no":
240
+ return singleton(new CoreMRAnswer(anchor.Sequence, 2, undefined));
241
+ case "choice_score":
242
+ if (isEmpty(anchor.Choices)) {
243
+ return empty<CoreMRAnswer>();
244
+ }
245
+ else {
246
+ return singleton(new CoreMRAnswer(anchor.Sequence, 0, undefined));
247
+ }
248
+ case "zero":
249
+ return singleton(new CoreMRAnswer(anchor.Sequence, 0, undefined));
250
+ default:
251
+ return empty<CoreMRAnswer>();
252
+ }
253
+ }
254
+ }
255
+ }
256
+
257
+ function buildFieldByKeyMap(spec: Spec_FormSpec$1<Spec_FieldType_$union>): FSharpMap<string, Spec_FormField$1<Spec_FieldType_$union>> {
258
+ return ofList<string, Spec_FormField$1<Spec_FieldType_$union>>(map_1<Spec_FormField$1<Spec_FieldType_$union>, [string, Spec_FormField$1<Spec_FieldType_$union>]>((f: Spec_FormField$1<Spec_FieldType_$union>): [string, Spec_FormField$1<Spec_FieldType_$union>] => ([getFieldKeyGuid(f.FieldKey), f] as [string, Spec_FormField$1<Spec_FieldType_$union>]), collect<Spec_FormStep$1<Spec_FieldType_$union>, Spec_FormField$1<Spec_FieldType_$union>>((step: Spec_FormStep$1<Spec_FieldType_$union>): FSharpList<Spec_FormField$1<Spec_FieldType_$union>> => step.Fields, spec.Steps)), {
259
+ Compare: comparePrimitives,
260
+ });
261
+ }
262
+
263
+ function anchorToAnswers(fieldMap: FSharpMap<string, Spec_FormField$1<Spec_FieldType_$union>>, anchor: CoreMRFieldAnchor): FSharpList<CoreMRAnswer> {
264
+ const field: Option<Spec_FormField$1<Spec_FieldType_$union>> = tryFind_1<string, Spec_FormField$1<Spec_FieldType_$union>>(getFieldKeyGuid(anchor.FieldKey), fieldMap);
265
+ if (anchor.Encoding.IsSkip) {
266
+ return empty<CoreMRAnswer>();
267
+ }
268
+ else if (anchor.Encoding.IsScaffold) {
269
+ return singleton(new CoreMRAnswer(anchor.Sequence, 2, undefined));
270
+ }
271
+ else if (field != null) {
272
+ return fieldToAnswers(value_10(field), anchor);
273
+ }
274
+ else {
275
+ const matchValue: string = anchor.Encoding.ValueEncoding;
276
+ switch (matchValue) {
277
+ case "1_yes_2_no":
278
+ return singleton(new CoreMRAnswer(anchor.Sequence, 2, undefined));
279
+ case "choice_score":
280
+ if (isEmpty(anchor.Choices)) {
281
+ return empty<CoreMRAnswer>();
282
+ }
283
+ else {
284
+ return singleton(new CoreMRAnswer(anchor.Sequence, 0, undefined));
285
+ }
286
+ case "zero":
287
+ return singleton(new CoreMRAnswer(anchor.Sequence, 0, undefined));
288
+ default:
289
+ return empty<CoreMRAnswer>();
290
+ }
291
+ }
292
+ }
293
+
294
+ /**
295
+ * Encode filled FormSpec to CoreMR form-insert payload.
296
+ * scaffoldMode: when true, omit answers (scaffold mode — all items get value=2).
297
+ * Iterates over provenance anchors (source of truth) so we never omit required items.
298
+ */
299
+ export function encodeToFormAnswers(provenancePayload: string, filledFormSpec: Spec_FormSpec$1<Spec_FieldType_$union>, scaffoldMode: boolean, dryRun: boolean): FSharpResult$2_$union<CoreMRFormInsertRequest, string> {
300
+ let acc: FSharpList<CoreMRAnswer>;
301
+ const matchValue: FSharpResult$2_$union<CoreMRSourceMap, string> = tryDecodeSourceMap(provenancePayload);
302
+ if (matchValue.tag === /* Ok */ 0) {
303
+ const sourceMap: CoreMRSourceMap = matchValue.fields[0];
304
+ if (sourceMap.FormSpecId !== filledFormSpec.Id) {
305
+ return FSharpResult$2_Error<CoreMRFormInsertRequest, string>(`FormSpecId mismatch: provenance is for form ${sourceMap.FormSpecId} but data is from form ${filledFormSpec.Id}. This could cause patient data mixing!`);
306
+ }
307
+ else {
308
+ let formName: string;
309
+ const value = `CORE-${sourceMap.FormId}`;
310
+ formName = defaultArg(orElse(sourceMap.FormName, isNullOrWhiteSpace(filledFormSpec.Title) ? undefined : filledFormSpec.Title), value);
311
+ const fieldMap: FSharpMap<string, Spec_FormField$1<Spec_FieldType_$union>> = buildFieldByKeyMap(filledFormSpec);
312
+ return FSharpResult$2_Ok<CoreMRFormInsertRequest, string>(new CoreMRFormInsertRequest(sourceMap.FormId, formName, scaffoldMode ? undefined : ((acc = collect<CoreMRFieldAnchor, CoreMRAnswer>((anchor: CoreMRFieldAnchor): FSharpList<CoreMRAnswer> => anchorToAnswers(fieldMap, anchor), collect<CoreMRStepMap, CoreMRFieldAnchor>((step: CoreMRStepMap): FSharpList<CoreMRFieldAnchor> => step.FieldAnchors, sourceMap.Steps)), isEmpty(acc) ? undefined : acc)), dryRun));
313
+ }
314
+ }
315
+ else {
316
+ return FSharpResult$2_Error<CoreMRFormInsertRequest, string>(`Invalid provenance payload: ${matchValue.fields[0]}`);
317
+ }
318
+ }
319
+
320
+ //# sourceMappingURL=CoreMREncoder.ts.map