@acorex/modules 21.0.0-next.59 → 21.0.0-next.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/assessment-management/README.md +4 -4
  2. package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-o8aFazwA.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-DlhSQ0cB.mjs} +3608 -367
  3. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-DlhSQ0cB.mjs.map +1 -0
  4. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-yrc_Yybq.mjs → acorex-modules-assessment-management-assessment-case.entity-B6C2PRZw.mjs} +43 -28
  5. package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-B6C2PRZw.mjs.map +1 -0
  6. package/fesm2022/{acorex-modules-assessment-management-assessment-session-answers-view.util-BUQa_TSY.mjs → acorex-modules-assessment-management-assessment-session-answers-view.util-BRdwcIvw.mjs} +2 -2
  7. package/fesm2022/{acorex-modules-assessment-management-assessment-session-answers-view.util-BUQa_TSY.mjs.map → acorex-modules-assessment-management-assessment-session-answers-view.util-BRdwcIvw.mjs.map} +1 -1
  8. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-Cwf30iuu.mjs → acorex-modules-assessment-management-assessment-session.entity-DquzZNaQ.mjs} +19 -3
  9. package/fesm2022/acorex-modules-assessment-management-assessment-session.entity-DquzZNaQ.mjs.map +1 -0
  10. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-CJieLR5g.mjs → acorex-modules-assessment-management-fill-assessment-session.command-CRE8SxzC.mjs} +2 -2
  11. package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-CRE8SxzC.mjs.map +1 -0
  12. package/fesm2022/{acorex-modules-assessment-management-preview-question.command-D0-FB1HH.mjs → acorex-modules-assessment-management-preview-question.command-Ce7yOnJY.mjs} +2 -2
  13. package/fesm2022/acorex-modules-assessment-management-preview-question.command-Ce7yOnJY.mjs.map +1 -0
  14. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-wqPNgv7q.mjs → acorex-modules-assessment-management-preview-questionnaire.command-S-8MDeB7.mjs} +2 -2
  15. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-wqPNgv7q.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-S-8MDeB7.mjs.map} +1 -1
  16. package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-DYyUhSWd.mjs → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-wdHMGBxi.mjs} +2 -2
  17. package/fesm2022/acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-wdHMGBxi.mjs.map +1 -0
  18. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-DUf2ceKY.mjs → acorex-modules-assessment-management-question-bank-item.entity-1Pm9O0kv.mjs} +2 -2
  19. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-DUf2ceKY.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-1Pm9O0kv.mjs.map} +1 -1
  20. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-Cy5ElBmU.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-Dwx0y7WY.mjs} +9 -121
  21. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-Dwx0y7WY.mjs.map +1 -0
  22. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-RWSkzNbA.mjs → acorex-modules-assessment-management-questionnaire.entity-BI_jc4C6.mjs} +12 -36
  23. package/fesm2022/acorex-modules-assessment-management-questionnaire.entity-BI_jc4C6.mjs.map +1 -0
  24. package/fesm2022/{acorex-modules-assessment-management-view-case-last-session-answers.command-NTuDdoYk.mjs → acorex-modules-assessment-management-view-case-last-session-answers.command-Ds-QGMPy.mjs} +3 -3
  25. package/fesm2022/{acorex-modules-assessment-management-view-case-last-session-answers.command-NTuDdoYk.mjs.map → acorex-modules-assessment-management-view-case-last-session-answers.command-Ds-QGMPy.mjs.map} +1 -1
  26. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-0btGV66_.mjs → acorex-modules-assessment-management-view-session-answers.command-COTVoRRG.mjs} +3 -3
  27. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-0btGV66_.mjs.map → acorex-modules-assessment-management-view-session-answers.command-COTVoRRG.mjs.map} +1 -1
  28. package/fesm2022/acorex-modules-assessment-management-view-session-outcomes.command-2buH7ydV.mjs +239 -0
  29. package/fesm2022/acorex-modules-assessment-management-view-session-outcomes.command-2buH7ydV.mjs.map +1 -0
  30. package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
  31. package/fesm2022/acorex-modules-common.mjs +1 -0
  32. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  33. package/package.json +2 -2
  34. package/types/acorex-modules-assessment-management.d.ts +383 -271
  35. package/types/acorex-modules-common.d.ts +1 -0
  36. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-o8aFazwA.mjs.map +0 -1
  37. package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-yrc_Yybq.mjs.map +0 -1
  38. package/fesm2022/acorex-modules-assessment-management-assessment-session.entity-Cwf30iuu.mjs.map +0 -1
  39. package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-CJieLR5g.mjs.map +0 -1
  40. package/fesm2022/acorex-modules-assessment-management-index-D8KjfHAH.mjs +0 -1509
  41. package/fesm2022/acorex-modules-assessment-management-index-D8KjfHAH.mjs.map +0 -1
  42. package/fesm2022/acorex-modules-assessment-management-preview-question.command-D0-FB1HH.mjs.map +0 -1
  43. package/fesm2022/acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-DYyUhSWd.mjs.map +0 -1
  44. package/fesm2022/acorex-modules-assessment-management-questionnaire-calculation.entity-CYF0k42_.mjs +0 -236
  45. package/fesm2022/acorex-modules-assessment-management-questionnaire-calculation.entity-CYF0k42_.mjs.map +0 -1
  46. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-Cy5ElBmU.mjs.map +0 -1
  47. package/fesm2022/acorex-modules-assessment-management-questionnaire.entity-RWSkzNbA.mjs.map +0 -1
  48. package/fesm2022/acorex-modules-assessment-management-save-questionnaire-questions.command-koGmUbNE.mjs +0 -61
  49. package/fesm2022/acorex-modules-assessment-management-save-questionnaire-questions.command-koGmUbNE.mjs.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { AXPEntity, AXPMenuProvider, AXPMenuProviderContext, AXPSearchCommandProvider, AXPSearchResult } from '@acorex/platform/common';
2
2
  import { AXPEntityDefinitionLoader, AXPEntityModel } from '@acorex/platform/layout/entity';
3
3
  import * as _acorex_platform_core from '@acorex/platform/core';
