@f1studio/form-spec 5.0.0-alpha.108 → 5.0.0-alpha.110

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 (52) hide show
  1. package/FormSpec.FS/FormSpec.d.ts +3 -1
  2. package/FormSpec.FS/FormSpec.d.ts.map +1 -1
  3. package/FormSpec.FS/Helpers.d.ts +7 -0
  4. package/FormSpec.FS/Helpers.d.ts.map +1 -1
  5. package/FormSpec.FS/Interop/FormSpec.Api.Helpers.d.ts +29 -3
  6. package/FormSpec.FS/Interop/FormSpec.Api.Helpers.d.ts.map +1 -1
  7. package/FormSpec.FS/PathwayExecutor.d.ts +0 -4
  8. package/FormSpec.FS/PathwayExecutor.d.ts.map +1 -1
  9. package/FormSpec.TS/FormSpec.FS/FormSpec.js +11 -1
  10. package/FormSpec.TS/FormSpec.FS/FormSpec.js.map +1 -1
  11. package/FormSpec.TS/FormSpec.FS/FormSpec.ts.map +1 -1
  12. package/FormSpec.TS/FormSpec.FS/Helpers.js +52 -24
  13. package/FormSpec.TS/FormSpec.FS/Helpers.js.map +1 -1
  14. package/FormSpec.TS/FormSpec.FS/Helpers.ts.map +1 -1
  15. package/FormSpec.TS/FormSpec.FS/Interop/FormSpec.Api.Helpers.js +161 -26
  16. package/FormSpec.TS/FormSpec.FS/Interop/FormSpec.Api.Helpers.js.map +1 -1
  17. package/FormSpec.TS/FormSpec.FS/Interop/FormSpec.Api.Helpers.ts.map +1 -1
  18. package/FormSpec.TS/FormSpec.FS/Interop/FormSpec.Api.Option.js +1 -1
  19. package/FormSpec.TS/FormSpec.FS/Interop/FormSpec.Api.Option.js.map +1 -1
  20. package/FormSpec.TS/FormSpec.FS/Interop/FormSpec.Api.Option.ts.map +1 -1
  21. package/FormSpec.TS/FormSpec.FS/PathwayExecutor.js +4 -32
  22. package/FormSpec.TS/FormSpec.FS/PathwayExecutor.js.map +1 -1
  23. package/FormSpec.TS/FormSpec.FS/PathwayExecutor.ts.map +1 -1
  24. package/FormSpec.TS/fable_modules/Thoth.Json.10.4.1/Encode.fs.js.map +1 -1
  25. package/FormSpec.TS/fable_modules/Thoth.Json.10.4.1/Encode.fs.ts.map +1 -1
  26. package/FormSpec.TS/plugins/bmi/src/BMIField.js +1 -1
  27. package/FormSpec.TS/plugins/bmi/src/BMIField.js.map +1 -1
  28. package/FormSpec.TS/plugins/bmi/src/BMIField.ts.map +1 -1
  29. package/FormSpec.TS/plugins/likert/src/LikertField.js +251 -84
  30. package/FormSpec.TS/plugins/likert/src/LikertField.js.map +1 -1
  31. package/FormSpec.TS/plugins/likert/src/LikertField.ts.map +1 -1
  32. package/FormSpec.TS/plugins/signature/src/SignatureField.js +1 -1
  33. package/FormSpec.TS/plugins/signature/src/SignatureField.js.map +1 -1
  34. package/FormSpec.TS/plugins/signature/src/SignatureField.ts.map +1 -1
  35. package/FormSpec.TS/plugins/vitals/src/VitalsField.js +1 -1
  36. package/FormSpec.TS/plugins/vitals/src/VitalsField.js.map +1 -1
  37. package/FormSpec.TS/plugins/vitals/src/VitalsField.ts.map +1 -1
  38. package/README.md +7 -7
  39. package/package.json +2 -2
  40. package/plugins/bmi/src/BMIField.d.ts.map +1 -1
  41. package/plugins/likert/src/LikertField.d.ts.map +1 -1
  42. package/plugins/signature/src/SignatureField.d.ts.map +1 -1
  43. package/plugins/vitals/src/VitalsField.d.ts.map +1 -1
  44. package/src/FormSpec.FS/FormSpec.ts +6 -2
  45. package/src/FormSpec.FS/Helpers.ts +55 -27
  46. package/src/FormSpec.FS/Interop/FormSpec.Api.Helpers.ts +172 -36
  47. package/src/FormSpec.FS/Interop/FormSpec.Api.Option.ts +1 -1
  48. package/src/FormSpec.FS/PathwayExecutor.ts +40 -69
  49. package/src/plugins/bmi/src/BMIField.ts +1 -1
  50. package/src/plugins/likert/src/LikertField.ts +211 -89
  51. package/src/plugins/signature/src/SignatureField.ts +1 -1
  52. package/src/plugins/vitals/src/VitalsField.ts +1 -1
@@ -1,20 +1,19 @@
1
1
  import { FSharpRef, Record, Union } from "@fable-org/fable-library-js/Types.js";
2
- import { fold, findIndex, tryPick, sortByDescending, truncate, length, sortBy, tryHead, filter as filter_1, ofArray as ofArray_1, append, empty, head, tail, concat, singleton, forAll, exists, collect, map, sumBy, sum, isEmpty, choose, tryFind, FSharpList } from "@fable-org/fable-library-js/List.js";
2
+ import { fold, findIndex, tryPick, sortByDescending, truncate, length, sortBy, tryHead, filter as filter_1, ofArray as ofArray_1, append, empty, head, tail, concat, singleton, forAll, exists, collect, map as map_1, sumBy, sum, isEmpty, choose, tryFind, FSharpList } from "@fable-org/fable-library-js/List.js";
3
3
  import { tuple_type, bool_type, float64_type, lambda_type, class_type, record_type, int32_type, union_type, list_type, string_type, TypeInfo } from "@fable-org/fable-library-js/Reflection.js";
4
4
  import { ClinicalPathway_PathwayExecutionMode_$reflection, ClinicalPathway_SetFieldValueAction, ClinicalPathway_FieldValueSource_$union, ClinicalPathway_PathwayExecutionMode_$union, ClinicalPathway_SelectionStrategy_$union, ClinicalPathway_CombinationStrategy_$union, ClinicalPathway_StateType_$union, ClinicalPathway_StateDefinition, Shared_PluginPropertyKey, Shared_FieldOptionKey, ClinicalPathway_TransitionCondition_$union, ClinicalPathway_LogicalOp_$union, ClinicalPathway_StateEvaluator_$union, Shared_FieldValue_Single, Shared_ConditionValue_$union, Shared_MatrixAnswer, ClinicalPathway_FieldEvaluator_$union, Shared_PluginDataProperty, Shared_PluginDataProperty_$reflection, Spec_Score, Spec_ScoreRange, Spec_FormStep$1, Spec_FormField$1, Shared_FieldValue_$union, Shared_MatrixItemKey, Shared_FieldAnswer, Shared_FieldOption, Spec_FieldType, Shared_TransitionKey_$reflection, Shared_TransitionKey, Shared_FieldKey_$reflection, ClinicalPathway_ActionInfo_$reflection, Spec_FormSpec$1_$reflection, Spec_FieldType_$reflection, ClinicalPathway_ClinicalPathwaySpec_$reflection, Shared_FieldKey, ClinicalPathway_ActionInfo_$union, Spec_FieldType_$union, Spec_FormSpec$1, ClinicalPathway_ClinicalPathwaySpec, Shared_StateKey_$reflection, Shared_StateKey, ClinicalPathway_TransitionDefinition_$reflection, ClinicalPathway_TransitionDefinition } from "./FormSpec.js";
