@openhi/constructs 0.0.159 → 0.0.160

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/lib/index.d.ts CHANGED
@@ -23,7 +23,7 @@ import { Distribution, Function as Function$1, DistributionProps, CachePolicyPro
23
23
  import { StateMachine } from 'aws-cdk-lib/aws-stepfunctions';
24
24
  import { RenamableEntityType } from '@openhi/workflows';
25
25
  export { ControlPlaneOwningDeleteCompleteV1, ControlPlaneOwningDeleteCompleteV1Detail, ControlPlaneOwningDeleteFailedV1, ControlPlaneOwningDeleteFailedV1Detail, ControlPlaneOwningDeleteV1, ControlPlaneOwningDeleteV1Detail, ControlPlaneRenameCompleteV1, ControlPlaneRenameCompleteV1Detail, ControlPlaneRenameFailedV1, ControlPlaneRenameFailedV1Detail, ControlPlaneRenameV1, ControlPlaneRenameV1Detail, OPENHI_DATA_SOURCE, OPENHI_OPS_SOURCE, OWNING_ENTITY_TYPE, OwningEntityType, PlatformDeploymentCompletedV1, PlatformSystemDataSeededV1, RENAMABLE_ENTITY_TYPE, RenamableEntityType } from '@openhi/workflows';
26
- import { PlatformRoleCode, Patient, Practitioner, Observation, Encounter, Account } from '@openhi/types';
26
+ import { PlatformRoleCode, Patient, Practitioner, Observation, Encounter, Account, Location, Organization, Coverage, Appointment, Condition, Procedure, Claim, PaymentNotice, Practitioner_Qualification } from '@openhi/types';
27
27
  import { PostConfirmationTriggerEvent } from 'aws-lambda';
28
28
 
29
29
  /*******************************************************************************
@@ -521,6 +521,44 @@ interface RenameCascadeFinalizeOutput {
521
521
  /** Env var the construct uses to inject the ops event bus name into the finalize Lambda. */
522
522
  declare const RENAME_CASCADE_OPS_EVENT_BUS_ENV_VAR: "RENAME_CASCADE_OPS_EVENT_BUS_NAME";
523
523
 
524
+ /**
525
+ * Kind of actor performing the operation (for audit trail and UI).
526
+ */
527
+ type OpenHiActorType = "human" | "internal-system" | "external-system";
528
+ /**
529
+ * Adapter or entry point that created the context (for audit and metrics).
530
+ */
531
+ type OpenHiContextSource = "rest" | "graphql" | "step-function";
532
+ /**
533
+ * OpenHI context: tenant/workspace scope and acting actor (human or system).
534
+ * Shared by REST, GraphQL, and Step Function adapters when calling the data operations layer.
535
+ * Used for tenant/workspace isolation, audit records, and merging into FHIR data on mutations.
536
+ *
537
+ * @see sites/www-docs/content/packages/@openhi/constructs/rest-api.md — Middleware (REST)
538
+ */
539
+ interface OpenHiContext {
540
+ /** Tenant (organization) scope; used for multi-tenant isolation and data partition. */
541
+ tenantId: string;
542
+ /** Workspace scope within the tenant; used for workspace-level isolation and data partition. */
543
+ workspaceId: string;
544
+ /** Timestamp of the request/operation (e.g. ISO 8601). */
545
+ date: string;
546
+ /** Stable identifier for the actor (human, internal system, or external integration). */
547
+ actorId: string;
548
+ /** Display name for the actor for audit and UI (e.g. "Jane Doe", "FHIR Sync Service"). */
549
+ actorName: string;
550
+ /** Kind of actor; optional, for audit and display. */
551
+ actorType?: OpenHiActorType;
552
+ /** Role scope for Configuration and other role-scoped resources; optional. */
553
+ roleId?: string;
554
+ /** Request or correlation ID for tracing across adapters and logs; optional. */
555
+ requestId?: string;
556
+ /** Adapter that created this context (rest, graphql, step-function); optional. */
557
+ source?: OpenHiContextSource;
558
+ /** OAuth or client identifier when the caller is an application; optional. */
559
+ clientId?: string;
560
+ }
561
+
524
562
  /**
525
563
  * @see sites/www-docs/content/packages/@openhi/constructs/workflows/control-plane/seed-demo-data/events.md
526
564
  */
@@ -551,16 +589,54 @@ declare const DEMO_PERIOD: {
551
589
  readonly start: "2026-01-01T00:00:00Z";
552
590
  };
553
591
 
554
- /** Placeholder Tenant id seeded by the workflow as the dev-user `currentTenant`. */
592
+ /**
593
+ * Placeholder Tenant id.
594
+ *
595
+ * The placeholder is a **system sentinel**, not a user-facing demo
596
+ * tenant. It exists for two reasons:
597
+ *
598
+ * 1. `pre-token-generation.handler.ts` stamps this id into the
599
+ * JWT `ohi_tid` claim when a User cannot be resolved (no
600
+ * DynamoDB record, missing `currentTenant`/`currentWorkspace`,
601
+ * etc.) so the token still satisfies `openHiContextMiddleware`
602
+ * and downstream APIs return a deterministic 403 instead of
603
+ * crashing on a missing claim.
604
+ * 2. The seed workflow re-asserts a Tenant + Workspace record at
605
+ * these ids so the JWT fallback dereferences to a real DynamoDB
606
+ * row (avoids dangling references on read paths that follow
607
+ * `Tenant/placeholder-tenant-id`).
608
+ *
609
+ * Dev users' `currentTenant`/`currentWorkspace` no longer point here
610
+ * (issue #1301) — they point at the on-site demo tenant below. The
611
+ * placeholder records remain seeded purely as a structural sentinel.
612
+ */
555
613
  declare const PLACEHOLDER_TENANT_ID = "placeholder-tenant-id";
556
- /** Placeholder Workspace id seeded by the workflow as the dev-user `currentWorkspace`. */
614
+ /** Placeholder Workspace id. See {@link PLACEHOLDER_TENANT_ID}. */
557
615
  declare const PLACEHOLDER_WORKSPACE_ID = "placeholder-workspace-id";
616
+ /**
617
+ * Stable Tenant id for the on-site-medical UAT demo tenant
618
+ * (issue #1301). Downstream demo-data tickets (#1302 providers,
619
+ * #1303 facilities, #1304 patients/encounters, etc.) import this
620
+ * constant to attach their fixture resources without re-discovering
621
+ * the tenant.
622
+ *
623
+ * This is the tenant every seeded dev user lands on at sign-in
624
+ * (`currentTenant` on the seeded User resource). UAT testers see
625
+ * "On-Site Medical — Demo" in the Tenant Switcher on first sign-in.
626
+ */
627
+ declare const ON_SITE_DEMO_TENANT_ID = "on-site-demo-tenant";
628
+ /**
629
+ * Stable Workspace id under {@link ON_SITE_DEMO_TENANT_ID}. Single
630
+ * workspace for v1 UAT; workspace topology (per business line vs
631
+ * per jurisdiction) is deferred pending an ADR (#1301 design note).
632
+ */
633
+ declare const ON_SITE_DEMO_WORKSPACE_ID = "on-site-demo-workspace";
558
634
  /**
559
635
  * Dev-user descriptor. Every entry produces:
560
636
  * - one Cognito user (idempotent create-then-skip),
561
637
  * - one DynamoDB User record (id = `dev-<email-local-part>`),
562
- * - four Memberships (placeholder + the three demo tenants),
563
- * - four `tenant-admin` RoleAssignments (one per tenant the user
638
+ * - five Memberships (placeholder + on-site demo + three demo tenants),
639
+ * - five `tenant-admin` RoleAssignments (one per tenant the user
564
640
  * belongs to),
565
641
  * - one `system-admin` RoleAssignment scoped to {@link PLATFORM_SCOPE_TENANT_ID}.
566
642
  */
@@ -569,6 +645,10 @@ interface DemoDevUser {
569
645
  readonly id: string;
570
646
  /** Email used as the Cognito `Username` and as the seed for the password algorithm. */
571
647
  readonly email: string;
648
+ /** Given name, populated on the seeded User FHIR resource as `name[0].given[0]`. */
649
+ readonly firstName: string;
650
+ /** Family name, populated on the seeded User FHIR resource as `name[0].family`. */
651
+ readonly lastName: string;
572
652
  }
573
653
  /**
574
654
  * Hardcoded dev-user roster. Adding a new developer is a one-line
@@ -579,8 +659,9 @@ interface DemoDevUser {
579
659
  declare const DEV_USERS: ReadonlyArray<DemoDevUser>;
580
660
  /**
581
661
  * A single workspace inside a demo tenant. The mixed tenant has two
582
- * workspaces (wound-care and primary-care sub-workspaces); the other
583
- * two tenants have one each.
662
+ * workspaces (wound-care and primary-care sub-workspaces); every
663
+ * other tenant (placeholder, on-site demo, wound-care, primary-care)
664
+ * has exactly one.
584
665
  */
585
666
  interface DemoWorkspaceSpec {
586
667
  /** Stable id (DynamoDB record id; also drives the canonical OHI URN). */
@@ -601,9 +682,10 @@ interface DemoWorkspaceSpec {
601
682
  */
602
683
  interface DemoTenantSpec {
603
684
  /**
604
- * Scenario slug — `placeholder`, `demo-wound-care`, `demo-primary-care`,
605
- * `demo-mixed`. The placeholder tenant's slug is `placeholder`; the
606
- * three demo tenants use `demo-*` slugs.
685
+ * Scenario slug — `placeholder`, `on-site-demo`, `demo-wound-care`,
686
+ * `demo-primary-care`, `demo-mixed`. The placeholder tenant uses
687
+ * `placeholder`; the on-site UAT demo tenant uses `on-site-demo`
688
+ * (#1301); the three demo tenants use `demo-*` slugs.
607
689
  */
608
690
  readonly scenario: string;
609
691
  /** Stable id (DynamoDB record id; also drives the canonical OHI URN). */
@@ -614,17 +696,22 @@ interface DemoTenantSpec {
614
696
  readonly workspaces: ReadonlyArray<DemoWorkspaceSpec>;
615
697
  }
616
698
  /**
617
- * The full demo-tenant graph. Four entries: the placeholder tenant the
618
- * JWT-claim fallback resolves to, plus the three v1 demo scenarios
619
- * (OPS-009 §"v1 scenarios"):
699
+ * The full demo-tenant graph. Five entries: the placeholder tenant
700
+ * the JWT-claim fallback resolves to, the on-site-medical UAT demo
701
+ * tenant every dev user lands on at sign-in (#1301), and the three
702
+ * v1 demo scenarios (OPS-009 §"v1 scenarios"):
620
703
  *
621
704
  * 0. Placeholder tenant — dereferences the JWT-claim fallback in
622
- * `pre-token-generation.handler.ts` and acts as every dev user's
623
- * `currentTenant`/`currentWorkspace` so Post-Confirmation skips
624
- * default provisioning when a seeded User signs in.
625
- * 1. Single-workspace wound-care tenant.
626
- * 2. Single-workspace primary-care tenant.
627
- * 3. Two-workspace mixed tenant exercises the cross-workspace
705
+ * `pre-token-generation.handler.ts`. Carries no user-facing
706
+ * content; exists purely so the JWT fallback resolves to a real
707
+ * DynamoDB row instead of dangling.
708
+ * 1. On-site-medical UAT demo tenant — every seeded dev user's
709
+ * `currentTenant`/`currentWorkspace`. Downstream demo-data
710
+ * tickets (providers, facilities, patients) attach to this
711
+ * tenant via {@link ON_SITE_DEMO_TENANT_ID}.
712
+ * 2. Single-workspace wound-care tenant.
713
+ * 3. Single-workspace primary-care tenant.
714
+ * 4. Two-workspace mixed tenant — exercises the cross-workspace
628
715
  * isolation flow that single-workspace tenants cannot.
629
716
  */
630
717
  declare const DEMO_TENANT_SPECS: ReadonlyArray<DemoTenantSpec>;
@@ -2769,6 +2856,111 @@ interface DemoWorkspaceDataPlaneFixtures {
2769
2856
  readonly observations: ReadonlyArray<Observation>;
2770
2857
  readonly encounters: ReadonlyArray<Encounter>;
2771
2858
  readonly accounts: ReadonlyArray<Account>;
2859
+ /**
2860
+ * Facility (FHIR Location) fixtures. Optional — only the
2861
+ * on-site UAT demo workspace seeds facilities (#1303). Defaults
2862
+ * to the empty array when omitted.
2863
+ */
2864
+ readonly locations?: ReadonlyArray<Location>;
2865
+ /**
2866
+ * Directory Organization fixtures (#1308). Optional — only the
2867
+ * on-site UAT demo workspace seeds Organizations today. Covers
2868
+ * DME suppliers and insurance payor contacts; defaults to the
2869
+ * empty array when omitted.
2870
+ */
2871
+ readonly organizations?: ReadonlyArray<Organization>;
2872
+ /**
2873
+ * Insurance Coverage fixtures (#1304). Optional — only the
2874
+ * on-site UAT demo workspace seeds Coverages today. Defaults to
2875
+ * the empty array when omitted. Coverages reference their
2876
+ * `beneficiary` Patient via `Patient/<id>`, so the seeder writes
2877
+ * Coverages after Patients in the same workspace pass.
2878
+ */
2879
+ readonly coverages?: ReadonlyArray<Coverage>;
2880
+ /**
2881
+ * Optional dynamic Patient builder. Resolved by the seeder at
2882
+ * write time so per-tenant fixtures that depend on other
2883
+ * fixture modules (cross-module references between blocks +
2884
+ * facilities + facility patients) can be evaluated lazily,
2885
+ * avoiding the TDZ that hits when one fixture module reads a
2886
+ * top-level const from another mid-cycle. When set, the seeder
2887
+ * iterates `buildPatients()` instead of `patients`.
2888
+ */
2889
+ readonly buildPatients?: () => ReadonlyArray<Patient>;
2890
+ /**
2891
+ * Optional dynamic Coverage builder. Same lazy-evaluation
2892
+ * contract as {@link buildPatients}.
2893
+ */
2894
+ readonly buildCoverages?: () => ReadonlyArray<Coverage>;
2895
+ /**
2896
+ * Optional dynamic Appointment builder. Resolved by the seeder
2897
+ * with `baseContext` so block-style Appointments can anchor
2898
+ * their recurrence to the current ISO week (#1303 — block
2899
+ * Appointments must show up at a useful position on the demo
2900
+ * calendar relative to "today"). When omitted, no Appointments
2901
+ * are written for this workspace.
2902
+ */
2903
+ readonly buildAppointments?: (baseContext: OpenHiContext) => ReadonlyArray<Appointment>;
2904
+ /**
2905
+ * Optional static wound / problem Condition fixtures (#1306).
2906
+ * Wound Conditions reference their Patient via `subject` and
2907
+ * sit upstream of wound-exam Observations (which reference the
2908
+ * Condition via `focus`) and wound Procedures (which reference
2909
+ * the Condition via `reasonReference`). The seeder writes
2910
+ * Conditions immediately after Patients so the reference chain
2911
+ * resolves cleanly on read paths.
2912
+ */
2913
+ readonly conditions?: ReadonlyArray<Condition>;
2914
+ /**
2915
+ * Optional static Procedure fixtures (#1306). Procedures
2916
+ * reference their Encounter via `encounter`, their wound
2917
+ * Condition via `reasonReference[0]`, and their Patient via
2918
+ * `subject`. Written after Encounters and Conditions so the
2919
+ * reference chain resolves cleanly on read paths.
2920
+ */
2921
+ readonly procedures?: ReadonlyArray<Procedure>;
2922
+ /**
2923
+ * Optional dynamic Condition builder. Same lazy-evaluation
2924
+ * contract as {@link buildPatients} — used so the on-site
2925
+ * encounter fixtures can anchor wound Conditions to the same
2926
+ * `baseContext.date` window the encounter dates are derived
2927
+ * from.
2928
+ */
2929
+ readonly buildConditions?: (baseContext: OpenHiContext) => ReadonlyArray<Condition>;
2930
+ /**
2931
+ * Optional dynamic Encounter builder. Same lazy-evaluation
2932
+ * contract as {@link buildPatients} — encounter dates depend on
2933
+ * `baseContext.date` (past block occurrences for facility
2934
+ * patients, past visit cadence for home-health patients).
2935
+ */
2936
+ readonly buildEncounters?: (baseContext: OpenHiContext) => ReadonlyArray<Encounter>;
2937
+ /**
2938
+ * Optional dynamic Observation builder. Same lazy-evaluation
2939
+ * contract as {@link buildPatients} — wound-exam Observations
2940
+ * reference encounters that depend on `baseContext.date`.
2941
+ */
2942
+ readonly buildObservations?: (baseContext: OpenHiContext) => ReadonlyArray<Observation>;
2943
+ /**
2944
+ * Optional dynamic Procedure builder. Same lazy-evaluation
2945
+ * contract as {@link buildPatients} — wound Procedures
2946
+ * reference encounters that depend on `baseContext.date`.
2947
+ */
2948
+ readonly buildProcedures?: (baseContext: OpenHiContext) => ReadonlyArray<Procedure>;
2949
+ /**
2950
+ * Optional dynamic Claim builder (#1307). Claims reference
2951
+ * the encounter they bill via `item[].encounter`, the
2952
+ * patient's primary Coverage via `insurance[0].coverage`, and
2953
+ * therefore depend on the encounter + coverage builders above.
2954
+ * Written after Procedures so every reference chain resolves
2955
+ * cleanly on read paths.
2956
+ */
2957
+ readonly buildClaims?: (baseContext: OpenHiContext) => ReadonlyArray<Claim>;
2958
+ /**
2959
+ * Optional dynamic PaymentNotice builder (#1307). One
2960
+ * PaymentNotice per accepted Claim; references the Claim via
2961
+ * `request` + `payment`. Written after Claims.
2962
+ */
2963
+ readonly buildPaymentNotices?: (baseContext: OpenHiContext) => ReadonlyArray<PaymentNotice>;
2772
2964
  }
2773
2965
  /**
2774
2966
  * Per-workspace fixtures the data-plane phase writes on every fire.
@@ -2808,6 +3000,1041 @@ declare const DEMO_DATA_PLANE_FIXTURES: ReadonlyArray<DemoWorkspaceDataPlaneFixt
2808
3000
  */
2809
3001
  declare const PLATFORM_SCOPE_TENANT_ID = "platform";
2810
3002
 
3003
+ /**
3004
+ * @see sites/www-docs/content/packages/@openhi/constructs/workflows/control-plane/seed-demo-data/on-site-demo-blocks.md
3005
+ *
3006
+ * Hand-authored weekly scheduling block fixtures the
3007
+ * `seed-demo-data` workflow upserts into the on-site-medical UAT
3008
+ * demo tenant ({@link ON_SITE_DEMO_TENANT_ID} +
3009
+ * {@link ON_SITE_DEMO_WORKSPACE_ID}) on every non-prod deploy
3010
+ * (issue #1303).
3011
+ *
3012
+ * Modelling choice: blocks are represented as FHIR
3013
+ * `Appointment` resources with `appointmentType.code = "block"`
3014
+ * (matching the on-site app's `isBlockAppointment` helper at
3015
+ * `sites/app-ehr/src/types/appointment.ts`). The on-site
3016
+ * calendar reads `Appointment` records, not `Schedule`/`Slot`
3017
+ * resources, so seeding `Appointment`s is the path that
3018
+ * actually renders something for UAT testers. Each block is
3019
+ * "recurring weekly" — we materialize that as a window of
3020
+ * concrete weekly occurrences anchored to the week containing
3021
+ * the seeder's `baseContext.date`, so blocks always show up at
3022
+ * a useful position relative to "today" on the demo schedule.
3023
+ *
3024
+ * Topology — issue #1303 design:
3025
+ * - Facility 1 (Druid Hills Skilled Nursing) — TWO weekly
3026
+ * blocks: Tuesday + Thursday (the high-volume facility).
3027
+ * - Facility 2 (Buckhead Rehabilitation Center) — one
3028
+ * weekly block on Wednesday.
3029
+ * - Facility 3 (Decatur Senior Living) — one weekly block
3030
+ * on Monday.
3031
+ *
3032
+ * Each block is assigned one doctor and one scribe from the
3033
+ * demo provider pool (#1302). Doctors are distributed so no
3034
+ * single doctor covers all four blocks. Capacities accommodate
3035
+ * 12-20 patients each (the upstream patient-distribution
3036
+ * ticket #1304 reads {@link ON_SITE_DEMO_BLOCK_CAPACITY_EXTENSION_URL}
3037
+ * to spread patients across blocks).
3038
+ */
3039
+ /**
3040
+ * Extension URL stamped on every block Appointment carrying the
3041
+ * block's intended capacity (number of patients the block can
3042
+ * accommodate). FHIR Appointment has no first-class capacity
3043
+ * field, so we publish a local URL under the on-site
3044
+ * convention.
3045
+ */
3046
+ declare const ON_SITE_DEMO_BLOCK_CAPACITY_EXTENSION_URL = "https://on-site-medical.app/fhir/StructureDefinition/block-capacity";
3047
+ /** Coding system the on-site app expects on Appointment.appointmentType. */
3048
+ declare const ON_SITE_APPOINTMENT_TYPE_SYSTEM = "https://onsite-medical.org/appointment-type";
3049
+ /**
3050
+ * Weeks of past occurrences materialized per block. Past
3051
+ * occurrences let UAT testers exercise "history" views without
3052
+ * waiting through time.
3053
+ */
3054
+ declare const BLOCK_OCCURRENCE_WEEKS_PAST = 4;
3055
+ /**
3056
+ * Weeks of future occurrences materialized per block. Future
3057
+ * occurrences cover the calendar's default "month ahead"
3058
+ * window plus room for testers to navigate forward.
3059
+ */
3060
+ declare const BLOCK_OCCURRENCE_WEEKS_FUTURE = 8;
3061
+ /**
3062
+ * Total weekly occurrences materialized per block template
3063
+ * (past + current week + future). Re-fires with the same
3064
+ * `baseContext.date` produce byte-identical occurrence ids.
3065
+ */
3066
+ declare const BLOCK_OCCURRENCES_PER_TEMPLATE: number;
3067
+ /**
3068
+ * ISO day-of-week index used by {@link BlockTemplate.dayOfWeek}.
3069
+ * 1 = Monday, ..., 7 = Sunday (matches ISO 8601 / FHIR usage).
3070
+ */
3071
+ type IsoDayOfWeek = 1 | 2 | 3 | 4 | 5 | 6 | 7;
3072
+ /** Stable block-template ids in dispatch order. Re-exported for downstream tickets. */
3073
+ declare const ON_SITE_DEMO_BLOCK_TEMPLATE_IDS: ReadonlyArray<string>;
3074
+ /**
3075
+ * Materialize every block template's weekly occurrences,
3076
+ * anchored to the Monday of the ISO week containing
3077
+ * `referenceIso` (typically `baseContext.date`). Each template
3078
+ * produces {@link BLOCK_OCCURRENCES_PER_TEMPLATE} appointments:
3079
+ * `BLOCK_OCCURRENCE_WEEKS_PAST` past weeks, the current week,
3080
+ * and `BLOCK_OCCURRENCE_WEEKS_FUTURE` future weeks. With the
3081
+ * default window of 4 + 1 + 8 = 13 occurrences per template ×
3082
+ * 4 templates, the seeder writes 52 block Appointments per
3083
+ * fire.
3084
+ *
3085
+ * Idempotency: ids are derived from `(templateId, weekOffset)`,
3086
+ * not from a wall-clock timestamp, so re-fires of the seeder
3087
+ * with the same `referenceIso` upsert the same Appointment
3088
+ * records (no duplicates). A re-fire with a different
3089
+ * `referenceIso` (e.g., the deploy event days later) writes a
3090
+ * new set of occurrences and leaves prior weeks' records as
3091
+ * orphaned past history — that is acceptable for UAT.
3092
+ */
3093
+ declare const buildOnSiteDemoBlockAppointments: (referenceIso: string) => ReadonlyArray<Appointment>;
3094
+ /**
3095
+ * Stable per-template (doctor, scribe) pair for the on-site
3096
+ * block schedule. Downstream tickets (e.g., the patient-
3097
+ * distribution helper in #1304) call this to look up which
3098
+ * provider pair staffs a given block without re-reading the
3099
+ * block-template list.
3100
+ */
3101
+ declare const findOnSiteDemoBlockTemplate: (templateId: string) => {
3102
+ readonly id: string;
3103
+ readonly facilityId: string;
3104
+ readonly displayName: string;
3105
+ readonly doctorId: string;
3106
+ readonly scribeId: string;
3107
+ readonly capacity: number;
3108
+ readonly dayOfWeek: IsoDayOfWeek;
3109
+ } | undefined;
3110
+
3111
+ /**
3112
+ * @see sites/www-docs/content/packages/@openhi/constructs/workflows/control-plane/seed-demo-data/on-site-demo-claims.md
3113
+ *
3114
+ * Hand-authored Claim + PaymentNotice fixtures the `seed-demo-data`
3115
+ * workflow upserts into the on-site-medical UAT demo tenant
3116
+ * ({@link ON_SITE_DEMO_TENANT_ID} + {@link ON_SITE_DEMO_WORKSPACE_ID})
3117
+ * on every non-prod deploy (issue #1307).
3118
+ *
3119
+ * Topology — issue #1307 design:
3120
+ * - For each historical encounter (#1306), decide deterministically
3121
+ * whether the visit is billed or explicitly unbilled. The unbilled
3122
+ * decision is recorded by the *absence* of a Claim resource on
3123
+ * that encounter id; the on-site UI can derive "unbilled" by
3124
+ * listing claims and finding no match for an encounter.
3125
+ * - Billed encounters get exactly one {@link Claim} resource keyed
3126
+ * `<encounter-id>-claim`. The Claim carries:
3127
+ * - `status: "active"` (FHIR R4 enum only has
3128
+ * `active|cancelled|draft|entered-in-error`, none of which
3129
+ * encode our domain workflow status — see
3130
+ * {@link CLAIM_WORKFLOW_STATUS_EXTENSION_URL}).
3131
+ * - `claim-workflow-status` extension carrying the domain
3132
+ * status: `submitted` / `accepted` / `rejected` /
3133
+ * `reworked` / `resubmitted`.
3134
+ * - `insurance[0].coverage` referencing the patient's primary
3135
+ * {@link Coverage} (which is what carries the actual payor).
3136
+ * - `item[]` carrying one line: a wound-debridement CPT for
3137
+ * encounters that have a procedure (#1306), otherwise an
3138
+ * E/M visit code (99213/99214/99215) chosen deterministically.
3139
+ * - `total` denormalised from the single line item's `net`.
3140
+ * - Accepted claims get a {@link PaymentNotice} resource keyed
3141
+ * `<encounter-id>-payment` whose `paymentStatus` CodeableConcept
3142
+ * carries the domain payment status: `partial` / `full` /
3143
+ * `write-off`. Submitted / rejected / reworked / resubmitted
3144
+ * claims do not emit a PaymentNotice — the "in flux" subset is
3145
+ * specifically every `submitted` claim with no PaymentNotice.
3146
+ *
3147
+ * Modelling choices:
3148
+ * - **Single Claim per encounter** (not a chain). The "reworked"
3149
+ * status implies history (original rejected → resubmitted),
3150
+ * denormalised onto the same Claim via the
3151
+ * `claim-workflow-status` extension. On-site's current UI
3152
+ * (`sites/app-ehr/src/pages/patient/tabs/insurance/ClaimsTable.tsx`)
3153
+ * shows a single status badge per claim and does not need a
3154
+ * chain to render correctly.
3155
+ * - **PaymentNotice over a denormalised payment summary** —
3156
+ * PaymentNotice operations already exist in the data layer
3157
+ * (`packages/@openhi/constructs/src/data/operations/data/paymentnotice/`),
3158
+ * so we lean on real FHIR resources rather than adding a new
3159
+ * extension schema.
3160
+ * - **Domain status as an extension** — FHIR R4 `Claim.status`
3161
+ * does not include the workflow-status concepts the demo
3162
+ * needs, and stamping a non-standard string onto the enum
3163
+ * would fail the zod schema. The extension approach mirrors
3164
+ * how on-site already encodes domain state on other
3165
+ * resources (hospice status, QMB status, care-context, etc.).
3166
+ *
3167
+ * Distribution targets — chosen so all 5 workflow statuses plus
3168
+ * unbilled appear in the demo data, with payment-status variety
3169
+ * on the accepted bucket and a meaningful "in flux" submitted
3170
+ * bucket:
3171
+ * - ~15% of encounters are unbilled (no Claim)
3172
+ * - ~20% of claims are submitted (no PaymentNotice — "in flux")
3173
+ * - ~45% of claims are accepted (with PaymentNotice)
3174
+ * - ~40% of accepted: partial payment
3175
+ * - ~40% of accepted: full payment
3176
+ * - ~20% of accepted: write-off
3177
+ * - ~10% of claims are rejected
3178
+ * - ~15% of claims are reworked
3179
+ * - ~10% of claims are resubmitted
3180
+ *
3181
+ * Ids are deterministic — re-fires upsert the same records,
3182
+ * matching the workflow's idempotency contract.
3183
+ */
3184
+ /**
3185
+ * Extension URL stamped on every seeded Claim recording the
3186
+ * domain workflow status — submitted / accepted / rejected /
3187
+ * reworked / resubmitted. FHIR R4 `Claim.status` only carries
3188
+ * the lifecycle states `active|cancelled|draft|entered-in-error`,
3189
+ * so the demo's workflow status sits on this extension instead
3190
+ * of squeezing into the base enum.
3191
+ */
3192
+ declare const CLAIM_WORKFLOW_STATUS_EXTENSION_URL = "https://on-site-medical.app/fhir/StructureDefinition/claim-workflow-status";
3193
+ /** Sub-extension under {@link CLAIM_WORKFLOW_STATUS_EXTENSION_URL}. */
3194
+ declare const CLAIM_WORKFLOW_STATUS_VALUE_SUB_EXTENSION_URL = "status";
3195
+ /** Sub-extension under {@link CLAIM_WORKFLOW_STATUS_EXTENSION_URL}. */
3196
+ declare const CLAIM_WORKFLOW_STATUS_LAST_TRANSITION_SUB_EXTENSION_URL = "lastTransition";
3197
+ /**
3198
+ * Domain workflow status values written to
3199
+ * {@link CLAIM_WORKFLOW_STATUS_EXTENSION_URL}.
3200
+ */
3201
+ declare const CLAIM_WORKFLOW_STATUS: {
3202
+ readonly SUBMITTED: "submitted";
3203
+ readonly ACCEPTED: "accepted";
3204
+ readonly REJECTED: "rejected";
3205
+ readonly REWORKED: "reworked";
3206
+ readonly RESUBMITTED: "resubmitted";
3207
+ };
3208
+ type ClaimWorkflowStatus = (typeof CLAIM_WORKFLOW_STATUS)[keyof typeof CLAIM_WORKFLOW_STATUS];
3209
+ /**
3210
+ * Domain payment status values written to
3211
+ * {@link PaymentNotice.paymentStatus} on accepted claims.
3212
+ */
3213
+ declare const PAYMENT_STATUS: {
3214
+ readonly PARTIAL: "partial";
3215
+ readonly FULL: "full";
3216
+ readonly WRITE_OFF: "write-off";
3217
+ };
3218
+ type PaymentStatus = (typeof PAYMENT_STATUS)[keyof typeof PAYMENT_STATUS];
3219
+ /** CodeSystem URL stamped on the {@link PaymentNotice.paymentStatus} coding. */
3220
+ declare const PAYMENT_STATUS_SYSTEM = "https://on-site-medical.app/fhir/CodeSystem/payment-status";
3221
+ /**
3222
+ * Test seam — clear caches between test invocations so stale
3223
+ * state from a prior seed run does not leak into the next.
3224
+ */
3225
+ declare const __resetOnSiteDemoClaimCachesForTests: () => void;
3226
+ /**
3227
+ * Materialise every Claim resource for the on-site UAT demo
3228
+ * workspace. Walks every historical encounter (#1306); skips the
3229
+ * ~15% flagged as unbilled. Returns an empty array if no
3230
+ * encounter metadata is available (intake-only deployments).
3231
+ */
3232
+ declare const buildOnSiteDemoClaims: (referenceIso: string) => ReadonlyArray<Claim>;
3233
+ /**
3234
+ * Materialise every PaymentNotice resource for the on-site UAT
3235
+ * demo workspace. One per `accepted` Claim (no PaymentNotice on
3236
+ * submitted / rejected / reworked / resubmitted — submitted-with-
3237
+ * no-payment is the "in flux" subset the AC asks for).
3238
+ */
3239
+ declare const buildOnSiteDemoPaymentNotices: (referenceIso: string) => ReadonlyArray<PaymentNotice>;
3240
+ /**
3241
+ * Stable list of every Claim id seeded for the on-site UAT demo
3242
+ * workspace, anchored to `referenceIso`. Order matches the
3243
+ * underlying encounter list. Downstream tickets (#1308 — billing
3244
+ * directory, etc.) read this to fan out per-claim work.
3245
+ */
3246
+ declare const onSiteDemoClaimIds: (referenceIso: string) => ReadonlyArray<string>;
3247
+ /**
3248
+ * Stable list of every PaymentNotice id seeded for the on-site
3249
+ * UAT demo workspace, anchored to `referenceIso`.
3250
+ */
3251
+ declare const onSiteDemoPaymentNoticeIds: (referenceIso: string) => ReadonlyArray<string>;
3252
+ /**
3253
+ * Encounter ids the seeder flags as unbilled (no Claim emitted).
3254
+ * Exposed so tests and downstream tickets can assert the
3255
+ * unbilled cut without re-deriving the hash.
3256
+ */
3257
+ declare const onSiteDemoUnbilledEncounterIds: (referenceIso: string) => ReadonlyArray<string>;
3258
+ /**
3259
+ * Encounter ids the seeder flags as billed (one Claim emitted per
3260
+ * id). Exposed so tests and downstream tickets can fan out per
3261
+ * billed encounter without re-deriving the hash.
3262
+ */
3263
+ declare const onSiteDemoBilledEncounterIds: (referenceIso: string) => ReadonlyArray<string>;
3264
+
3265
+ /**
3266
+ * FHIR `Organization.type[0].coding.system` for the standard
3267
+ * organization-type valueset. Carrying the standard coding alongside
3268
+ * the domain category keeps the bodies interoperable.
3269
+ */
3270
+ declare const FHIR_ORGANIZATION_TYPE_SYSTEM = "http://terminology.hl7.org/CodeSystem/organization-type";
3271
+ /**
3272
+ * On-site domain category system for directory categorisation —
3273
+ * separates `dme-supplier` from `insurance-payor` so the directory
3274
+ * UI's category filter can match a single coding without parsing
3275
+ * the FHIR-standard `prov` / `pay` codes.
3276
+ */
3277
+ declare const ON_SITE_DIRECTORY_CATEGORY_SYSTEM = "https://on-site-medical.app/fhir/CodeSystem/directory-category";
3278
+ /** Domain category code stamped on every DME-supplier Organization. */
3279
+ declare const DME_SUPPLIER_CATEGORY_CODE = "dme-supplier";
3280
+ /** Domain category code stamped on every insurance-payor Organization. */
3281
+ declare const INSURANCE_PAYOR_CATEGORY_CODE = "insurance-payor";
3282
+ /**
3283
+ * Sub-category coding system stamped on the payor Organization's
3284
+ * `type[1]` so the directory UI can group payors by plan family
3285
+ * (commercial / Medicare / Medicare Advantage) without re-parsing
3286
+ * the display name. Mirrors the
3287
+ * {@link COVERAGE_PAYOR_TYPE_SYSTEM} convention used on Coverage
3288
+ * resources in #1304.
3289
+ */
3290
+ declare const INSURANCE_PAYOR_PLAN_TYPE_SYSTEM = "https://on-site-medical.app/fhir/CodeSystem/payor-plan-type";
3291
+ /** Commercial plan payor (Aetna, Cigna, UnitedHealthcare, etc.). */
3292
+ declare const PAYOR_PLAN_TYPE_COMMERCIAL = "commercial";
3293
+ /** Traditional Medicare (FFS) — single payor. */
3294
+ declare const PAYOR_PLAN_TYPE_MEDICARE = "medicare";
3295
+ /** Medicare Advantage plan payor (Humana MA, Anthem MA, etc.). */
3296
+ declare const PAYOR_PLAN_TYPE_MEDICARE_ADVANTAGE = "medicare-advantage";
3297
+ /** Union of the three plan-type codes a payor Organization may carry. */
3298
+ type PayorPlanType = typeof PAYOR_PLAN_TYPE_COMMERCIAL | typeof PAYOR_PLAN_TYPE_MEDICARE | typeof PAYOR_PLAN_TYPE_MEDICARE_ADVANTAGE;
3299
+ /**
3300
+ * Root extension URL stamped on each `qualification[]` entry recording
3301
+ * the per-state credentialing context (state code + status). FHIR R4
3302
+ * `Practitioner_Qualification` carries `identifier`, `code`, `period`,
3303
+ * and `issuer` natively but has no `status` field; the extension fills
3304
+ * that gap without forking the schema.
3305
+ */
3306
+ declare const PRACTITIONER_CREDENTIALING_EXTENSION_URL = "https://on-site-medical.app/fhir/StructureDefinition/practitioner-credentialing";
3307
+ /** Sub-extension under {@link PRACTITIONER_CREDENTIALING_EXTENSION_URL}. */
3308
+ declare const PRACTITIONER_CREDENTIALING_STATE_SUB_EXTENSION_URL = "state";
3309
+ /** Sub-extension under {@link PRACTITIONER_CREDENTIALING_EXTENSION_URL}. */
3310
+ declare const PRACTITIONER_CREDENTIALING_STATUS_SUB_EXTENSION_URL = "status";
3311
+ /**
3312
+ * Credentialing status values. Mirrors the wound-care industry
3313
+ * convention — credentialing is either active (license current and in
3314
+ * good standing), suspended (under board action), or expired (lapsed
3315
+ * past expiration date).
3316
+ */
3317
+ declare const CREDENTIALING_STATUS: {
3318
+ readonly ACTIVE: "active";
3319
+ readonly SUSPENDED: "suspended";
3320
+ readonly EXPIRED: "expired";
3321
+ };
3322
+ type CredentialingStatus = (typeof CREDENTIALING_STATUS)[keyof typeof CREDENTIALING_STATUS];
3323
+ /**
3324
+ * FHIR `Identifier.system` for a US state medical license. Uses the
3325
+ * on-site-medical URL prefix so the identifier round-trips through
3326
+ * the on-site directory UI without colliding with the NPI system.
3327
+ */
3328
+ declare const STATE_MEDICAL_LICENSE_SYSTEM = "https://on-site-medical.app/fhir/sid/state-medical-license";
3329
+ /** Demo DME-supplier Organizations seeded into the on-site UAT workspace. */
3330
+ declare const ON_SITE_DEMO_DME_SUPPLIERS: ReadonlyArray<Organization>;
3331
+ /** Demo insurance-payor Organizations seeded into the on-site UAT workspace. */
3332
+ declare const ON_SITE_DEMO_INSURANCE_PAYORS: ReadonlyArray<Organization>;
3333
+ /** Stable DME-supplier ids in dispatch order. */
3334
+ declare const onSiteDemoDmeSupplierIds: () => ReadonlyArray<string>;
3335
+ /** Stable insurance-payor ids in dispatch order. */
3336
+ declare const onSiteDemoInsurancePayorIds: () => ReadonlyArray<string>;
3337
+ /**
3338
+ * The full directory Organization pool seeded into the on-site UAT
3339
+ * workspace — DME suppliers followed by insurance payors. The seeder
3340
+ * walks this in order via `buildOrganizations`.
3341
+ */
3342
+ declare const ON_SITE_DEMO_DIRECTORY_ORGANIZATIONS: ReadonlyArray<Organization>;
3343
+ /**
3344
+ * Per-state credentialing spec for one license. The doctor specs in
3345
+ * `on-site-demo-fixtures.ts` carry a small array of these and the
3346
+ * build helper below converts each into a FHIR
3347
+ * `Practitioner_Qualification` entry appended after the "Physician"
3348
+ * qualification.
3349
+ */
3350
+ interface PractitionerCredentialingSpec {
3351
+ /** Two-letter USPS state code (GA, AL, TN, …). */
3352
+ readonly state: string;
3353
+ /** State medical board display label used for `issuer.display`. */
3354
+ readonly stateBoardDisplay: string;
3355
+ /** Opaque license number (real format varies by state). */
3356
+ readonly licenseNumber: string;
3357
+ /** ISO date the license was issued. */
3358
+ readonly issued: string;
3359
+ /** ISO date the license expires (after-end-of-period if expired). */
3360
+ readonly expires: string;
3361
+ readonly status: CredentialingStatus;
3362
+ }
3363
+ /**
3364
+ * Lookup helper: per-state credentialing entries for one doctor. Returns
3365
+ * an empty array if the practitioner id is not a seeded on-site doctor.
3366
+ */
3367
+ declare const practitionerCredentialingForDoctor: (practitionerId: string) => ReadonlyArray<PractitionerCredentialingSpec>;
3368
+ /**
3369
+ * Lookup helper: per-state credentialing entry for a specific
3370
+ * (practitionerId, stateCode) pair. Returns `undefined` when the pair
3371
+ * has no credentialing entry — the on-site UI can render this as
3372
+ * "not credentialed in <state>" without inspecting the full list.
3373
+ */
3374
+ declare const practitionerCredentialingForState: (practitionerId: string, stateCode: string) => PractitionerCredentialingSpec | undefined;
3375
+ /**
3376
+ * Build the FHIR `qualification[]` entries representing per-state
3377
+ * credentialing for one doctor. The on-site demo doctor builder
3378
+ * appends these after the base "Physician" qualification so the
3379
+ * resulting Practitioner.qualification array carries:
3380
+ * - [0] role label (`{text: "Physician"}`)
3381
+ * - [1..N] per-state licenses (one entry per state in the
3382
+ * credentialing map for this doctor)
3383
+ *
3384
+ * Each license entry's identifier is keyed under
3385
+ * {@link STATE_MEDICAL_LICENSE_SYSTEM} so the on-site UI can pluck the
3386
+ * license number without parsing the issuer display.
3387
+ */
3388
+ declare const buildCredentialingQualifications: (practitionerId: string) => ReadonlyArray<Practitioner_Qualification>;
3389
+
3390
+ /**
3391
+ * @see sites/www-docs/content/packages/@openhi/constructs/workflows/control-plane/seed-demo-data/on-site-demo-encounters.md
3392
+ *
3393
+ * Historical Encounter + wound-Condition + wound-exam Observation +
3394
+ * wound-debridement Procedure fixtures the `seed-demo-data` workflow
3395
+ * upserts into the on-site-medical UAT demo tenant
3396
+ * ({@link ON_SITE_DEMO_TENANT_ID} + {@link ON_SITE_DEMO_WORKSPACE_ID})
3397
+ * on every non-prod deploy (issue #1306).
3398
+ *
3399
+ * Topology — issue #1306 design:
3400
+ * - Brand-new intake patients (6 facility intake-only + 3 home
3401
+ * intake-only) get **no** encounters. They carry intake +
3402
+ * insurance only.
3403
+ * - Scheduled facility patients (60 patients across 4 blocks) get
3404
+ * one Encounter per past block occurrence their block ran on
3405
+ * (the `BLOCK_OCCURRENCE_WEEKS_PAST` window = 4 past weeks).
3406
+ * Authored by the block's doctor + scribe, dated to that
3407
+ * occurrence's date.
3408
+ * - Scheduled home-health patients (17 patients) get one Encounter
3409
+ * per past visit at their cadence, stepping back from the
3410
+ * reference date. With cadence 14 days and 4 past visits, the
3411
+ * dates land at -14, -28, -42, -56 days. Authored by the
3412
+ * assigned home-health provider.
3413
+ * - ~70% of scheduled patients carry a "current wound" — one
3414
+ * {@link Condition} per patient with `category.text = "wound"`
3415
+ * plus a deterministic lower-extremity body site and wound type.
3416
+ * Every encounter for that patient records a wound-exam
3417
+ * {@link Observation} (LOINC panel 39135-9) whose components
3418
+ * show progression — length / width / depth shrink (healing) or
3419
+ * grow (worsening) across encounters depending on a
3420
+ * deterministic per-patient trajectory.
3421
+ * - ~25% of wound-bearing patients get one wound-debridement
3422
+ * {@link Procedure} on the most-recent wound encounter, using a
3423
+ * CPT code from the on-site EHR's
3424
+ * `PRESET_PROCEDURES` catalogue (e.g. 97597 Sharp Debridement).
3425
+ *
3426
+ * Modelling choices:
3427
+ * - Encounter `class` follows the on-site EHR's
3428
+ * `ENCOUNTER_CLASS_BY_LOCATION` map at
3429
+ * `sites/app-ehr/src/types/encounter.ts` — facility encounters
3430
+ * carry `code: "IMP", display: "Facility"`; home-health
3431
+ * encounters carry `code: "HH", display: "Home Health"`. The
3432
+ * `system` matches the v3 ActCode URL the on-site EHR reads.
3433
+ * - Wound is encoded as a FHIR {@link Condition} with
3434
+ * `category: [{ text: "wound" }]` (mirroring the on-site
3435
+ * `mapWoundFormToCondition` helper at
3436
+ * `sites/app-ehr/src/pages/visit/encounter/components/AddWoundDialog/woundFormMapping.ts`).
3437
+ * Wound exams are encoded as a single panel Observation per
3438
+ * encounter (LOINC 39135-9), with components for length /
3439
+ * width / depth — matching the on-site `buildWoundExamObservation`
3440
+ * mapper at `sites/app-ehr/src/features/wounds/mappers/woundExamMappers.ts`.
3441
+ * - Procedure carries a CPT code on `code.coding[0]` with system
3442
+ * `http://www.ama-assn.org/go/cpt` (the on-site EHR's
3443
+ * `CPT_SYSTEM` constant). `reasonReference` points at the wound
3444
+ * Condition; `encounter` points at the encounter the procedure
3445
+ * was performed during.
3446
+ *
3447
+ * Ids are deterministic — re-fires upsert the same records,
3448
+ * matching the workflow's idempotency contract.
3449
+ */
3450
+ /** FHIR v3 ActEncounter coding system, used on `Encounter.class`. */
3451
+ declare const ENCOUNTER_CLASS_SYSTEM = "http://terminology.hl7.org/CodeSystem/v3-ActCode";
3452
+ /** Encounter class coding for facility encounters (on-site `ENCOUNTER_CLASS_BY_LOCATION.facility`). */
3453
+ declare const ENCOUNTER_CLASS_FACILITY: {
3454
+ readonly system: "http://terminology.hl7.org/CodeSystem/v3-ActCode";
3455
+ readonly code: "IMP";
3456
+ readonly display: "Facility";
3457
+ };
3458
+ /** Encounter class coding for home-health encounters (on-site `ENCOUNTER_CLASS_BY_LOCATION.home`). */
3459
+ declare const ENCOUNTER_CLASS_HOME_HEALTH: {
3460
+ readonly system: "http://terminology.hl7.org/CodeSystem/v3-ActCode";
3461
+ readonly code: "HH";
3462
+ readonly display: "Home Health";
3463
+ };
3464
+ /** LOINC system URL used on Observation.code.coding entries. */
3465
+ declare const LOINC_SYSTEM = "http://loinc.org";
3466
+ /** SNOMED CT system URL used on Condition.code / bodySite coding entries. */
3467
+ declare const SNOMED_SYSTEM = "http://snomed.info/sct";
3468
+ /** CPT coding system used on Procedure.code (matches on-site `CPT_SYSTEM`). */
3469
+ declare const CPT_SYSTEM = "http://www.ama-assn.org/go/cpt";
3470
+ /**
3471
+ * LOINC panel code for the wound assessment panel (matches on-site
3472
+ * `WOUND_EXAM_PANEL_CODE` at
3473
+ * `sites/app-ehr/src/features/wounds/types/woundExamCodes.ts`).
3474
+ */
3475
+ declare const WOUND_EXAM_PANEL_CODE = "39135-9";
3476
+ /** Display for {@link WOUND_EXAM_PANEL_CODE}. */
3477
+ declare const WOUND_EXAM_PANEL_DISPLAY = "Wound assessment panel";
3478
+ /** LOINC component code for wound length (cm). */
3479
+ declare const WOUND_LENGTH_CODE = "39126-8";
3480
+ /** LOINC component code for wound width (cm). */
3481
+ declare const WOUND_WIDTH_CODE = "39125-0";
3482
+ /** LOINC component code for wound depth (cm). */
3483
+ declare const WOUND_DEPTH_CODE = "39127-6";
3484
+ /** LOINC component code for wound status (declining / stagnant / improving). */
3485
+ declare const WOUND_STATUS_CODE = "72311-4";
3486
+ /**
3487
+ * Hl7 condition-clinical system URL used on Condition.clinicalStatus.
3488
+ */
3489
+ declare const CONDITION_CLINICAL_STATUS_SYSTEM = "http://terminology.hl7.org/CodeSystem/condition-clinical";
3490
+ /**
3491
+ * Number of past home-health visits materialized per scheduled
3492
+ * home-health patient. Matches {@link BLOCK_OCCURRENCE_WEEKS_PAST}
3493
+ * so the facility and home-health populations carry comparable
3494
+ * history depths (~4 historical encounters per scheduled patient).
3495
+ */
3496
+ declare const HOME_HEALTH_VISITS_PAST = 4;
3497
+ /**
3498
+ * Stable wound-Condition id for a patient. The id is the patient
3499
+ * id suffixed with `-wound-001` — one wound per patient suffices
3500
+ * for UAT.
3501
+ */
3502
+ declare const woundConditionIdForPatient: (patientId: string) => string;
3503
+ /**
3504
+ * Test seam — clear the spec cache between test invocations so
3505
+ * stale state from a prior seed run does not leak into the next.
3506
+ * Not part of the public API contract.
3507
+ */
3508
+ declare const __resetOnSiteDemoEncounterCachesForTests: () => void;
3509
+ /**
3510
+ * Materialize every Encounter resource for the on-site UAT demo
3511
+ * workspace. Scheduled facility patients fan out over the past 4
3512
+ * block occurrences; scheduled home-health patients fan out over
3513
+ * the past {@link HOME_HEALTH_VISITS_PAST} cadence visits. Intake-
3514
+ * only patients contribute zero encounters.
3515
+ */
3516
+ declare const buildOnSiteDemoEncounters: (referenceIso: string) => ReadonlyArray<Encounter>;
3517
+ /**
3518
+ * Materialize every wound {@link Condition} resource for the
3519
+ * on-site UAT demo workspace. One Condition per wound-bearing
3520
+ * patient, dated to that patient's earliest encounter.
3521
+ */
3522
+ declare const buildOnSiteDemoWoundConditions: (referenceIso: string) => ReadonlyArray<Condition>;
3523
+ /**
3524
+ * Materialize every wound-exam {@link Observation} for the on-site
3525
+ * UAT demo workspace. One per encounter on a wound-bearing
3526
+ * patient, with progressing length / width / depth components.
3527
+ */
3528
+ declare const buildOnSiteDemoWoundObservations: (referenceIso: string) => ReadonlyArray<Observation>;
3529
+ /**
3530
+ * Materialize every wound-debridement {@link Procedure} for the
3531
+ * on-site UAT demo workspace. One per qualifying wound-bearing
3532
+ * patient, on their most-recent encounter, with a real CPT code.
3533
+ */
3534
+ declare const buildOnSiteDemoWoundProcedures: (referenceIso: string) => ReadonlyArray<Procedure>;
3535
+ /**
3536
+ * Stable list of every Encounter id seeded for the on-site UAT
3537
+ * demo workspace, anchored to `referenceIso`. Downstream tickets
3538
+ * (e.g. #1307 — claims walking each historical encounter) read
3539
+ * this to fan out per-encounter work without re-deriving the
3540
+ * mapping.
3541
+ */
3542
+ declare const onSiteDemoEncounterIds: (referenceIso: string) => ReadonlyArray<string>;
3543
+ /**
3544
+ * Encounters scoped to a single patient, ordered earliest first.
3545
+ * Returns the empty array for intake-only patients (no
3546
+ * encounters) and for unknown patient ids.
3547
+ */
3548
+ declare const onSiteDemoEncountersForPatient: (patientId: string, referenceIso: string) => ReadonlyArray<string>;
3549
+ /**
3550
+ * Public projection of an encounter's seed metadata. Downstream
3551
+ * tickets (e.g. #1307 — claims walking each historical encounter)
3552
+ * read this instead of re-parsing the encounter id string.
3553
+ */
3554
+ interface OnSiteDemoEncounterMetadata {
3555
+ /** Stable Encounter id. */
3556
+ readonly id: string;
3557
+ /** Patient the encounter is authored against. */
3558
+ readonly patientId: string;
3559
+ /** 1-based sequence ordinal within the patient's encounter list (1 = earliest). */
3560
+ readonly sequence: number;
3561
+ /** Total encounters seeded for this patient. */
3562
+ readonly totalEncounters: number;
3563
+ /** ISO 8601 start instant the encounter is dated to. */
3564
+ readonly periodStart: string;
3565
+ /** Whether this encounter carries a wound-debridement Procedure. */
3566
+ readonly hasWoundProcedure: boolean;
3567
+ }
3568
+ /**
3569
+ * Materialize every encounter's seed metadata for the on-site UAT
3570
+ * demo workspace. Order matches {@link onSiteDemoEncounterIds}.
3571
+ * The `hasWoundProcedure` flag is `true` only on the patient's
3572
+ * most-recent encounter when {@link onSiteDemoWoundProcedurePatientIds}
3573
+ * lists that patient — mirroring the procedure-attachment rule in
3574
+ * {@link buildOnSiteDemoWoundProcedures}.
3575
+ */
3576
+ declare const onSiteDemoEncounterMetadata: (referenceIso: string) => ReadonlyArray<OnSiteDemoEncounterMetadata>;
3577
+ /**
3578
+ * Subset of patients (facility + home-health) the seeder flags as
3579
+ * carrying a current wound. Exported so tests and downstream
3580
+ * tickets can assert wound-coverage targets without re-deriving
3581
+ * the hash. Order matches the input list of scheduled patients.
3582
+ */
3583
+ declare const onSiteDemoWoundBearingPatientIds: () => ReadonlyArray<string>;
3584
+ /**
3585
+ * Subset of {@link onSiteDemoWoundBearingPatientIds} whose patients
3586
+ * also get a CPT-coded debridement Procedure on their most-recent
3587
+ * encounter.
3588
+ */
3589
+ declare const onSiteDemoWoundProcedurePatientIds: () => ReadonlyArray<string>;
3590
+
3591
+ /**
3592
+ * @see sites/www-docs/content/packages/@openhi/constructs/workflows/control-plane/seed-demo-data/on-site-demo-facilities.md
3593
+ *
3594
+ * Hand-authored Facility (FHIR Location) fixtures the
3595
+ * `seed-demo-data` workflow upserts into the on-site-medical UAT
3596
+ * demo tenant ({@link ON_SITE_DEMO_TENANT_ID} +
3597
+ * {@link ON_SITE_DEMO_WORKSPACE_ID}) on every non-prod deploy
3598
+ * (issue #1303).
3599
+ *
3600
+ * Three facilities — UAT testers exercise the calendar's "View by
3601
+ * facility" filter and the home-health vs facility-visit
3602
+ * routing. The on-site `AdminLocationFormPage` reads:
3603
+ * - `name`
3604
+ * - `type[0].text` — `"facility"` (drives the
3605
+ * classification dropdown)
3606
+ * - `address.line/city/state/postalCode/country`
3607
+ * - `telecom` (phone + email + optional fax)
3608
+ * - `status` (`"active"`)
3609
+ *
3610
+ * Director-of-nursing is not a first-class FHIR R4 `Location`
3611
+ * field. We denormalize it as an `extension` (single root
3612
+ * extension with three sub-extensions: `name`, `phone`,
3613
+ * `email`) under the established on-site URL convention
3614
+ * (`https://on-site-medical.app/fhir/StructureDefinition/*`) so a
3615
+ * later on-site UI iteration can pick it up without a schema
3616
+ * change.
3617
+ *
3618
+ * Ids are deterministic — re-fires upsert the same records,
3619
+ * matching the workflow's idempotency contract.
3620
+ */
3621
+ /**
3622
+ * Root extension URL stamped on every facility Location for the
3623
+ * director-of-nursing contact. The root extension carries three
3624
+ * sub-extensions (`name`, `phone`, `email`) — none of FHIR R4's
3625
+ * shipped extensions cover this exact triple, so we publish a
3626
+ * local URL under the on-site convention.
3627
+ */
3628
+ declare const DIRECTOR_OF_NURSING_EXTENSION_URL = "https://on-site-medical.app/fhir/StructureDefinition/director-of-nursing";
3629
+ /** Sub-extension URL: director-of-nursing display name. */
3630
+ declare const DIRECTOR_OF_NURSING_NAME_EXTENSION_URL = "name";
3631
+ /** Sub-extension URL: director-of-nursing phone (E.164). */
3632
+ declare const DIRECTOR_OF_NURSING_PHONE_EXTENSION_URL = "phone";
3633
+ /** Sub-extension URL: director-of-nursing email. */
3634
+ declare const DIRECTOR_OF_NURSING_EMAIL_EXTENSION_URL = "email";
3635
+ /** Demo facilities seeded into the on-site UAT demo workspace. */
3636
+ declare const ON_SITE_DEMO_FACILITIES: ReadonlyArray<Location>;
3637
+ /** Stable facility ids in dispatch order. Re-exported for downstream tickets. */
3638
+ declare const ON_SITE_DEMO_FACILITY_IDS: ReadonlyArray<string>;
3639
+
3640
+ /**
3641
+ * @see sites/www-docs/content/packages/@openhi/constructs/workflows/control-plane/seed-demo-data/on-site-demo-facility-patients.md
3642
+ *
3643
+ * Hand-authored facility Patient + Coverage fixtures the
3644
+ * `seed-demo-data` workflow upserts into the on-site-medical UAT
3645
+ * demo tenant ({@link ON_SITE_DEMO_TENANT_ID} +
3646
+ * {@link ON_SITE_DEMO_WORKSPACE_ID}) on every non-prod deploy
3647
+ * (issue #1304).
3648
+ *
3649
+ * Topology — issue #1304 design:
3650
+ * - 4 blocks (#1303) × per-block patient count (16 + 14 + 18 +
3651
+ * 12 = 60 scheduled patients). No patient appears in more
3652
+ * than one block.
3653
+ * - Plus 6 intake-complete-not-yet-scheduled patients (2 per
3654
+ * facility — small subset that exercises the "new intake,
3655
+ * not yet on a calendar" UI state). Total: 66 Patients.
3656
+ * - Every patient is assigned `care-context = facility` via
3657
+ * the on-site `patient-default-care-setting` /
3658
+ * `patient-default-care-location` extension pair
3659
+ * (`sites/app-ehr/src/types/fhir-extensions/patient.ts`). The
3660
+ * UI distinguishes facility vs home-health patients by
3661
+ * reading those extensions, so seeding them is the path that
3662
+ * actually surfaces the patient under the right "Patient
3663
+ * Type" column in the on-site EHR.
3664
+ *
3665
+ * Insurance:
3666
+ * - Every patient gets a primary Coverage with
3667
+ * `status: "active"` and a verification date stamped on the
3668
+ * coverage body via the on-site `coverage-verification-date`
3669
+ * extension.
3670
+ * - A subset (~40%) gets a secondary Coverage.
3671
+ * - Payor mix: commercial / Medicare / Medicare Advantage.
3672
+ * - QMB is a Medicare-only program (real-world constraint); the
3673
+ * QMB extension only attaches to Medicare-primary patients.
3674
+ * - ~20% of patients carry the `patient-hospice-status`
3675
+ * extension on the Patient resource (CMS hospice billing
3676
+ * status — separate from QMB).
3677
+ *
3678
+ * Modelling choice — block assignment. The seeder also records
3679
+ * which block template a patient is assigned to so downstream
3680
+ * tickets (#1306 — encounters per scheduled patient per block
3681
+ * occurrence) can fan out without re-deriving the mapping.
3682
+ * Encounters are NOT created here; this ticket only attaches the
3683
+ * block reference via an extension on the Patient body. Intake-
3684
+ * only patients omit the extension entirely.
3685
+ *
3686
+ * Ids are deterministic — re-fires upsert the same records,
3687
+ * matching the workflow's idempotency contract. Adding,
3688
+ * renaming, or moving a patient is a one-line edit here plus a
3689
+ * redeploy.
3690
+ */
3691
+ /**
3692
+ * Extension URL stamped on the Patient body when the patient's
3693
+ * default care setting is facility-based (mirrors the on-site
3694
+ * EHR's `EXT_PATIENT_DEFAULT_CARE_SETTING` constant at
3695
+ * `sites/app-ehr/src/types/fhir-extensions/patient.ts`).
3696
+ */
3697
+ declare const PATIENT_DEFAULT_CARE_SETTING_EXTENSION_URL = "https://on-site-medical.app/fhir/StructureDefinition/patient-default-care-setting";
3698
+ /**
3699
+ * Extension URL stamped on the Patient body when the patient's
3700
+ * default care setting is `facility`, carrying the Location id
3701
+ * (mirrors the on-site EHR's `EXT_PATIENT_DEFAULT_CARE_LOCATION`
3702
+ * constant).
3703
+ */
3704
+ declare const PATIENT_DEFAULT_CARE_LOCATION_EXTENSION_URL = "https://on-site-medical.app/fhir/StructureDefinition/patient-default-care-location";
3705
+ /** Extension URL: patient residency admission date (facility-only). */
3706
+ declare const PATIENT_RESIDENCY_ADMISSION_DATE_EXTENSION_URL = "https://on-site-medical.app/fhir/StructureDefinition/patient-residency-admission-date";
3707
+ /** Extension URL: patient residency room number (facility-only). */
3708
+ declare const PATIENT_RESIDENCY_ROOM_EXTENSION_URL = "https://on-site-medical.app/fhir/StructureDefinition/patient-residency-room";
3709
+ /**
3710
+ * Extension URL stamped on the Patient body recording which
3711
+ * weekly scheduling block template the patient is assigned to
3712
+ * (#1303 + #1304). Downstream tickets (#1306 — encounters per
3713
+ * block occurrence) read this to fan out per-occurrence
3714
+ * Encounter records. Intake-only patients (no block yet) omit
3715
+ * the extension entirely.
3716
+ */
3717
+ declare const PATIENT_ASSIGNED_BLOCK_TEMPLATE_EXTENSION_URL = "https://on-site-medical.app/fhir/StructureDefinition/patient-assigned-block-template";
3718
+ /**
3719
+ * Root extension URL stamped on the Patient body recording the
3720
+ * patient's hospice status (CMS hospice billing flag). Carries
3721
+ * three sub-extensions (`status`, `effectiveDate`,
3722
+ * `terminationDate`) mirroring the on-site Medicare form's
3723
+ * hospice fields at
3724
+ * `sites/app-ehr/src/fixtures/medicareForm.ts`. Only ~20% of
3725
+ * patients carry this extension; the absence of the extension
3726
+ * means the patient is not in hospice.
3727
+ */
3728
+ declare const PATIENT_HOSPICE_STATUS_EXTENSION_URL = "https://on-site-medical.app/fhir/StructureDefinition/patient-hospice-status";
3729
+ /** Sub-extension URL under {@link PATIENT_HOSPICE_STATUS_EXTENSION_URL}. */
3730
+ declare const HOSPICE_STATUS_VALUE_SUB_EXTENSION_URL = "status";
3731
+ /** Sub-extension URL under {@link PATIENT_HOSPICE_STATUS_EXTENSION_URL}. */
3732
+ declare const HOSPICE_EFFECTIVE_DATE_SUB_EXTENSION_URL = "effectiveDate";
3733
+ /**
3734
+ * Extension URL stamped on every primary Coverage body recording
3735
+ * the most-recent verification timestamp. The on-site
3736
+ * `VerificationHistoryTable` displays verification rows from this
3737
+ * value (and from the Coverage's audit history downstream). The
3738
+ * value is an ISO 8601 instant in UTC.
3739
+ */
3740
+ declare const COVERAGE_VERIFICATION_DATE_EXTENSION_URL = "https://on-site-medical.app/fhir/StructureDefinition/coverage-verification-date";
3741
+ /**
3742
+ * Root extension URL stamped on a Medicare-primary Coverage
3743
+ * recording the QMB (Qualified Medicare Beneficiary) status.
3744
+ * Carries `status` + `effectiveDate` sub-extensions mirroring
3745
+ * the on-site Medicare form (`sites/app-ehr/src/fixtures/medicareForm.ts`).
3746
+ * QMB only attaches to Medicare-primary patients — it is a
3747
+ * Medicare program and is invalid on commercial-primary or
3748
+ * Medicare-Advantage-primary coverages.
3749
+ */
3750
+ declare const COVERAGE_QMB_STATUS_EXTENSION_URL = "https://on-site-medical.app/fhir/StructureDefinition/coverage-qmb-status";
3751
+ /** Sub-extension URL under {@link COVERAGE_QMB_STATUS_EXTENSION_URL}. */
3752
+ declare const QMB_STATUS_VALUE_SUB_EXTENSION_URL = "status";
3753
+ /** Sub-extension URL under {@link COVERAGE_QMB_STATUS_EXTENSION_URL}. */
3754
+ declare const QMB_EFFECTIVE_DATE_SUB_EXTENSION_URL = "effectiveDate";
3755
+ /**
3756
+ * Payor codes the on-site app reads from Coverage.type.coding[0].
3757
+ * The values mirror the labels used in the on-site Medicare and
3758
+ * insurance forms. `medicare-advantage` is intentionally distinct
3759
+ * from `medicare` — Medicare Advantage is a private-plan layer on
3760
+ * top of Medicare and bills through different payor pathways.
3761
+ */
3762
+ declare const COVERAGE_PAYOR_TYPE_SYSTEM = "https://on-site-medical.app/fhir/CodeSystem/coverage-payor-type";
3763
+ /** Payor type values written to {@link COVERAGE_PAYOR_TYPE_SYSTEM}. */
3764
+ declare const PAYOR_TYPE_COMMERCIAL = "commercial";
3765
+ /** Payor type values written to {@link COVERAGE_PAYOR_TYPE_SYSTEM}. */
3766
+ declare const PAYOR_TYPE_MEDICARE = "medicare";
3767
+ /** Payor type values written to {@link COVERAGE_PAYOR_TYPE_SYSTEM}. */
3768
+ declare const PAYOR_TYPE_MEDICARE_ADVANTAGE = "medicare-advantage";
3769
+ /**
3770
+ * Lazily materialize the facility-patient Patient resources
3771
+ * seeded into the on-site UAT demo workspace. Called by the
3772
+ * fixture group when the seeder iterates `group.patients`.
3773
+ */
3774
+ declare const buildOnSiteDemoFacilityPatients: () => ReadonlyArray<Patient>;
3775
+ /**
3776
+ * Lazily materialize the facility-patient Coverage resources
3777
+ * (primary + optional secondary) for the on-site UAT demo
3778
+ * workspace. Called by the fixture group when the seeder
3779
+ * iterates `group.coverages`.
3780
+ */
3781
+ declare const buildOnSiteDemoFacilityCoverages: () => ReadonlyArray<Coverage>;
3782
+ /**
3783
+ * Stable facility-patient ids in dispatch order. Lazy — call
3784
+ * this from downstream tickets (e.g. #1306 — encounters per
3785
+ * scheduled patient per block occurrence) instead of capturing
3786
+ * the array at module load.
3787
+ */
3788
+ declare const onSiteDemoFacilityPatientIds: () => ReadonlyArray<string>;
3789
+ /**
3790
+ * Subset of {@link onSiteDemoFacilityPatientIds} whose patients
3791
+ * are scheduled into a weekly block. Excludes the intake-only
3792
+ * subset. Order matches `PATIENTS_PER_BLOCK` (all block-001
3793
+ * patients first, then block-002, etc.).
3794
+ */
3795
+ declare const onSiteDemoScheduledFacilityPatientIds: () => ReadonlyArray<string>;
3796
+ /**
3797
+ * Subset of {@link onSiteDemoFacilityPatientIds} whose patients
3798
+ * are intake-complete but not yet on a schedule. These patients
3799
+ * have a facility assignment but no block reference and no
3800
+ * Encounter records (downstream tickets must respect that
3801
+ * absence).
3802
+ */
3803
+ declare const onSiteDemoIntakeOnlyFacilityPatientIds: () => ReadonlyArray<string>;
3804
+ /**
3805
+ * Look up the block template a facility patient is scheduled
3806
+ * into, or `undefined` for intake-only patients.
3807
+ */
3808
+ declare const findOnSiteDemoFacilityPatientBlock: (patientId: string) => string | undefined;
3809
+ /**
3810
+ * List facility patients scheduled into a given block template
3811
+ * id. Downstream tickets (encounters, scribe assignments) call
3812
+ * this to fan out per-block work without re-deriving the
3813
+ * mapping.
3814
+ */
3815
+ declare const facilityPatientsForBlock: (blockTemplateId: string) => ReadonlyArray<string>;
3816
+
3817
+ /**
3818
+ * @see sites/www-docs/content/packages/@openhi/constructs/workflows/control-plane/seed-demo-data/on-site-demo-fixtures.md
3819
+ *
3820
+ * Hand-authored Practitioner fixtures the `seed-demo-data` workflow
3821
+ * upserts into the on-site-medical UAT demo tenant
3822
+ * ({@link ON_SITE_DEMO_TENANT_ID} + {@link ON_SITE_DEMO_WORKSPACE_ID})
3823
+ * on every non-prod deploy. Issue #1302 — the on-site repo's facility
3824
+ * blocks, home-health visits, and encounter records need a realistic
3825
+ * pool of doctors and scribes to reference.
3826
+ *
3827
+ * Two sets are seeded:
3828
+ * - {@link ON_SITE_DEMO_DOCTORS} — ten Practitioners with
3829
+ * `qualification[0].code.text = "Physician"`. The first five carry
3830
+ * a `home-health-eligible` boolean extension set to `true` so the
3831
+ * on-site UI can filter the home-health-eligible subset for
3832
+ * home-visit scheduling.
3833
+ * - {@link ON_SITE_DEMO_SCRIBES} — five Practitioners with
3834
+ * `qualification[0].code.text = "Scribe"`. Scribes share the
3835
+ * Practitioner resource shape with doctors so the on-site
3836
+ * practitioner CRUD form can edit both without a new resource
3837
+ * type; the `qualification` value distinguishes the role.
3838
+ *
3839
+ * Field set matches what the on-site provider form expects today
3840
+ * (`sites/app-ehr/src/pages/admin/AdminPractitionerFormPage.tsx`):
3841
+ * - `name[0]` — given + family + text
3842
+ * - `qualification[0].code.text` — role label
3843
+ * - `active`
3844
+ * - `gender`, `birthDate`
3845
+ * - `telecom[]` — phone (E.164) + email
3846
+ * - `identifier[0]` — NPI (US national provider identifier)
3847
+ * - `address[0]` — line / city / state / postalCode / country
3848
+ * - `extension[]` — home-health-eligible boolean (doctors only)
3849
+ *
3850
+ * Ids are deterministic — re-fires upsert the same records, matching
3851
+ * the workflow's idempotency contract. Adding or renaming a Practitioner
3852
+ * is a one-line edit here plus a redeploy.
3853
+ */
3854
+ /** FHIR `Identifier.system` for the US NPI (National Provider Identifier). */
3855
+ declare const US_NPI_SYSTEM = "http://hl7.org/fhir/sid/us-npi";
3856
+ /**
3857
+ * Extension URL stamped on a Practitioner body when the practitioner
3858
+ * is approved to take home-health visits. Mirrors the on-site repo's
3859
+ * convention (`https://on-site-medical.app/fhir/StructureDefinition/*`)
3860
+ * — the on-site UI can pick this extension up directly without a
3861
+ * schema change. Boolean `valueBoolean: true` means eligible.
3862
+ */
3863
+ declare const HOME_HEALTH_ELIGIBLE_EXTENSION_URL = "https://on-site-medical.app/fhir/StructureDefinition/home-health-eligible";
3864
+ /** Practitioner.qualification code-text for a physician (matches on-site form). */
3865
+ declare const PRACTITIONER_ROLE_PHYSICIAN = "Physician";
3866
+ /** Practitioner.qualification code-text for a scribe. */
3867
+ declare const PRACTITIONER_ROLE_SCRIBE = "Scribe";
3868
+ /** FHIR `Identifier.system` for internal on-site staff ids (non-NPI). */
3869
+ declare const ON_SITE_STAFF_ID_SYSTEM = "https://on-site-medical.app/fhir/sid/staff-id";
3870
+ /** Demo doctors seeded into the on-site UAT demo workspace. */
3871
+ declare const ON_SITE_DEMO_DOCTORS: ReadonlyArray<Practitioner>;
3872
+ /** Demo scribes seeded into the on-site UAT demo workspace. */
3873
+ declare const ON_SITE_DEMO_SCRIBES: ReadonlyArray<Practitioner>;
3874
+ /** Stable doctor ids in dispatch order. Re-exported for downstream tickets. */
3875
+ declare const ON_SITE_DEMO_DOCTOR_IDS: ReadonlyArray<string>;
3876
+ /** Stable scribe ids in dispatch order. Re-exported for downstream tickets. */
3877
+ declare const ON_SITE_DEMO_SCRIBE_IDS: ReadonlyArray<string>;
3878
+ /**
3879
+ * Subset of {@link ON_SITE_DEMO_DOCTORS} flagged as home-health-eligible
3880
+ * (via the {@link HOME_HEALTH_ELIGIBLE_EXTENSION_URL} extension on the
3881
+ * Practitioner body). Downstream tickets (home-health visit scheduling,
3882
+ * facility-block fixtures) use this helper to attach realistic providers
3883
+ * to home-visit-only encounters without re-reading the extension list.
3884
+ */
3885
+ declare const homeHealthEligibleDoctors: () => ReadonlyArray<Practitioner>;
3886
+ /**
3887
+ * Fixture group the seeder writes into the on-site UAT demo workspace.
3888
+ * Carries practitioners (doctors + scribes — #1302), facilities
3889
+ * (#1303), recurring weekly block Appointments (#1303), facility
3890
+ * patients + their insurance Coverages (#1304), home-health
3891
+ * patients + their insurance Coverages (#1305), historical
3892
+ * encounters / wounds / wound observations / wound debridement
3893
+ * procedures (#1306), and claims + payment notices tied to those
3894
+ * encounters (#1307). Accounts for this tenant are owned by later
3895
+ * tickets.
3896
+ *
3897
+ * `buildAppointments` is dynamic so the recurring block occurrences
3898
+ * anchor to the ISO week containing the seeder's `baseContext.date`
3899
+ * — re-fires on the same date produce byte-identical Appointment ids,
3900
+ * and re-fires on a later date roll the window forward without
3901
+ * duplicating prior weeks' records.
3902
+ */
3903
+ declare const ON_SITE_DEMO_FIXTURES: DemoWorkspaceDataPlaneFixtures;
3904
+
3905
+ /**
3906
+ * @see sites/www-docs/content/packages/@openhi/constructs/workflows/control-plane/seed-demo-data/on-site-demo-home-health-patients.md
3907
+ *
3908
+ * Hand-authored home-health Patient + Coverage fixtures the
3909
+ * `seed-demo-data` workflow upserts into the on-site-medical UAT
3910
+ * demo tenant ({@link ON_SITE_DEMO_TENANT_ID} +
3911
+ * {@link ON_SITE_DEMO_WORKSPACE_ID}) on every non-prod deploy
3912
+ * (issue #1305).
3913
+ *
3914
+ * Topology — issue #1305 design:
3915
+ * - 20 home-health patients total. None are assigned to a
3916
+ * facility — `patient-default-care-setting` is `home`
3917
+ * (mirrors the on-site EHR's `LocationClassification = "home"`
3918
+ * at `sites/app-ehr/src/utils/patient/patientDefaultCareSetting.ts`),
3919
+ * and the `patient-default-care-location` extension is
3920
+ * intentionally omitted (home patients have no Location
3921
+ * reference).
3922
+ * - 17 patients are scheduled to a home-health-eligible doctor
3923
+ * (see {@link homeHealthEligibleDoctors}) with a recurring
3924
+ * visit cadence. Doctor assignment is a deterministic
3925
+ * round-robin over the 5 home-health-eligible doctors.
3926
+ * - 3 patients are intake-complete-but-not-yet-scheduled —
3927
+ * they carry a home address + care-context = home but have
3928
+ * no provider assignment and no visit cadence (the on-site
3929
+ * UI state for a brand-new home-health intake that hasn't
3930
+ * been put on the calendar yet).
3931
+ *
3932
+ * Insurance is identical to the facility-patient rules (#1304):
3933
+ * - Every patient gets a primary Coverage with
3934
+ * `status: "active"` and a verification date.
3935
+ * - A subset (~40%) gets a secondary Coverage.
3936
+ * - Payor mix: commercial / Medicare / Medicare Advantage.
3937
+ * - QMB only attaches to Medicare-primary patients.
3938
+ * - ~20% of patients carry the `patient-hospice-status`
3939
+ * extension on the Patient resource.
3940
+ *
3941
+ * Modelling choice — visit cadence. On-site has no formal
3942
+ * home-health visit cadence schema today (the `REPEAT_OPTIONS`
3943
+ * at `sites/app-ehr/src/features/calendar/components/eventPopoverUtils.ts`
3944
+ * are calendar-level recurrences, not patient-level cadences).
3945
+ * Each scheduled home-health patient therefore carries a simple
3946
+ * `home-health-visit-cadence-days` valueInteger extension with
3947
+ * a value drawn from the set 7 / 14 / 28 — weekly / bi-weekly /
3948
+ * monthly — distributed deterministically across the roster so
3949
+ * the UAT tenant exercises all three cadences. Intake-only
3950
+ * patients omit the extension entirely.
3951
+ *
3952
+ * Modelling choice — provider assignment. The home-health
3953
+ * analogue of the facility-patient's block reference is a
3954
+ * `patient-assigned-home-health-provider` `valueReference`
3955
+ * pointing at `Practitioner/<doctor-id>`. Downstream tickets
3956
+ * (#1306 — encounters) read this reference to fan out per-
3957
+ * patient visit Encounters. Intake-only patients omit the
3958
+ * extension (no provider yet → no encounters).
3959
+ *
3960
+ * Ids are deterministic — re-fires upsert the same records,
3961
+ * matching the workflow's idempotency contract. Adding,
3962
+ * renaming, or moving a patient is a one-line edit here plus a
3963
+ * redeploy.
3964
+ */
3965
+ /**
3966
+ * Extension URL stamped on a home-health Patient body recording
3967
+ * the {@link Practitioner} id of the home-health-eligible doctor
3968
+ * the patient is currently scheduled with. Carries a
3969
+ * `valueReference` shaped `{ reference: "Practitioner/<id>" }`.
3970
+ * Intake-only patients omit this extension.
3971
+ */
3972
+ declare const PATIENT_ASSIGNED_HOME_HEALTH_PROVIDER_EXTENSION_URL = "https://on-site-medical.app/fhir/StructureDefinition/patient-assigned-home-health-provider";
3973
+ /**
3974
+ * Extension URL stamped on a home-health Patient body recording
3975
+ * the patient's recurring visit cadence in days. The value is a
3976
+ * `valueInteger` drawn from {@link HOME_HEALTH_VISIT_CADENCE_OPTIONS}
3977
+ * — weekly (7), bi-weekly (14), or monthly (28). On-site has no
3978
+ * formal cadence schema today, so this denormalised extension
3979
+ * captures the visit interval directly on the Patient body until
3980
+ * the on-site team picks a permanent shape. Intake-only patients
3981
+ * omit this extension.
3982
+ */
3983
+ declare const HOME_HEALTH_VISIT_CADENCE_DAYS_EXTENSION_URL = "https://on-site-medical.app/fhir/StructureDefinition/home-health-visit-cadence-days";
3984
+ /**
3985
+ * Allowed visit-cadence day values. Roughly weekly / bi-weekly /
3986
+ * monthly — enough variation for UAT to exercise distinct
3987
+ * cadences in the calendar without modelling every possible
3988
+ * interval.
3989
+ */
3990
+ declare const HOME_HEALTH_VISIT_CADENCE_OPTIONS: ReadonlyArray<number>;
3991
+ /** Total home-health patients seeded. */
3992
+ declare const TOTAL_HOME_HEALTH_PATIENTS: number;
3993
+ /**
3994
+ * Lazily materialize the home-health Patient resources seeded
3995
+ * into the on-site UAT demo workspace. Called by the fixture
3996
+ * group when the seeder iterates `group.buildPatients()`.
3997
+ */
3998
+ declare const buildOnSiteDemoHomeHealthPatients: () => ReadonlyArray<Patient>;
3999
+ /**
4000
+ * Lazily materialize the home-health Coverage resources
4001
+ * (primary + optional secondary) for the on-site UAT demo
4002
+ * workspace.
4003
+ */
4004
+ declare const buildOnSiteDemoHomeHealthCoverages: () => ReadonlyArray<Coverage>;
4005
+ /**
4006
+ * Stable home-health-patient ids in dispatch order. Lazy — call
4007
+ * this from downstream tickets (e.g. #1306 — encounters per
4008
+ * scheduled home-health visit) instead of capturing the array
4009
+ * at module load.
4010
+ */
4011
+ declare const onSiteDemoHomeHealthPatientIds: () => ReadonlyArray<string>;
4012
+ /**
4013
+ * Subset of {@link onSiteDemoHomeHealthPatientIds} whose
4014
+ * patients are scheduled with a home-health-eligible provider +
4015
+ * visit cadence. Excludes the intake-only subset.
4016
+ */
4017
+ declare const onSiteDemoScheduledHomeHealthPatientIds: () => ReadonlyArray<string>;
4018
+ /**
4019
+ * Subset of {@link onSiteDemoHomeHealthPatientIds} whose
4020
+ * patients are intake-complete but not yet on a schedule. These
4021
+ * patients carry a home address + care-context = home but no
4022
+ * provider, no cadence, and (per #1306) no Encounter records.
4023
+ */
4024
+ declare const onSiteDemoIntakeOnlyHomeHealthPatientIds: () => ReadonlyArray<string>;
4025
+ /**
4026
+ * Look up the home-health-eligible provider assigned to a given
4027
+ * home-health patient, or `undefined` for intake-only patients.
4028
+ * Downstream tickets (encounters per scheduled visit) call this
4029
+ * to fan out per-patient encounter records.
4030
+ */
4031
+ declare const findOnSiteDemoHomeHealthPatientProvider: (patientId: string) => string | undefined;
4032
+ /**
4033
+ * Look up the visit cadence (in days) for a given home-health
4034
+ * patient, or `undefined` for intake-only patients.
4035
+ */
4036
+ declare const findOnSiteDemoHomeHealthPatientVisitCadenceDays: (patientId: string) => number | undefined;
4037
+
2811
4038
  interface SeedDemoDataLambdaProps {
2812
4039
  /**
2813
4040
  * Data-store table the workflow upserts demo-data records into.
@@ -3576,5 +4803,5 @@ declare class RenameCascadeWorkflow extends Construct {
3576
4803
  constructor(scope: Construct, props: RenameCascadeWorkflowProps);
3577
4804
  }
3578
4805
 
3579
- export { ADMIN_DOMAIN_PREFIX, BRIDGED_STATUSES, CLOUDFORMATION_EVENT_SOURCE, CLOUDFORMATION_STACK_STATUS_CHANGE_DETAIL_TYPE, CONTROL_EVENT_BUS_NAME_ENV_VAR, ChildHostedZone, CognitoUserPool, CognitoUserPoolClient, CognitoUserPoolDomain, CognitoUserPoolKmsKey, ControlEventBus, DATA_STORE_CHANGE_DETAIL_MAX_UTF8_BYTES, DATA_STORE_CHANGE_DETAIL_TYPE, DEFAULT_PREVIEW_EXPIRATION_DAYS, DEMO_DATA_PLANE_FIXTURES, DEMO_PERIOD, DEMO_TENANT_SPECS, DEMO_URN_SYSTEM, DEV_CORS_ALLOW_ORIGINS, DEV_USERS, DataEventBus, DataStoreHistoricalArchive, DataStorePostgresReplica, DiscoverableStringParameter, DynamoDbDataStore, LOCALHOST_OAUTH_CALLBACK_URLS, LOCALHOST_OAUTH_LOGOUT_URLS, OPENHI_REPO_TAG_KEY_ENV_VAR, OPENHI_RESOURCE_URN_SYSTEM, OPENHI_TAG_KEY_PREFIX_ENV_VAR, OPENHI_TAG_SUFFIX_BRANCH_NAME, OPENHI_TAG_SUFFIX_REPO_NAME, OPENHI_TAG_SUFFIX_SERVICE_TYPE, OPENHI_TAG_SUFFIX_STAGE_TYPE, OWNING_DELETE_CASCADE_CONSUMER_NAME, OWNING_DELETE_CASCADE_DEFAULT_CONCURRENCY, OWNING_DELETE_CASCADE_STUCK_THRESHOLD_MINUTES, OWNING_DELETE_OPS_EVENT_BUS_ENV_VAR, OpenHiApp, OpenHiAuthService, OpenHiDataService, OpenHiEnvironment, OpenHiGlobalService, OpenHiGraphqlService, OpenHiRestApiService, OpenHiService, OpenHiStage, OpenHiWebsiteService, OpsEventBus, OwningDeleteCascadeLambdas, OwningDeleteCascadeWorkflow, PER_BRANCH_PREVIEW_PREFIX, PLACEHOLDER_TENANT_ID, PLACEHOLDER_WORKSPACE_ID, PLATFORM_DEPLOY_BRIDGE_ACTOR_SYSTEM, PLATFORM_SCOPE_TENANT_ID, POSTGRES_REPLICA_CLUSTER_ARN_SSM_NAME, POSTGRES_REPLICA_DATABASE_NAME_SSM_NAME, POSTGRES_REPLICA_SECRET_ARN_SSM_NAME, PROVISION_DEFAULT_WORKSPACE_DETAIL_TYPE, PerBranchHostname, PlatformDeployBridge, PlatformDeployBridgeLambda, PostAuthenticationLambda, PostConfirmationLambda, PreTokenGenerationLambda, ProvisionDefaultWorkspaceLambda, RENAME_CASCADE_CONSUMER_NAME, RENAME_CASCADE_DEFAULT_CONCURRENCY, RENAME_CASCADE_FAILED_THRESHOLD, RENAME_CASCADE_OPS_EVENT_BUS_ENV_VAR, RENAME_CASCADE_SLOW_THRESHOLD_SECONDS, REST_API_BASE_URL_SSM_NAME, REST_API_DOMAIN_NAME_SSM_NAME, RenameCascadeLambdas, RenameCascadeWorkflow, RootGraphqlApi, RootHostedZone, RootHttpApi, RootWildcardCertificate, SEED_DEMO_DATA_CONSUMER_NAME, SEED_SYSTEM_DATA_ACTOR_SYSTEM, SEED_SYSTEM_DATA_CONSUMER_NAME, SEED_SYSTEM_DATA_CONTROL_BUS_ENV_VAR, SSM_PARAM_NAME_FULL_DOMAIN, STATIC_HOSTING_SERVICE_TYPE, SeedDemoDataLambda, SeedDemoDataWorkflow, SeedSystemDataLambda, SeedSystemDataWorkflow, StaticContent, StaticHosting, USER_ONBOARDING_EVENT_SOURCE, UserOnboardingWorkflow, WorkflowDedupConsumerNameInvalidError, WorkflowDedupTable, WorkflowDedupTableDuplicateError, buildFhirCurrentResourceChangeDetail, buildProvisionDefaultWorkspaceRequestedDetail, computeBranchHash, demoMembershipId, demoRoleAssignmentId, demoRolesForUserInTenant, demoScenarioIdentifier, getDynamoDbDataStoreTableName, getPostgresReplicaSchemaName, getWorkflowDedupTableName, openHiTagKey, openhiResourceIdentifier };
3580
- export type { BridgedStatus, BuildParameterNameProps, CascadeChunkInput, CascadeFinalizeInput, CascadeFinalizeOutput, CascadeListInput, CascadeListOutput, ChildHostedZoneProps, CloudFormationStackStatusChangeDetail, ComposeServiceDomainOptions, ComputeBranchHashOptions, DataEventBusOptions, DataStoreHistoricalArchiveProps, DataStorePostgresReplicaProps, DemoDevUser, DemoTenantSpec, DemoWorkspaceDataPlaneFixtures, DemoWorkspaceSpec, DiscoverableStringParameterProps, DynamoDbDataStoreProps, FhirCurrentResourceChangeDetail, GrantConsumerOptions, HostingMode, OpenHiAppProps, OpenHiAuthServiceProps, OpenHiDataServiceProps, OpenHiEnvironmentProps, OpenHiGlobalServiceProps, OpenHiGraphqlServiceProps, OpenHiRestApiServiceProps, OpenHiServiceProps, OpenHiServiceType, OpenHiStageProps, OpenHiWebsiteServiceProps, OwningDeleteCascadeLambdasProps, OwningDeleteCascadeWorkflowProps, PerBranchHostnameProps, PlatformDeployBridgeLambdaProps, PlatformDeployBridgeProps, PostConfirmationLambdaProps, PreTokenGenerationLambdaProps, ProvisionDefaultWorkspaceLambdaProps, ProvisionDefaultWorkspaceRequestedDetail, RenameCascadeChunkInput, RenameCascadeFinalizeInput, RenameCascadeFinalizeOutput, RenameCascadeLambdasProps, RenameCascadeListInput, RenameCascadeListOutput, RenameCascadeWorkflowProps, RootGraphqlApiProps, RootHttpApiProps, SeedDemoDataLambdaProps, SeedDemoDataWorkflowProps, SeedSystemDataLambdaProps, SeedSystemDataWorkflowProps, StaticContentProps, StaticHostingProps, UserOnboardingWorkflowProps, WorkflowDedupTableProps };
4806
+ export { ADMIN_DOMAIN_PREFIX, BLOCK_OCCURRENCES_PER_TEMPLATE, BLOCK_OCCURRENCE_WEEKS_FUTURE, BLOCK_OCCURRENCE_WEEKS_PAST, BRIDGED_STATUSES, CLAIM_WORKFLOW_STATUS, CLAIM_WORKFLOW_STATUS_EXTENSION_URL, CLAIM_WORKFLOW_STATUS_LAST_TRANSITION_SUB_EXTENSION_URL, CLAIM_WORKFLOW_STATUS_VALUE_SUB_EXTENSION_URL, CLOUDFORMATION_EVENT_SOURCE, CLOUDFORMATION_STACK_STATUS_CHANGE_DETAIL_TYPE, CONDITION_CLINICAL_STATUS_SYSTEM, CONTROL_EVENT_BUS_NAME_ENV_VAR, COVERAGE_PAYOR_TYPE_SYSTEM, COVERAGE_QMB_STATUS_EXTENSION_URL, COVERAGE_VERIFICATION_DATE_EXTENSION_URL, CPT_SYSTEM, CREDENTIALING_STATUS, ChildHostedZone, CognitoUserPool, CognitoUserPoolClient, CognitoUserPoolDomain, CognitoUserPoolKmsKey, ControlEventBus, DATA_STORE_CHANGE_DETAIL_MAX_UTF8_BYTES, DATA_STORE_CHANGE_DETAIL_TYPE, DEFAULT_PREVIEW_EXPIRATION_DAYS, DEMO_DATA_PLANE_FIXTURES, DEMO_PERIOD, DEMO_TENANT_SPECS, DEMO_URN_SYSTEM, DEV_CORS_ALLOW_ORIGINS, DEV_USERS, DIRECTOR_OF_NURSING_EMAIL_EXTENSION_URL, DIRECTOR_OF_NURSING_EXTENSION_URL, DIRECTOR_OF_NURSING_NAME_EXTENSION_URL, DIRECTOR_OF_NURSING_PHONE_EXTENSION_URL, DME_SUPPLIER_CATEGORY_CODE, DataEventBus, DataStoreHistoricalArchive, DataStorePostgresReplica, DiscoverableStringParameter, DynamoDbDataStore, ENCOUNTER_CLASS_FACILITY, ENCOUNTER_CLASS_HOME_HEALTH, ENCOUNTER_CLASS_SYSTEM, FHIR_ORGANIZATION_TYPE_SYSTEM, HOME_HEALTH_ELIGIBLE_EXTENSION_URL, HOME_HEALTH_VISITS_PAST, HOME_HEALTH_VISIT_CADENCE_DAYS_EXTENSION_URL, HOME_HEALTH_VISIT_CADENCE_OPTIONS, HOSPICE_EFFECTIVE_DATE_SUB_EXTENSION_URL, HOSPICE_STATUS_VALUE_SUB_EXTENSION_URL, INSURANCE_PAYOR_CATEGORY_CODE, INSURANCE_PAYOR_PLAN_TYPE_SYSTEM, LOCALHOST_OAUTH_CALLBACK_URLS, LOCALHOST_OAUTH_LOGOUT_URLS, LOINC_SYSTEM, ON_SITE_APPOINTMENT_TYPE_SYSTEM, ON_SITE_DEMO_BLOCK_CAPACITY_EXTENSION_URL, ON_SITE_DEMO_BLOCK_TEMPLATE_IDS, ON_SITE_DEMO_DIRECTORY_ORGANIZATIONS, ON_SITE_DEMO_DME_SUPPLIERS, ON_SITE_DEMO_DOCTORS, ON_SITE_DEMO_DOCTOR_IDS, ON_SITE_DEMO_FACILITIES, ON_SITE_DEMO_FACILITY_IDS, ON_SITE_DEMO_FIXTURES, ON_SITE_DEMO_INSURANCE_PAYORS, ON_SITE_DEMO_SCRIBES, ON_SITE_DEMO_SCRIBE_IDS, ON_SITE_DEMO_TENANT_ID, ON_SITE_DEMO_WORKSPACE_ID, ON_SITE_DIRECTORY_CATEGORY_SYSTEM, ON_SITE_STAFF_ID_SYSTEM, OPENHI_REPO_TAG_KEY_ENV_VAR, OPENHI_RESOURCE_URN_SYSTEM, OPENHI_TAG_KEY_PREFIX_ENV_VAR, OPENHI_TAG_SUFFIX_BRANCH_NAME, OPENHI_TAG_SUFFIX_REPO_NAME, OPENHI_TAG_SUFFIX_SERVICE_TYPE, OPENHI_TAG_SUFFIX_STAGE_TYPE, OWNING_DELETE_CASCADE_CONSUMER_NAME, OWNING_DELETE_CASCADE_DEFAULT_CONCURRENCY, OWNING_DELETE_CASCADE_STUCK_THRESHOLD_MINUTES, OWNING_DELETE_OPS_EVENT_BUS_ENV_VAR, OpenHiApp, OpenHiAuthService, OpenHiDataService, OpenHiEnvironment, OpenHiGlobalService, OpenHiGraphqlService, OpenHiRestApiService, OpenHiService, OpenHiStage, OpenHiWebsiteService, OpsEventBus, OwningDeleteCascadeLambdas, OwningDeleteCascadeWorkflow, PATIENT_ASSIGNED_BLOCK_TEMPLATE_EXTENSION_URL, PATIENT_ASSIGNED_HOME_HEALTH_PROVIDER_EXTENSION_URL, PATIENT_DEFAULT_CARE_LOCATION_EXTENSION_URL, PATIENT_DEFAULT_CARE_SETTING_EXTENSION_URL, PATIENT_HOSPICE_STATUS_EXTENSION_URL, PATIENT_RESIDENCY_ADMISSION_DATE_EXTENSION_URL, PATIENT_RESIDENCY_ROOM_EXTENSION_URL, PAYMENT_STATUS, PAYMENT_STATUS_SYSTEM, PAYOR_PLAN_TYPE_COMMERCIAL, PAYOR_PLAN_TYPE_MEDICARE, PAYOR_PLAN_TYPE_MEDICARE_ADVANTAGE, PAYOR_TYPE_COMMERCIAL, PAYOR_TYPE_MEDICARE, PAYOR_TYPE_MEDICARE_ADVANTAGE, PER_BRANCH_PREVIEW_PREFIX, PLACEHOLDER_TENANT_ID, PLACEHOLDER_WORKSPACE_ID, PLATFORM_DEPLOY_BRIDGE_ACTOR_SYSTEM, PLATFORM_SCOPE_TENANT_ID, POSTGRES_REPLICA_CLUSTER_ARN_SSM_NAME, POSTGRES_REPLICA_DATABASE_NAME_SSM_NAME, POSTGRES_REPLICA_SECRET_ARN_SSM_NAME, PRACTITIONER_CREDENTIALING_EXTENSION_URL, PRACTITIONER_CREDENTIALING_STATE_SUB_EXTENSION_URL, PRACTITIONER_CREDENTIALING_STATUS_SUB_EXTENSION_URL, PRACTITIONER_ROLE_PHYSICIAN, PRACTITIONER_ROLE_SCRIBE, PROVISION_DEFAULT_WORKSPACE_DETAIL_TYPE, PerBranchHostname, PlatformDeployBridge, PlatformDeployBridgeLambda, PostAuthenticationLambda, PostConfirmationLambda, PreTokenGenerationLambda, ProvisionDefaultWorkspaceLambda, QMB_EFFECTIVE_DATE_SUB_EXTENSION_URL, QMB_STATUS_VALUE_SUB_EXTENSION_URL, RENAME_CASCADE_CONSUMER_NAME, RENAME_CASCADE_DEFAULT_CONCURRENCY, RENAME_CASCADE_FAILED_THRESHOLD, RENAME_CASCADE_OPS_EVENT_BUS_ENV_VAR, RENAME_CASCADE_SLOW_THRESHOLD_SECONDS, REST_API_BASE_URL_SSM_NAME, REST_API_DOMAIN_NAME_SSM_NAME, RenameCascadeLambdas, RenameCascadeWorkflow, RootGraphqlApi, RootHostedZone, RootHttpApi, RootWildcardCertificate, SEED_DEMO_DATA_CONSUMER_NAME, SEED_SYSTEM_DATA_ACTOR_SYSTEM, SEED_SYSTEM_DATA_CONSUMER_NAME, SEED_SYSTEM_DATA_CONTROL_BUS_ENV_VAR, SNOMED_SYSTEM, SSM_PARAM_NAME_FULL_DOMAIN, STATE_MEDICAL_LICENSE_SYSTEM, STATIC_HOSTING_SERVICE_TYPE, SeedDemoDataLambda, SeedDemoDataWorkflow, SeedSystemDataLambda, SeedSystemDataWorkflow, StaticContent, StaticHosting, TOTAL_HOME_HEALTH_PATIENTS, USER_ONBOARDING_EVENT_SOURCE, US_NPI_SYSTEM, UserOnboardingWorkflow, WOUND_DEPTH_CODE, WOUND_EXAM_PANEL_CODE, WOUND_EXAM_PANEL_DISPLAY, WOUND_LENGTH_CODE, WOUND_STATUS_CODE, WOUND_WIDTH_CODE, WorkflowDedupConsumerNameInvalidError, WorkflowDedupTable, WorkflowDedupTableDuplicateError, __resetOnSiteDemoClaimCachesForTests, __resetOnSiteDemoEncounterCachesForTests, buildCredentialingQualifications, buildFhirCurrentResourceChangeDetail, buildOnSiteDemoBlockAppointments, buildOnSiteDemoClaims, buildOnSiteDemoEncounters, buildOnSiteDemoFacilityCoverages, buildOnSiteDemoFacilityPatients, buildOnSiteDemoHomeHealthCoverages, buildOnSiteDemoHomeHealthPatients, buildOnSiteDemoPaymentNotices, buildOnSiteDemoWoundConditions, buildOnSiteDemoWoundObservations, buildOnSiteDemoWoundProcedures, buildProvisionDefaultWorkspaceRequestedDetail, computeBranchHash, demoMembershipId, demoRoleAssignmentId, demoRolesForUserInTenant, demoScenarioIdentifier, facilityPatientsForBlock, findOnSiteDemoBlockTemplate, findOnSiteDemoFacilityPatientBlock, findOnSiteDemoHomeHealthPatientProvider, findOnSiteDemoHomeHealthPatientVisitCadenceDays, getDynamoDbDataStoreTableName, getPostgresReplicaSchemaName, getWorkflowDedupTableName, homeHealthEligibleDoctors, onSiteDemoBilledEncounterIds, onSiteDemoClaimIds, onSiteDemoDmeSupplierIds, onSiteDemoEncounterIds, onSiteDemoEncounterMetadata, onSiteDemoEncountersForPatient, onSiteDemoFacilityPatientIds, onSiteDemoHomeHealthPatientIds, onSiteDemoInsurancePayorIds, onSiteDemoIntakeOnlyFacilityPatientIds, onSiteDemoIntakeOnlyHomeHealthPatientIds, onSiteDemoPaymentNoticeIds, onSiteDemoScheduledFacilityPatientIds, onSiteDemoScheduledHomeHealthPatientIds, onSiteDemoUnbilledEncounterIds, onSiteDemoWoundBearingPatientIds, onSiteDemoWoundProcedurePatientIds, openHiTagKey, openhiResourceIdentifier, practitionerCredentialingForDoctor, practitionerCredentialingForState, woundConditionIdForPatient };
4807
+ export type { BridgedStatus, BuildParameterNameProps, CascadeChunkInput, CascadeFinalizeInput, CascadeFinalizeOutput, CascadeListInput, CascadeListOutput, ChildHostedZoneProps, ClaimWorkflowStatus, CloudFormationStackStatusChangeDetail, ComposeServiceDomainOptions, ComputeBranchHashOptions, CredentialingStatus, DataEventBusOptions, DataStoreHistoricalArchiveProps, DataStorePostgresReplicaProps, DemoDevUser, DemoTenantSpec, DemoWorkspaceDataPlaneFixtures, DemoWorkspaceSpec, DiscoverableStringParameterProps, DynamoDbDataStoreProps, FhirCurrentResourceChangeDetail, GrantConsumerOptions, HostingMode, IsoDayOfWeek, OnSiteDemoEncounterMetadata, OpenHiAppProps, OpenHiAuthServiceProps, OpenHiDataServiceProps, OpenHiEnvironmentProps, OpenHiGlobalServiceProps, OpenHiGraphqlServiceProps, OpenHiRestApiServiceProps, OpenHiServiceProps, OpenHiServiceType, OpenHiStageProps, OpenHiWebsiteServiceProps, OwningDeleteCascadeLambdasProps, OwningDeleteCascadeWorkflowProps, PaymentStatus, PayorPlanType, PerBranchHostnameProps, PlatformDeployBridgeLambdaProps, PlatformDeployBridgeProps, PostConfirmationLambdaProps, PractitionerCredentialingSpec, PreTokenGenerationLambdaProps, ProvisionDefaultWorkspaceLambdaProps, ProvisionDefaultWorkspaceRequestedDetail, RenameCascadeChunkInput, RenameCascadeFinalizeInput, RenameCascadeFinalizeOutput, RenameCascadeLambdasProps, RenameCascadeListInput, RenameCascadeListOutput, RenameCascadeWorkflowProps, RootGraphqlApiProps, RootHttpApiProps, SeedDemoDataLambdaProps, SeedDemoDataWorkflowProps, SeedSystemDataLambdaProps, SeedSystemDataWorkflowProps, StaticContentProps, StaticHostingProps, UserOnboardingWorkflowProps, WorkflowDedupTableProps };