4
- import { AXPFeatureDefinitionProvider, AXPFeatureDefinitionProviderContext, AXPMultiLanguageString, AXPExpression, AXPEntityReference, AXPDeviceService } from '@acorex/platform/core';
4
+ import { AXPFeatureDefinitionProvider, AXPFeatureDefinitionProviderContext, AXPMultiLanguageString, AXPExpression, AXPDeviceService, AXPEntityReference } from '@acorex/platform/core';
5
5
  import { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex/platform/auth';
6
6
  import * as _angular_core from '@angular/core';
7
7
  import { OnInit } from '@angular/core';
@@ -51,12 +51,6 @@ declare const RootConfig: {
51
51
  titlePlural: string;
52
52
  icon: string;
53
53
  };
54
- questionnaireCalculation: {
55
- name: string;
56
- title: string;
57
- titlePlural: string;
58
- icon: string;
59
- };
60
54
  };
61
55
  };
62
56
 
@@ -113,9 +107,6 @@ declare const AXMAssessmentManagementPermissionKeys: {
113
107
  readonly Session: {
114
108
  readonly Management: "AssessmentManagement:Session:Management";
115
109
  };
116
- readonly QuestionnaireCalculation: {
117
- readonly Management: "AssessmentManagement:QuestionnaireCalculation:Management";
118
- };
119
110
  readonly Automation: {
120
111
  readonly Management: "AssessmentManagement:Automation:Management";
121
112
  };
@@ -304,6 +295,378 @@ interface QuestionnaireBuilderValue {
304
295
  displaySettings?: QuestionnaireDisplaySettings;
305
296
  }
306
297
 
298
+ /**
299
+ * Pre- / post-questionnaire rich text (welcome, summary, etc.).
300
+ * @alias AXPMultiLanguageString
301
+ */
302
+ type PrePostContentValue = AXPMultiLanguageString;
303
+ /**
304
+ * Pre-questionnaire configuration (shown before questions).
305
+ */
306
+ interface PreQuestionnaireConfig {
307
+ enabled: boolean;
308
+ /** Rich text content. Supports multi-language: Record<locale, string>. */
309
+ content?: PrePostContentValue;
310
+ }
311
+ /**
312
+ * Post-questionnaire configuration (review before submit, summary after submit).
313
+ * Summary content supports placeholders: {{totalQuestions}}, {{answeredCount}}, {{totalTime}}, {{elapsedSeconds}}, and {{outcomeName}} from configured outcomes.
314
+ */
315
+ interface PostQuestionnaireConfig {
316
+ /** Show review step before submit (all answers, edit/submit). */
317
+ reviewEnabled: boolean;
318
+ /** Show summary screen after submit. */
319
+ summaryEnabled: boolean;
320
+ /** When true, show a separate step with outcome results (name/value list). */
321
+ showOutcomeResults?: boolean;
322
+ /** Rich text content for summary. Supports multi-language and placeholders. */
323
+ summaryContent?: PrePostContentValue;
324
+ }
325
+ /**
326
+ * Entity-level display options (viewer / builder preview). Subset of {@link QuestionnaireDisplaySettings}.
327
+ */
328
+ type QuestionnaireCompletionMode = 'submit-only' | 'save-and-continue';
329
+ type QuestionnaireEntityDisplaySettings = Pick<QuestionnaireDisplaySettings, 'viewMode' | 'showProgressBar' | 'showTimer' | 'showQuestionNumbers' | 'validationStrategy' | 'completionMode'>;
330
+ declare const DEFAULT_PRE_QUESTIONNAIRE_CONFIG: PreQuestionnaireConfig;
331
+ declare const DEFAULT_POST_QUESTIONNAIRE_CONFIG: PostQuestionnaireConfig;
332
+ declare const DEFAULT_QUESTIONNAIRE_ENTITY_DISPLAY: QuestionnaireEntityDisplaySettings;
333
+ /**
334
+ * Pre/post configuration for viewer flow (from {@link toPrePostConfig}).
335
+ */
336
+ interface PrePostConfig {
337
+ pre: PreQuestionnaireConfig;
338
+ post: PostQuestionnaireConfig;
339
+ }
340
+ /** Primitive type of an evaluated outcome value (coercion after expression runs). */
341
+ type QuestionnaireOutcomeResultKind = 'number' | 'string' | 'boolean';
342
+ /** Text emphasis for outcome result display rules. */
343
+ type QuestionnaireOutcomeDisplayEmphasis = 'normal' | 'medium' | 'bold';
344
+ /** Comparison operator for display rule conditions against the evaluated outcome `value`. */
345
+ type QuestionnaireOutcomeDisplayOperator = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte';
346
+ /**
347
+ * Theme color chooser value: `"foreground background border"` (hex or utility classes).
348
+ */
349
+ type QuestionnaireOutcomeDisplayColor = string;
350
+ /** Icon chooser value or resolved Font Awesome class string. */
351
+ type QuestionnaireOutcomeDisplayIcon = string | {
352
+ label?: string;
353
+ styleClass?: string;
354
+ iconClass?: string;
355
+ };
356
+ /**
357
+ * Conditional styling for an outcome value in the results step.
358
+ * Rules are evaluated in order; the first matching condition wins.
359
+ */
360
+ interface QuestionnaireOutcomeDisplayRule {
361
+ id: string;
362
+ order: number;
363
+ operator: QuestionnaireOutcomeDisplayOperator;
364
+ compareValue: number | string | boolean;
365
+ /** Theme color chooser value applied to the outcome value in results. */
366
+ color: QuestionnaireOutcomeDisplayColor;
367
+ emphasis?: QuestionnaireOutcomeDisplayEmphasis;
368
+ icon?: QuestionnaireOutcomeDisplayIcon;
369
+ }
370
+ /** Parses a theme color chooser value into foreground, background, and border parts. */
371
+ declare function parseQuestionnaireOutcomeDisplayColor(value: string | null | undefined): {
372
+ foreground: string;
373
+ background: string;
374
+ border: string;
375
+ } | null;
376
+ declare function isQuestionnaireOutcomeDisplayColorHex(value: string): boolean;
377
+ /**
378
+ * Returns true when the evaluated outcome value matches the display rule condition.
379
+ */
380
+ declare function matchesQuestionnaireOutcomeDisplayRule(value: unknown, rule: Pick<QuestionnaireOutcomeDisplayRule, 'operator' | 'compareValue'>): boolean;
381
+ declare function normalizeQuestionnaireOutcomeDisplayRules(rules: QuestionnaireOutcomeDisplayRule[] | null | undefined): QuestionnaireOutcomeDisplayRule[];
382
+ /**
383
+ * Named outcome rule embedded on a questionnaire.
384
+ * Referenced in expressions via outcome.eval('name') and in summary placeholders as {{name}}.
385
+ */
386
+ interface QuestionnaireOutcomeItem {
387
+ id: string;
388
+ /** Unique programmatic name within the questionnaire (variable-name style). */
389
+ name: string;
390
+ title?: AXPMultiLanguageString;
391
+ description?: AXPMultiLanguageString;
392
+ resultKind: QuestionnaireOutcomeResultKind;
393
+ /**
394
+ * Use `{{ ... }}` or plain expression body; scope includes `answer.eval`, `outcome.eval`, and `fn.*`.
395
+ */
396
+ expression: string;
397
+ /** Optional ordered display rules applied to the evaluated value in the results step. */
398
+ displayRules?: QuestionnaireOutcomeDisplayRule[];
399
+ }
400
+ /** Section grouping outcome rules (same builder pattern as questionnaire questions). */
401
+ interface QuestionnaireOutcomeSection {
402
+ /** Unique technical section name. */
403
+ name: string;
404
+ title?: AXPMultiLanguageString;
405
+ description?: AXPMultiLanguageString;
406
+ order: number;
407
+ items: QuestionnaireOutcomeItem[];
408
+ isNewlyAdded?: boolean;
409
+ }
410
+ /** Embedded outcome rules on questionnaire. */
411
+ interface QuestionnaireOutcomesValue {
412
+ sections: QuestionnaireOutcomeSection[];
413
+ }
414
+ declare const DEFAULT_QUESTIONNAIRE_OUTCOMES: QuestionnaireOutcomesValue;
415
+ declare function normalizeQuestionnaireOutcomesValue(value: QuestionnaireOutcomesValue | null | undefined): QuestionnaireOutcomesValue;
416
+ /** All outcome items across sections (evaluation, automations, duplicate checks). */
417
+ declare function flattenQuestionnaireOutcomeItems(value: QuestionnaireOutcomesValue | null | undefined): QuestionnaireOutcomeItem[];
418
+ declare function findDuplicateOutcomeNames(value: QuestionnaireOutcomesValue | null | undefined): string[];
419
+ interface AXMAssessmentManagementQuestionnaireEntityModel extends AXPEntityModel<string> {
420
+ title: AXPMultiLanguageString;
421
+ description?: AXPMultiLanguageString;
422
+ type: 'questionnaire' | 'survey' | 'checklist' | 'test' | 'evaluation';
423
+ questions?: QuestionnaireBuilderValue;
424
+ /** Named outcome rules evaluated from answers (outcome.eval / summary placeholders). */
425
+ outcomes?: QuestionnaireOutcomesValue;
426
+ /** Viewer / preview display. */
427
+ display?: QuestionnaireEntityDisplaySettings;
428
+ /** Welcome screen before questions. */
429
+ pre?: PreQuestionnaireConfig;
430
+ /** Review before submit, summary / results after submit. */
431
+ post?: PostQuestionnaireConfig;
432
+ categoryId?: string;
433
+ tags?: string[];
434
+ color?: string;
435
+ }
436
+ /**
437
+ * Maps entity pre/post to viewer config (defaults when omitted).
438
+ */
439
+ declare function toPrePostConfig(q: Partial<AXMAssessmentManagementQuestionnaireEntityModel> | null | undefined): PrePostConfig | null;
440
+ declare const VIEW_MODE_VALUES: readonly ["single-page", "page-per-group", "page-per-question", "side-menu"];
441
+ type ViewModeValue = (typeof VIEW_MODE_VALUES)[number];
442
+ declare const VALIDATION_STRATEGY_VALUES: readonly ["step", "end"];
443
+ type ValidationStrategyValue = (typeof VALIDATION_STRATEGY_VALUES)[number];
444
+ declare const COMPLETION_MODE_VALUES: readonly ["submit-only", "save-and-continue"];
445
+ type CompletionModeValue = (typeof COMPLETION_MODE_VALUES)[number];
446
+ /**
447
+ * Coerces stored view mode (string or SelectBox `{ id }`) to a known value.
448
+ */
449
+ declare function normalizeViewMode(value: unknown): ViewModeValue;
450
+ /**
451
+ * Coerces stored validation strategy (string or SelectBox `{ id }`) to a known value.
452
+ */
453
+ declare function normalizeValidationStrategy(value: unknown): ValidationStrategyValue;
454
+ /**
455
+ * Coerces stored completion mode (string or SelectBox `{ id }`) to a known value.
456
+ */
457
+ declare function normalizeCompletionMode(value: unknown): CompletionModeValue;
458
+ /**
459
+ * Maps entity `display` to {@link QuestionnaireDisplaySettings} (defaults when omitted).
460
+ */
461
+ declare function toDisplaySettings(q: Partial<AXMAssessmentManagementQuestionnaireEntityModel> | null | undefined): QuestionnaireDisplaySettings | null;
462
+
463
+ /**
464
+ * Resolved display styling for an outcome value row.
465
+ */
466
+ interface OutcomeResultDisplay {
467
+ color?: string;
468
+ emphasis: QuestionnaireOutcomeDisplayEmphasis;
469
+ iconClass?: string;
470
+ }
471
+ /**
472
+ * One evaluated outcome row for the post-submit results step.
473
+ */
474
+ interface OutcomeResultEntry {
475
+ key: string;
476
+ value: unknown;
477
+ label: string;
478
+ display?: OutcomeResultDisplay;
479
+ }
480
+ /**
481
+ * Outcome results grouped under a questionnaire outcomes section.
482
+ */
483
+ interface OutcomeResultSectionGroup {
484
+ trackKey: string;
485
+ sectionName: string;
486
+ sectionOrder: number;
487
+ sectionTitle: AXPMultiLanguageString;
488
+ sectionDescription?: AXPMultiLanguageString;
489
+ items: OutcomeResultEntry[];
490
+ }
491
+ /**
492
+ * Placeholder values for post-questionnaire summary content.
493
+ * Fixed keys plus any {{name}} from questionnaire outcomes.
494
+ */
495
+ interface SummaryPlaceholderValues {
496
+ totalQuestions?: number;
497
+ answeredCount?: number;
498
+ /** Elapsed questionnaire time in whole seconds (e.g. from the viewer timer). */
499
+ totalTimeSeconds?: number;
500
+ /** Pre-formatted duration for {{totalTime}}. */
501
+ totalTimeFormatted?: string;
502
+ /** Computed outcome values (name -> value) for placeholders like {{bmi}}. */
503
+ outcomes?: Record<string, unknown>;
504
+ /** Display label per outcome `name` (title); used in the outcomes list UI. */
505
+ outcomeTitles?: Record<string, string>;
506
+ /** Outcome rows grouped by configured outcomes section (when available). */
507
+ outcomeSections?: OutcomeResultSectionGroup[];
508
+ }
509
+
510
+ /** Named values produced by questionnaire outcome rules (outcome `name` → evaluated value). */
511
+ type QuestionnaireOutcomeValues = Record<string, unknown>;
512
+ interface AXMQuestionnaireViewerServiceConfig {
513
+ /**
514
+ * Dialog title
515
+ */
516
+ title: string;
517
+ /**
518
+ * Questionnaire structure data
519
+ */
520
+ structure: QuestionnaireBuilderValue;
521
+ /**
522
+ * Pre/post questionnaire config (welcome, review, summary)
523
+ */
524
+ prePostConfig?: PrePostConfig | null;
525
+ /**
526
+ * Optional viewer configuration
527
+ * If not provided, displaySettings from structure will be used
528
+ */
529
+ config?: QuestionnaireViewerConfig;
530
+ /**
531
+ * Initial answers to pre-fill the questionnaire
532
+ */
533
+ initialAnswers?: Record<string, any>;
534
+ /**
535
+ * Persisted questionnaire entity id — used to load embedded outcome rules when inline rules are not provided.
536
+ */
537
+ questionnaireId?: string;
538
+ /**
539
+ * Inline outcome rules (e.g. unsaved builder state). Takes precedence over loading from the questionnaire entity.
540
+ */
541
+ outcomeRules?: QuestionnaireOutcomeItem[];
542
+ /**
543
+ * When provided, called on submit. Should save and return result for summary.
544
+ */
545
+ submitHandler?: (answers: Record<string, any>) => Promise<SummaryPlaceholderValues | null | void>;
546
+ /**
547
+ * When provided, called on save-and-continue (draft). Should persist without final validation.
548
+ */
549
+ saveHandler?: (answers: Record<string, any>) => Promise<void>;
550
+ /**
551
+ * Assessment case/session ids for fill popup persistence (popup cannot receive function handlers).
552
+ */
553
+ assessmentFillContext?: QuestionnaireAssessmentFillContext;
554
+ }
555
+ interface AXMQuestionnaireViewerServiceResult {
556
+ /**
557
+ * All answers from the questionnaire
558
+ */
559
+ answers: Record<string, any>;
560
+ /**
561
+ * Questions with their corresponding answers
562
+ */
563
+ questions: Array<{
564
+ name: string;
565
+ questionBankItemId: string;
566
+ sectionName: string;
567
+ title: string;
568
+ note?: string;
569
+ answer: any;
570
+ isRequired?: boolean | string;
571
+ }>;
572
+ /**
573
+ * Whether the dialog was submitted (true) or closed (false)
574
+ */
575
+ submitted: boolean;
576
+ /**
577
+ * Draft saved via save-and-continue without final submit.
578
+ */
579
+ saved?: boolean;
580
+ }
581
+ /**
582
+ * Opens the questionnaire viewer dialog and evaluates questionnaire outcomes when a questionnaire id is provided.
583
+ */
584
+ declare class AXMQuestionnaireViewerService {
585
+ private readonly popupService;
586
+ private readonly entityService;
587
+ private readonly expressionEvaluator;
588
+ protected readonly deviceService: AXPDeviceService;
589
+ /**
590
+ * Open questionnaire viewer in a dialog
591
+ */
592
+ open(config: AXMQuestionnaireViewerServiceConfig): Promise<AXMQuestionnaireViewerServiceResult | null>;
593
+ /**
594
+ * Evaluate all questionnaire outcomes for the given questionnaire and answers.
595
+ * Pass `structure` so expressions can use `answer.byId`, `answer.byTag`, and `answer.allByTag`.
596
+ */
597
+ /**
598
+ * Resolves `isVisible` for a section or question: `false` hides; `true`/undefined shows;
599
+ * non-empty string is evaluated with the same scope as questionnaire outcomes (`answer.*`, `fn.*`, etc.).
600
+ */
601
+ evaluateQuestionnaireVisibilityFlag(isVisible: boolean | string | undefined | null, answers: Record<string, unknown>, structure: QuestionnaireBuilderValue | null | undefined): Promise<boolean>;
602
+ /**
603
+ * Evaluates questionnaire outcome rules and returns values plus display titles.
604
+ */
605
+ evaluateOutcomes(answers: Record<string, unknown>, options?: {
606
+ questionnaireId?: string;
607
+ outcomeRules?: QuestionnaireOutcomeItem[];
608
+ structure?: QuestionnaireBuilderValue | null;
609
+ }): Promise<{
610
+ values: QuestionnaireOutcomeValues;
611
+ outcomeTitles: Record<string, string>;
612
+ }>;
613
+ /**
614
+ * Progress metrics and optional outcome results for summary / preview.
615
+ */
616
+ buildSummaryPlaceholderValues(structure: QuestionnaireBuilderValue, answers: Record<string, any>, options?: {
617
+ questionnaireId?: string;
618
+ outcomeRules?: QuestionnaireOutcomeItem[];
619
+ elapsedSeconds?: number;
620
+ }): Promise<SummaryPlaceholderValues>;
621
+ /**
622
+ * Builds outcome section rows from stored session values (no expression re-evaluation).
623
+ */
624
+ buildOutcomeResultsFromStoredValues(storedOutcomes: Record<string, unknown>, options: {
625
+ questionnaireId: string;
626
+ }): Promise<Pick<SummaryPlaceholderValues, 'outcomes' | 'outcomeTitles' | 'outcomeSections'>>;
627
+ /**
628
+ * Count answered questions using the same paths as the viewer session (item id or answers.itemId).
629
+ */
630
+ calculateProgressFromStructure(structure: QuestionnaireBuilderValue, answers: Record<string, any>): {
631
+ answeredQuestionsCount: number;
632
+ progressPercentage: number;
633
+ };
634
+ private resolveOutcomeRules;
635
+ private resolveOutcomeSections;
636
+ private loadQuestionnaire;
637
+ private buildOutcomeResultSections;
638
+ /**
639
+ * First matching display rule for an evaluated outcome value.
640
+ */
641
+ private resolveOutcomeDisplay;
642
+ /**
643
+ * Display label for an outcome rule: `title` when set, otherwise a humanized `name`.
644
+ */
645
+ private resolveOutcomeDisplayTitle;
646
+ private humanizeOutcomeKey;
647
+ private computeResult;
648
+ /** Non-empty trimmed `expression`, or empty string if missing. */
649
+ private outcomeExpressionText;
650
+ private inferResultKind;
651
+ private coerceOutcome;
652
+ private evaluateOutcomeExpression;
653
+ /**
654
+ * Resolves an answer the same way as the viewer session (`key` or `answers.key`).
655
+ */
656
+ private resolveStoredAnswer;
657
+ /** Sections and items ordered by `order` for deterministic `byTag` matching. */
658
+ private flattenQuestionnaireItems;
659
+ private normalizeQuestionnaireTag;
660
+ /**
661
+ * Scope: answer.eval (path), answer.byId / byTag / allByTag, formula.eval / outcome.eval, fn.* helpers.
662
+ */
663
+ private buildExpressionScope;
664
+ private expressionOutcomeRefs;
665
+ private topologicalSort;
666
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMQuestionnaireViewerService, never>;
667
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMQuestionnaireViewerService>;
668
+ }
669
+
307
670
  type AXMAssessmentSessionRole = 'responder' | 'supervisor' | 'reviewer';
308
671
  type AXMAssessmentSessionStatus = 'not-started' | 'in-progress' | 'submitted' | 'under-review' | 'approved' | 'rejected' | 'completed';
309
672
  interface AXMAssessmentManagementAssessmentSessionEntityModel extends AXPEntityModel<string> {
@@ -318,6 +681,10 @@ interface AXMAssessmentManagementAssessmentSessionEntityModel extends AXPEntityM
318
681
  progressPercentage: number;
319
682
  answeredQuestionsCount: number;
320
683
  answers: Record<string, unknown>;
684
+ /**
685
+ * Evaluated questionnaire outcome values (rule `name` → value), snapshot at submit.
686
+ */
687
+ outcomes?: Record<string, unknown>;
321
688
  previousId?: string;
322
689
  }
323
690
 
@@ -879,7 +1246,7 @@ interface AXMAssessmentManagementQuestionBankItemEntityModel extends AXPEntityMo
879
1246
  * Not used as the respondent-facing question text; see `question`.
880
1247
  */
881
1248
  title: AXPMultiLanguageString;
882
- /** Unique variable name for questionnaire calculations (answer.eval('name')). */
1249
+ /** Unique variable name for questionnaire outcomes (answer.eval('name')). */
883
1250
  name?: string;
884
1251
  /** Respondent-facing question body (rich text). */
885
1252
  question?: AXPMultiLanguageString;
@@ -906,90 +1273,6 @@ declare function stripQuestionBankInterfaceMetadata(value: AXMQuestionBankItemIn
906
1273
  */
907
1274
  declare function resolveWidgetNodeFromMetaDataDefinitionInterface(raw: string | AXPWidgetNode | (() => Promise<AXPWidgetNode>) | null | undefined): Promise<AXPWidgetNode | null>;
908
1275
 
909
- /**
910
- * Pre- / post-questionnaire rich text (welcome, summary, etc.).
911
- * @alias AXPMultiLanguageString
912
- */
913
- type PrePostContentValue = AXPMultiLanguageString;
914
- /**
915
- * Pre-questionnaire configuration (shown before questions).
916
- */
917
- interface PreQuestionnaireConfig {
918
- enabled: boolean;
919
- /** Rich text content. Supports multi-language: Record<locale, string>. */
920
- content?: PrePostContentValue;
921
- }
922
- /**
923
- * Post-questionnaire configuration (review before submit, summary after submit).
924
- * Summary content supports placeholders: {{totalQuestions}}, {{answeredCount}}, {{totalTime}}, {{elapsedSeconds}}, and {{calculationName}} from configured calculations.
925
- */
926
- interface PostQuestionnaireConfig {
927
- /** Show review step before submit (all answers, edit/submit). */
928
- reviewEnabled: boolean;
929
- /** Show summary screen after submit. */
930
- summaryEnabled: boolean;
931
- /** When true, show a separate step after the summary with calculation results (name/value list). */
932
- showCalculationResults?: boolean;
933
- /** Rich text content for summary. Supports multi-language and placeholders. */
934
- summaryContent?: PrePostContentValue;
935
- }
936
- /**
937
- * Entity-level display options (viewer / builder preview). Subset of {@link QuestionnaireDisplaySettings}.
938
- */
939
- type QuestionnaireCompletionMode = 'submit-only' | 'save-and-continue';
940
- type QuestionnaireEntityDisplaySettings = Pick<QuestionnaireDisplaySettings, 'viewMode' | 'showProgressBar' | 'showTimer' | 'showQuestionNumbers' | 'validationStrategy' | 'completionMode'>;
941
- declare const DEFAULT_PRE_QUESTIONNAIRE_CONFIG: PreQuestionnaireConfig;
942
- declare const DEFAULT_POST_QUESTIONNAIRE_CONFIG: PostQuestionnaireConfig;
943
- declare const DEFAULT_QUESTIONNAIRE_ENTITY_DISPLAY: QuestionnaireEntityDisplaySettings;
944
- /**
945
- * Pre/post configuration for viewer flow (from {@link toPrePostConfig}).
946
- */
947
- interface PrePostConfig {
948
- pre: PreQuestionnaireConfig;
949
- post: PostQuestionnaireConfig;
950
- }
951
- interface AXMAssessmentManagementQuestionnaireEntityModel extends AXPEntityModel<string> {
952
- title: AXPMultiLanguageString;
953
- description?: AXPMultiLanguageString;
954
- type: 'questionnaire' | 'survey' | 'checklist' | 'test' | 'evaluation';
955
- questions?: QuestionnaireBuilderValue;
956
- /** Viewer / preview display. */
957
- display?: QuestionnaireEntityDisplaySettings;
958
- /** Welcome screen before questions. */
959
- pre?: PreQuestionnaireConfig;
960
- /** Review before submit, summary / results after submit. */
961
- post?: PostQuestionnaireConfig;
962
- categoryId?: string;
963
- tags?: string[];
964
- color?: string;
965
- }
966
- /**
967
- * Maps entity pre/post to viewer config (defaults when omitted).
968
- */
969
- declare function toPrePostConfig(q: Partial<AXMAssessmentManagementQuestionnaireEntityModel> | null | undefined): PrePostConfig | null;
970
- declare const VIEW_MODE_VALUES: readonly ["single-page", "page-per-group", "page-per-question", "side-menu"];
971
- type ViewModeValue = (typeof VIEW_MODE_VALUES)[number];
972
- declare const VALIDATION_STRATEGY_VALUES: readonly ["step", "end"];
973
- type ValidationStrategyValue = (typeof VALIDATION_STRATEGY_VALUES)[number];
974
- declare const COMPLETION_MODE_VALUES: readonly ["submit-only", "save-and-continue"];
975
- type CompletionModeValue = (typeof COMPLETION_MODE_VALUES)[number];
976
- /**
977
- * Coerces stored view mode (string or SelectBox `{ id }`) to a known value.
978
- */
979
- declare function normalizeViewMode(value: unknown): ViewModeValue;
980
- /**
981
- * Coerces stored validation strategy (string or SelectBox `{ id }`) to a known value.
982
- */
983
- declare function normalizeValidationStrategy(value: unknown): ValidationStrategyValue;
984
- /**
985
- * Coerces stored completion mode (string or SelectBox `{ id }`) to a known value.
986
- */
987
- declare function normalizeCompletionMode(value: unknown): CompletionModeValue;
988
- /**
989
- * Maps entity `display` to {@link QuestionnaireDisplaySettings} (defaults when omitted).
990
- */
991
- declare function toDisplaySettings(q: Partial<AXMAssessmentManagementQuestionnaireEntityModel> | null | undefined): QuestionnaireDisplaySettings | null;
992
-
993
1276
  type AXMAssessmentCaseStatus = 'draft' | 'active' | 'in-progress' | 'closed' | 'cancelled';
994
1277
  interface AXMAssessmentManagementAssessmentCaseEntityModel extends AXPEntityModel<string> {
995
1278
  /**
@@ -1008,180 +1291,6 @@ interface AXMAssessmentManagementAssessmentCaseEntityModel extends AXPEntityMode
1008
1291
  statusId?: AXMAssessmentCaseStatus;
1009
1292
  }
1010
1293
 
1011
- /** Primitive type of the evaluated value (coercion after expression runs). */
1012
- type QuestionnaireCalculationResultKind = 'number' | 'string' | 'boolean';
1013
- interface AXMAssessmentManagementQuestionnaireCalculationEntityModel extends AXPEntityModel<string> {
1014
- questionnaireId?: string;
1015
- questionnaire?: {
1016
- id?: string;
1017
- title?: AXPMultiLanguageString;
1018
- type?: string;
1019
- };
1020
- name?: string;
1021
- title?: AXPMultiLanguageString;
1022
- description?: AXPMultiLanguageString;
1023
- resultKind?: QuestionnaireCalculationResultKind;
1024
- /**
1025
- * Use `{{ ... }}` or plain expression body; scope includes `answer.eval`, `outcome.eval` / `formula.eval`, and `fn.SUM`, `fn.AVERAGE`, etc.
1026
- */
1027
- expression?: string;
1028
- }
1029
-
1030
- /**
1031
- * Placeholder values for post-questionnaire summary content.
1032
- * Fixed keys plus any {{name}} from questionnaire calculation outcomes.
1033
- */
1034
- interface SummaryPlaceholderValues {
1035
- totalQuestions?: number;
1036
- answeredCount?: number;
1037
- /** Elapsed questionnaire time in whole seconds (e.g. from the viewer timer). */
1038
- totalTimeSeconds?: number;
1039
- /** Pre-formatted duration for {{totalTime}}. */
1040
- totalTimeFormatted?: string;
1041
- /** Computed calculation values (name -> value) for placeholders like {{bmi}}. */
1042
- outcomes?: Record<string, unknown>;
1043
- /** Display label per calculation `name` (entity title); used in the outcomes list UI. */
1044
- outcomeTitles?: Record<string, string>;
1045
- }
1046
-
1047
- /** Named values produced by questionnaire calculations (calculation `name` → evaluated value). */
1048
- type QuestionnaireCalculationValues = Record<string, unknown>;
1049
- interface AXMQuestionnaireViewerServiceConfig {
1050
- /**
1051
- * Dialog title
1052
- */
1053
- title: string;
1054
- /**
1055
- * Questionnaire structure data
1056
- */
1057
- structure: QuestionnaireBuilderValue;
1058
- /**
1059
- * Pre/post questionnaire config (welcome, review, summary)
1060
- */
1061
- prePostConfig?: PrePostConfig | null;
1062
- /**
1063
- * Optional viewer configuration
1064
- * If not provided, displaySettings from structure will be used
1065
- */
1066
- config?: QuestionnaireViewerConfig;
1067
- /**
1068
- * Initial answers to pre-fill the questionnaire
1069
- */
1070
- initialAnswers?: Record<string, any>;
1071
- /**
1072
- * Persisted questionnaire entity id — used to load and evaluate questionnaire calculations on submit.
1073
- */
1074
- questionnaireId?: string;
1075
- /**
1076
- * When provided, called on submit. Should save and return result for summary.
1077
- */
1078
- submitHandler?: (answers: Record<string, any>) => Promise<SummaryPlaceholderValues | null | void>;
1079
- /**
1080
- * When provided, called on save-and-continue (draft). Should persist without final validation.
1081
- */
1082
- saveHandler?: (answers: Record<string, any>) => Promise<void>;
1083
- /**
1084
- * Assessment case/session ids for fill popup persistence (popup cannot receive function handlers).
1085
- */
1086
- assessmentFillContext?: QuestionnaireAssessmentFillContext;
1087
- }
1088
- interface AXMQuestionnaireViewerServiceResult {
1089
- /**
1090
- * All answers from the questionnaire
1091
- */
1092
- answers: Record<string, any>;
1093
- /**
1094
- * Questions with their corresponding answers
1095
- */
1096
- questions: Array<{
1097
- name: string;
1098
- questionBankItemId: string;
1099
- sectionName: string;
1100
- title: string;
1101
- note?: string;
1102
- answer: any;
1103
- isRequired?: boolean | string;
1104
- }>;
1105
- /**
1106
- * Whether the dialog was submitted (true) or closed (false)
1107
- */
1108
- submitted: boolean;
1109
- /**
1110
- * Draft saved via save-and-continue without final submit.
1111
- */
1112
- saved?: boolean;
1113
- }
1114
- /**
1115
- * Opens the questionnaire viewer dialog and evaluates questionnaire calculations when a questionnaire id is provided.
1116
- */
1117
- declare class AXMQuestionnaireViewerService {
1118
- private readonly popupService;
1119
- private readonly entityService;
1120
- private readonly expressionEvaluator;
1121
- protected readonly deviceService: AXPDeviceService;
1122
- /**
1123
- * Open questionnaire viewer in a dialog
1124
- */
1125
- open(config: AXMQuestionnaireViewerServiceConfig): Promise<AXMQuestionnaireViewerServiceResult | null>;
1126
- /**
1127
- * Evaluate all questionnaire calculations for the given questionnaire and answers.
1128
- * Pass `structure` so expressions can use `answer.byId`, `answer.byTag`, and `answer.allByTag`.
1129
- */
1130
- /**
1131
- * Resolves `isVisible` for a section or question: `false` hides; `true`/undefined shows;
1132
- * non-empty string is evaluated with the same scope as questionnaire calculations (`answer.*`, `fn.*`, etc.).
1133
- */
1134
- evaluateQuestionnaireVisibilityFlag(isVisible: boolean | string | undefined | null, answers: Record<string, unknown>, structure: QuestionnaireBuilderValue | null | undefined): Promise<boolean>;
1135
- /**
1136
- * Evaluates questionnaire calculations and returns values plus display titles from calculation entities.
1137
- */
1138
- evaluateOutcomes(questionnaireId: string, answers: Record<string, unknown>, structure?: QuestionnaireBuilderValue | null): Promise<{
1139
- values: QuestionnaireCalculationValues;
1140
- outcomeTitles: Record<string, string>;
1141
- }>;
1142
- /**
1143
- * Progress metrics and optional calculation results for summary / preview.
1144
- */
1145
- buildSummaryPlaceholderValues(structure: QuestionnaireBuilderValue, answers: Record<string, any>, options?: {
1146
- questionnaireId?: string;
1147
- elapsedSeconds?: number;
1148
- }): Promise<SummaryPlaceholderValues>;
1149
- /**
1150
- * Count answered questions using the same paths as the viewer session (item id or answers.itemId).
1151
- */
1152
- calculateProgressFromStructure(structure: QuestionnaireBuilderValue, answers: Record<string, any>): {
1153
- answeredQuestionsCount: number;
1154
- progressPercentage: number;
1155
- };
1156
- private loadCalculationsForQuestionnaire;
1157
- /**
1158
- * Display label for a calculation: entity `title` when set, otherwise a humanized `name`.
1159
- */
1160
- private resolveOutcomeDisplayTitle;
1161
- private humanizeCalculationKey;
1162
- private computeResult;
1163
- /** Non-empty trimmed `expression`, or empty string if missing. */
1164
- private calculationExpressionText;
1165
- private inferResultKind;
1166
- private coerceOutcome;
1167
- private evaluateOutcomeExpression;
1168
- /**
1169
- * Resolves an answer the same way as the viewer session (`key` or `answers.key`).
1170
- */
1171
- private resolveStoredAnswer;
1172
- /** Sections and items ordered by `order` for deterministic `byTag` matching. */
1173
- private flattenQuestionnaireItems;
1174
- private normalizeQuestionnaireTag;
1175
- /**
1176
- * Scope: answer.eval (path), answer.byId / byTag / allByTag, formula.eval / outcome.eval, fn.* helpers.
1177
- */
1178
- private buildExpressionScope;
1179
- private expressionOutcomeRefs;
1180
- private topologicalSort;
1181
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMQuestionnaireViewerService, never>;
1182
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMQuestionnaireViewerService>;
1183
- }
1184
-
1185
1294
  interface QuestionWithAnswer {
1186
1295
  name: string;
1187
1296
  title: string;
@@ -1211,6 +1320,7 @@ declare class AXMQuestionnaireViewerPageComponent extends AXPPageLayoutBaseCompo
1211
1320
  protected readonly isLoading: _angular_core.WritableSignal<boolean>;
1212
1321
  protected readonly loadError: _angular_core.WritableSignal<string | null>;
1213
1322
  protected readonly currentSessionId: _angular_core.WritableSignal<string | null>;
1323
+ protected readonly existingSession: _angular_core.WritableSignal<AXMAssessmentManagementAssessmentSessionEntityModel | null>;
1214
1324
  protected readonly flowStep: _angular_core.WritableSignal<FlowStep$1>;
1215
1325
  protected readonly reviewSnapshot: _angular_core.WritableSignal<QuestionWithAnswer[]>;
1216
1326
  protected readonly reviewContext: _angular_core.WritableSignal<Record<string, any> | null>;
@@ -1375,6 +1485,8 @@ declare class AXMQuestionnaireViewerStandalonePageComponent implements OnInit {
1375
1485
  protected readonly isLoading: _angular_core.WritableSignal<boolean>;
1376
1486
  protected readonly loadError: _angular_core.WritableSignal<string | null>;
1377
1487
  protected readonly isSubmitting: _angular_core.WritableSignal<boolean>;
1488
+ protected readonly sessionId: _angular_core.WritableSignal<string | null>;
1489
+ protected readonly existingSession: _angular_core.WritableSignal<AXMAssessmentManagementAssessmentSessionEntityModel | null>;
1378
1490
  protected readonly flowStep: _angular_core.WritableSignal<FlowStep>;
1379
1491
  protected readonly reviewSnapshot: _angular_core.WritableSignal<QuestionWithAnswer[]>;
1380
1492
  protected readonly reviewContext: _angular_core.WritableSignal<Record<string, any> | null>;
@@ -1516,5 +1628,5 @@ declare class AXMQuestionnaireViewerStandalonePageComponent implements OnInit {
1516
1628
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMQuestionnaireViewerStandalonePageComponent, "axm-questionnaire-viewer-standalone-page", never, {}, {}, never, never, true, never>;
1517
1629
  }
1518
1630
 
1519
- export { AXMAssessmentManagementEntityProvider, AXMAssessmentManagementFeatureDefinitionProvider, AXMAssessmentManagementFeatureKeys, AXMAssessmentManagementMenuProvider, AXMAssessmentManagementModule, AXMAssessmentManagementPermissionDefinitionProvider, AXMAssessmentManagementPermissionKeys, AXMAssessmentManagementSearchCommandProvider, AXMQuestionnaireViewerPageComponent, AXMQuestionnaireViewerService, AXMQuestionnaireViewerStandalonePageComponent, AXPAssessmentManagementMenuKeys, DEFAULT_POST_QUESTIONNAIRE_CONFIG, DEFAULT_PRE_QUESTIONNAIRE_CONFIG, DEFAULT_QUESTIONNAIRE_ENTITY_DISPLAY, DEFAULT_QUESTION_COMMENT_CONFIG, DEFAULT_QUESTION_HINT_CONFIG, RootConfig, diffQuestionCommentOverride, diffQuestionHintOverride, getQuestionAnswerCommentStoragePath, mergeQuestionCommentConfig, mergeQuestionHintForViewer, normalizeCompletionMode, normalizeQuestionCommentConfig, normalizeQuestionHintConfig, normalizeQuestionHintFromEntityRow, normalizeQuestionHintMode, normalizeValidationStrategy, normalizeViewMode, parseQuestionHintPartialFromRecord, readHintFieldsFromRecord, resolveWidgetNodeFromMetaDataDefinitionInterface, stripQuestionBankInterfaceMetadata, toDisplaySettings, toPrePostConfig };
1520
- export type { AXMAssessmentCaseStatus, AXMAssessmentManagementAssessmentCaseEntityModel, AXMAssessmentManagementAssessmentSessionEntityModel, AXMAssessmentManagementQuestionBankItemEntityModel, AXMAssessmentManagementQuestionnaireCalculationEntityModel, AXMAssessmentManagementQuestionnaireEntityModel, AXMAssessmentQuestionCommentConfig, AXMAssessmentQuestionHintConfig, AXMAssessmentQuestionHintConfigOff, AXMAssessmentQuestionHintConfigShown, AXMAssessmentQuestionHintMode, AXMAssessmentQuestionHintPartial, AXMAssessmentQuestionHintVisualMode, AXMAssessmentSessionRole, AXMAssessmentSessionStatus, AXMQuestionBankItemInterfaceMetadata, AXMQuestionBankItemInterfaceValue, AXMQuestionnaireViewerServiceConfig, AXMQuestionnaireViewerServiceResult, PostQuestionnaireConfig, PrePostConfig, PrePostContentValue, PreQuestionnaireConfig, QuestionnaireCalculationResultKind, QuestionnaireCalculationValues, QuestionnaireCompletionMode, QuestionnaireEntityDisplaySettings };
1631
+ export { AXMAssessmentManagementEntityProvider, AXMAssessmentManagementFeatureDefinitionProvider, AXMAssessmentManagementFeatureKeys, AXMAssessmentManagementMenuProvider, AXMAssessmentManagementModule, AXMAssessmentManagementPermissionDefinitionProvider, AXMAssessmentManagementPermissionKeys, AXMAssessmentManagementSearchCommandProvider, AXMQuestionnaireViewerPageComponent, AXMQuestionnaireViewerService, AXMQuestionnaireViewerStandalonePageComponent, AXPAssessmentManagementMenuKeys, DEFAULT_POST_QUESTIONNAIRE_CONFIG, DEFAULT_PRE_QUESTIONNAIRE_CONFIG, DEFAULT_QUESTIONNAIRE_ENTITY_DISPLAY, DEFAULT_QUESTIONNAIRE_OUTCOMES, DEFAULT_QUESTION_COMMENT_CONFIG, DEFAULT_QUESTION_HINT_CONFIG, RootConfig, diffQuestionCommentOverride, diffQuestionHintOverride, findDuplicateOutcomeNames, flattenQuestionnaireOutcomeItems, getQuestionAnswerCommentStoragePath, isQuestionnaireOutcomeDisplayColorHex, matchesQuestionnaireOutcomeDisplayRule, mergeQuestionCommentConfig, mergeQuestionHintForViewer, normalizeCompletionMode, normalizeQuestionCommentConfig, normalizeQuestionHintConfig, normalizeQuestionHintFromEntityRow, normalizeQuestionHintMode, normalizeQuestionnaireOutcomeDisplayRules, normalizeQuestionnaireOutcomesValue, normalizeValidationStrategy, normalizeViewMode, parseQuestionHintPartialFromRecord, parseQuestionnaireOutcomeDisplayColor, readHintFieldsFromRecord, resolveWidgetNodeFromMetaDataDefinitionInterface, stripQuestionBankInterfaceMetadata, toDisplaySettings, toPrePostConfig };
1632
+ export type { AXMAssessmentCaseStatus, AXMAssessmentManagementAssessmentCaseEntityModel, AXMAssessmentManagementAssessmentSessionEntityModel, AXMAssessmentManagementQuestionBankItemEntityModel, AXMAssessmentManagementQuestionnaireEntityModel, AXMAssessmentQuestionCommentConfig, AXMAssessmentQuestionHintConfig, AXMAssessmentQuestionHintConfigOff, AXMAssessmentQuestionHintConfigShown, AXMAssessmentQuestionHintMode, AXMAssessmentQuestionHintPartial, AXMAssessmentQuestionHintVisualMode, AXMAssessmentSessionRole, AXMAssessmentSessionStatus, AXMQuestionBankItemInterfaceMetadata, AXMQuestionBankItemInterfaceValue, AXMQuestionnaireViewerServiceConfig, AXMQuestionnaireViewerServiceResult, PostQuestionnaireConfig, PrePostConfig, PrePostContentValue, PreQuestionnaireConfig, QuestionnaireCompletionMode, QuestionnaireEntityDisplaySettings, QuestionnaireOutcomeDisplayColor, QuestionnaireOutcomeDisplayEmphasis, QuestionnaireOutcomeDisplayIcon, QuestionnaireOutcomeDisplayOperator, QuestionnaireOutcomeDisplayRule, QuestionnaireOutcomeItem, QuestionnaireOutcomeResultKind, QuestionnaireOutcomeSection, QuestionnaireOutcomeValues, QuestionnaireOutcomesValue };