5
- import { tryParse as tryParse_1, uint8, float64, int32 } from "@fable-org/fable-library-js/Int32.js";
6
- import { int32ToString, equals, compare, comparePrimitives, stringHash, IComparable, IEquatable } from "@fable-org/fable-library-js/Util.js";
7
- import { difference, union, empty as empty_1, FSharpSet__get_IsEmpty, FSharpSet__get_Count, contains, ofList as ofList_1, isSubset, ofArray, map as map_1, toList, FSharpSet } from "@fable-org/fable-library-js/Set.js";
8
- import { toArray, orElse, filter, map as map_3, defaultArg, value as value_4, bind, Option } from "@fable-org/fable-library-js/Option.js";
5
+ import { tryParse as tryParse_1, float64, int32 } from "@fable-org/fable-library-js/Int32.js";
6
+ import { int32ToString, equals, compare, comparePrimitives, IComparable, IEquatable } from "@fable-org/fable-library-js/Util.js";
7
+ import { difference, union, empty as empty_1, FSharpSet__get_IsEmpty, FSharpSet__get_Count, contains, ofList as ofList_1, isSubset, ofArray, map as map_2, toList, FSharpSet } from "@fable-org/fable-library-js/Set.js";
8
+ import { toArray, orElse, filter, map, defaultArg, value as value_4, bind, Option } from "@fable-org/fable-library-js/Option.js";
9
9
  import { tryFind as tryFind_1, FSharpMap, ofList, toList as toList_1 } from "@fable-org/fable-library-js/Map.js";
10
10
  import { updateField, getFieldDetails, FieldDetails$1, fieldToDetails } from "./FormSpecValues.js";
11
- import { map as map_2, setItem, iterateIndexed, fill } from "@fable-org/fable-library-js/Array.js";
12
- import { getBytesInt32 } from "@fable-org/fable-library-js/BitConverter.js";
13
- import { arrayToGuid } from "@fable-org/fable-library-js/Guid.js";
11
+ import { Helpers_generateDeterministicGuidRaw, Helpers_canonicalizeFieldKey } from "./Helpers.js";
14
12
  import { printf, toText, isNullOrEmpty, isNullOrWhiteSpace, join } from "@fable-org/fable-library-js/String.js";
15
13
  import { Auto_generateBoxedEncoder_437914C6, toString } from "../fable_modules/Thoth.Json.10.4.1/Encode.fs.js";
16
14
  import { tryParse } from "@fable-org/fable-library-js/Double.js";
17
15
  import { create, isMatch } from "@fable-org/fable-library-js/RegExp.js";
16
+ import { map as map_3 } from "@fable-org/fable-library-js/Array.js";
18
17
  import { PluginValueRegistry_tryGet, IPluginValueConverter } from "./PluginInterface.js";
19
18
  import { now } from "@fable-org/fable-library-js/Date.js";
20
19
 
@@ -318,45 +317,17 @@ export function ScoreCalculator_getScoreRange(score: Option<Spec_Score>, value:
318
317
  }
319
318
  }
320
319
 
321
- /**
322
- * Generate deterministic GUID from field label
323
- */
324
- export function FieldResolver_generateFieldKey(fieldName: string): Shared_FieldKey {
325
- const hash: int32 = stringHash(fieldName) | 0;
326
- const bytes: uint8[] = fill(new Array(16), 0, 16, 0);
327
- iterateIndexed<uint8>((i: int32, b: uint8): void => {
328
- if (i < 4) {
329
- setItem(bytes, i, b);
330
- }
331
- }, Array.from(getBytesInt32(hash)));
332
- iterateIndexed<uint8>((i_1: int32, b_1: uint8): void => {
333
- if (i_1 < 4) {
334
- setItem(bytes, i_1 + 4, b_1);
335
- }
336
- }, Array.from(getBytesInt32(hash >> 1)));
337
- iterateIndexed<uint8>((i_2: int32, b_2: uint8): void => {
338
- if (i_2 < 4) {
339
- setItem(bytes, i_2 + 8, b_2);
340
- }
341
- }, Array.from(getBytesInt32(hash >> 2)));
342
- iterateIndexed<uint8>((i_3: int32, b_3: uint8): void => {
343
- if (i_3 < 4) {
344
- setItem(bytes, i_3 + 12, b_3);
345
- }
346
- }, Array.from(getBytesInt32(hash >> 3)));
347
- return new Shared_FieldKey(arrayToGuid(bytes));
348
- }
349
-
350
320
  /**
351
321
  * Create resolver that maps pathway field references to FieldKeys
352
322
  */
353
323
  export function FieldResolver_createResolver(formSpec: Spec_FormSpec$1<Spec_FieldType_$union>): ((arg0: string) => Shared_FieldKey) {
354
- const labelToFieldKey: FSharpMap<string, Shared_FieldKey> = ofList<string, Shared_FieldKey>(map<Spec_FormField$1<Spec_FieldType_$union>, [string, Shared_FieldKey]>((field: Spec_FormField$1<Spec_FieldType_$union>): [string, Shared_FieldKey] => ([field.Label.toLocaleLowerCase().trim(), field.FieldKey] as [string, Shared_FieldKey]), 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, formSpec.Steps)), {
324
+ const formCode: string = defaultArg(map<string, string>(Helpers_canonicalizeFieldKey, formSpec.Code), "unknown");
325
+ const labelToFieldKey: FSharpMap<string, Shared_FieldKey> = ofList<string, Shared_FieldKey>(map_1<Spec_FormField$1<Spec_FieldType_$union>, [string, Shared_FieldKey]>((field: Spec_FormField$1<Spec_FieldType_$union>): [string, Shared_FieldKey] => ([field.Label.toLocaleLowerCase().trim(), field.FieldKey] as [string, Shared_FieldKey]), 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, formSpec.Steps)), {
355
326
  Compare: comparePrimitives,
356
327
  });
357
328
  return (fieldReference: string): Shared_FieldKey => {
358
329
  const matchValue: Option<Shared_FieldKey> = tryFind_1<string, Shared_FieldKey>(fieldReference.toLocaleLowerCase().trim(), labelToFieldKey);
359
- return (matchValue == null) ? FieldResolver_generateFieldKey(fieldReference) : value_4(matchValue);
330
+ return (matchValue == null) ? (new Shared_FieldKey(Helpers_generateDeterministicGuidRaw(`formspec.${formCode}:step0.${Helpers_canonicalizeFieldKey(fieldReference)}`))) : value_4(matchValue);
360
331
  };
361
332
  }
