@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.
- package/FormSpec.FS/BlueprintValidation.d.ts +6 -3
- package/FormSpec.FS/BlueprintValidation.d.ts.map +1 -1
- package/FormSpec.FS/BlueprintValidation.js +39 -15
- package/FormSpec.FS/BlueprintValidation.js.map +1 -1
- package/FormSpec.FS/Designer.d.ts.map +1 -1
- package/FormSpec.FS/Designer.js +1 -1
- package/FormSpec.FS/Designer.js.map +1 -1
- package/FormSpec.FS/FormSpec.d.ts +108 -58
- package/FormSpec.FS/FormSpec.d.ts.map +1 -1
- package/FormSpec.FS/FormSpec.js +319 -129
- package/FormSpec.FS/FormSpec.js.map +1 -1
- package/FormSpec.FS/FormSpecHelpers.d.ts.map +1 -1
- package/FormSpec.FS/FormSpecHelpers.js +1 -1
- package/FormSpec.FS/FormSpecHelpers.js.map +1 -1
- package/FormSpec.FS/FormSpecValues.d.ts.map +1 -1
- package/FormSpec.FS/FormSpecValues.js +5 -2
- package/FormSpec.FS/FormSpecValues.js.map +1 -1
- package/FormSpec.FS/Helpers.d.ts.map +1 -1
- package/FormSpec.FS/Helpers.js +14 -9
- package/FormSpec.FS/Helpers.js.map +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFieldTypeMapper.d.ts.map +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFieldTypeMapper.js +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFieldTypeMapper.js.map +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFormSpecValidator.d.ts +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFormSpecValidator.d.ts.map +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFormSpecValidator.js +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFormSpecValidator.js.map +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSectioning.d.ts +3 -3
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSectioning.d.ts.map +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSectioning.js +7 -5
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSectioning.js.map +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSemanticReportBuilder.d.ts.map +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSemanticReportBuilder.js +11 -10
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSemanticReportBuilder.js.map +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRStepsBuilder.d.ts.map +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRStepsBuilder.js +1 -9
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRStepsBuilder.js.map +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateMapper.d.ts +11 -4
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateMapper.d.ts.map +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateMapper.js +30 -28
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateMapper.js.map +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateToFormSpec.d.ts +3 -9
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateToFormSpec.d.ts.map +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateToFormSpec.js +4 -31
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateToFormSpec.js.map +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMREncoder.d.ts.map +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMREncoder.js +2 -6
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMREncoder.js.map +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRImportPipeline.d.ts +45 -0
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRImportPipeline.d.ts.map +1 -0
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRImportPipeline.js +141 -0
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRImportPipeline.js.map +1 -0
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRImporterAnalysis.d.ts +326 -0
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRImporterAnalysis.d.ts.map +1 -0
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRImporterAnalysis.js +1743 -0
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRImporterAnalysis.js.map +1 -0
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRSourceMap.d.ts +8 -8
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRSourceMap.d.ts.map +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRSourceMap.js +6 -6
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRSourceMap.js.map +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRTriggerEnrichment.d.ts +21 -15
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRTriggerEnrichment.d.ts.map +1 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRTriggerEnrichment.js +83 -80
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRTriggerEnrichment.js.map +1 -1
- package/FormSpec.FS/Integrations/CorEMR/CoreMRPathwayMapper.d.ts +51 -0
- package/FormSpec.FS/Integrations/CorEMR/CoreMRPathwayMapper.d.ts.map +1 -0
- package/FormSpec.FS/Integrations/CorEMR/CoreMRPathwayMapper.js +939 -0
- package/FormSpec.FS/Integrations/CorEMR/CoreMRPathwayMapper.js.map +1 -0
- package/FormSpec.FS/Integrations/CorEMR/CoreMRTypes.d.ts +2 -17
- package/FormSpec.FS/Integrations/CorEMR/CoreMRTypes.d.ts.map +1 -1
- package/FormSpec.FS/Integrations/CorEMR/CoreMRTypes.js +1 -66
- package/FormSpec.FS/Integrations/CorEMR/{TemplateManifestDecoder.d.ts → FormTemplateDecoder.d.ts} +53 -45
- package/FormSpec.FS/Integrations/CorEMR/FormTemplateDecoder.d.ts.map +1 -0
- package/FormSpec.FS/Integrations/CorEMR/{TemplateManifestDecoder.js → FormTemplateDecoder.js} +544 -254
- package/FormSpec.FS/Integrations/CorEMR/FormTemplateDecoder.js.map +1 -0
- package/FormSpec.FS/Integrations/CorEMR/FormTemplateDomainDecoder.d.ts +7 -0
- package/FormSpec.FS/Integrations/CorEMR/FormTemplateDomainDecoder.d.ts.map +1 -0
- package/FormSpec.FS/Integrations/CorEMR/FormTemplateDomainDecoder.js +280 -0
- package/FormSpec.FS/Integrations/CorEMR/FormTemplateDomainDecoder.js.map +1 -0
- package/FormSpec.FS/Interop/FormSpec.Api.Helpers.d.ts +16 -4
- package/FormSpec.FS/Interop/FormSpec.Api.Helpers.d.ts.map +1 -1
- package/FormSpec.FS/Interop/FormSpec.Api.Helpers.js +63 -18
- package/FormSpec.FS/Interop/FormSpec.Api.Helpers.js.map +1 -1
- package/FormSpec.FS/Interop/FormSpec.Api.Option.d.ts +4 -4
- package/FormSpec.FS/Interop/FormSpec.Api.Option.d.ts.map +1 -1
- package/FormSpec.FS/Interop/FormSpec.Api.Option.js +2 -2
- package/FormSpec.FS/Interop/FormSpec.Api.Option.js.map +1 -1
- package/FormSpec.FS/PathwayDataExtractor.d.ts.map +1 -1
- package/FormSpec.FS/PathwayDataExtractor.js +39 -18
- package/FormSpec.FS/PathwayDataExtractor.js.map +1 -1
- package/FormSpec.FS/PathwayExecutor.d.ts +10 -10
- package/FormSpec.FS/PathwayExecutor.d.ts.map +1 -1
- package/FormSpec.FS/PathwayExecutor.js +14 -14
- package/FormSpec.FS/PathwayExecutor.js.map +1 -1
- package/FormSpec.FS/PathwayValidator.d.ts.map +1 -1
- package/FormSpec.FS/PathwayValidator.js +8 -5
- package/FormSpec.FS/PathwayValidator.js.map +1 -1
- package/FormSpec.FS/Provenance.d.ts +15 -7
- package/FormSpec.FS/Provenance.d.ts.map +1 -1
- package/FormSpec.FS/Provenance.js +11 -11
- package/FormSpec.FS/Provenance.js.map +1 -1
- package/FormSpec.FS/Renderers/FormSpecMarkdownRenderer.d.ts.map +1 -1
- package/FormSpec.FS/Renderers/FormSpecMarkdownRenderer.js +16 -7
- package/FormSpec.FS/Renderers/FormSpecMarkdownRenderer.js.map +1 -1
- package/FormSpec.FS/Renderers/MermaidRenderer.d.ts.map +1 -1
- package/FormSpec.FS/Renderers/MermaidRenderer.js +4 -8
- package/FormSpec.FS/Renderers/MermaidRenderer.js.map +1 -1
- package/FormSpec.FS/Renderers/PathwayRenderers.d.ts.map +1 -1
- package/FormSpec.FS/Renderers/PathwayRenderers.js +5 -4
- package/FormSpec.FS/Renderers/PathwayRenderers.js.map +1 -1
- package/FormSpec.FS/TriggerActionDto.d.ts +32 -21
- package/FormSpec.FS/TriggerActionDto.d.ts.map +1 -1
- package/FormSpec.FS/TriggerActionDto.js +247 -61
- package/FormSpec.FS/TriggerActionDto.js.map +1 -1
- package/README.md +7 -7
- package/package.json +1 -1
- package/plugins/allergyfinder/src/AllergyFinderField.d.ts.map +1 -1
- package/plugins/allergyfinder/src/AllergyFinderField.js +2 -2
- package/plugins/allergyfinder/src/AllergyFinderField.js.map +1 -1
- package/plugins/bmi/src/BMIField.d.ts.map +1 -1
- package/plugins/bmi/src/BMIField.js +21 -15
- package/plugins/bmi/src/BMIField.js.map +1 -1
- package/plugins/demographics/src/DemographicsField.d.ts.map +1 -1
- package/plugins/demographics/src/DemographicsField.js +4 -4
- package/plugins/demographics/src/DemographicsField.js.map +1 -1
- package/plugins/likert/src/LikertField.d.ts.map +1 -1
- package/plugins/likert/src/LikertField.js +40 -35
- package/plugins/likert/src/LikertField.js.map +1 -1
- package/plugins/signature/src/SignatureField.d.ts.map +1 -1
- package/plugins/signature/src/SignatureField.js +4 -3
- package/plugins/signature/src/SignatureField.js.map +1 -1
- package/plugins/vitals/src/VitalsField.d.ts.map +1 -1
- package/plugins/vitals/src/VitalsField.js +4 -4
- package/plugins/vitals/src/VitalsField.js.map +1 -1
- package/src/FormSpec.FS/BlueprintValidation.ts +55 -24
- package/src/FormSpec.FS/Designer.ts +2 -2
- package/src/FormSpec.FS/FormSpec.ts +223 -100
- package/src/FormSpec.FS/FormSpecHelpers.ts +2 -2
- package/src/FormSpec.FS/FormSpecValues.ts +6 -3
- package/src/FormSpec.FS/Helpers.ts +16 -11
- package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFieldTypeMapper.ts +2 -2
- package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRFormSpecValidator.ts +3 -3
- package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSectioning.ts +10 -8
- package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRSemanticReportBuilder.ts +6 -5
- package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRStepsBuilder.ts +1 -10
- package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateMapper.ts +35 -30
- package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTemplateToFormSpec.ts +7 -26
- package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMREncoder.ts +2 -6
- package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRImportPipeline.ts +115 -0
- package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRImporterAnalysis.ts +1059 -0
- package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRSourceMap.ts +10 -10
- package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CoreMRTriggerEnrichment.ts +61 -88
- package/src/FormSpec.FS/Integrations/CorEMR/CoreMRPathwayMapper.ts +926 -0
- package/src/FormSpec.FS/Integrations/CorEMR/CoreMRTypes.ts +3 -37
- package/src/FormSpec.FS/Integrations/CorEMR/FormTemplateDecoder.ts +1284 -0
- package/src/FormSpec.FS/Integrations/CorEMR/FormTemplateDomainDecoder.ts +287 -0
- package/src/FormSpec.FS/Interop/FormSpec.Api.Helpers.ts +76 -25
- package/src/FormSpec.FS/Interop/FormSpec.Api.Option.ts +6 -6
- package/src/FormSpec.FS/PathwayDataExtractor.ts +40 -20
- package/src/FormSpec.FS/PathwayExecutor.ts +26 -26
- package/src/FormSpec.FS/PathwayValidator.ts +8 -5
- package/src/FormSpec.FS/Provenance.ts +23 -15
- package/src/FormSpec.FS/Renderers/FormSpecMarkdownRenderer.ts +18 -8
- package/src/FormSpec.FS/Renderers/MermaidRenderer.ts +6 -10
- package/src/FormSpec.FS/Renderers/PathwayRenderers.ts +5 -5
- package/src/FormSpec.FS/TriggerActionDto.ts +247 -74
- package/src/plugins/allergyfinder/src/AllergyFinderField.ts +3 -3
- package/src/plugins/bmi/src/BMIField.ts +12 -5
- package/src/plugins/demographics/src/DemographicsField.ts +5 -5
- package/src/plugins/likert/src/LikertField.ts +16 -11
- package/src/plugins/signature/src/SignatureField.ts +4 -3
- package/src/plugins/vitals/src/VitalsField.ts +5 -5
- package/src/vye-os-contracts-fs/src/Core/Ids.ts +8 -8
- package/src/vye-os-contracts-fs/src/CoreMR/FormTemplate.ts +715 -0
- package/vye-os-contracts-fs/src/Core/Ids.d.ts +4 -4
- package/vye-os-contracts-fs/src/Core/Ids.d.ts.map +1 -1
- package/vye-os-contracts-fs/src/Core/Ids.js +18 -18
- package/vye-os-contracts-fs/src/CoreMR/FormTemplate.d.ts +310 -0
- package/vye-os-contracts-fs/src/CoreMR/FormTemplate.d.ts.map +1 -0
- package/vye-os-contracts-fs/src/CoreMR/FormTemplate.js +1242 -0
- package/vye-os-contracts-fs/src/CoreMR/FormTemplate.js.map +1 -0
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTriggerConverter.d.ts +0 -69
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTriggerConverter.d.ts.map +0 -1
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTriggerConverter.js +0 -447
- package/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTriggerConverter.js.map +0 -1
- package/FormSpec.FS/Integrations/CorEMR/ItemTriggerConverter.d.ts +0 -19
- package/FormSpec.FS/Integrations/CorEMR/ItemTriggerConverter.d.ts.map +0 -1
- package/FormSpec.FS/Integrations/CorEMR/ItemTriggerConverter.js +0 -643
- package/FormSpec.FS/Integrations/CorEMR/ItemTriggerConverter.js.map +0 -1
- package/FormSpec.FS/Integrations/CorEMR/TemplateManifestDecoder.d.ts.map +0 -1
- package/FormSpec.FS/Integrations/CorEMR/TemplateManifestDecoder.js.map +0 -1
- package/src/FormSpec.FS/Integrations/Adapters/CorEMR/CorEMRTriggerConverter.ts +0 -412
- package/src/FormSpec.FS/Integrations/CorEMR/ItemTriggerConverter.ts +0 -588
- package/src/FormSpec.FS/Integrations/CorEMR/TemplateManifestDecoder.ts +0 -1054
|
@@ -0,0 +1,1059 @@
|
|
|
1
|
+
import { FSharpRef, Union, Record } from "@fable-org/fable-library-js/Types.js";
|
|
2
|
+
import { float64, int32 } from "@fable-org/fable-library-js/Int32.js";
|
|
3
|
+
import { TriggerCondition, ReleaseAvailability_describe, ReleaseAvailability_statedTrue, TriggerAction, ItemTrigger, ReleaseAvailability_readList, TemplateItem, InstrumentMapEntry, TemplateForm_$reflection, TriggerStats_$reflection, ReleaseAvailability$1_$reflection, ScoringCatalog_$reflection, TemplateStats_$reflection, CoreEmrInfo_$reflection, TemplateForm, TriggerStats, ScoringCatalog, ReleaseAvailability$1_$union, TemplateStats, CoreEmrInfo } from "../../CorEMR/FormTemplateDecoder.js";
|
|
4
|
+
import { map as map_2, find, tryFind, empty as empty_1, ofList, toList, FSharpMap } from "@fable-org/fable-library-js/Map.js";
|
|
5
|
+
import { round, int64ToString, equals, int32ToString, defaultOf, numberHash, arrayHash, equalArrays, stringHash, comparePrimitives, IComparable, IEquatable } from "@fable-org/fable-library-js/Util.js";
|
|
6
|
+
import { getUnionFields, name as name_2, tuple_type, float64_type, list_type, bool_type, option_type, union_type, record_type, class_type, string_type, int32_type, TypeInfo } from "@fable-org/fable-library-js/Reflection.js";
|
|
7
|
+
import { FSharpResult$2_Error, FSharpResult$2_$union, FSharpResult$2_Ok } from "@fable-org/fable-library-js/Result.js";
|
|
8
|
+
import { ServedFacts, runPipeline, instrumentsOfScoring } from "./CoreMRImportPipeline.js";
|
|
9
|
+
import { bind, orElse, defaultArg, value as value_3, map as map_1, Option } from "@fable-org/fable-library-js/Option.js";
|
|
10
|
+
import { map2, append, tryHead, find as find_1, zip, tryFind as tryFind_1, truncate, choose, empty, isEmpty, ofArray, exists, sortBy, length, sumBy, filter, sortByDescending, collect, map, FSharpList } from "@fable-org/fable-library-js/List.js";
|
|
11
|
+
import { Spec_FormStep$1, Spec_FormField$1, Shared_FieldKey, ClinicalPathway_TransitionCondition_$union, ClinicalPathway_LogicalOp_$union, Shared_ConditionValue_$union, ClinicalPathway_FieldEvaluator_$union, ClinicalPathway_ActionInfo_$union, Spec_FormSpec$1_$reflection, Spec_FieldType_$reflection, Spec_FieldType_$union, Spec_FormSpec$1 } from "../../../FormSpec.js";
|
|
12
|
+
import { List_distinctBy, List_groupBy, List_countBy } from "@fable-org/fable-library-js/Seq2.js";
|
|
13
|
+
import { tryGetValue } from "@fable-org/fable-library-js/MapUtil.js";
|
|
14
|
+
import { split, isNullOrEmpty, join, compare } from "@fable-org/fable-library-js/String.js";
|
|
15
|
+
import { toList as toList_1 } from "@fable-org/fable-library-js/Set.js";
|
|
16
|
+
import { ActionRead_$union, StatedAction, StatedCondition, Trigger } from "../../../../vye-os-contracts-fs/src/CoreMR/FormTemplate.js";
|
|
17
|
+
import { convertAction, convertCondition } from "../../CorEMR/CoreMRPathwayMapper.js";
|
|
18
|
+
import { ElementTypeInfo, getElementTypeInfo } from "./CorEMRElementTypeMap.js";
|
|
19
|
+
import { CoreMRChoiceAnchor, CoreMRStepMap, CoreMRFieldAnchor, CoreMRSourceMap } from "./CoreMRSourceMap.js";
|
|
20
|
+
import { item } from "@fable-org/fable-library-js/Array.js";
|
|
21
|
+
import { max, min } from "@fable-org/fable-library-js/Double.js";
|
|
22
|
+
import { empty as empty_2, singleton, append as append_1, delay, toList as toList_2 } from "@fable-org/fable-library-js/Seq.js";
|
|
23
|
+
import { Auto_generateBoxedEncoder_437914C6, toString } from "../../../../Thoth.Json/packages/Thoth.Json/Encode.js";
|
|
24
|
+
import { ImportOrigin } from "../../../Provenance.js";
|
|
25
|
+
|
|
26
|
+
export class LandingSource extends Record implements IEquatable<LandingSource>, IComparable<LandingSource> {
|
|
27
|
+
readonly Version: int32;
|
|
28
|
+
readonly GeneratedAt: string;
|
|
29
|
+
readonly GeneratedFrom: string;
|
|
30
|
+
readonly CoreEmr: CoreEmrInfo;
|
|
31
|
+
readonly Stats: TemplateStats;
|
|
32
|
+
readonly Scoring: ReleaseAvailability$1_$union<ScoringCatalog>;
|
|
33
|
+
readonly Triggers: ReleaseAvailability$1_$union<TriggerStats>;
|
|
34
|
+
readonly Forms: FSharpMap<string, TemplateForm>;
|
|
35
|
+
constructor(Version: int32, GeneratedAt: string, GeneratedFrom: string, CoreEmr: CoreEmrInfo, Stats: TemplateStats, Scoring: ReleaseAvailability$1_$union<ScoringCatalog>, Triggers: ReleaseAvailability$1_$union<TriggerStats>, Forms: FSharpMap<string, TemplateForm>) {
|
|
36
|
+
super();
|
|
37
|
+
this.Version = (Version | 0);
|
|
38
|
+
this.GeneratedAt = GeneratedAt;
|
|
39
|
+
this.GeneratedFrom = GeneratedFrom;
|
|
40
|
+
this.CoreEmr = CoreEmr;
|
|
41
|
+
this.Stats = Stats;
|
|
42
|
+
this.Scoring = Scoring;
|
|
43
|
+
this.Triggers = Triggers;
|
|
44
|
+
this.Forms = Forms;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function LandingSource_$reflection(): TypeInfo {
|
|
49
|
+
return record_type("FormSpec.Integrations.CorEMR.CoreMRImporterAnalysis.LandingSource", [], LandingSource, () => [["Version", int32_type], ["GeneratedAt", string_type], ["GeneratedFrom", string_type], ["CoreEmr", CoreEmrInfo_$reflection()], ["Stats", TemplateStats_$reflection()], ["Scoring", ReleaseAvailability$1_$reflection(ScoringCatalog_$reflection())], ["Triggers", ReleaseAvailability$1_$reflection(TriggerStats_$reflection())], ["Forms", class_type("Microsoft.FSharp.Collections.FSharpMap`2", [string_type, TemplateForm_$reflection()])]]);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function ok<$a, $b>(v: $a): FSharpResult$2_$union<$a, $b> {
|
|
53
|
+
return FSharpResult$2_Ok<$a, $b>(v);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function err<$a, $b>(v: $a): FSharpResult$2_$union<$b, $a> {
|
|
57
|
+
return FSharpResult$2_Error<$b, $a>(v);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function instrumentsOf(m: LandingSource): FSharpMap<string, InstrumentMapEntry> {
|
|
61
|
+
return instrumentsOfScoring(m.Scoring);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export type TemplateStatus_$union =
|
|
65
|
+
| TemplateStatus<0>
|
|
66
|
+
| TemplateStatus<1>
|
|
67
|
+
| TemplateStatus<2>
|
|
68
|
+
| TemplateStatus<3>
|
|
69
|
+
| TemplateStatus<4>
|
|
70
|
+
|
|
71
|
+
export type TemplateStatus_$cases = {
|
|
72
|
+
0: ["Ready", []],
|
|
73
|
+
1: ["Issues", []],
|
|
74
|
+
2: ["Drift", []],
|
|
75
|
+
3: ["Blocked", []],
|
|
76
|
+
4: ["New", []]
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export function TemplateStatus_Ready() {
|
|
80
|
+
return new TemplateStatus<0>(0, []);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export function TemplateStatus_Issues() {
|
|
84
|
+
return new TemplateStatus<1>(1, []);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export function TemplateStatus_Drift() {
|
|
88
|
+
return new TemplateStatus<2>(2, []);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export function TemplateStatus_Blocked() {
|
|
92
|
+
return new TemplateStatus<3>(3, []);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export function TemplateStatus_New() {
|
|
96
|
+
return new TemplateStatus<4>(4, []);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export class TemplateStatus<Tag extends keyof TemplateStatus_$cases> extends Union<Tag, TemplateStatus_$cases[Tag][0]> {
|
|
100
|
+
constructor(readonly tag: Tag, readonly fields: TemplateStatus_$cases[Tag][1]) {
|
|
101
|
+
super();
|
|
102
|
+
}
|
|
103
|
+
cases() {
|
|
104
|
+
return ["Ready", "Issues", "Drift", "Blocked", "New"];
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export function TemplateStatus_$reflection(): TypeInfo {
|
|
109
|
+
return union_type("FormSpec.Integrations.CorEMR.CoreMRImporterAnalysis.TemplateStatus", [], TemplateStatus, () => [[], [], [], [], []]);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export type FieldMappingStatus_$union =
|
|
113
|
+
| FieldMappingStatus<0>
|
|
114
|
+
| FieldMappingStatus<1>
|
|
115
|
+
|
|
116
|
+
export type FieldMappingStatus_$cases = {
|
|
117
|
+
0: ["Mapped", []],
|
|
118
|
+
1: ["Unsupported", []]
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export function FieldMappingStatus_Mapped() {
|
|
122
|
+
return new FieldMappingStatus<0>(0, []);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export function FieldMappingStatus_Unsupported() {
|
|
126
|
+
return new FieldMappingStatus<1>(1, []);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export class FieldMappingStatus<Tag extends keyof FieldMappingStatus_$cases> extends Union<Tag, FieldMappingStatus_$cases[Tag][0]> {
|
|
130
|
+
constructor(readonly tag: Tag, readonly fields: FieldMappingStatus_$cases[Tag][1]) {
|
|
131
|
+
super();
|
|
132
|
+
}
|
|
133
|
+
cases() {
|
|
134
|
+
return ["Mapped", "Unsupported"];
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export function FieldMappingStatus_$reflection(): TypeInfo {
|
|
139
|
+
return union_type("FormSpec.Integrations.CorEMR.CoreMRImporterAnalysis.FieldMappingStatus", [], FieldMappingStatus, () => [[], []]);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export type TriggerStatus_$union =
|
|
143
|
+
| TriggerStatus<0>
|
|
144
|
+
| TriggerStatus<1>
|
|
145
|
+
| TriggerStatus<2>
|
|
146
|
+
| TriggerStatus<3>
|
|
147
|
+
|
|
148
|
+
export type TriggerStatus_$cases = {
|
|
149
|
+
0: ["Equivalent", []],
|
|
150
|
+
1: ["Partial", []],
|
|
151
|
+
2: ["Failed", []],
|
|
152
|
+
3: ["Pending", []]
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export function TriggerStatus_Equivalent() {
|
|
156
|
+
return new TriggerStatus<0>(0, []);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export function TriggerStatus_Partial() {
|
|
160
|
+
return new TriggerStatus<1>(1, []);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export function TriggerStatus_Failed() {
|
|
164
|
+
return new TriggerStatus<2>(2, []);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export function TriggerStatus_Pending() {
|
|
168
|
+
return new TriggerStatus<3>(3, []);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export class TriggerStatus<Tag extends keyof TriggerStatus_$cases> extends Union<Tag, TriggerStatus_$cases[Tag][0]> {
|
|
172
|
+
constructor(readonly tag: Tag, readonly fields: TriggerStatus_$cases[Tag][1]) {
|
|
173
|
+
super();
|
|
174
|
+
}
|
|
175
|
+
cases() {
|
|
176
|
+
return ["Equivalent", "Partial", "Failed", "Pending"];
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export function TriggerStatus_$reflection(): TypeInfo {
|
|
181
|
+
return union_type("FormSpec.Integrations.CorEMR.CoreMRImporterAnalysis.TriggerStatus", [], TriggerStatus, () => [[], [], [], []]);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export type EquivalenceStatus_$union =
|
|
185
|
+
| EquivalenceStatus<0>
|
|
186
|
+
| EquivalenceStatus<1>
|
|
187
|
+
| EquivalenceStatus<2>
|
|
188
|
+
|
|
189
|
+
export type EquivalenceStatus_$cases = {
|
|
190
|
+
0: ["EquivEquivalent", []],
|
|
191
|
+
1: ["EquivMismatch", []],
|
|
192
|
+
2: ["EquivMissing", []]
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
export function EquivalenceStatus_EquivEquivalent() {
|
|
196
|
+
return new EquivalenceStatus<0>(0, []);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
export function EquivalenceStatus_EquivMismatch() {
|
|
200
|
+
return new EquivalenceStatus<1>(1, []);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
export function EquivalenceStatus_EquivMissing() {
|
|
204
|
+
return new EquivalenceStatus<2>(2, []);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export class EquivalenceStatus<Tag extends keyof EquivalenceStatus_$cases> extends Union<Tag, EquivalenceStatus_$cases[Tag][0]> {
|
|
208
|
+
constructor(readonly tag: Tag, readonly fields: EquivalenceStatus_$cases[Tag][1]) {
|
|
209
|
+
super();
|
|
210
|
+
}
|
|
211
|
+
cases() {
|
|
212
|
+
return ["EquivEquivalent", "EquivMismatch", "EquivMissing"];
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
export function EquivalenceStatus_$reflection(): TypeInfo {
|
|
217
|
+
return union_type("FormSpec.Integrations.CorEMR.CoreMRImporterAnalysis.EquivalenceStatus", [], EquivalenceStatus, () => [[], [], []]);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
export class Manifest extends Record implements IEquatable<Manifest>, IComparable<Manifest> {
|
|
221
|
+
readonly Source: string;
|
|
222
|
+
readonly GeneratedAt: string;
|
|
223
|
+
readonly Version: string;
|
|
224
|
+
readonly CoreEmrApp: string;
|
|
225
|
+
readonly CoreEmrSchema: string;
|
|
226
|
+
readonly SchemaRev: string;
|
|
227
|
+
readonly Forms: int32;
|
|
228
|
+
readonly WithCodes: int32;
|
|
229
|
+
readonly WithScoring: int32;
|
|
230
|
+
readonly InstrumentTotal: int32;
|
|
231
|
+
readonly InstrumentCurrent: int32;
|
|
232
|
+
readonly InstrumentArchived: int32;
|
|
233
|
+
readonly ScoringFrom: Option<string>;
|
|
234
|
+
readonly TriggersFrom: Option<string>;
|
|
235
|
+
constructor(Source: string, GeneratedAt: string, Version: string, CoreEmrApp: string, CoreEmrSchema: string, SchemaRev: string, Forms: int32, WithCodes: int32, WithScoring: int32, InstrumentTotal: int32, InstrumentCurrent: int32, InstrumentArchived: int32, ScoringFrom: Option<string>, TriggersFrom: Option<string>) {
|
|
236
|
+
super();
|
|
237
|
+
this.Source = Source;
|
|
238
|
+
this.GeneratedAt = GeneratedAt;
|
|
239
|
+
this.Version = Version;
|
|
240
|
+
this.CoreEmrApp = CoreEmrApp;
|
|
241
|
+
this.CoreEmrSchema = CoreEmrSchema;
|
|
242
|
+
this.SchemaRev = SchemaRev;
|
|
243
|
+
this.Forms = (Forms | 0);
|
|
244
|
+
this.WithCodes = (WithCodes | 0);
|
|
245
|
+
this.WithScoring = (WithScoring | 0);
|
|
246
|
+
this.InstrumentTotal = (InstrumentTotal | 0);
|
|
247
|
+
this.InstrumentCurrent = (InstrumentCurrent | 0);
|
|
248
|
+
this.InstrumentArchived = (InstrumentArchived | 0);
|
|
249
|
+
this.ScoringFrom = ScoringFrom;
|
|
250
|
+
this.TriggersFrom = TriggersFrom;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
export function Manifest_$reflection(): TypeInfo {
|
|
255
|
+
return record_type("FormSpec.Integrations.CorEMR.CoreMRImporterAnalysis.Manifest", [], Manifest, () => [["Source", string_type], ["GeneratedAt", string_type], ["Version", string_type], ["CoreEmrApp", string_type], ["CoreEmrSchema", string_type], ["SchemaRev", string_type], ["Forms", int32_type], ["WithCodes", int32_type], ["WithScoring", int32_type], ["InstrumentTotal", int32_type], ["InstrumentCurrent", int32_type], ["InstrumentArchived", int32_type], ["ScoringFrom", option_type(string_type)], ["TriggersFrom", option_type(string_type)]]);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
export class TemplateListItem extends Record implements IEquatable<TemplateListItem>, IComparable<TemplateListItem> {
|
|
259
|
+
readonly TemplateId: string;
|
|
260
|
+
readonly TemplateCode: string;
|
|
261
|
+
readonly TemplateName: string;
|
|
262
|
+
readonly Classification: Option<string>;
|
|
263
|
+
readonly FieldCount: int32;
|
|
264
|
+
readonly TriggerCount: int32;
|
|
265
|
+
readonly HasScoring: boolean;
|
|
266
|
+
readonly HasBlueprintCode: boolean;
|
|
267
|
+
readonly HasInstrumentMapping: boolean;
|
|
268
|
+
readonly IsIntake: boolean;
|
|
269
|
+
readonly EncounterTypes: FSharpList<string>;
|
|
270
|
+
readonly IssueCount: int32;
|
|
271
|
+
readonly Instrument: Option<string>;
|
|
272
|
+
readonly LastImported: Option<string>;
|
|
273
|
+
constructor(TemplateId: string, TemplateCode: string, TemplateName: string, Classification: Option<string>, FieldCount: int32, TriggerCount: int32, HasScoring: boolean, HasBlueprintCode: boolean, HasInstrumentMapping: boolean, IsIntake: boolean, EncounterTypes: FSharpList<string>, IssueCount: int32, Instrument: Option<string>, LastImported: Option<string>) {
|
|
274
|
+
super();
|
|
275
|
+
this.TemplateId = TemplateId;
|
|
276
|
+
this.TemplateCode = TemplateCode;
|
|
277
|
+
this.TemplateName = TemplateName;
|
|
278
|
+
this.Classification = Classification;
|
|
279
|
+
this.FieldCount = (FieldCount | 0);
|
|
280
|
+
this.TriggerCount = (TriggerCount | 0);
|
|
281
|
+
this.HasScoring = HasScoring;
|
|
282
|
+
this.HasBlueprintCode = HasBlueprintCode;
|
|
283
|
+
this.HasInstrumentMapping = HasInstrumentMapping;
|
|
284
|
+
this.IsIntake = IsIntake;
|
|
285
|
+
this.EncounterTypes = EncounterTypes;
|
|
286
|
+
this.IssueCount = (IssueCount | 0);
|
|
287
|
+
this.Instrument = Instrument;
|
|
288
|
+
this.LastImported = LastImported;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
export function TemplateListItem_$reflection(): TypeInfo {
|
|
293
|
+
return record_type("FormSpec.Integrations.CorEMR.CoreMRImporterAnalysis.TemplateListItem", [], TemplateListItem, () => [["TemplateId", string_type], ["TemplateCode", string_type], ["TemplateName", string_type], ["Classification", option_type(string_type)], ["FieldCount", int32_type], ["TriggerCount", int32_type], ["HasScoring", bool_type], ["HasBlueprintCode", bool_type], ["HasInstrumentMapping", bool_type], ["IsIntake", bool_type], ["EncounterTypes", list_type(string_type)], ["IssueCount", int32_type], ["Instrument", option_type(string_type)], ["LastImported", option_type(string_type)]]);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
export class ConditionEquivalence extends Record implements IEquatable<ConditionEquivalence>, IComparable<ConditionEquivalence> {
|
|
297
|
+
readonly CoreEmrCondition: string;
|
|
298
|
+
readonly F1Condition: string;
|
|
299
|
+
readonly Status: EquivalenceStatus_$union;
|
|
300
|
+
constructor(CoreEmrCondition: string, F1Condition: string, Status: EquivalenceStatus_$union) {
|
|
301
|
+
super();
|
|
302
|
+
this.CoreEmrCondition = CoreEmrCondition;
|
|
303
|
+
this.F1Condition = F1Condition;
|
|
304
|
+
this.Status = Status;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
export function ConditionEquivalence_$reflection(): TypeInfo {
|
|
309
|
+
return record_type("FormSpec.Integrations.CorEMR.CoreMRImporterAnalysis.ConditionEquivalence", [], ConditionEquivalence, () => [["CoreEmrCondition", string_type], ["F1Condition", string_type], ["Status", EquivalenceStatus_$reflection()]]);
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
export class ActionEquivalence extends Record implements IEquatable<ActionEquivalence>, IComparable<ActionEquivalence> {
|
|
313
|
+
readonly CoreEmrAction: string;
|
|
314
|
+
readonly F1Action: string;
|
|
315
|
+
readonly Status: EquivalenceStatus_$union;
|
|
316
|
+
constructor(CoreEmrAction: string, F1Action: string, Status: EquivalenceStatus_$union) {
|
|
317
|
+
super();
|
|
318
|
+
this.CoreEmrAction = CoreEmrAction;
|
|
319
|
+
this.F1Action = F1Action;
|
|
320
|
+
this.Status = Status;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
export function ActionEquivalence_$reflection(): TypeInfo {
|
|
325
|
+
return record_type("FormSpec.Integrations.CorEMR.CoreMRImporterAnalysis.ActionEquivalence", [], ActionEquivalence, () => [["CoreEmrAction", string_type], ["F1Action", string_type], ["Status", EquivalenceStatus_$reflection()]]);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
export class TriggerMapping extends Record implements IEquatable<TriggerMapping>, IComparable<TriggerMapping> {
|
|
329
|
+
readonly TriggerId: int32;
|
|
330
|
+
readonly Event: string;
|
|
331
|
+
readonly ConditionCount: int32;
|
|
332
|
+
readonly ActionCount: int32;
|
|
333
|
+
readonly TransitionName: string;
|
|
334
|
+
readonly TransitionFrom: string;
|
|
335
|
+
readonly TransitionTo: string;
|
|
336
|
+
readonly Status: TriggerStatus_$union;
|
|
337
|
+
readonly Conditions: FSharpList<ConditionEquivalence>;
|
|
338
|
+
readonly Actions: FSharpList<ActionEquivalence>;
|
|
339
|
+
constructor(TriggerId: int32, Event$: string, ConditionCount: int32, ActionCount: int32, TransitionName: string, TransitionFrom: string, TransitionTo: string, Status: TriggerStatus_$union, Conditions: FSharpList<ConditionEquivalence>, Actions: FSharpList<ActionEquivalence>) {
|
|
340
|
+
super();
|
|
341
|
+
this.TriggerId = (TriggerId | 0);
|
|
342
|
+
this.Event = Event$;
|
|
343
|
+
this.ConditionCount = (ConditionCount | 0);
|
|
344
|
+
this.ActionCount = (ActionCount | 0);
|
|
345
|
+
this.TransitionName = TransitionName;
|
|
346
|
+
this.TransitionFrom = TransitionFrom;
|
|
347
|
+
this.TransitionTo = TransitionTo;
|
|
348
|
+
this.Status = Status;
|
|
349
|
+
this.Conditions = Conditions;
|
|
350
|
+
this.Actions = Actions;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
export function TriggerMapping_$reflection(): TypeInfo {
|
|
355
|
+
return record_type("FormSpec.Integrations.CorEMR.CoreMRImporterAnalysis.TriggerMapping", [], TriggerMapping, () => [["TriggerId", int32_type], ["Event", string_type], ["ConditionCount", int32_type], ["ActionCount", int32_type], ["TransitionName", string_type], ["TransitionFrom", string_type], ["TransitionTo", string_type], ["Status", TriggerStatus_$reflection()], ["Conditions", list_type(ConditionEquivalence_$reflection())], ["Actions", list_type(ActionEquivalence_$reflection())]]);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
export class FieldMapping extends Record implements IEquatable<FieldMapping>, IComparable<FieldMapping> {
|
|
359
|
+
readonly FieldId: string;
|
|
360
|
+
readonly ItemId: int32;
|
|
361
|
+
readonly Order: int32;
|
|
362
|
+
readonly Label: Option<string>;
|
|
363
|
+
readonly F1Type: string;
|
|
364
|
+
readonly CoreEmrType: int32;
|
|
365
|
+
readonly CoreEmrTypeName: string;
|
|
366
|
+
readonly ChoiceScores: string;
|
|
367
|
+
readonly Code: Option<string>;
|
|
368
|
+
readonly Required: boolean;
|
|
369
|
+
readonly Options: int32;
|
|
370
|
+
readonly ScoreSignal: string;
|
|
371
|
+
readonly MappingNotes: string;
|
|
372
|
+
readonly Status: FieldMappingStatus_$union;
|
|
373
|
+
readonly Triggers: FSharpList<TriggerMapping>;
|
|
374
|
+
constructor(FieldId: string, ItemId: int32, Order: int32, Label: Option<string>, F1Type: string, CoreEmrType: int32, CoreEmrTypeName: string, ChoiceScores: string, Code: Option<string>, Required: boolean, Options: int32, ScoreSignal: string, MappingNotes: string, Status: FieldMappingStatus_$union, Triggers: FSharpList<TriggerMapping>) {
|
|
375
|
+
super();
|
|
376
|
+
this.FieldId = FieldId;
|
|
377
|
+
this.ItemId = (ItemId | 0);
|
|
378
|
+
this.Order = (Order | 0);
|
|
379
|
+
this.Label = Label;
|
|
380
|
+
this.F1Type = F1Type;
|
|
381
|
+
this.CoreEmrType = (CoreEmrType | 0);
|
|
382
|
+
this.CoreEmrTypeName = CoreEmrTypeName;
|
|
383
|
+
this.ChoiceScores = ChoiceScores;
|
|
384
|
+
this.Code = Code;
|
|
385
|
+
this.Required = Required;
|
|
386
|
+
this.Options = (Options | 0);
|
|
387
|
+
this.ScoreSignal = ScoreSignal;
|
|
388
|
+
this.MappingNotes = MappingNotes;
|
|
389
|
+
this.Status = Status;
|
|
390
|
+
this.Triggers = Triggers;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
export function FieldMapping_$reflection(): TypeInfo {
|
|
395
|
+
return record_type("FormSpec.Integrations.CorEMR.CoreMRImporterAnalysis.FieldMapping", [], FieldMapping, () => [["FieldId", string_type], ["ItemId", int32_type], ["Order", int32_type], ["Label", option_type(string_type)], ["F1Type", string_type], ["CoreEmrType", int32_type], ["CoreEmrTypeName", string_type], ["ChoiceScores", string_type], ["Code", option_type(string_type)], ["Required", bool_type], ["Options", int32_type], ["ScoreSignal", string_type], ["MappingNotes", string_type], ["Status", FieldMappingStatus_$reflection()], ["Triggers", list_type(TriggerMapping_$reflection())]]);
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
export class StepMapping extends Record implements IEquatable<StepMapping>, IComparable<StepMapping> {
|
|
399
|
+
readonly StepOrder: int32;
|
|
400
|
+
readonly StepLabel: Option<string>;
|
|
401
|
+
readonly Fields: FSharpList<FieldMapping>;
|
|
402
|
+
constructor(StepOrder: int32, StepLabel: Option<string>, Fields: FSharpList<FieldMapping>) {
|
|
403
|
+
super();
|
|
404
|
+
this.StepOrder = (StepOrder | 0);
|
|
405
|
+
this.StepLabel = StepLabel;
|
|
406
|
+
this.Fields = Fields;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
export function StepMapping_$reflection(): TypeInfo {
|
|
411
|
+
return record_type("FormSpec.Integrations.CorEMR.CoreMRImporterAnalysis.StepMapping", [], StepMapping, () => [["StepOrder", int32_type], ["StepLabel", option_type(string_type)], ["Fields", list_type(FieldMapping_$reflection())]]);
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
export class TemplateMapping extends Record implements IEquatable<TemplateMapping>, IComparable<TemplateMapping> {
|
|
415
|
+
readonly TemplateId: string;
|
|
416
|
+
readonly TemplateCode: string;
|
|
417
|
+
readonly TemplateName: string;
|
|
418
|
+
readonly BlueprintId: string;
|
|
419
|
+
readonly BlueprintCode: string;
|
|
420
|
+
readonly BlueprintName: string;
|
|
421
|
+
readonly Classification: Option<string>;
|
|
422
|
+
readonly Readiness: float64;
|
|
423
|
+
readonly Status: TemplateStatus_$union;
|
|
424
|
+
readonly TotalFields: int32;
|
|
425
|
+
readonly ChoiceFields: int32;
|
|
426
|
+
readonly BitmaskFields: int32;
|
|
427
|
+
readonly BitmaskCoverage: float64;
|
|
428
|
+
readonly CodeCoverage: float64;
|
|
429
|
+
readonly CodedFieldCount: int32;
|
|
430
|
+
readonly RequiredDensity: float64;
|
|
431
|
+
readonly RequiredFieldCount: int32;
|
|
432
|
+
readonly ScoringSignal: float64;
|
|
433
|
+
readonly InstrumentMapping: float64;
|
|
434
|
+
readonly BlueprintCodeAvailable: boolean;
|
|
435
|
+
readonly TriggerCount: int32;
|
|
436
|
+
readonly TriggeredFieldCount: int32;
|
|
437
|
+
readonly TriggerActionBreakdown: FSharpMap<string, int32>;
|
|
438
|
+
readonly IsIntake: boolean;
|
|
439
|
+
readonly IsScored: boolean;
|
|
440
|
+
readonly EncounterTypes: FSharpList<string>;
|
|
441
|
+
readonly Usage: Option<string>;
|
|
442
|
+
readonly HasSignature: boolean;
|
|
443
|
+
readonly StructureHash: string;
|
|
444
|
+
readonly FormSpec: Spec_FormSpec$1<Spec_FieldType_$union>;
|
|
445
|
+
readonly FormSpecJson: string;
|
|
446
|
+
readonly Steps: FSharpList<StepMapping>;
|
|
447
|
+
constructor(TemplateId: string, TemplateCode: string, TemplateName: string, BlueprintId: string, BlueprintCode: string, BlueprintName: string, Classification: Option<string>, Readiness: float64, Status: TemplateStatus_$union, TotalFields: int32, ChoiceFields: int32, BitmaskFields: int32, BitmaskCoverage: float64, CodeCoverage: float64, CodedFieldCount: int32, RequiredDensity: float64, RequiredFieldCount: int32, ScoringSignal: float64, InstrumentMapping: float64, BlueprintCodeAvailable: boolean, TriggerCount: int32, TriggeredFieldCount: int32, TriggerActionBreakdown: FSharpMap<string, int32>, IsIntake: boolean, IsScored: boolean, EncounterTypes: FSharpList<string>, Usage: Option<string>, HasSignature: boolean, StructureHash: string, FormSpec: Spec_FormSpec$1<Spec_FieldType_$union>, FormSpecJson: string, Steps: FSharpList<StepMapping>) {
|
|
448
|
+
super();
|
|
449
|
+
this.TemplateId = TemplateId;
|
|
450
|
+
this.TemplateCode = TemplateCode;
|
|
451
|
+
this.TemplateName = TemplateName;
|
|
452
|
+
this.BlueprintId = BlueprintId;
|
|
453
|
+
this.BlueprintCode = BlueprintCode;
|
|
454
|
+
this.BlueprintName = BlueprintName;
|
|
455
|
+
this.Classification = Classification;
|
|
456
|
+
this.Readiness = Readiness;
|
|
457
|
+
this.Status = Status;
|
|
458
|
+
this.TotalFields = (TotalFields | 0);
|
|
459
|
+
this.ChoiceFields = (ChoiceFields | 0);
|
|
460
|
+
this.BitmaskFields = (BitmaskFields | 0);
|
|
461
|
+
this.BitmaskCoverage = BitmaskCoverage;
|
|
462
|
+
this.CodeCoverage = CodeCoverage;
|
|
463
|
+
this.CodedFieldCount = (CodedFieldCount | 0);
|
|
464
|
+
this.RequiredDensity = RequiredDensity;
|
|
465
|
+
this.RequiredFieldCount = (RequiredFieldCount | 0);
|
|
466
|
+
this.ScoringSignal = ScoringSignal;
|
|
467
|
+
this.InstrumentMapping = InstrumentMapping;
|
|
468
|
+
this.BlueprintCodeAvailable = BlueprintCodeAvailable;
|
|
469
|
+
this.TriggerCount = (TriggerCount | 0);
|
|
470
|
+
this.TriggeredFieldCount = (TriggeredFieldCount | 0);
|
|
471
|
+
this.TriggerActionBreakdown = TriggerActionBreakdown;
|
|
472
|
+
this.IsIntake = IsIntake;
|
|
473
|
+
this.IsScored = IsScored;
|
|
474
|
+
this.EncounterTypes = EncounterTypes;
|
|
475
|
+
this.Usage = Usage;
|
|
476
|
+
this.HasSignature = HasSignature;
|
|
477
|
+
this.StructureHash = StructureHash;
|
|
478
|
+
this.FormSpec = FormSpec;
|
|
479
|
+
this.FormSpecJson = FormSpecJson;
|
|
480
|
+
this.Steps = Steps;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
export function TemplateMapping_$reflection(): TypeInfo {
|
|
485
|
+
return record_type("FormSpec.Integrations.CorEMR.CoreMRImporterAnalysis.TemplateMapping", [], TemplateMapping, () => [["TemplateId", string_type], ["TemplateCode", string_type], ["TemplateName", string_type], ["BlueprintId", string_type], ["BlueprintCode", string_type], ["BlueprintName", string_type], ["Classification", option_type(string_type)], ["Readiness", float64_type], ["Status", TemplateStatus_$reflection()], ["TotalFields", int32_type], ["ChoiceFields", int32_type], ["BitmaskFields", int32_type], ["BitmaskCoverage", float64_type], ["CodeCoverage", float64_type], ["CodedFieldCount", int32_type], ["RequiredDensity", float64_type], ["RequiredFieldCount", int32_type], ["ScoringSignal", float64_type], ["InstrumentMapping", float64_type], ["BlueprintCodeAvailable", bool_type], ["TriggerCount", int32_type], ["TriggeredFieldCount", int32_type], ["TriggerActionBreakdown", class_type("Microsoft.FSharp.Collections.FSharpMap`2", [string_type, int32_type])], ["IsIntake", bool_type], ["IsScored", bool_type], ["EncounterTypes", list_type(string_type)], ["Usage", option_type(string_type)], ["HasSignature", bool_type], ["StructureHash", string_type], ["FormSpec", Spec_FormSpec$1_$reflection(Spec_FieldType_$reflection())], ["FormSpecJson", string_type], ["Steps", list_type(StepMapping_$reflection())]]);
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
export class FormDetail extends Record implements IEquatable<FormDetail>, IComparable<FormDetail> {
|
|
489
|
+
readonly FormId: int32;
|
|
490
|
+
readonly FormCode: string;
|
|
491
|
+
readonly FormName: string;
|
|
492
|
+
constructor(FormId: int32, FormCode: string, FormName: string) {
|
|
493
|
+
super();
|
|
494
|
+
this.FormId = (FormId | 0);
|
|
495
|
+
this.FormCode = FormCode;
|
|
496
|
+
this.FormName = FormName;
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
export function FormDetail_$reflection(): TypeInfo {
|
|
501
|
+
return record_type("FormSpec.Integrations.CorEMR.CoreMRImporterAnalysis.FormDetail", [], FormDetail, () => [["FormId", int32_type], ["FormCode", string_type], ["FormName", string_type]]);
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
export class TriggerFormStat extends Record implements IEquatable<TriggerFormStat>, IComparable<TriggerFormStat> {
|
|
505
|
+
readonly FormId: int32;
|
|
506
|
+
readonly FormCode: string;
|
|
507
|
+
readonly FormName: string;
|
|
508
|
+
readonly TriggerCount: int32;
|
|
509
|
+
constructor(FormId: int32, FormCode: string, FormName: string, TriggerCount: int32) {
|
|
510
|
+
super();
|
|
511
|
+
this.FormId = (FormId | 0);
|
|
512
|
+
this.FormCode = FormCode;
|
|
513
|
+
this.FormName = FormName;
|
|
514
|
+
this.TriggerCount = (TriggerCount | 0);
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
export function TriggerFormStat_$reflection(): TypeInfo {
|
|
519
|
+
return record_type("FormSpec.Integrations.CorEMR.CoreMRImporterAnalysis.TriggerFormStat", [], TriggerFormStat, () => [["FormId", int32_type], ["FormCode", string_type], ["FormName", string_type], ["TriggerCount", int32_type]]);
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
export class ActionFormDetail extends Record implements IEquatable<ActionFormDetail>, IComparable<ActionFormDetail> {
|
|
523
|
+
readonly FormId: int32;
|
|
524
|
+
readonly FormCode: string;
|
|
525
|
+
readonly FormName: string;
|
|
526
|
+
readonly Count: int32;
|
|
527
|
+
constructor(FormId: int32, FormCode: string, FormName: string, Count: int32) {
|
|
528
|
+
super();
|
|
529
|
+
this.FormId = (FormId | 0);
|
|
530
|
+
this.FormCode = FormCode;
|
|
531
|
+
this.FormName = FormName;
|
|
532
|
+
this.Count = (Count | 0);
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
export function ActionFormDetail_$reflection(): TypeInfo {
|
|
537
|
+
return record_type("FormSpec.Integrations.CorEMR.CoreMRImporterAnalysis.ActionFormDetail", [], ActionFormDetail, () => [["FormId", int32_type], ["FormCode", string_type], ["FormName", string_type], ["Count", int32_type]]);
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
export class InstrumentDetail extends Record implements IEquatable<InstrumentDetail>, IComparable<InstrumentDetail> {
|
|
541
|
+
readonly FormId: int32;
|
|
542
|
+
readonly FormCode: string;
|
|
543
|
+
readonly FormName: string;
|
|
544
|
+
readonly InstrumentType: string;
|
|
545
|
+
readonly MaxScore: Option<int32>;
|
|
546
|
+
readonly Source: string;
|
|
547
|
+
readonly Archived: boolean;
|
|
548
|
+
constructor(FormId: int32, FormCode: string, FormName: string, InstrumentType: string, MaxScore: Option<int32>, Source: string, Archived: boolean) {
|
|
549
|
+
super();
|
|
550
|
+
this.FormId = (FormId | 0);
|
|
551
|
+
this.FormCode = FormCode;
|
|
552
|
+
this.FormName = FormName;
|
|
553
|
+
this.InstrumentType = InstrumentType;
|
|
554
|
+
this.MaxScore = MaxScore;
|
|
555
|
+
this.Source = Source;
|
|
556
|
+
this.Archived = Archived;
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
export function InstrumentDetail_$reflection(): TypeInfo {
|
|
561
|
+
return record_type("FormSpec.Integrations.CorEMR.CoreMRImporterAnalysis.InstrumentDetail", [], InstrumentDetail, () => [["FormId", int32_type], ["FormCode", string_type], ["FormName", string_type], ["InstrumentType", string_type], ["MaxScore", option_type(int32_type)], ["Source", string_type], ["Archived", bool_type]]);
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
export class ManifestStats extends Record implements IEquatable<ManifestStats>, IComparable<ManifestStats> {
|
|
565
|
+
readonly TotalForms: int32;
|
|
566
|
+
readonly TotalFields: int32;
|
|
567
|
+
readonly TotalTriggers: int32;
|
|
568
|
+
readonly FormsWithTriggers: int32;
|
|
569
|
+
readonly FormsWithScoring: int32;
|
|
570
|
+
readonly FormsWithSignature: int32;
|
|
571
|
+
readonly FormsIntake: int32;
|
|
572
|
+
readonly EncMedical: int32;
|
|
573
|
+
readonly EncMental: int32;
|
|
574
|
+
readonly EncDental: int32;
|
|
575
|
+
readonly EncOther: int32;
|
|
576
|
+
readonly EncounterFormMap: FSharpMap<string, FSharpList<FormDetail>>;
|
|
577
|
+
readonly PropertyFormMap: FSharpMap<string, FSharpList<FormDetail>>;
|
|
578
|
+
readonly TopFormsByTriggers: FSharpList<TriggerFormStat>;
|
|
579
|
+
readonly ActionTypeBreakdown: FSharpList<[string, int32]>;
|
|
580
|
+
readonly ActionTypeFormMap: FSharpMap<string, FSharpList<ActionFormDetail>>;
|
|
581
|
+
readonly EventTypeBreakdown: FSharpList<[string, int32]>;
|
|
582
|
+
readonly EventTypeFormMap: FSharpMap<string, FSharpList<FormDetail>>;
|
|
583
|
+
readonly ExclusiveTagForms: int32;
|
|
584
|
+
readonly InstrumentTotal: int32;
|
|
585
|
+
readonly InstrumentCurrent: int32;
|
|
586
|
+
readonly InstrumentArchived: int32;
|
|
587
|
+
readonly InstrumentByType: FSharpMap<string, int32>;
|
|
588
|
+
readonly InstrumentBySource: FSharpMap<string, int32>;
|
|
589
|
+
readonly InstrumentDetails: FSharpList<InstrumentDetail>;
|
|
590
|
+
readonly InstrumentTypeDetails: FSharpMap<string, FSharpList<InstrumentDetail>>;
|
|
591
|
+
readonly InstrumentSourceDetails: FSharpMap<string, FSharpList<InstrumentDetail>>;
|
|
592
|
+
readonly AppVersion: string;
|
|
593
|
+
readonly SchemaVersion: string;
|
|
594
|
+
readonly SchemaRevision: int32;
|
|
595
|
+
readonly WithCodes: int32;
|
|
596
|
+
readonly WithSyntheticCodes: int32;
|
|
597
|
+
constructor(TotalForms: int32, TotalFields: int32, TotalTriggers: int32, FormsWithTriggers: int32, FormsWithScoring: int32, FormsWithSignature: int32, FormsIntake: int32, EncMedical: int32, EncMental: int32, EncDental: int32, EncOther: int32, EncounterFormMap: FSharpMap<string, FSharpList<FormDetail>>, PropertyFormMap: FSharpMap<string, FSharpList<FormDetail>>, TopFormsByTriggers: FSharpList<TriggerFormStat>, ActionTypeBreakdown: FSharpList<[string, int32]>, ActionTypeFormMap: FSharpMap<string, FSharpList<ActionFormDetail>>, EventTypeBreakdown: FSharpList<[string, int32]>, EventTypeFormMap: FSharpMap<string, FSharpList<FormDetail>>, ExclusiveTagForms: int32, InstrumentTotal: int32, InstrumentCurrent: int32, InstrumentArchived: int32, InstrumentByType: FSharpMap<string, int32>, InstrumentBySource: FSharpMap<string, int32>, InstrumentDetails: FSharpList<InstrumentDetail>, InstrumentTypeDetails: FSharpMap<string, FSharpList<InstrumentDetail>>, InstrumentSourceDetails: FSharpMap<string, FSharpList<InstrumentDetail>>, AppVersion: string, SchemaVersion: string, SchemaRevision: int32, WithCodes: int32, WithSyntheticCodes: int32) {
|
|
598
|
+
super();
|
|
599
|
+
this.TotalForms = (TotalForms | 0);
|
|
600
|
+
this.TotalFields = (TotalFields | 0);
|
|
601
|
+
this.TotalTriggers = (TotalTriggers | 0);
|
|
602
|
+
this.FormsWithTriggers = (FormsWithTriggers | 0);
|
|
603
|
+
this.FormsWithScoring = (FormsWithScoring | 0);
|
|
604
|
+
this.FormsWithSignature = (FormsWithSignature | 0);
|
|
605
|
+
this.FormsIntake = (FormsIntake | 0);
|
|
606
|
+
this.EncMedical = (EncMedical | 0);
|
|
607
|
+
this.EncMental = (EncMental | 0);
|
|
608
|
+
this.EncDental = (EncDental | 0);
|
|
609
|
+
this.EncOther = (EncOther | 0);
|
|
610
|
+
this.EncounterFormMap = EncounterFormMap;
|
|
611
|
+
this.PropertyFormMap = PropertyFormMap;
|
|
612
|
+
this.TopFormsByTriggers = TopFormsByTriggers;
|
|
613
|
+
this.ActionTypeBreakdown = ActionTypeBreakdown;
|
|
614
|
+
this.ActionTypeFormMap = ActionTypeFormMap;
|
|
615
|
+
this.EventTypeBreakdown = EventTypeBreakdown;
|
|
616
|
+
this.EventTypeFormMap = EventTypeFormMap;
|
|
617
|
+
this.ExclusiveTagForms = (ExclusiveTagForms | 0);
|
|
618
|
+
this.InstrumentTotal = (InstrumentTotal | 0);
|
|
619
|
+
this.InstrumentCurrent = (InstrumentCurrent | 0);
|
|
620
|
+
this.InstrumentArchived = (InstrumentArchived | 0);
|
|
621
|
+
this.InstrumentByType = InstrumentByType;
|
|
622
|
+
this.InstrumentBySource = InstrumentBySource;
|
|
623
|
+
this.InstrumentDetails = InstrumentDetails;
|
|
624
|
+
this.InstrumentTypeDetails = InstrumentTypeDetails;
|
|
625
|
+
this.InstrumentSourceDetails = InstrumentSourceDetails;
|
|
626
|
+
this.AppVersion = AppVersion;
|
|
627
|
+
this.SchemaVersion = SchemaVersion;
|
|
628
|
+
this.SchemaRevision = (SchemaRevision | 0);
|
|
629
|
+
this.WithCodes = (WithCodes | 0);
|
|
630
|
+
this.WithSyntheticCodes = (WithSyntheticCodes | 0);
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
export function ManifestStats_$reflection(): TypeInfo {
|
|
635
|
+
return record_type("FormSpec.Integrations.CorEMR.CoreMRImporterAnalysis.ManifestStats", [], ManifestStats, () => [["TotalForms", int32_type], ["TotalFields", int32_type], ["TotalTriggers", int32_type], ["FormsWithTriggers", int32_type], ["FormsWithScoring", int32_type], ["FormsWithSignature", int32_type], ["FormsIntake", int32_type], ["EncMedical", int32_type], ["EncMental", int32_type], ["EncDental", int32_type], ["EncOther", int32_type], ["EncounterFormMap", class_type("Microsoft.FSharp.Collections.FSharpMap`2", [string_type, list_type(FormDetail_$reflection())])], ["PropertyFormMap", class_type("Microsoft.FSharp.Collections.FSharpMap`2", [string_type, list_type(FormDetail_$reflection())])], ["TopFormsByTriggers", list_type(TriggerFormStat_$reflection())], ["ActionTypeBreakdown", list_type(tuple_type(string_type, int32_type))], ["ActionTypeFormMap", class_type("Microsoft.FSharp.Collections.FSharpMap`2", [string_type, list_type(ActionFormDetail_$reflection())])], ["EventTypeBreakdown", list_type(tuple_type(string_type, int32_type))], ["EventTypeFormMap", class_type("Microsoft.FSharp.Collections.FSharpMap`2", [string_type, list_type(FormDetail_$reflection())])], ["ExclusiveTagForms", int32_type], ["InstrumentTotal", int32_type], ["InstrumentCurrent", int32_type], ["InstrumentArchived", int32_type], ["InstrumentByType", class_type("Microsoft.FSharp.Collections.FSharpMap`2", [string_type, int32_type])], ["InstrumentBySource", class_type("Microsoft.FSharp.Collections.FSharpMap`2", [string_type, int32_type])], ["InstrumentDetails", list_type(InstrumentDetail_$reflection())], ["InstrumentTypeDetails", class_type("Microsoft.FSharp.Collections.FSharpMap`2", [string_type, list_type(InstrumentDetail_$reflection())])], ["InstrumentSourceDetails", class_type("Microsoft.FSharp.Collections.FSharpMap`2", [string_type, list_type(InstrumentDetail_$reflection())])], ["AppVersion", string_type], ["SchemaVersion", string_type], ["SchemaRevision", int32_type], ["WithCodes", int32_type], ["WithSyntheticCodes", int32_type]]);
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
export function computeStats(m: LandingSource): ManifestStats {
|
|
639
|
+
let matchValue: ReleaseAvailability$1_$union<ScoringCatalog>;
|
|
640
|
+
const forms: FSharpList<TemplateForm> = map<[string, TemplateForm], TemplateForm>((tuple: [string, TemplateForm]): TemplateForm => tuple[1], toList<string, TemplateForm>(m.Forms));
|
|
641
|
+
const toDetail = (f: TemplateForm): FormDetail => (new FormDetail(f.FormId, f.FormCode, f.Name));
|
|
642
|
+
const allItems: FSharpList<TemplateItem> = collect<TemplateForm, TemplateItem>((f_1: TemplateForm): FSharpList<TemplateItem> => f_1.Items, forms);
|
|
643
|
+
const allTriggers: FSharpList<ItemTrigger> = collect<TemplateItem, ItemTrigger>((i: TemplateItem): FSharpList<ItemTrigger> => ReleaseAvailability_readList<ItemTrigger>(i.Triggers), allItems);
|
|
644
|
+
const formsWithTriggerCounts: FSharpList<TriggerFormStat> = sortByDescending<TriggerFormStat, int32>((f_4: TriggerFormStat): int32 => f_4.TriggerCount, filter<TriggerFormStat>((f_3: TriggerFormStat): boolean => (f_3.TriggerCount > 0), map<TemplateForm, TriggerFormStat>((f_2: TemplateForm): TriggerFormStat => (new TriggerFormStat(f_2.FormId, f_2.FormCode, f_2.Name, sumBy<TemplateItem, int32>((i_1: TemplateItem): int32 => length(ReleaseAvailability_readList<ItemTrigger>(i_1.Triggers)), f_2.Items, {
|
|
645
|
+
GetZero: (): int32 => 0,
|
|
646
|
+
Add: (x: int32, y: int32): int32 => (x + y),
|
|
647
|
+
}))), forms)), {
|
|
648
|
+
Compare: comparePrimitives,
|
|
649
|
+
});
|
|
650
|
+
const actionBreakdown: FSharpList<[string, int32]> = sortByDescending<[string, int32], int32>((tuple_1: [string, int32]): int32 => tuple_1[1], List_countBy<string, string>((x_2: string): string => x_2, map<TriggerAction, string>((a: TriggerAction): string => a.ActionType, collect<ItemTrigger, TriggerAction>((t: ItemTrigger): FSharpList<TriggerAction> => t.Actions, allTriggers)), {
|
|
651
|
+
Equals: (x_3: string, y_2: string): boolean => (x_3 === y_2),
|
|
652
|
+
GetHashCode: stringHash,
|
|
653
|
+
}), {
|
|
654
|
+
Compare: comparePrimitives,
|
|
655
|
+
});
|
|
656
|
+
const actionTypeFormMap: FSharpMap<string, FSharpList<ActionFormDetail>> = ofList<string, FSharpList<ActionFormDetail>>(map<[string, FSharpList<[string, int32, string, string]>], [string, FSharpList<ActionFormDetail>]>((tupledArg_1: [string, FSharpList<[string, int32, string, string]>]): [string, FSharpList<ActionFormDetail>] => ([tupledArg_1[0], sortByDescending<ActionFormDetail, int32>((d: ActionFormDetail): int32 => d.Count, map<[[int32, string, string], int32], ActionFormDetail>((tupledArg_3: [[int32, string, string], int32]): ActionFormDetail => {
|
|
657
|
+
const _arg_4: [int32, string, string] = tupledArg_3[0];
|
|
658
|
+
return new ActionFormDetail(_arg_4[0], _arg_4[1], _arg_4[2], tupledArg_3[1]);
|
|
659
|
+
}, List_countBy<[int32, string, string], [int32, string, string]>((x_6: [int32, string, string]): [int32, string, string] => x_6, map<[string, int32, string, string], [int32, string, string]>((tupledArg_2: [string, int32, string, string]): [int32, string, string] => ([tupledArg_2[1], tupledArg_2[2], tupledArg_2[3]] as [int32, string, string]), tupledArg_1[1]), {
|
|
660
|
+
Equals: equalArrays,
|
|
661
|
+
GetHashCode: arrayHash,
|
|
662
|
+
})), {
|
|
663
|
+
Compare: comparePrimitives,
|
|
664
|
+
})] as [string, FSharpList<ActionFormDetail>]), List_groupBy<[string, int32, string, string], string>((tupledArg: [string, int32, string, string]): string => tupledArg[0], collect<TemplateForm, [string, int32, string, string]>((f_5: TemplateForm): FSharpList<[string, int32, string, string]> => collect<TemplateItem, [string, int32, string, string]>((i_2: TemplateItem): FSharpList<[string, int32, string, string]> => collect<ItemTrigger, [string, int32, string, string]>((t_1: ItemTrigger): FSharpList<[string, int32, string, string]> => map<TriggerAction, [string, int32, string, string]>((a_1: TriggerAction): [string, int32, string, string] => ([a_1.ActionType, f_5.FormId, f_5.FormCode, f_5.Name] as [string, int32, string, string]), t_1.Actions), ReleaseAvailability_readList<ItemTrigger>(i_2.Triggers)), f_5.Items), forms), {
|
|
665
|
+
Equals: (x_5: string, y_4: string): boolean => (x_5 === y_4),
|
|
666
|
+
GetHashCode: stringHash,
|
|
667
|
+
})), {
|
|
668
|
+
Compare: comparePrimitives,
|
|
669
|
+
});
|
|
670
|
+
const eventBreakdown: FSharpList<[string, int32]> = sortByDescending<[string, int32], int32>((tuple_2: [string, int32]): int32 => tuple_2[1], List_countBy<string, string>((x_10: string): string => x_10, map<ItemTrigger, string>((t_2: ItemTrigger): string => t_2.EventName, allTriggers), {
|
|
671
|
+
Equals: (x_11: string, y_8: string): boolean => (x_11 === y_8),
|
|
672
|
+
GetHashCode: stringHash,
|
|
673
|
+
}), {
|
|
674
|
+
Compare: comparePrimitives,
|
|
675
|
+
});
|
|
676
|
+
const eventTypeFormMap: FSharpMap<string, FSharpList<FormDetail>> = ofList<string, FSharpList<FormDetail>>(map<[string, FSharpList<[string, TemplateForm]>], [string, FSharpList<FormDetail>]>((tupledArg_4: [string, FSharpList<[string, TemplateForm]>]): [string, FSharpList<FormDetail>] => ([tupledArg_4[0], sortBy<FormDetail, string>((d_1: FormDetail): string => d_1.FormName, map<TemplateForm, FormDetail>(toDetail, List_distinctBy<TemplateForm, int32>((f_7: TemplateForm): int32 => f_7.FormId, map<[string, TemplateForm], TemplateForm>((tuple_4: [string, TemplateForm]): TemplateForm => tuple_4[1], tupledArg_4[1]), {
|
|
677
|
+
Equals: (x_14: int32, y_11: int32): boolean => (x_14 === y_11),
|
|
678
|
+
GetHashCode: numberHash,
|
|
679
|
+
})), {
|
|
680
|
+
Compare: comparePrimitives,
|
|
681
|
+
})] as [string, FSharpList<FormDetail>]), List_groupBy<[string, TemplateForm], string>((tuple_3: [string, TemplateForm]): string => tuple_3[0], collect<TemplateForm, [string, TemplateForm]>((f_6: TemplateForm): FSharpList<[string, TemplateForm]> => collect<TemplateItem, [string, TemplateForm]>((i_3: TemplateItem): FSharpList<[string, TemplateForm]> => map<ItemTrigger, [string, TemplateForm]>((t_3: ItemTrigger): [string, TemplateForm] => ([t_3.EventName, f_6] as [string, TemplateForm]), ReleaseAvailability_readList<ItemTrigger>(i_3.Triggers)), f_6.Items), forms), {
|
|
682
|
+
Equals: (x_13: string, y_10: string): boolean => (x_13 === y_10),
|
|
683
|
+
GetHashCode: stringHash,
|
|
684
|
+
})), {
|
|
685
|
+
Compare: comparePrimitives,
|
|
686
|
+
});
|
|
687
|
+
const exclusiveTagForms: int32 = length<TemplateForm>(filter<TemplateForm>((f_8: TemplateForm): boolean => exists<TemplateItem>((i_4: TemplateItem): boolean => exists<ItemTrigger>((t_4: ItemTrigger): boolean => (t_4.ExclusiveTag != null), ReleaseAvailability_readList<ItemTrigger>(i_4.Triggers)), f_8.Items), forms)) | 0;
|
|
688
|
+
const encounterFormMap: FSharpMap<string, FSharpList<FormDetail>> = ofList<string, FSharpList<FormDetail>>(ofArray([["Medical", map<TemplateForm, FormDetail>(toDetail, filter<TemplateForm>((f_9: TemplateForm): boolean => f_9.EncounterTypes.Medical, forms))] as [string, FSharpList<FormDetail>], ["Mental", map<TemplateForm, FormDetail>(toDetail, filter<TemplateForm>((f_10: TemplateForm): boolean => f_10.EncounterTypes.Mental, forms))] as [string, FSharpList<FormDetail>], ["Dental", map<TemplateForm, FormDetail>(toDetail, filter<TemplateForm>((f_11: TemplateForm): boolean => f_11.EncounterTypes.Dental, forms))] as [string, FSharpList<FormDetail>], ["Other", map<TemplateForm, FormDetail>(toDetail, filter<TemplateForm>((f_12: TemplateForm): boolean => ReleaseAvailability_statedTrue(f_12.EncounterTypes.Other), forms))] as [string, FSharpList<FormDetail>]]), {
|
|
689
|
+
Compare: comparePrimitives,
|
|
690
|
+
});
|
|
691
|
+
const formsWithTriggerDetails: FSharpList<FormDetail> = map<TemplateForm, FormDetail>(toDetail, filter<TemplateForm>((f_13: TemplateForm): boolean => exists<TemplateItem>((i_5: TemplateItem): boolean => !isEmpty(ReleaseAvailability_readList<ItemTrigger>(i_5.Triggers)), f_13.Items), forms));
|
|
692
|
+
const propertyFormMap: FSharpMap<string, FSharpList<FormDetail>> = ofList<string, FSharpList<FormDetail>>(ofArray([["WithCodes", map<TemplateForm, FormDetail>(toDetail, filter<TemplateForm>((f_14: TemplateForm): boolean => (f_14.FormCodeSource !== "generated"), forms))] as [string, FSharpList<FormDetail>], ["WithTriggers", formsWithTriggerDetails] as [string, FSharpList<FormDetail>], ["WithScoring", map<TemplateForm, FormDetail>(toDetail, filter<TemplateForm>((f_15: TemplateForm): boolean => (f_15.Scoring != null), forms))] as [string, FSharpList<FormDetail>], ["Intake", map<TemplateForm, FormDetail>(toDetail, filter<TemplateForm>((f_16: TemplateForm): boolean => f_16.IsIntake, forms))] as [string, FSharpList<FormDetail>], ["RequireSignature", map<TemplateForm, FormDetail>(toDetail, filter<TemplateForm>((f_17: TemplateForm): boolean => f_17.RequiresSignature, forms))] as [string, FSharpList<FormDetail>]]), {
|
|
693
|
+
Compare: comparePrimitives,
|
|
694
|
+
});
|
|
695
|
+
const formsByCode: any = new Map<string, TemplateForm>(map<TemplateForm, [string, TemplateForm]>((f_18: TemplateForm): [string, TemplateForm] => ([f_18.FormCode, f_18] as [string, TemplateForm]), forms));
|
|
696
|
+
let allInstrumentDetails: FSharpList<InstrumentDetail>;
|
|
697
|
+
try {
|
|
698
|
+
allInstrumentDetails = choose<InstrumentMapEntry, InstrumentDetail>((e: InstrumentMapEntry): Option<InstrumentDetail> => {
|
|
699
|
+
let matchValue_1: [boolean, TemplateForm];
|
|
700
|
+
let outArg: TemplateForm = defaultOf();
|
|
701
|
+
matchValue_1 = ([tryGetValue(formsByCode, e.FormCode, new FSharpRef<TemplateForm>((): TemplateForm => outArg, (v: TemplateForm): void => {
|
|
702
|
+
outArg = v;
|
|
703
|
+
})), outArg] as [boolean, TemplateForm]);
|
|
704
|
+
if (matchValue_1[0]) {
|
|
705
|
+
return new InstrumentDetail(matchValue_1[1].FormId, e.FormCode, e.FormName, e.InstrumentType, e.MaxScore, e.Source, e.Archived);
|
|
706
|
+
}
|
|
707
|
+
else {
|
|
708
|
+
return undefined;
|
|
709
|
+
}
|
|
710
|
+
}, map<[string, InstrumentMapEntry], InstrumentMapEntry>((tuple_5: [string, InstrumentMapEntry]): InstrumentMapEntry => tuple_5[1], toList<string, InstrumentMapEntry>((matchValue = m.Scoring, (matchValue.tag === /* NotInRelease */ 1) ? empty_1<string, InstrumentMapEntry>({
|
|
711
|
+
Compare: comparePrimitives,
|
|
712
|
+
}) : ((matchValue.tag === /* NotReadYet */ 2) ? empty_1<string, InstrumentMapEntry>({
|
|
713
|
+
Compare: comparePrimitives,
|
|
714
|
+
}) : matchValue.fields[0].InstrumentMap)))));
|
|
715
|
+
}
|
|
716
|
+
catch (matchValue_2: any) {
|
|
717
|
+
allInstrumentDetails = empty<InstrumentDetail>();
|
|
718
|
+
}
|
|
719
|
+
const instrumentTypeDetails: FSharpMap<string, FSharpList<InstrumentDetail>> = ofList<string, FSharpList<InstrumentDetail>>(List_groupBy<InstrumentDetail, string>((d_2: InstrumentDetail): string => d_2.InstrumentType, allInstrumentDetails, {
|
|
720
|
+
Equals: (x_20: string, y_17: string): boolean => (x_20 === y_17),
|
|
721
|
+
GetHashCode: stringHash,
|
|
722
|
+
}), {
|
|
723
|
+
Compare: comparePrimitives,
|
|
724
|
+
});
|
|
725
|
+
const instrumentSourceDetails: FSharpMap<string, FSharpList<InstrumentDetail>> = ofList<string, FSharpList<InstrumentDetail>>(List_groupBy<InstrumentDetail, string>((d_3: InstrumentDetail): string => d_3.Source, allInstrumentDetails, {
|
|
726
|
+
Equals: (x_22: string, y_19: string): boolean => (x_22 === y_19),
|
|
727
|
+
GetHashCode: stringHash,
|
|
728
|
+
}), {
|
|
729
|
+
Compare: comparePrimitives,
|
|
730
|
+
});
|
|
731
|
+
return new ManifestStats(length(forms), length(allItems), length(allTriggers), length(formsWithTriggerCounts), length<TemplateForm>(filter<TemplateForm>((f_20: TemplateForm): boolean => (f_20.Scoring != null), forms)), length<TemplateForm>(filter<TemplateForm>((f_21: TemplateForm): boolean => f_21.RequiresSignature, forms)), length<TemplateForm>(filter<TemplateForm>((f_22: TemplateForm): boolean => f_22.IsIntake, forms)), length<TemplateForm>(filter<TemplateForm>((f_23: TemplateForm): boolean => f_23.EncounterTypes.Medical, forms)), length<TemplateForm>(filter<TemplateForm>((f_24: TemplateForm): boolean => f_24.EncounterTypes.Mental, forms)), length<TemplateForm>(filter<TemplateForm>((f_25: TemplateForm): boolean => f_25.EncounterTypes.Dental, forms)), length<TemplateForm>(filter<TemplateForm>((f_26: TemplateForm): boolean => ReleaseAvailability_statedTrue(f_26.EncounterTypes.Other), forms)), encounterFormMap, propertyFormMap, truncate<TriggerFormStat>(15, formsWithTriggerCounts), actionBreakdown, actionTypeFormMap, eventBreakdown, eventTypeFormMap, exclusiveTagForms, length(allInstrumentDetails), length<InstrumentDetail>(filter<InstrumentDetail>((d_4: InstrumentDetail): boolean => !d_4.Archived, allInstrumentDetails)), length<InstrumentDetail>(filter<InstrumentDetail>((d_5: InstrumentDetail): boolean => d_5.Archived, allInstrumentDetails)), ofList<string, int32>(List_countBy<InstrumentDetail, string>((d_6: InstrumentDetail): string => d_6.InstrumentType, allInstrumentDetails, {
|
|
732
|
+
Equals: (x_24: string, y_21: string): boolean => (x_24 === y_21),
|
|
733
|
+
GetHashCode: stringHash,
|
|
734
|
+
}), {
|
|
735
|
+
Compare: comparePrimitives,
|
|
736
|
+
}), ofList<string, int32>(List_countBy<InstrumentDetail, string>((d_7: InstrumentDetail): string => d_7.Source, allInstrumentDetails, {
|
|
737
|
+
Equals: (x_26: string, y_23: string): boolean => (x_26 === y_23),
|
|
738
|
+
GetHashCode: stringHash,
|
|
739
|
+
}), {
|
|
740
|
+
Compare: comparePrimitives,
|
|
741
|
+
}), allInstrumentDetails, instrumentTypeDetails, instrumentSourceDetails, m.CoreEmr.AppVersion, m.CoreEmr.SchemaVersion, m.CoreEmr.SchemaRevision, m.Stats.WithCodes, m.Stats.WithSyntheticCodes);
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
export function toManifest(m: LandingSource): Manifest {
|
|
745
|
+
let matchValue: ReleaseAvailability$1_$union<ScoringCatalog>, matchValue_1: ReleaseAvailability$1_$union<ScoringCatalog>, matchValue_2: ReleaseAvailability$1_$union<ScoringCatalog>, matchValue_3: ReleaseAvailability$1_$union<ScoringCatalog>, matchValue_4: ReleaseAvailability$1_$union<ScoringCatalog>, matchValue_5: ReleaseAvailability$1_$union<TriggerStats>;
|
|
746
|
+
return new Manifest(m.GeneratedFrom, m.GeneratedAt, int32ToString(m.Version), m.CoreEmr.AppVersion, m.CoreEmr.SchemaVersion, int32ToString(m.CoreEmr.SchemaRevision), m.Stats.TotalForms, m.Stats.WithCodes, (matchValue = m.Scoring, (matchValue.tag === /* Stated */ 0) ? matchValue.fields[0].FormsWithScoring : 0), (matchValue_1 = m.Scoring, (matchValue_1.tag === /* Stated */ 0) ? matchValue_1.fields[0].InstrumentMapStats.Total : 0), (matchValue_2 = m.Scoring, (matchValue_2.tag === /* Stated */ 0) ? matchValue_2.fields[0].InstrumentMapStats.Current : 0), (matchValue_3 = m.Scoring, (matchValue_3.tag === /* Stated */ 0) ? matchValue_3.fields[0].InstrumentMapStats.Archived : 0), (matchValue_4 = m.Scoring, (matchValue_4.tag === /* Stated */ 0) ? undefined : ReleaseAvailability_describe<ScoringCatalog>(matchValue_4)), (matchValue_5 = m.Triggers, (matchValue_5.tag === /* Stated */ 0) ? undefined : ReleaseAvailability_describe<TriggerStats>(matchValue_5)));
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
/**
|
|
750
|
+
* ⭐ THE INSTRUMENT CATALOG THIS SITE'S RELEASE STATES — empty where it states none.
|
|
751
|
+
* ⚠️ An empty map here means NOTHING WAS READ, ⛔ never "this site runs no instruments";
|
|
752
|
+
* `Manifest.ScoringFrom` carries conduit's reason and must be shown wherever these counts are.
|
|
753
|
+
*/
|
|
754
|
+
export function toTemplateListFromMappings(m: LandingSource, mappings: FSharpMap<string, FSharpResult$2_$union<TemplateMapping, FSharpList<string>>>): FSharpList<TemplateListItem> {
|
|
755
|
+
return map<[string, TemplateForm], TemplateListItem>((tupledArg_1: [string, TemplateForm]): TemplateListItem => {
|
|
756
|
+
const form: TemplateForm = tupledArg_1[1];
|
|
757
|
+
const mappingResult: Option<FSharpResult$2_$union<TemplateMapping, FSharpList<string>>> = tryFind<string, FSharpResult$2_$union<TemplateMapping, FSharpList<string>>>(tupledArg_1[0], mappings);
|
|
758
|
+
let matchResult: int32, mapping: TemplateMapping;
|
|
759
|
+
if (mappingResult != null) {
|
|
760
|
+
const copyOfStruct: FSharpResult$2_$union<TemplateMapping, FSharpList<string>> = value_3(mappingResult);
|
|
761
|
+
if (copyOfStruct.tag === /* Ok */ 0) {
|
|
762
|
+
matchResult = 0;
|
|
763
|
+
mapping = copyOfStruct.fields[0];
|
|
764
|
+
}
|
|
765
|
+
else {
|
|
766
|
+
matchResult = 1;
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
else {
|
|
770
|
+
matchResult = 1;
|
|
771
|
+
}
|
|
772
|
+
switch (matchResult) {
|
|
773
|
+
case 0: {
|
|
774
|
+
const issueCount: int32 = length<FieldMapping>(filter<FieldMapping>((f_1: FieldMapping): boolean => equals(f_1.Status, FieldMappingStatus_Unsupported()), collect<StepMapping, FieldMapping>((s: StepMapping): FSharpList<FieldMapping> => s.Fields, mapping!.Steps))) | 0;
|
|
775
|
+
return new TemplateListItem(int32ToString(form.FormId), form.FormCode, form.Name, form.Usage, mapping!.TotalFields, mapping!.TriggerCount, mapping!.IsScored, mapping!.BlueprintCodeAvailable, mapping!.InstrumentMapping > 0, mapping!.IsIntake, mapping!.EncounterTypes, issueCount, map_1<InstrumentMapEntry, string>((e_1: InstrumentMapEntry): string => e_1.InstrumentType, tryFind_1<InstrumentMapEntry>((e: InstrumentMapEntry): boolean => {
|
|
776
|
+
if (compare(e.FormCode, form.FormCode, 5) === 0) {
|
|
777
|
+
return !e.Archived;
|
|
778
|
+
}
|
|
779
|
+
else {
|
|
780
|
+
return false;
|
|
781
|
+
}
|
|
782
|
+
}, map<[string, InstrumentMapEntry], InstrumentMapEntry>((tuple: [string, InstrumentMapEntry]): InstrumentMapEntry => tuple[1], toList<string, InstrumentMapEntry>(instrumentsOf(m))))), undefined);
|
|
783
|
+
}
|
|
784
|
+
default: {
|
|
785
|
+
const triggerCount: int32 = sumBy<TemplateItem, int32>((i: TemplateItem): int32 => length(ReleaseAvailability_readList<ItemTrigger>(i.Triggers)), form.Items, {
|
|
786
|
+
GetZero: (): int32 => 0,
|
|
787
|
+
Add: (x_1: int32, y_1: int32): int32 => (x_1 + y_1),
|
|
788
|
+
}) | 0;
|
|
789
|
+
return new TemplateListItem(int32ToString(form.FormId), form.FormCode, form.Name, form.Usage, length(form.Items), triggerCount, form.Scoring != null, (form.FormCode.length > 0) && !(form.FormCode.indexOf("#") >= 0), false, form.IsIntake, empty<string>(), 0, undefined, undefined);
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
}, sortBy<[string, TemplateForm], string>((tupledArg: [string, TemplateForm]): string => tupledArg[1].Name.toLowerCase(), toList<string, TemplateForm>(m.Forms), {
|
|
793
|
+
Compare: comparePrimitives,
|
|
794
|
+
}));
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
function describeActionInfo(ai: ClinicalPathway_ActionInfo_$union): string {
|
|
798
|
+
switch (ai.tag) {
|
|
799
|
+
case /* Alert */ 9:
|
|
800
|
+
return `Alert: ${ai.fields[0].Category}`;
|
|
801
|
+
case /* Task */ 8:
|
|
802
|
+
return `Task: ${ai.fields[0].Category}`;
|
|
803
|
+
case /* Medication */ 0:
|
|
804
|
+
return `Medication: ${ai.fields[0].Name}`;
|
|
805
|
+
case /* Treatment */ 1:
|
|
806
|
+
return `Treatment: ${defaultArg<string>(ai.fields[0].Name, "")}`;
|
|
807
|
+
case /* Medset */ 2:
|
|
808
|
+
return `Medset: ${ai.fields[0].Name}`;
|
|
809
|
+
case /* Problem */ 10:
|
|
810
|
+
return `Problem: ${defaultArg<string>(ai.fields[0].ProblemName, "")}`;
|
|
811
|
+
case /* Documentation */ 7:
|
|
812
|
+
return `Doc: ${ai.fields[0].Purpose}`;
|
|
813
|
+
case /* Prescription */ 11:
|
|
814
|
+
return `Rx: ${ai.fields[0].Medication}`;
|
|
815
|
+
case /* ChangeGroups */ 14:
|
|
816
|
+
return `Groups: ${length(ai.fields[0].Groups)}`;
|
|
817
|
+
default:
|
|
818
|
+
return "Action";
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
function describeCondition(tc: ClinicalPathway_TransitionCondition_$union): string {
|
|
823
|
+
switch (tc.tag) {
|
|
824
|
+
case /* FieldCondition */ 0: {
|
|
825
|
+
const evaluator: ClinicalPathway_FieldEvaluator_$union = tc.fields[1];
|
|
826
|
+
const condValue: Shared_ConditionValue_$union = tc.fields[2];
|
|
827
|
+
return `field ${(evaluator.tag === /* InSet */ 2) ? (`in [${join(", ", evaluator.fields[0])}]`) : ((evaluator.tag === /* Equals */ 0) ? "equals" : ((evaluator.tag === /* NotEquals */ 1) ? "not equals" : ((evaluator.tag === /* GreaterOrEqual */ 6) ? ">=" : ((evaluator.tag === /* GreaterThan */ 5) ? ">" : ((evaluator.tag === /* LessOrEqual */ 8) ? "<=" : ((evaluator.tag === /* LessThan */ 7) ? "<" : "?"))))))} ${(condValue.tag === /* Single */ 0) ? condValue.fields[0] : ((condValue.tag === /* Multiple */ 1) ? join(", ", toList_1<string>(condValue.fields[0])) : "...")}`;
|
|
828
|
+
}
|
|
829
|
+
case /* CompositeCondition */ 6: {
|
|
830
|
+
const op: ClinicalPathway_LogicalOp_$union = tc.fields[0];
|
|
831
|
+
const condList: FSharpList<ClinicalPathway_TransitionCondition_$union> = tc.fields[1];
|
|
832
|
+
const opStr: string = (op.tag === /* And */ 0) ? "AND" : ((op.tag === /* Or */ 1) ? "OR" : "?");
|
|
833
|
+
return `${length(condList)} conditions (${opStr})`;
|
|
834
|
+
}
|
|
835
|
+
case /* Always */ 8:
|
|
836
|
+
return "always";
|
|
837
|
+
default:
|
|
838
|
+
return "condition";
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
function toTriggerMapping(items: FSharpList<TemplateItem>, readsById: FSharpMap<int32, Trigger>, trigger: ItemTrigger, itemFieldKeyMap: FSharpMap<int32, Shared_FieldKey>): TriggerMapping {
|
|
843
|
+
const read: Trigger = find<int32, Trigger>(trigger.TriggerId, readsById);
|
|
844
|
+
const conditions: FSharpList<ConditionEquivalence> = map<[TriggerCondition, StatedCondition], ConditionEquivalence>((tupledArg: [TriggerCondition, StatedCondition]): ConditionEquivalence => {
|
|
845
|
+
const c: TriggerCondition = tupledArg[0];
|
|
846
|
+
let condText: string;
|
|
847
|
+
const matchValue: FSharpList<string> = c.Values;
|
|
848
|
+
condText = (isEmpty(matchValue) ? (`${c.Source} ${c.Operator}`) : (`${c.Source} ${c.Operator} [${join(", ", matchValue)}]`));
|
|
849
|
+
try {
|
|
850
|
+
return new ConditionEquivalence(condText, describeCondition(convertCondition(items, tupledArg[1], itemFieldKeyMap)), EquivalenceStatus_EquivEquivalent());
|
|
851
|
+
}
|
|
852
|
+
catch (matchValue_1: any) {
|
|
853
|
+
return new ConditionEquivalence(condText, "unsupported", EquivalenceStatus_EquivMissing());
|
|
854
|
+
}
|
|
855
|
+
}, zip<TriggerCondition, StatedCondition>(trigger.Conditions, read.Conditions));
|
|
856
|
+
const actions: FSharpList<ActionEquivalence> = map<TriggerAction, ActionEquivalence>((a: TriggerAction): ActionEquivalence => {
|
|
857
|
+
const name: string = defaultArg(orElse(tryFind<string, string>("category_name", a.Params), tryFind<string, string>("medset_name", a.Params)), "");
|
|
858
|
+
const actionText: string = isNullOrEmpty(name) ? a.ActionType : (`${a.ActionType}: ${name}`);
|
|
859
|
+
let patternInput: [string, EquivalenceStatus_$union];
|
|
860
|
+
const matchValue_2: ActionRead_$union = find_1<StatedAction>((r: StatedAction): boolean => (r.ActionId === a.ActionId), read.Actions).Read;
|
|
861
|
+
patternInput = ((matchValue_2.tag === /* Unmodelled */ 1) ? ([`Not modelled: ${matchValue_2.fields[1]}`, EquivalenceStatus_EquivMismatch()] as [string, EquivalenceStatus_$union]) : ([describeActionInfo(convertAction(matchValue_2.fields[0])), EquivalenceStatus_EquivEquivalent()] as [string, EquivalenceStatus_$union]));
|
|
862
|
+
return new ActionEquivalence(actionText, patternInput[0], patternInput[1]);
|
|
863
|
+
}, trigger.Actions);
|
|
864
|
+
const firstAction: Option<TriggerAction> = tryHead<TriggerAction>(trigger.Actions);
|
|
865
|
+
const allStatuses: FSharpList<EquivalenceStatus_$union> = append(map<ConditionEquivalence, EquivalenceStatus_$union>((c_1: ConditionEquivalence): EquivalenceStatus_$union => c_1.Status, conditions), map<ActionEquivalence, EquivalenceStatus_$union>((a_1: ActionEquivalence): EquivalenceStatus_$union => a_1.Status, actions));
|
|
866
|
+
const triggerStatus: TriggerStatus_$union = !trigger.Enabled ? TriggerStatus_Pending() : (exists<EquivalenceStatus_$union>((s: EquivalenceStatus_$union): boolean => equals(s, EquivalenceStatus_EquivMissing()), allStatuses) ? TriggerStatus_Failed() : (exists<EquivalenceStatus_$union>((s_1: EquivalenceStatus_$union): boolean => equals(s_1, EquivalenceStatus_EquivMismatch()), allStatuses) ? TriggerStatus_Partial() : TriggerStatus_Equivalent()));
|
|
867
|
+
return new TriggerMapping(trigger.TriggerId, trigger.EventName, length(trigger.Conditions), length(trigger.Actions), defaultArg(map_1<TriggerAction, string>((a_2: TriggerAction): string => a_2.ActionType, firstAction), "unknown"), "current", defaultArg(bind<TriggerAction, string>((a_3: TriggerAction): Option<string> => tryFind<string, string>("category_name", a_3.Params), firstAction), "action"), triggerStatus, conditions, actions);
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
function getFieldTypeName(fieldType: Spec_FieldType_$union): string {
|
|
871
|
+
return name_2(getUnionFields(fieldType, Spec_FieldType_$reflection())[0]);
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
/**
|
|
875
|
+
* SSOT: All 27 element types from CorEMRElementTypeMap
|
|
876
|
+
*/
|
|
877
|
+
export function getF1TypeDisplay(typeCode: int32): string {
|
|
878
|
+
const info: ElementTypeInfo = getElementTypeInfo(typeCode);
|
|
879
|
+
const matchValue: string = info.Code;
|
|
880
|
+
switch (matchValue) {
|
|
881
|
+
case "text":
|
|
882
|
+
return "Text";
|
|
883
|
+
case "text_multiline":
|
|
884
|
+
return "TextArea";
|
|
885
|
+
case "dropdown":
|
|
886
|
+
return "Dropdown";
|
|
887
|
+
case "dropdown_notes":
|
|
888
|
+
return "Dropdown + Notes";
|
|
889
|
+
case "dropdown_notes_ui":
|
|
890
|
+
return "Dropdown";
|
|
891
|
+
case "chips_notes":
|
|
892
|
+
return "Multi-Select + Notes";
|
|
893
|
+
case "chips_ros":
|
|
894
|
+
return "Multi-Select";
|
|
895
|
+
case "yes_no_text":
|
|
896
|
+
return "Radio";
|
|
897
|
+
case "yes_no_notes":
|
|
898
|
+
return "Radio + Notes";
|
|
899
|
+
case "exam_3choice":
|
|
900
|
+
return "Radio";
|
|
901
|
+
case "checkbox":
|
|
902
|
+
return "Checkbox";
|
|
903
|
+
case "checkbox_notes":
|
|
904
|
+
return "Checkbox + Notes";
|
|
905
|
+
case "date":
|
|
906
|
+
return "Date";
|
|
907
|
+
case "datetime":
|
|
908
|
+
return "DateTime";
|
|
909
|
+
case "signature_date":
|
|
910
|
+
return "Signature + Date";
|
|
911
|
+
case "signature":
|
|
912
|
+
return "Signature";
|
|
913
|
+
case "heading":
|
|
914
|
+
case "instructions":
|
|
915
|
+
case "group_row":
|
|
916
|
+
case "sub_header":
|
|
917
|
+
return "Message";
|
|
918
|
+
case "vitals_widget":
|
|
919
|
+
return "PluginField";
|
|
920
|
+
case "allergy_autofill":
|
|
921
|
+
return "PluginField";
|
|
922
|
+
case "linked_data":
|
|
923
|
+
case "linked_data_rare":
|
|
924
|
+
return "PluginField";
|
|
925
|
+
case "score_display":
|
|
926
|
+
case "score_explanation":
|
|
927
|
+
return "Message";
|
|
928
|
+
default:
|
|
929
|
+
return info.Label;
|
|
930
|
+
}
|
|
931
|
+
}
|
|
932
|
+
|
|
933
|
+
/**
|
|
934
|
+
* SSOT: CorEMR type label from the element type map
|
|
935
|
+
*/
|
|
936
|
+
export function getCoreEmrTypeLabel(typeCode: int32): string {
|
|
937
|
+
return `${getElementTypeInfo(typeCode).Label} (${typeCode})`;
|
|
938
|
+
}
|
|
939
|
+
|
|
940
|
+
/**
|
|
941
|
+
* Build TemplateMapping from the REAL FormSpec pipeline + SourceMap parallel zip.
|
|
942
|
+
* No reconciliation. No label matching. No order guessing.
|
|
943
|
+
* FormSpec.Steps[i].Fields[j] ↔ SourceMap.Steps[i].FieldAnchors[j] — by design.
|
|
944
|
+
*/
|
|
945
|
+
export function toTemplateMapping(origin: ImportOrigin, importedAt: Date, facts: ServedFacts, form: TemplateForm): FSharpResult$2_$union<TemplateMapping, FSharpList<string>> {
|
|
946
|
+
const instrumentMapping: float64 = defaultArg(map_1<InstrumentMapEntry, boolean>((e: InstrumentMapEntry): boolean => e.Archived, tryFind<string, InstrumentMapEntry>(int32ToString(form.FormId), facts.Instruments)), false) ? 40 : 100;
|
|
947
|
+
const hasBlueprintCode: boolean = (form.FormCode.length > 0) && !(form.FormCode.indexOf("#") >= 0);
|
|
948
|
+
const matchValue: FSharpResult$2_$union<[Spec_FormSpec$1<Spec_FieldType_$union>, CoreMRSourceMap], FSharpList<string>> = runPipeline(origin, importedAt, facts, form);
|
|
949
|
+
if (matchValue.tag === /* Ok */ 0) {
|
|
950
|
+
const sourceMap: CoreMRSourceMap = matchValue.fields[0][1];
|
|
951
|
+
const formSpec: Spec_FormSpec$1<Spec_FieldType_$union> = matchValue.fields[0][0];
|
|
952
|
+
let readsById: FSharpMap<int32, Trigger>;
|
|
953
|
+
const matchValue_1: ReleaseAvailability$1_$union<FSharpList<Trigger>> = facts.Triggers;
|
|
954
|
+
switch (matchValue_1.tag) {
|
|
955
|
+
case /* NotInRelease */ 1:
|
|
956
|
+
case /* NotReadYet */ 2: {
|
|
957
|
+
readsById = empty_1<int32, Trigger>({
|
|
958
|
+
Compare: comparePrimitives,
|
|
959
|
+
});
|
|
960
|
+
break;
|
|
961
|
+
}
|
|
962
|
+
default:
|
|
963
|
+
readsById = ofList<int32, Trigger>(map<Trigger, [int32, Trigger]>((t: Trigger): [int32, Trigger] => ([t.TriggerId, t] as [int32, Trigger]), matchValue_1.fields[0]), {
|
|
964
|
+
Compare: comparePrimitives,
|
|
965
|
+
});
|
|
966
|
+
}
|
|
967
|
+
const fieldKeyMap: FSharpMap<int32, Shared_FieldKey> = ofList<int32, Shared_FieldKey>(map<CoreMRFieldAnchor, [int32, Shared_FieldKey]>((anchor: CoreMRFieldAnchor): [int32, Shared_FieldKey] => ([anchor.ItemId, anchor.FieldKey] as [int32, Shared_FieldKey]), collect<CoreMRStepMap, CoreMRFieldAnchor>((step: CoreMRStepMap): FSharpList<CoreMRFieldAnchor> => step.FieldAnchors, sourceMap.Steps)), {
|
|
968
|
+
Compare: comparePrimitives,
|
|
969
|
+
});
|
|
970
|
+
const finalSteps: FSharpList<StepMapping> = map2<Spec_FormStep$1<Spec_FieldType_$union>, CoreMRStepMap, StepMapping>((fStep: Spec_FormStep$1<Spec_FieldType_$union>, sStep: CoreMRStepMap): StepMapping => (new StepMapping(fStep.StepOrder, fStep.StepLabel, map2<Spec_FormField$1<Spec_FieldType_$union>, CoreMRFieldAnchor, FieldMapping>((field: Spec_FormField$1<Spec_FieldType_$union>, anchor_1: CoreMRFieldAnchor): FieldMapping => {
|
|
971
|
+
const fieldTypeName: string = getFieldTypeName(field.FieldType);
|
|
972
|
+
const itemTriggers: FSharpList<TriggerMapping> = map<ItemTrigger, TriggerMapping>((t_1: ItemTrigger): TriggerMapping => toTriggerMapping(form.Items, readsById, t_1, fieldKeyMap), anchor_1.Triggers);
|
|
973
|
+
return new FieldMapping(`f-${anchor_1.ItemId}`, anchor_1.ItemId, field.FieldOrder, field.Label, fieldTypeName, anchor_1.ItemTypeId, getCoreEmrTypeLabel(anchor_1.ItemTypeId), isEmpty(anchor_1.Choices) ? "-" : join(", ", map<CoreMRChoiceAnchor, string>((c_1: CoreMRChoiceAnchor): string => int64ToString(c_1.Score), sortBy<CoreMRChoiceAnchor, int32>((c: CoreMRChoiceAnchor): int32 => c.Sequence, anchor_1.Choices, {
|
|
974
|
+
Compare: comparePrimitives,
|
|
975
|
+
}))), anchor_1.Code, !field.IsOptional, length(anchor_1.Choices), isEmpty(anchor_1.Choices) ? "-" : (`${length(anchor_1.Choices)} scored`), `Item ${anchor_1.ItemId} / SSOT`, (field.FieldType.tag === /* UnsupportedField */ 22) ? FieldMappingStatus_Unsupported() : FieldMappingStatus_Mapped(), itemTriggers);
|
|
976
|
+
}, fStep.Fields, sStep.FieldAnchors))), formSpec.Steps, sourceMap.Steps);
|
|
977
|
+
const allFields: FSharpList<FieldMapping> = collect<StepMapping, FieldMapping>((s: StepMapping): FSharpList<FieldMapping> => s.Fields, finalSteps);
|
|
978
|
+
const totalFields: int32 = length(allFields) | 0;
|
|
979
|
+
const codedFieldCount: int32 = length<FieldMapping>(filter<FieldMapping>((f: FieldMapping): boolean => (f.Code != null), allFields)) | 0;
|
|
980
|
+
const requiredFieldCount: int32 = length<FieldMapping>(filter<FieldMapping>((f_1: FieldMapping): boolean => f_1.Required, allFields)) | 0;
|
|
981
|
+
const choiceFields: int32 = length<FieldMapping>(filter<FieldMapping>((f_2: FieldMapping): boolean => (f_2.Options > 0), allFields)) | 0;
|
|
982
|
+
const bitmaskFields: int32 = length<FieldMapping>(filter<FieldMapping>((f_3: FieldMapping): boolean => {
|
|
983
|
+
if (((f_3.CoreEmrType === 26) ? true : (f_3.CoreEmrType === 40)) ? true : (f_3.CoreEmrType === 41)) {
|
|
984
|
+
return true;
|
|
985
|
+
}
|
|
986
|
+
else {
|
|
987
|
+
return f_3.CoreEmrType === 143;
|
|
988
|
+
}
|
|
989
|
+
}, allFields)) | 0;
|
|
990
|
+
const bitmaskCoverage: float64 = (choiceFields > 0) ? ((bitmaskFields / choiceFields) * 100) : 0;
|
|
991
|
+
const triggeredFields: FSharpList<FieldMapping> = filter<FieldMapping>((f_4: FieldMapping): boolean => !isEmpty(f_4.Triggers), allFields);
|
|
992
|
+
const triggerCount: int32 = sumBy<FieldMapping, int32>((f_5: FieldMapping): int32 => length(f_5.Triggers), allFields, {
|
|
993
|
+
GetZero: (): int32 => 0,
|
|
994
|
+
Add: (x_4: int32, y_4: int32): int32 => (x_4 + y_4),
|
|
995
|
+
}) | 0;
|
|
996
|
+
const triggeredFieldCount: int32 = length(triggeredFields) | 0;
|
|
997
|
+
const triggerActionBreakdown: FSharpMap<string, int32> = ofList<string, int32>(List_countBy<string, string>((x_5: string): string => x_5, map<ActionEquivalence, string>((a: ActionEquivalence): string => item(0, split(a.CoreEmrAction, [":"], undefined, 0)).trim(), collect<TriggerMapping, ActionEquivalence>((t_2: TriggerMapping): FSharpList<ActionEquivalence> => t_2.Actions, collect<FieldMapping, TriggerMapping>((f_6: FieldMapping): FSharpList<TriggerMapping> => f_6.Triggers, allFields))), {
|
|
998
|
+
Equals: (x_6: string, y_5: string): boolean => (x_6 === y_5),
|
|
999
|
+
GetHashCode: stringHash,
|
|
1000
|
+
}), {
|
|
1001
|
+
Compare: comparePrimitives,
|
|
1002
|
+
});
|
|
1003
|
+
const mappedCount: int32 = length<FieldMapping>(filter<FieldMapping>((f_7: FieldMapping): boolean => equals(f_7.Status, FieldMappingStatus_Mapped()), allFields)) | 0;
|
|
1004
|
+
const unsupportedCount: int32 = length<FieldMapping>(filter<FieldMapping>((f_8: FieldMapping): boolean => equals(f_8.Status, FieldMappingStatus_Unsupported()), allFields)) | 0;
|
|
1005
|
+
const instrumentSignal: float64 = instrumentMapping;
|
|
1006
|
+
const pipelineReadiness: float64 = min(100, max(0, (((((totalFields > 0) ? ((mappedCount / totalFields) * 100) : 0) * 0.4) + (((triggerCount > 0) ? 100 : 100) * 0.25)) + ((hasBlueprintCode ? 100 : 0) * 0.2)) + (instrumentSignal * 0.15)));
|
|
1007
|
+
const pipelineStatus: TemplateStatus_$union = (pipelineReadiness >= 75) ? TemplateStatus_Ready() : ((pipelineReadiness >= 50) ? TemplateStatus_Issues() : ((pipelineReadiness >= 25) ? TemplateStatus_Drift() : TemplateStatus_Blocked()));
|
|
1008
|
+
const codeCoverage: float64 = (totalFields > 0) ? ((codedFieldCount / totalFields) * 100) : 0;
|
|
1009
|
+
const requiredDensity: float64 = (totalFields > 0) ? ((requiredFieldCount / totalFields) * 100) : 0;
|
|
1010
|
+
const encounterTypes: FSharpList<string> = toList_2<string>(delay<string>((): Iterable<string> => append_1<string>(form.EncounterTypes.Medical ? singleton<string>("medical") : empty_2<string>(), delay<string>((): Iterable<string> => append_1<string>(form.EncounterTypes.Mental ? singleton<string>("mental") : empty_2<string>(), delay<string>((): Iterable<string> => append_1<string>(form.EncounterTypes.Dental ? singleton<string>("dental") : empty_2<string>(), delay<string>((): Iterable<string> => (ReleaseAvailability_statedTrue(form.EncounterTypes.Other) ? singleton<string>("other") : empty_2<string>())))))))));
|
|
1011
|
+
return ok<TemplateMapping, FSharpList<string>>(new TemplateMapping(int32ToString(form.FormId), form.FormCode, form.Name, formSpec.Id, defaultArg(formSpec.Code, form.FormCode), formSpec.Title, form.Usage, round(pipelineReadiness, 0), pipelineStatus, totalFields, choiceFields, bitmaskFields, round(bitmaskCoverage, 0), round(codeCoverage, 0), codedFieldCount, round(requiredDensity, 0), requiredFieldCount, (form.Scoring != null) ? 100 : 0, round(instrumentSignal, 0), hasBlueprintCode, triggerCount, triggeredFieldCount, triggerActionBreakdown, form.IsIntake, form.Scoring != null, encounterTypes, form.Usage, form.RequiresSignature, form.StructureHash, formSpec, toString(2, Auto_generateBoxedEncoder_437914C6(Spec_FormSpec$1_$reflection(Spec_FieldType_$reflection()), undefined, undefined, undefined)(formSpec)), finalSteps));
|
|
1012
|
+
}
|
|
1013
|
+
else {
|
|
1014
|
+
return FSharpResult$2_Error<TemplateMapping, FSharpList<string>>(matchValue.fields[0]);
|
|
1015
|
+
}
|
|
1016
|
+
}
|
|
1017
|
+
|
|
1018
|
+
export class LandingAnalysis extends Record implements IEquatable<LandingAnalysis>, IComparable<LandingAnalysis> {
|
|
1019
|
+
readonly Header: Manifest;
|
|
1020
|
+
readonly Stats: ManifestStats;
|
|
1021
|
+
readonly Templates: FSharpList<TemplateListItem>;
|
|
1022
|
+
readonly Verdicts: FSharpMap<string, FSharpList<string>>;
|
|
1023
|
+
readonly Triggers: ReleaseAvailability$1_$union<TriggerStats>;
|
|
1024
|
+
readonly InactiveEverywhere: FSharpList<string>;
|
|
1025
|
+
constructor(Header: Manifest, Stats: ManifestStats, Templates: FSharpList<TemplateListItem>, Verdicts: FSharpMap<string, FSharpList<string>>, Triggers: ReleaseAvailability$1_$union<TriggerStats>, InactiveEverywhere: FSharpList<string>) {
|
|
1026
|
+
super();
|
|
1027
|
+
this.Header = Header;
|
|
1028
|
+
this.Stats = Stats;
|
|
1029
|
+
this.Templates = Templates;
|
|
1030
|
+
this.Verdicts = Verdicts;
|
|
1031
|
+
this.Triggers = Triggers;
|
|
1032
|
+
this.InactiveEverywhere = InactiveEverywhere;
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
export function LandingAnalysis_$reflection(): TypeInfo {
|
|
1037
|
+
return record_type("FormSpec.Integrations.CorEMR.CoreMRImporterAnalysis.LandingAnalysis", [], LandingAnalysis, () => [["Header", Manifest_$reflection()], ["Stats", ManifestStats_$reflection()], ["Templates", list_type(TemplateListItem_$reflection())], ["Verdicts", class_type("Microsoft.FSharp.Collections.FSharpMap`2", [string_type, list_type(string_type)])], ["Triggers", ReleaseAvailability$1_$reflection(TriggerStats_$reflection())], ["InactiveEverywhere", list_type(string_type)]]);
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1040
|
+
/**
|
|
1041
|
+
* The landing over `source`, every template converted by `toTemplateMapping` with ITS OWN facts.
|
|
1042
|
+
* ⭐ The same function Studio runs for one template's tabs — so the list and the tabs cannot disagree.
|
|
1043
|
+
*/
|
|
1044
|
+
export function analyse(origin: ImportOrigin, importedAt: Date, source: LandingSource, factsOf: ((arg0: TemplateForm) => ServedFacts), activeAtOf: ((arg0: TemplateForm) => FSharpList<int32>)): LandingAnalysis {
|
|
1045
|
+
const mappings: FSharpMap<string, FSharpResult$2_$union<TemplateMapping, FSharpList<string>>> = map_2<string, TemplateForm, FSharpResult$2_$union<TemplateMapping, FSharpList<string>>>((_arg: string, form: TemplateForm): FSharpResult$2_$union<TemplateMapping, FSharpList<string>> => toTemplateMapping(origin, importedAt, factsOf(form), form), source.Forms);
|
|
1046
|
+
return new LandingAnalysis(toManifest(source), computeStats(source), toTemplateListFromMappings(source, mappings), ofList<string, FSharpList<string>>(choose<[string, FSharpResult$2_$union<TemplateMapping, FSharpList<string>>], [string, FSharpList<string>]>((tupledArg: [string, FSharpResult$2_$union<TemplateMapping, FSharpList<string>>]): Option<[string, FSharpList<string>]> => {
|
|
1047
|
+
const r: FSharpResult$2_$union<TemplateMapping, FSharpList<string>> = tupledArg[1];
|
|
1048
|
+
if (r.tag === /* Ok */ 0) {
|
|
1049
|
+
return undefined;
|
|
1050
|
+
}
|
|
1051
|
+
else {
|
|
1052
|
+
return [tupledArg[0], r.fields[0]] as [string, FSharpList<string>];
|
|
1053
|
+
}
|
|
1054
|
+
}, toList<string, FSharpResult$2_$union<TemplateMapping, FSharpList<string>>>(mappings)), {
|
|
1055
|
+
Compare: comparePrimitives,
|
|
1056
|
+
}), source.Triggers, map<[string, TemplateForm], string>((tuple: [string, TemplateForm]): string => tuple[0], filter<[string, TemplateForm]>((tupledArg_1: [string, TemplateForm]): boolean => isEmpty(activeAtOf(tupledArg_1[1])), toList<string, TemplateForm>(source.Forms))));
|
|
1057
|
+
}
|
|
1058
|
+
|
|
1059
|
+
//# sourceMappingURL=CoreMRImporterAnalysis.ts.map
|