362
333
 
@@ -364,11 +335,11 @@ export function FieldResolver_createResolver(formSpec: Spec_FormSpec$1<Spec_Fiel
364
335
  * Extract field values from form spec (reads from FormSpec)
365
336
  */
366
337
  export function FieldResolver_extractFieldValues(resolver: ((arg0: string) => Shared_FieldKey), formSpec: Spec_FormSpec$1<Spec_FieldType_$union>): FSharpMap<Shared_FieldKey, string> {
367
- return ofList<Shared_FieldKey, string>(collect<Spec_FormStep$1<Spec_FieldType_$union>, [Shared_FieldKey, string]>((step: Spec_FormStep$1<Spec_FieldType_$union>): FSharpList<[Shared_FieldKey, string]> => map<Spec_FormField$1<Spec_FieldType_$union>, [Shared_FieldKey, string]>((field: Spec_FormField$1<Spec_FieldType_$union>): [Shared_FieldKey, string] => {
338
+ return ofList<Shared_FieldKey, string>(collect<Spec_FormStep$1<Spec_FieldType_$union>, [Shared_FieldKey, string]>((step: Spec_FormStep$1<Spec_FieldType_$union>): FSharpList<[Shared_FieldKey, string]> => map_1<Spec_FormField$1<Spec_FieldType_$union>, [Shared_FieldKey, string]>((field: Spec_FormField$1<Spec_FieldType_$union>): [Shared_FieldKey, string] => {
368
339
  let matchValue: Shared_FieldValue_$union, pluginData: FSharpList<Shared_PluginDataProperty>;
369
- return [field.FieldKey, (matchValue = fieldToDetails(field).FieldValue, (matchValue.tag === /* Multiple */ 1) ? join(",", toList<string>(map_1<Shared_FieldAnswer, string>((a: Shared_FieldAnswer): string => a.Value, matchValue.fields[0], {
340
+ return [field.FieldKey, (matchValue = fieldToDetails(field).FieldValue, (matchValue.tag === /* Multiple */ 1) ? join(",", toList<string>(map_2<Shared_FieldAnswer, string>((a: Shared_FieldAnswer): string => a.Value, matchValue.fields[0], {
370
341
  Compare: comparePrimitives,
371
- }))) : ((matchValue.tag === /* Matrix */ 2) ? join(",", map<[Shared_MatrixItemKey, string], string>((tupledArg: [Shared_MatrixItemKey, string]): string => tupledArg[1], toList_1<Shared_MatrixItemKey, string>(matchValue.fields[0].Values))) : ((matchValue.tag === /* PluginData */ 3) ? ((pluginData = matchValue.fields[0], toString(0, Auto_generateBoxedEncoder_437914C6(list_type(Shared_PluginDataProperty_$reflection()), undefined, undefined, undefined)(pluginData)))) : matchValue.fields[0].Value)))] as [Shared_FieldKey, string];
342
+ }))) : ((matchValue.tag === /* Matrix */ 2) ? join(",", map_1<[Shared_MatrixItemKey, string], string>((tupledArg: [Shared_MatrixItemKey, string]): string => tupledArg[1], toList_1<Shared_MatrixItemKey, string>(matchValue.fields[0].Values))) : ((matchValue.tag === /* PluginData */ 3) ? ((pluginData = matchValue.fields[0], toString(0, Auto_generateBoxedEncoder_437914C6(list_type(Shared_PluginDataProperty_$reflection()), undefined, undefined, undefined)(pluginData)))) : matchValue.fields[0].Value)))] as [Shared_FieldKey, string];
372
343
  }, step.Fields), formSpec.Steps), {
373
344
  Compare: compare,
374
345
  });
@@ -546,10 +517,10 @@ export function evaluateFieldCondition(actualValue: string, evaluator: ClinicalP
546
517
  return !exists<string>((v_10: string): boolean => (v_10.trim().toLocaleLowerCase() === actualValue.trim().toLocaleLowerCase()), evaluator.fields[0]);
547
518
  case /* ContainsAll */ 4: {
548
519
  const values_2: FSharpList<string> = evaluator.fields[0];
549
- const actualParts: FSharpSet<string> = ofArray<string>(map_2<string, string>((s: string): string => s.trim().toLocaleLowerCase(), actualValue.split(",")), {
520
+ const actualParts: FSharpSet<string> = ofArray<string>(map_3<string, string>((s: string): string => s.trim().toLocaleLowerCase(), actualValue.split(",")), {
550
521
  Compare: comparePrimitives,
551
522
  });
552
- return isSubset<string>(ofList_1<string>(map<string, string>((s_1: string): string => s_1.trim().toLocaleLowerCase(), values_2), {
523
+ return isSubset<string>(ofList_1<string>(map_1<string, string>((s_1: string): string => s_1.trim().toLocaleLowerCase(), values_2), {
553
524
  Compare: comparePrimitives,
554
525
  }), actualParts);
555
526
  }
@@ -615,9 +586,9 @@ export function evaluateFieldConditionWithConditionValue(actualFieldValue: Share
615
586
  case 0:
616
587
  return evaluateMatrixItemCondition(actualMatrix!, evaluator, expectedMatrix!);
617
588
  default:
618
- return evaluateFieldCondition((actualFieldValue.tag === /* Multiple */ 1) ? join(",", toList<string>(map_1<Shared_FieldAnswer, string>((a: Shared_FieldAnswer): string => a.Value, actualFieldValue.fields[0], {
589
+ return evaluateFieldCondition((actualFieldValue.tag === /* Multiple */ 1) ? join(",", toList<string>(map_2<Shared_FieldAnswer, string>((a: Shared_FieldAnswer): string => a.Value, actualFieldValue.fields[0], {
619
590
  Compare: comparePrimitives,
620
- }))) : ((actualFieldValue.tag === /* Matrix */ 2) ? join(",", map<[Shared_MatrixItemKey, string], string>((tupledArg: [Shared_MatrixItemKey, string]): string => tupledArg[1], toList_1<Shared_MatrixItemKey, string>(actualFieldValue.fields[0].Values))) : ((actualFieldValue.tag === /* PluginData */ 3) ? ((pluginData = actualFieldValue.fields[0], toString(0, Auto_generateBoxedEncoder_437914C6(list_type(Shared_PluginDataProperty_$reflection()), undefined, undefined, undefined)(pluginData)))) : actualFieldValue.fields[0].Value)), evaluator, (expectedConditionValue.tag === /* Multiple */ 1) ? join(",", toList<string>(expectedConditionValue.fields[0])) : ((expectedConditionValue.tag === /* Matrix */ 2) ? join(",", map<[Shared_MatrixItemKey, string], string>((tupledArg_1: [Shared_MatrixItemKey, string]): string => tupledArg_1[1], toList_1<Shared_MatrixItemKey, string>(expectedConditionValue.fields[0]))) : ((expectedConditionValue.tag === /* PluginData */ 3) ? ((pluginData_1 = expectedConditionValue.fields[0], toString(0, Auto_generateBoxedEncoder_437914C6(Shared_PluginDataProperty_$reflection(), undefined, undefined, undefined)(pluginData_1)))) : expectedConditionValue.fields[0])));
591
+ }))) : ((actualFieldValue.tag === /* Matrix */ 2) ? join(",", map_1<[Shared_MatrixItemKey, string], string>((tupledArg: [Shared_MatrixItemKey, string]): string => tupledArg[1], toList_1<Shared_MatrixItemKey, string>(actualFieldValue.fields[0].Values))) : ((actualFieldValue.tag === /* PluginData */ 3) ? ((pluginData = actualFieldValue.fields[0], toString(0, Auto_generateBoxedEncoder_437914C6(list_type(Shared_PluginDataProperty_$reflection()), undefined, undefined, undefined)(pluginData)))) : actualFieldValue.fields[0].Value)), evaluator, (expectedConditionValue.tag === /* Multiple */ 1) ? join(",", toList<string>(expectedConditionValue.fields[0])) : ((expectedConditionValue.tag === /* Matrix */ 2) ? join(",", map_1<[Shared_MatrixItemKey, string], string>((tupledArg_1: [Shared_MatrixItemKey, string]): string => tupledArg_1[1], toList_1<Shared_MatrixItemKey, string>(expectedConditionValue.fields[0]))) : ((expectedConditionValue.tag === /* PluginData */ 3) ? ((pluginData_1 = expectedConditionValue.fields[0], toString(0, Auto_generateBoxedEncoder_437914C6(Shared_PluginDataProperty_$reflection(), undefined, undefined, undefined)(pluginData_1)))) : expectedConditionValue.fields[0])));
621
592
  }
622
593
  }
623
594
 
@@ -667,7 +638,7 @@ export function evaluateTransitionWithPartialData(resolver: ((arg0: string) => S
667
638
  }
668
639
  }
669
640
  else {
670
- const actualFieldValueOpt: Option<Shared_FieldValue_$union> = (conditionValue.tag === /* Matrix */ 2) ? ((formSpecForScores != null) ? ((data_1 = value_4(formSpecForScores), map_3<FieldDetails$1<Spec_FieldType_$union>, Shared_FieldValue_$union>((details_1: FieldDetails$1<Spec_FieldType_$union>): Shared_FieldValue_$union => details_1.FieldValue, getFieldDetails(data_1, fieldKey)))) : undefined) : undefined;
641
+ const actualFieldValueOpt: Option<Shared_FieldValue_$union> = (conditionValue.tag === /* Matrix */ 2) ? ((formSpecForScores != null) ? ((data_1 = value_4(formSpecForScores), map<FieldDetails$1<Spec_FieldType_$union>, Shared_FieldValue_$union>((details_1: FieldDetails$1<Spec_FieldType_$union>): Shared_FieldValue_$union => details_1.FieldValue, getFieldDetails(data_1, fieldKey)))) : undefined) : undefined;
671
642
  if (actualFieldValueOpt == null) {
672
643
  const matchValue_2: Option<string> = tryFind_1<Shared_FieldKey, string>(fieldKey, fieldValues);
673
644
  if (matchValue_2 == null) {
@@ -760,7 +731,7 @@ export function evaluateTransitionWithPartialData(resolver: ((arg0: string) => S
760
731
  const conditions: FSharpList<ClinicalPathway_TransitionCondition_$union> = condition.fields[1];
761
732
  switch (logicalOp.tag) {
762
733
  case /* Or */ 1: {
763
- const results_1: FSharpList<TransitionStatus_$union> = map<ClinicalPathway_TransitionCondition_$union, TransitionStatus_$union>((condition_2: ClinicalPathway_TransitionCondition_$union): TransitionStatus_$union => evaluateTransitionWithPartialData(resolver, formSpec, fieldValues, visitedStates, formSpecForScores, condition_2), conditions);
734
+ const results_1: FSharpList<TransitionStatus_$union> = map_1<ClinicalPathway_TransitionCondition_$union, TransitionStatus_$union>((condition_2: ClinicalPathway_TransitionCondition_$union): TransitionStatus_$union => evaluateTransitionWithPartialData(resolver, formSpec, fieldValues, visitedStates, formSpecForScores, condition_2), conditions);
764
735
  if (exists<TransitionStatus_$union>((r_3: TransitionStatus_$union): boolean => equals(r_3, TransitionStatus_Satisfied()), results_1)) {
765
736
  return TransitionStatus_Satisfied();
766
737
  }
@@ -809,7 +780,7 @@ export function evaluateTransitionWithPartialData(resolver: ((arg0: string) => S
809
780
  }
810
781
  }
811
782
  default: {
812
- const results: FSharpList<TransitionStatus_$union> = map<ClinicalPathway_TransitionCondition_$union, TransitionStatus_$union>((condition_1: ClinicalPathway_TransitionCondition_$union): TransitionStatus_$union => evaluateTransitionWithPartialData(resolver, formSpec, fieldValues, visitedStates, formSpecForScores, condition_1), conditions);
783
+ const results: FSharpList<TransitionStatus_$union> = map_1<ClinicalPathway_TransitionCondition_$union, TransitionStatus_$union>((condition_1: ClinicalPathway_TransitionCondition_$union): TransitionStatus_$union => evaluateTransitionWithPartialData(resolver, formSpec, fieldValues, visitedStates, formSpecForScores, condition_1), conditions);
813
784
  if (exists<TransitionStatus_$union>((r: TransitionStatus_$union): boolean => equals(r, TransitionStatus_Failed()), results)) {
814
785
  return TransitionStatus_Failed();
815
786
  }
@@ -841,7 +812,7 @@ export function evaluateTransitionWithPartialData(resolver: ((arg0: string) => S
841
812
  const conditionValue_1: Shared_ConditionValue_$union = condition.fields[4];
842
813
  const optionValueOpt: Option<string> = (formSpec == null) ? undefined : bind<Spec_FormField$1<Spec_FieldType_$union>, string>((field_5: Spec_FormField$1<Spec_FieldType_$union>): Option<string> => {
843
814
  const fieldType = field_5.FieldType as Spec_FieldType_$union;
844
- return map_3<Shared_FieldOption, string>((opt_1: Shared_FieldOption): string => opt_1.Value, tryFind<Shared_FieldOption>((opt: Shared_FieldOption): boolean => equals(opt.OptionKey, optionKey), (fieldType.tag === /* SingleChoice */ 13) ? fieldType.fields[0].Options : ((fieldType.tag === /* Radio */ 12) ? fieldType.fields[0].Options : ((fieldType.tag === /* Dropdown */ 14) ? fieldType.fields[0].Options : ((fieldType.tag === /* MultiChoice */ 15) ? fieldType.fields[0].Options : ((fieldType.tag === /* CheckboxList */ 16) ? fieldType.fields[0].Options : empty<Shared_FieldOption>()))))));
815
+ return map<Shared_FieldOption, string>((opt_1: Shared_FieldOption): string => opt_1.Value, tryFind<Shared_FieldOption>((opt: Shared_FieldOption): boolean => equals(opt.OptionKey, optionKey), (fieldType.tag === /* SingleChoice */ 13) ? fieldType.fields[0].Options : ((fieldType.tag === /* Radio */ 12) ? fieldType.fields[0].Options : ((fieldType.tag === /* Dropdown */ 14) ? fieldType.fields[0].Options : ((fieldType.tag === /* MultiChoice */ 15) ? fieldType.fields[0].Options : ((fieldType.tag === /* CheckboxList */ 16) ? fieldType.fields[0].Options : empty<Shared_FieldOption>()))))));
845
816
  }, tryFind<Spec_FormField$1<Spec_FieldType_$union>>((field_4: Spec_FormField$1<Spec_FieldType_$union>): boolean => equals(field_4.FieldKey, fieldKey_2), collect<Spec_FormStep$1<Spec_FieldType_$union>, Spec_FormField$1<Spec_FieldType_$union>>((step_2: Spec_FormStep$1<Spec_FieldType_$union>): FSharpList<Spec_FormField$1<Spec_FieldType_$union>> => step_2.Fields, value_4(formSpec).Steps)));
846
817
  const matchValue_4: Option<string> = tryFind_1<Shared_FieldKey, string>(fieldKey_2, fieldValues);
847
818
  if (optionValueOpt == null) {
@@ -853,7 +824,7 @@ export function evaluateTransitionWithPartialData(resolver: ((arg0: string) => S
853
824
  else {
854
825
  const actualValueStr_1: string = value_4(matchValue_4);
855
826
  const optionValue: string = value_4(optionValueOpt);
856
- const actualValues: FSharpSet<string> = ofArray<string>(map_2<string, string>((s: string): string => s.trim().toLocaleLowerCase(), actualValueStr_1.split(",")), {
827
+ const actualValues: FSharpSet<string> = ofArray<string>(map_3<string, string>((s: string): string => s.trim().toLocaleLowerCase(), actualValueStr_1.split(",")), {
857
828
  Compare: comparePrimitives,
858
829
  });
859
830
  const containsOption: boolean = contains<string>(optionValue.trim().toLocaleLowerCase(), actualValues);
@@ -887,7 +858,7 @@ export function evaluateTransitionWithPartialData(resolver: ((arg0: string) => S
887
858
  return TransitionStatus_Failed();
888
859
  }
889
860
  default:
890
- if (evaluateFieldCondition(actualValueStr_1, evaluator_2, (conditionValue_1.tag === /* Multiple */ 1) ? join(",", toList<string>(conditionValue_1.fields[0])) : ((conditionValue_1.tag === /* Matrix */ 2) ? join(",", map<[Shared_MatrixItemKey, string], string>((tupledArg: [Shared_MatrixItemKey, string]): string => tupledArg[1], toList_1<Shared_MatrixItemKey, string>(conditionValue_1.fields[0]))) : ((conditionValue_1.tag === /* PluginData */ 3) ? ((pluginData = conditionValue_1.fields[0], toString(0, Auto_generateBoxedEncoder_437914C6(Shared_PluginDataProperty_$reflection(), undefined, undefined, undefined)(pluginData)))) : conditionValue_1.fields[0])))) {
861
+ if (evaluateFieldCondition(actualValueStr_1, evaluator_2, (conditionValue_1.tag === /* Multiple */ 1) ? join(",", toList<string>(conditionValue_1.fields[0])) : ((conditionValue_1.tag === /* Matrix */ 2) ? join(",", map_1<[Shared_MatrixItemKey, string], string>((tupledArg: [Shared_MatrixItemKey, string]): string => tupledArg[1], toList_1<Shared_MatrixItemKey, string>(conditionValue_1.fields[0]))) : ((conditionValue_1.tag === /* PluginData */ 3) ? ((pluginData = conditionValue_1.fields[0], toString(0, Auto_generateBoxedEncoder_437914C6(Shared_PluginDataProperty_$reflection(), undefined, undefined, undefined)(pluginData)))) : conditionValue_1.fields[0])))) {
891
862
  return TransitionStatus_Satisfied();
892
863
  }
893
864
  else {
@@ -901,14 +872,14 @@ export function evaluateTransitionWithPartialData(resolver: ((arg0: string) => S
901
872
  const fieldKey_3: Shared_FieldKey = condition.fields[0];
902
873
  const evaluator_3: ClinicalPathway_FieldEvaluator_$union = condition.fields[2];
903
874
  const conditionValue_2: Shared_ConditionValue_$union = condition.fields[3];
904
- const actualFieldValueOpt_1: Option<Shared_FieldValue_$union> = bind<Spec_FormSpec$1<Spec_FieldType_$union>, Shared_FieldValue_$union>((spec_4: Spec_FormSpec$1<Spec_FieldType_$union>): Option<Shared_FieldValue_$union> => map_3<FieldDetails$1<Spec_FieldType_$union>, Shared_FieldValue_$union>((details_3: FieldDetails$1<Spec_FieldType_$union>): Shared_FieldValue_$union => details_3.FieldValue, getFieldDetails(spec_4, fieldKey_3)), formSpec);
875
+ const actualFieldValueOpt_1: Option<Shared_FieldValue_$union> = bind<Spec_FormSpec$1<Spec_FieldType_$union>, Shared_FieldValue_$union>((spec_4: Spec_FormSpec$1<Spec_FieldType_$union>): Option<Shared_FieldValue_$union> => map<FieldDetails$1<Spec_FieldType_$union>, Shared_FieldValue_$union>((details_3: FieldDetails$1<Spec_FieldType_$union>): Shared_FieldValue_$union => details_3.FieldValue, getFieldDetails(spec_4, fieldKey_3)), formSpec);
905
876
  if (actualFieldValueOpt_1 == null) {
906
877
  return TransitionStatus_Pending(singleton(fieldKey_3.fields[0]));
907
878
  }
908
879
  else {
909
880
  const actualFieldValue_2: Shared_FieldValue_$union = value_4(actualFieldValueOpt_1);
910
881
  try {
911
- const pluginIdOpt: Option<string> = filter<string>((id: string): boolean => !isNullOrEmpty(id), bind<Spec_FormSpec$1<Spec_FieldType_$union>, string>((spec_5: Spec_FormSpec$1<Spec_FieldType_$union>): Option<string> => map_3<Spec_FormField$1<Spec_FieldType_$union>, string>((f_1: Spec_FormField$1<Spec_FieldType_$union>): string => {
882
+ const pluginIdOpt: Option<string> = filter<string>((id: string): boolean => !isNullOrEmpty(id), bind<Spec_FormSpec$1<Spec_FieldType_$union>, string>((spec_5: Spec_FormSpec$1<Spec_FieldType_$union>): Option<string> => map<Spec_FormField$1<Spec_FieldType_$union>, string>((f_1: Spec_FormField$1<Spec_FieldType_$union>): string => {
912
883
  const ft = f_1.FieldType as Spec_FieldType_$union;
913
884
  switch (ft.tag) {
914
885
  case /* PluginField */ 22:
@@ -921,7 +892,7 @@ export function evaluateTransitionWithPartialData(resolver: ((arg0: string) => S
921
892
  }, tryFind<Spec_FormField$1<Spec_FieldType_$union>>((f: Spec_FormField$1<Spec_FieldType_$union>): boolean => equals(f.FieldKey, fieldKey_3), collect<Spec_FormStep$1<Spec_FieldType_$union>, Spec_FormField$1<Spec_FieldType_$union>>((s_1: Spec_FormStep$1<Spec_FieldType_$union>): FSharpList<Spec_FormField$1<Spec_FieldType_$union>> => s_1.Fields, spec_5.Steps))), formSpec));
922
893
  return evaluateFieldCondition((pluginIdOpt == null) ? "" : defaultArg(bind<IPluginValueConverter, string>((converter: IPluginValueConverter): Option<string> => {
923
894
  let matrixValue: Shared_MatrixAnswer;
924
- return orElse(map_3<Shared_PluginDataProperty, string>((p: Shared_PluginDataProperty): string => p.Value, converter.GetPropertyByKey(propertyKey, actualFieldValue_2)), (actualFieldValue_2.tag === /* Matrix */ 2) ? ((matrixValue = actualFieldValue_2.fields[0], bind<Shared_PluginDataProperty, string>((propMeta: Shared_PluginDataProperty): Option<string> => {
895
+ return orElse(map<Shared_PluginDataProperty, string>((p: Shared_PluginDataProperty): string => p.Value, converter.GetPropertyByKey(propertyKey, actualFieldValue_2)), (actualFieldValue_2.tag === /* Matrix */ 2) ? ((matrixValue = actualFieldValue_2.fields[0], bind<Shared_PluginDataProperty, string>((propMeta: Shared_PluginDataProperty): Option<string> => {
925
896
  if (propMeta.Name === "TotalScore") {
926
897
  return int32ToString(sumBy<[Shared_MatrixItemKey, string], int32>((tupledArg_1: [Shared_MatrixItemKey, string]): int32 => {
927
898
  let matchValue_6: [boolean, int32];
@@ -944,7 +915,7 @@ export function evaluateTransitionWithPartialData(resolver: ((arg0: string) => S
944
915
  return undefined;
945
916
  }
946
917
  }, converter.GetPropertyMetadataByKey(propertyKey)))) : undefined);
947
- }, PluginValueRegistry_tryGet(value_4(pluginIdOpt))), ""), evaluator_3, (conditionValue_2.tag === /* Multiple */ 1) ? join(",", toList<string>(conditionValue_2.fields[0])) : ((conditionValue_2.tag === /* Matrix */ 2) ? join(",", map<[Shared_MatrixItemKey, string], string>((tupledArg_2: [Shared_MatrixItemKey, string]): string => tupledArg_2[1], toList_1<Shared_MatrixItemKey, string>(conditionValue_2.fields[0]))) : ((conditionValue_2.tag === /* PluginData */ 3) ? "" : conditionValue_2.fields[0]))) ? TransitionStatus_Satisfied() : TransitionStatus_Failed();
918
+ }, PluginValueRegistry_tryGet(value_4(pluginIdOpt))), ""), evaluator_3, (conditionValue_2.tag === /* Multiple */ 1) ? join(",", toList<string>(conditionValue_2.fields[0])) : ((conditionValue_2.tag === /* Matrix */ 2) ? join(",", map_1<[Shared_MatrixItemKey, string], string>((tupledArg_2: [Shared_MatrixItemKey, string]): string => tupledArg_2[1], toList_1<Shared_MatrixItemKey, string>(conditionValue_2.fields[0]))) : ((conditionValue_2.tag === /* PluginData */ 3) ? "" : conditionValue_2.fields[0]))) ? TransitionStatus_Satisfied() : TransitionStatus_Failed();
948
919
  }
949
920
  catch (matchValue_7: any) {
950
921
  return TransitionStatus_Failed();
@@ -999,7 +970,7 @@ export function isTerminalState(state: ClinicalPathway_StateDefinition): boolean
999
970
  */
1000
971
  export function evaluateAllTransitions<FieldType>(context: ExecutionContext): FSharpList<MatchedTransition> {
1001
972
  const fieldValues: FSharpMap<Shared_FieldKey, string> = FieldResolver_extractFieldValues(context.FieldResolver, context.FormSpec);
1002
- return map<ClinicalPathway_TransitionDefinition, MatchedTransition>((transition: ClinicalPathway_TransitionDefinition): MatchedTransition => {
973
+ return map_1<ClinicalPathway_TransitionDefinition, MatchedTransition>((transition: ClinicalPathway_TransitionDefinition): MatchedTransition => {
1003
974
  const status: TransitionStatus_$union = evaluateTransitionWithPartialData(context.FieldResolver, context.FormSpec, fieldValues, context.VisitedStates, context.FormSpec, transition.Condition);
1004
975
  return new MatchedTransition(transition, defaultArg(transition.Priority, 999), status);
1005
976
  }, filter_1<ClinicalPathway_TransitionDefinition>((t: ClinicalPathway_TransitionDefinition): boolean => contains<Shared_StateKey>(t.FromState, context.CurrentStates), context.PathwaySpec.Transitions));
@@ -1149,11 +1120,11 @@ export function initializeExecution(formSpec: Spec_FormSpec$1<Spec_FieldType_$un
1149
1120
  let initialStates: FSharpList<Shared_StateKey>;
1150
1121
  const matchValue_1: Option<Shared_StateKey> = pathway.InitialState;
1151
1122
  if (matchValue_1 == null) {
1152
- const statesWithIncoming: FSharpSet<Shared_StateKey> = ofList_1<Shared_StateKey>(map<ClinicalPathway_TransitionDefinition, Shared_StateKey>((t: ClinicalPathway_TransitionDefinition): Shared_StateKey => t.ToState, pathway.Transitions), {
1123
+ const statesWithIncoming: FSharpSet<Shared_StateKey> = ofList_1<Shared_StateKey>(map_1<ClinicalPathway_TransitionDefinition, Shared_StateKey>((t: ClinicalPathway_TransitionDefinition): Shared_StateKey => t.ToState, pathway.Transitions), {
1153
1124
  Compare: compare,
1154
1125
  });
1155
- const candidates: FSharpList<Shared_StateKey> = map<ClinicalPathway_StateDefinition, Shared_StateKey>((s_1: ClinicalPathway_StateDefinition): Shared_StateKey => s_1.StateKey, filter_1<ClinicalPathway_StateDefinition>((s: ClinicalPathway_StateDefinition): boolean => !contains<Shared_StateKey>(s.StateKey, statesWithIncoming), pathway.States));
1156
- initialStates = (isEmpty(candidates) ? defaultArg(map_3<ClinicalPathway_StateDefinition, FSharpList<Shared_StateKey>>((s_2: ClinicalPathway_StateDefinition): FSharpList<Shared_StateKey> => singleton(s_2.StateKey), tryHead<ClinicalPathway_StateDefinition>(pathway.States)), empty<Shared_StateKey>()) : candidates);
1126
+ const candidates: FSharpList<Shared_StateKey> = map_1<ClinicalPathway_StateDefinition, Shared_StateKey>((s_1: ClinicalPathway_StateDefinition): Shared_StateKey => s_1.StateKey, filter_1<ClinicalPathway_StateDefinition>((s: ClinicalPathway_StateDefinition): boolean => !contains<Shared_StateKey>(s.StateKey, statesWithIncoming), pathway.States));
1127
+ initialStates = (isEmpty(candidates) ? defaultArg(map<ClinicalPathway_StateDefinition, FSharpList<Shared_StateKey>>((s_2: ClinicalPathway_StateDefinition): FSharpList<Shared_StateKey> => singleton(s_2.StateKey), tryHead<ClinicalPathway_StateDefinition>(pathway.States)), empty<Shared_StateKey>()) : candidates);
1157
1128
  }
1158
1129
  else {
1159
1130
  initialStates = singleton(value_4(matchValue_1));
@@ -1164,7 +1135,7 @@ export function initializeExecution(formSpec: Spec_FormSpec$1<Spec_FieldType_$un
1164
1135
  Compare: compare,
1165
1136
  }), empty_1<Shared_StateKey>({
1166
1137
  Compare: compare,
1167
- }), empty<MatchedTransition>(), empty<MatchedTransition>(), empty<ClinicalPathway_ActionInfo_$union>(), resolver, map<Shared_StateKey, ExecutionLogEntry>((stateKey: Shared_StateKey): ExecutionLogEntry => (new ExecutionLogEntry(now(), stateKey, "Initialized", "Starting state")), initialStates));
1138
+ }), empty<MatchedTransition>(), empty<MatchedTransition>(), empty<ClinicalPathway_ActionInfo_$union>(), resolver, map_1<Shared_StateKey, ExecutionLogEntry>((stateKey: Shared_StateKey): ExecutionLogEntry => (new ExecutionLogEntry(now(), stateKey, "Initialized", "Starting state")), initialStates));
1168
1139
  }
1169
1140
  }
1170
1141
 
@@ -1179,7 +1150,7 @@ export function resolveFieldValueSource(valueSource: ClinicalPathway_FieldValueS
1179
1150
  const optionKey: Shared_FieldOptionKey = valueSource.fields[0];
1180
1151
  return defaultArg(tryPick<Spec_FormField$1<Spec_FieldType_$union>, string>((field: Spec_FormField$1<Spec_FieldType_$union>): Option<string> => {
1181
1152
  const fieldType = field.FieldType as Spec_FieldType_$union;
1182
- return map_3<Shared_FieldOption, string>((opt_1: Shared_FieldOption): string => opt_1.Description, tryFind<Shared_FieldOption>((opt: Shared_FieldOption): boolean => equals(opt.OptionKey, optionKey), (fieldType.tag === /* SingleChoice */ 13) ? fieldType.fields[0].Options : ((fieldType.tag === /* MultiChoice */ 15) ? fieldType.fields[0].Options : ((fieldType.tag === /* CheckboxList */ 16) ? fieldType.fields[0].Options : ((fieldType.tag === /* Dropdown */ 14) ? fieldType.fields[0].Options : ((fieldType.tag === /* Radio */ 12) ? fieldType.fields[0].Options : empty<Shared_FieldOption>()))))));
1153
+ return map<Shared_FieldOption, string>((opt_1: Shared_FieldOption): string => opt_1.Description, tryFind<Shared_FieldOption>((opt: Shared_FieldOption): boolean => equals(opt.OptionKey, optionKey), (fieldType.tag === /* SingleChoice */ 13) ? fieldType.fields[0].Options : ((fieldType.tag === /* MultiChoice */ 15) ? fieldType.fields[0].Options : ((fieldType.tag === /* CheckboxList */ 16) ? fieldType.fields[0].Options : ((fieldType.tag === /* Dropdown */ 14) ? fieldType.fields[0].Options : ((fieldType.tag === /* Radio */ 12) ? fieldType.fields[0].Options : empty<Shared_FieldOption>()))))));
1183
1154
  }, 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, formSpec.Steps)), "");
1184
1155
  }
1185
1156
  default:
@@ -1255,12 +1226,12 @@ export function executeStep(context_mut: ExecutionContext, maxIterations_mut: in
1255
1226
  return new ExecutionContext(context.PathwaySpec, context.FormSpec, context.CurrentStates, context.VisitedStates, context.CompletedStates, active, pending, context.ExecutedActions, context.FieldResolver, context.ExecutionLog);
1256
1227
  }
1257
1228
  else {
1258
- const newStates: FSharpSet<Shared_StateKey> = ofList_1<Shared_StateKey>(map<MatchedTransition, Shared_StateKey>((t: MatchedTransition): Shared_StateKey => t.Transition.ToState, selectedTransitions), {
1229
+ const newStates: FSharpSet<Shared_StateKey> = ofList_1<Shared_StateKey>(map_1<MatchedTransition, Shared_StateKey>((t: MatchedTransition): Shared_StateKey => t.Transition.ToState, selectedTransitions), {
1259
1230
  Compare: compare,
1260
1231
  });
1261
1232
  const newActions: FSharpList<ClinicalPathway_ActionInfo_$union> = collect<ClinicalPathway_StateDefinition, ClinicalPathway_ActionInfo_$union>(extractActionsFromState, choose<Shared_StateKey, ClinicalPathway_StateDefinition>((sk: Shared_StateKey): Option<ClinicalPathway_StateDefinition> => findState(sk, context.PathwaySpec.States), toList<Shared_StateKey>(newStates)));
1262
1233
  const updatedFormSpec: Spec_FormSpec$1<Spec_FieldType_$union> = executeActions(newActions, context.FormSpec);
1263
- const newLogEntries: FSharpList<ExecutionLogEntry> = map<MatchedTransition, ExecutionLogEntry>((t_1: MatchedTransition): ExecutionLogEntry => {
1234
+ const newLogEntries: FSharpList<ExecutionLogEntry> = map_1<MatchedTransition, ExecutionLogEntry>((t_1: MatchedTransition): ExecutionLogEntry => {
1264
1235
  let arg: string, arg_1: string;
1265
1236
  return new ExecutionLogEntry(now(), t_1.Transition.ToState, "Transitioned", (arg = t_1.Transition.FromState.fields[0], (arg_1 = t_1.Transition.TransitionKey.fields[0], toText(printf("From %s via %s"))(arg)(arg_1))));
1266
1237
  }, selectedTransitions);
@@ -1287,11 +1258,11 @@ export function executeIncremental(context: ExecutionContext, formSpec: Spec_For
1287
1258
  const startingAtTerminal: boolean = exists<ClinicalPathway_StateDefinition>(isTerminalState, choose<Shared_StateKey, ClinicalPathway_StateDefinition>((sk: Shared_StateKey): Option<ClinicalPathway_StateDefinition> => findState(sk, context.PathwaySpec.States), toList<Shared_StateKey>(context.CurrentStates)));
1288
1259
  const updatedContext: ExecutionContext = new ExecutionContext(context.PathwaySpec, formSpec, context.CurrentStates, context.VisitedStates, context.CompletedStates, context.ActiveTransitions, context.PendingTransitions, context.ExecutedActions, context.FieldResolver, context.ExecutionLog);
1289
1260
  const newContext: ExecutionContext = executeStep(updatedContext, 100);
1290
- return new IncrementalExecutionResult(newContext, map<Shared_StateKey, string>((_arg: Shared_StateKey): string => _arg.fields[0], toList<Shared_StateKey>(difference<Shared_StateKey>(newContext.CurrentStates, updatedContext.CurrentStates))), (previousTransitionKeys = ofList_1<Shared_TransitionKey>(map<MatchedTransition, Shared_TransitionKey>((t: MatchedTransition): Shared_TransitionKey => t.Transition.TransitionKey, updatedContext.ActiveTransitions), {
1261
+ return new IncrementalExecutionResult(newContext, map_1<Shared_StateKey, string>((_arg: Shared_StateKey): string => _arg.fields[0], toList<Shared_StateKey>(difference<Shared_StateKey>(newContext.CurrentStates, updatedContext.CurrentStates))), (previousTransitionKeys = ofList_1<Shared_TransitionKey>(map_1<MatchedTransition, Shared_TransitionKey>((t: MatchedTransition): Shared_TransitionKey => t.Transition.TransitionKey, updatedContext.ActiveTransitions), {
1291
1262
  Compare: compare,
1292
- }), (newKeys = difference<Shared_TransitionKey>(ofList_1<Shared_TransitionKey>(map<MatchedTransition, Shared_TransitionKey>((t_1: MatchedTransition): Shared_TransitionKey => t_1.Transition.TransitionKey, newContext.ActiveTransitions), {
1263
+ }), (newKeys = difference<Shared_TransitionKey>(ofList_1<Shared_TransitionKey>(map_1<MatchedTransition, Shared_TransitionKey>((t_1: MatchedTransition): Shared_TransitionKey => t_1.Transition.TransitionKey, newContext.ActiveTransitions), {
1293
1264
  Compare: compare,
1294
- }), previousTransitionKeys), map<MatchedTransition, ClinicalPathway_TransitionDefinition>((t_3: MatchedTransition): ClinicalPathway_TransitionDefinition => t_3.Transition, filter_1<MatchedTransition>((t_2: MatchedTransition): boolean => contains<Shared_TransitionKey>(t_2.Transition.TransitionKey, newKeys), newContext.ActiveTransitions)))), predictOutcomes(newContext), calculateCompletionPercentage(newContext), isExecutionComplete(newContext));
1265
+ }), previousTransitionKeys), map_1<MatchedTransition, ClinicalPathway_TransitionDefinition>((t_3: MatchedTransition): ClinicalPathway_TransitionDefinition => t_3.Transition, filter_1<MatchedTransition>((t_2: MatchedTransition): boolean => contains<Shared_TransitionKey>(t_2.Transition.TransitionKey, newKeys), newContext.ActiveTransitions)))), predictOutcomes(newContext), calculateCompletionPercentage(newContext), isExecutionComplete(newContext));
1295
1266
  }
1296
1267
 
1297
1268
  /**
@@ -1299,8 +1270,8 @@ export function executeIncremental(context: ExecutionContext, formSpec: Spec_For
1299
1270
  */
1300
1271
  export function getVisualizationState(context: ExecutionContext): VisualizationState {
1301
1272
  const patternInput: [FSharpList<MatchedTransition>, FSharpList<MatchedTransition>, FSharpList<MatchedTransition>] = categorizeTransitions(context.ActiveTransitions);
1302
- const completedTransitions: FSharpList<string> = map<ExecutionLogEntry, string>((log_1: ExecutionLogEntry): string => log_1.Details, filter_1<ExecutionLogEntry>((log: ExecutionLogEntry): boolean => (log.Action === "Transitioned"), context.ExecutionLog));
1303
- return new VisualizationState(context.CurrentStates, context.VisitedStates, map<MatchedTransition, Shared_TransitionKey>((t: MatchedTransition): Shared_TransitionKey => t.Transition.TransitionKey, patternInput[0]), map<MatchedTransition, Shared_TransitionKey>((t_1: MatchedTransition): Shared_TransitionKey => t_1.Transition.TransitionKey, patternInput[1]), completedTransitions, predictOutcomes(context));
1273
+ const completedTransitions: FSharpList<string> = map_1<ExecutionLogEntry, string>((log_1: ExecutionLogEntry): string => log_1.Details, filter_1<ExecutionLogEntry>((log: ExecutionLogEntry): boolean => (log.Action === "Transitioned"), context.ExecutionLog));
1274
+ return new VisualizationState(context.CurrentStates, context.VisitedStates, map_1<MatchedTransition, Shared_TransitionKey>((t: MatchedTransition): Shared_TransitionKey => t.Transition.TransitionKey, patternInput[0]), map_1<MatchedTransition, Shared_TransitionKey>((t_1: MatchedTransition): Shared_TransitionKey => t_1.Transition.TransitionKey, patternInput[1]), completedTransitions, predictOutcomes(context));
1304
1275
  }
1305
1276
 
1306
1277
  /**
@@ -324,7 +324,7 @@ export function Form_bmiField<Values, Output>(config: FieldConfig$4<BMIField_Att
324
324
  return BMIField_form<Values, IField$1<Values>, Output>()(BMIField_Field$1_$ctor_Z1543D607)(config);
325
325
  }
326
326
 
327
- export const Form_pluginConfig: Spec_PluginFieldConfig = new Spec_PluginFieldConfig("Fable.Form.Simple.Bulma.Fields.BMIField");
327
+ export const Form_pluginConfig: Spec_PluginFieldConfig = new Spec_PluginFieldConfig("Fable.Form.Simple.Bulma.Fields.BMIField", undefined, undefined);
328
328
 
329
329
  export const Form_PropertyKeys_Height: Shared_PluginPropertyKey = new Shared_PluginPropertyKey("276106c7-09ce-44cf-9076-4a4985775a90");
330
330