@mindbill/react 0.21.3 → 0.23.0

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/README.md CHANGED
@@ -8,7 +8,7 @@ npm install @mindbill/react @mindbill/node
8
8
 
9
9
  ## Connected lifecycle
10
10
 
11
- `ConnectedBillLifecycle` starts after your server atomically creates and submits an immutable bill. It owns the submitted-to-closed progress rail, a read-only rendering of the exact submitted snapshot, server-owned human-readable history, packet download, EORs, payment posting, Second Bill Review, close, and reopen. The only persistent header action is **Download packet**; status-dependent actions appear in the details view when MindBill makes them available.
11
+ `ConnectedBillLifecycle` starts after `BillSubmissionForm` atomically submits an immutable bill. It owns the submitted-to-closed progress rail, a read-only rendering of the exact submitted snapshot, server-owned human-readable history, packet download, EORs, payment posting, Second Bill Review, close, and reopen. The only persistent header action is **Download packet**; status-dependent actions appear in the details view when MindBill makes them available.
12
12
 
13
13
  ```tsx
14
14
  import { ConnectedBillLifecycle } from "@mindbill/react";
@@ -132,7 +132,7 @@ Browser callbacks such as `onChanged` are for immediate UI, navigation, optimist
132
132
 
133
133
  `BillSubmissionForm` owns the complete pre-submission experience: the bill field schema, required-field rules and red asterisks, validation, service-line editing, source-document selection, PDF uploads, and the single Submit action. Its `bill` value is structurally identical to the server SDK's `CreateBillRequest`.
134
134
 
135
- The partner application only loads initial values and sends the component's immutable snapshot to its authenticated server route. Uploaded files stay in the browser until the user submits.
135
+ The partner application only loads initial values and mints a short-lived browser session. Uploaded files stay in the browser until the user submits; the component validates and sends the immutable snapshot and PDF bytes directly to MindBill.
136
136
 
137
137
  ```tsx
138
138
  import { BillSubmissionForm } from "@mindbill/react";
@@ -142,9 +142,7 @@ import { BillSubmissionForm } from "@mindbill/react";
142
142
  attachments={bootstrap.attachments}
143
143
  getSession={() => fetch("/api/mindbill/session", { method: "POST" }).then(r => r.json())}
144
144
  appearance={{ preset: "qme-companion" }}
145
- onSubmit={({ bill, sourceAttachmentIds, uploads }) =>
146
- submitBill({ bill, sourceAttachmentIds, uploads })
147
- }
145
+ onSubmitted={({ billId }) => saveLocalBillLink(billId)}
148
146
  />
149
147
  ```
150
148
 
@@ -159,14 +157,90 @@ The component includes the interaction model, not just the markup:
159
157
  - searchable workers-comp procedure/modifier controls, medical-legal fee-schedule amounts, totals, valid manual CPT/HCPCS entry, and an automatically maintained empty line;
160
158
  - removable source documents with new-tab previews, a locked auto-attached practice W-9, and a full-width click, panel-drop, or whole-page PDF upload area. Every visible source document is included until removed; uploaded PDFs do not require document-type tagging.
161
159
 
162
- Partners supply tenant-specific bootstrap data, one short-lived browser session callback, and the final server submission callback. Required fields, validation, ZIP lookup, ICD-10 and payer directories, service-line behavior, attachments, and submission UX stay inside `@mindbill/react`, so every integration receives the same billing workflow. Optional `diagnosisOptions`, `procedureOptions`, `modifierOptions`, and lookup callbacks extend or replace defaults when a partner has licensed or organization-specific data.
160
+ Partners supply tenant-specific bootstrap data, one short-lived browser session callback, and optionally an `onSubmitted` callback to persist the returned `billId`. Required fields, validation, ZIP lookup, ICD-10 and payer directories, service-line behavior, PDF encoding, wire-format serialization, atomic submission, attachments, and submission UX stay inside `@mindbill/react`, so every integration receives the same billing workflow. Optional `diagnosisOptions`, `procedureOptions`, `modifierOptions`, and lookup callbacks extend or replace defaults when a partner has licensed or organization-specific data.
163
161
 
164
162
  Validation is component-owned as well. A missing routing payer is highlighted immediately; Submit highlights every invalid control with a specific message, focuses and scrolls to the first problem, and continues validating as the user corrects the form.
165
163
 
166
- `BILL_SUBMISSION_REQUIRED_FIELDS` and `validateBillSubmission` expose the same contract for tests and non-visual integrations. The component never creates a draft; its callback fires only when the user submits a locally valid snapshot.
164
+ `BILL_SUBMISSION_REQUIRED_FIELDS` and `validateBillSubmission` expose the same contract for tests and non-visual integrations. The component never creates a draft; `onSubmitted` fires only after MindBill accepts a locally valid immutable snapshot. The legacy `onSubmit` escape hatch remains optional for unusual deployments, but connected integrations should omit it so the library owns the complete contract.
167
165
 
168
166
  `BillReviewForm` remains available for legacy integrations that already own a custom review model. New integrations should use `BillSubmissionForm`.
169
167
 
168
+ ### Compose individual submission sections
169
+
170
+ `BillSubmissionForm` is also the form-state provider. Put its named children in your own page shell when you want the same MindBill behavior in a partner-specific layout. The sections do not duplicate required-field, directory, fee, attachment, or submission logic.
171
+
172
+ ```tsx
173
+ import {
174
+ BillSubmissionActions,
175
+ BillSubmissionAttachmentsSection,
176
+ BillSubmissionClaimSection,
177
+ BillSubmissionForm,
178
+ BillSubmissionHeader,
179
+ BillSubmissionPatientSection,
180
+ BillSubmissionProvidersSection,
181
+ BillSubmissionServiceLinesSection,
182
+ } from "@mindbill/react";
183
+
184
+ <BillSubmissionForm {...submissionProps}>
185
+ <BillSubmissionHeader />
186
+ <BillSubmissionPatientSection />
187
+ <BillSubmissionClaimSection />
188
+ <BillSubmissionProvidersSection />
189
+ <BillSubmissionServiceLinesSection />
190
+ <BillSubmissionAttachmentsSection />
191
+ <BillSubmissionActions />
192
+ </BillSubmissionForm>
193
+ ```
194
+
195
+ Omit a section when another step in your product already supplies that information, or reorder sections to match your workflow. `BillSubmissionActions` remains the only submit control and always validates the complete immutable snapshot.
196
+
197
+ ## Billing dashboard, aging, bill list, and reports
198
+
199
+ The dashboard components accept plain bill summaries, so they work with `@mindbill/node`'s `listBills()` response, a server-rendered loader, or a partner-owned cache. They never require an API key in the browser.
200
+
201
+ ```tsx
202
+ import {
203
+ BillingDashboard,
204
+ BillingReport,
205
+ buildBillingReportCsv,
206
+ type BillingDashboardBill,
207
+ } from "@mindbill/react";
208
+
209
+ const bills: BillingDashboardBill[] = apiBills.map((bill) => ({
210
+ id: bill.id,
211
+ billNumber: bill.billNumber,
212
+ patientName: `${bill.patient.firstName} ${bill.patient.lastName}`,
213
+ claimNumber: bill.claim.claimNumber,
214
+ payerName: bill.claim.claimsAdministrator?.name,
215
+ state: bill.state,
216
+ // Supply agingDays from your status/lifecycle response, or submittedAt when
217
+ // your server-side bill summary includes it.
218
+ agingDays: agingByBillId[bill.id] ?? 0,
219
+ totalCharge: bill.amounts.charged,
220
+ totalPaid: bill.amounts.paid,
221
+ balanceDue: bill.amounts.balance,
222
+ href: `/billing/${bill.id}`,
223
+ }));
224
+
225
+ <BillingDashboard
226
+ bills={bills}
227
+ appearance={{ preset: "orange-bright" }}
228
+ onSelectBill={(bill) => router.push(`/billing/${bill.id}`)}
229
+ />
230
+
231
+ <BillingReport bills={bills} groupBy="payer" />
232
+ ```
233
+
234
+ Use the smaller pieces independently when a page already has its own shell:
235
+
236
+ - `BillAgingSummary` — outstanding balance, open count, collected, total billed, and 0–30 / 31–60 / 61–90 / 91+ buckets;
237
+ - `BillList` — responsive desktop table and mobile cards;
238
+ - `BillingReport` — grouped totals by `status`, `payer`, or `aging`;
239
+ - `summarizeBillingDashboard` and `buildBillingReportRows` — presentation-free aggregates;
240
+ - `buildBillingReportCsv` — the same report rows as downloadable CSV text.
241
+
242
+ Pass only synthetic data to public examples and tests. In production, load organization-scoped bills on the server and authorize each bill-detail route independently.
243
+
170
244
  Use `BillStatusSummary` only when your application already owns status loading and wants a presentation-only component:
171
245
 
172
246
  ```tsx
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { MindBillAppearance, MindBillEventDetail, MindBillErrorDetail } from '@mindbill/embed';
2
2
  export { MindBillAppearance, MindBillErrorDetail, MindBillEventDetail } from '@mindbill/embed';
3
3
  import { CSSProperties, ReactElement, ReactNode } from 'react';
4
- import { BillReviewData as BillReviewData$1, BillReviewAttachment as BillReviewAttachment$1, BillLifecycleSessionProvider, BillReviewPayer as BillReviewPayer$1, BillLifecycleAction, BillLifecycleDelivery, BillPaymentRecord, BillRemittanceSummary, BillLifecycleData, BillLifecycleClientOptions, BillLifecycleClient, BillEorDocument } from '@mindbill/browser';
5
- export { BillActivityRecord, BillEorDocument, BillLifecycleAction, BillLifecycleActionId, BillLifecycleClient, BillLifecycleClientOptions, BillLifecycleData, BillLifecycleDelivery, BillLifecycleSession, BillLifecycleSessionProvider, BillLifecycleSessionRequest, BillPaymentRecord, BillRemittanceSummary, CloseBillInput, PostBillPaymentInput, ReopenBillInput, SubmitSecondReviewInput, createBillLifecycleClient } from '@mindbill/browser';
4
+ import { BillReviewData as BillReviewData$1, BillReviewAttachment as BillReviewAttachment$1, BrowserBillSubmissionResult, BillLifecycleSessionProvider, BillReviewPayer as BillReviewPayer$1, BrowserBillSubmissionDocument, BillLifecycleAction, BillLifecycleDelivery, BillPaymentRecord, BillRemittanceSummary, BillLifecycleData, BillLifecycleClientOptions, BillLifecycleClient, BillEorDocument } from '@mindbill/browser';
5
+ export { BillActivityRecord, BillEorDocument, BillLifecycleAction, BillLifecycleActionId, BillLifecycleClient, BillLifecycleClientOptions, BillLifecycleData, BillLifecycleDelivery, BillLifecycleSession, BillLifecycleSessionProvider, BillLifecycleSessionRequest, BillPaymentRecord, BillRemittanceSummary, BrowserBillSubmissionResult, CloseBillInput, PostBillPaymentInput, ReopenBillInput, SubmitSecondReviewInput, createBillLifecycleClient } from '@mindbill/browser';
6
6
 
7
7
  type MindBillThemePreset = "mindbill" | "qme-companion" | "orange-bright" | "clinical-blue";
8
8
  type MindBillReactAppearance = MindBillAppearance & {
@@ -473,8 +473,14 @@ type BillSubmissionFormValue = {
473
473
  type BillSubmissionFormProps = {
474
474
  initialBill: BillSubmissionInput;
475
475
  attachments?: BillSubmissionSourceAttachment[];
476
- onSubmit: (value: BillSubmissionFormValue) => void | Promise<void>;
477
- /** Short-lived partner browser session. Enables the built-in canonical payer directory. */
476
+ /**
477
+ * Legacy custom submission escape hatch. Connected forms should omit this so
478
+ * the component owns PDF encoding and the Partner API wire contract.
479
+ */
480
+ onSubmit?: (value: BillSubmissionFormValue) => void | Promise<void>;
481
+ /** Called after the connected component atomically creates and submits the bill. */
482
+ onSubmitted?: (result: BrowserBillSubmissionResult) => void | Promise<void>;
483
+ /** Short-lived partner browser session. Enables reference data and direct submission. */
478
484
  getSession?: BillLifecycleSessionProvider;
479
485
  sessionEndpoint?: string;
480
486
  apiBaseUrl?: string;
@@ -492,18 +498,37 @@ type BillSubmissionFormProps = {
492
498
  submitLabel?: string;
493
499
  heading?: ReactNode;
494
500
  description?: ReactNode;
501
+ /**
502
+ * Optional composable layout. Use the exported section components as children;
503
+ * the parent form continues to own validation, directory lookups, uploads, and submission.
504
+ */
505
+ children?: ReactNode;
495
506
  };
496
507
  declare const BILL_SUBMISSION_REQUIRED_FIELDS: readonly ["patient.firstName", "patient.lastName", "patient.dateOfBirth", "patient.address.line1", "patient.address.city", "patient.address.state", "patient.address.postalCode", "claim.claimNumber", "claim.claimsAdministrator", "service.date", "serviceLines[].code", "serviceLines[].units"];
497
508
  type BillSubmissionValidation = {
498
509
  valid: boolean;
499
510
  fieldErrors: Record<string, string>;
500
511
  };
512
+ declare function prepareBillSubmissionDocuments({ attachments, selectedIds, uploads, fetch: fetchOverride, }: {
513
+ attachments: BillSubmissionSourceAttachment[];
514
+ selectedIds: string[];
515
+ uploads: BillSubmissionUpload[];
516
+ fetch?: typeof globalThis.fetch;
517
+ }): Promise<BrowserBillSubmissionDocument[]>;
501
518
  declare function ensureTrailingBillSubmissionLine(lines: BillSubmissionInput["serviceLines"]): BillSubmissionInput["serviceLines"];
502
519
  declare function parseBillSubmissionDate(value: string): string | undefined;
503
520
  declare function formatBillSubmissionDate(value: string | null | undefined): string;
504
521
  declare function applyBillSubmissionEvaluationModifiers(lines: BillSubmissionInput["serviceLines"], type: BillSubmissionEvaluationType): BillSubmissionInput["serviceLines"];
505
522
  declare function validateBillSubmission(bill: BillSubmissionInput): BillSubmissionValidation;
506
- declare function BillSubmissionForm({ initialBill, attachments, onSubmit, getSession, sessionEndpoint, apiBaseUrl, fetch: fetchOverride, onSearchClaimsAdministrators, diagnosisOptions, onSearchDiagnoses, onLookupPostalCode, procedureOptions, modifierOptions, appearance, className, style, disabled, submitLabel, heading, description, }: BillSubmissionFormProps): ReactElement;
523
+ type BillSubmissionSectionId = "header" | "patient" | "claim" | "providers" | "serviceLines" | "attachments" | "actions";
524
+ declare function BillSubmissionHeader(): ReactElement;
525
+ declare function BillSubmissionPatientSection(): ReactElement;
526
+ declare function BillSubmissionClaimSection(): ReactElement;
527
+ declare function BillSubmissionProvidersSection(): ReactElement;
528
+ declare function BillSubmissionServiceLinesSection(): ReactElement;
529
+ declare function BillSubmissionAttachmentsSection(): ReactElement;
530
+ declare function BillSubmissionActions(): ReactElement;
531
+ declare function BillSubmissionForm({ initialBill, attachments, onSubmit, onSubmitted, getSession, sessionEndpoint, apiBaseUrl, fetch: fetchOverride, onSearchClaimsAdministrators, diagnosisOptions, onSearchDiagnoses, onLookupPostalCode, procedureOptions, modifierOptions, appearance, className, style, disabled, submitLabel, heading, description, children, }: BillSubmissionFormProps): ReactElement;
507
532
 
508
533
  /** Public-domain and MindBill-owned metadata. CPT descriptions are intentionally limited to the curated catalog. */
509
534
  declare const DEFAULT_BILL_SUBMISSION_PROCEDURES: BillSubmissionProcedureOption[];
@@ -517,6 +542,86 @@ declare function calculateBillSubmissionAllowedAmount(line: {
517
542
  units?: number;
518
543
  }, procedures?: BillSubmissionProcedureOption[]): number | undefined;
519
544
 
545
+ type BillingDashboardBill = {
546
+ id: string;
547
+ billNumber?: string | number;
548
+ externalId?: string;
549
+ patientName: string;
550
+ claimNumber?: string;
551
+ payerName?: string;
552
+ state: string;
553
+ submittedAt?: string;
554
+ updatedAt?: string;
555
+ agingDays?: number;
556
+ totalCharge: number;
557
+ totalPaid: number;
558
+ balanceDue: number;
559
+ href?: string;
560
+ workItemLabel?: string;
561
+ };
562
+ type BillAgingBucketId = "current" | "31-60" | "61-90" | "91+";
563
+ type BillAgingBucket = {
564
+ id: BillAgingBucketId;
565
+ label: string;
566
+ count: number;
567
+ balance: number;
568
+ };
569
+ type BillingDashboardSummary = {
570
+ totalBilled: number;
571
+ totalPaid: number;
572
+ outstanding: number;
573
+ openCount: number;
574
+ bills: number;
575
+ aging: BillAgingBucket[];
576
+ };
577
+ type BillingComponentProps = {
578
+ appearance?: MindBillReactAppearance;
579
+ className?: string;
580
+ style?: CSSProperties;
581
+ };
582
+ type BillListProps = BillingComponentProps & {
583
+ bills: BillingDashboardBill[];
584
+ onSelectBill?: (bill: BillingDashboardBill) => void;
585
+ emptyState?: ReactNode;
586
+ };
587
+ type BillAgingSummaryProps = BillingComponentProps & {
588
+ bills: BillingDashboardBill[];
589
+ heading?: ReactNode;
590
+ };
591
+ type BillingDashboardProps = BillingComponentProps & {
592
+ bills: BillingDashboardBill[];
593
+ heading?: ReactNode;
594
+ description?: ReactNode;
595
+ onSelectBill?: (bill: BillingDashboardBill) => void;
596
+ initialSearch?: string;
597
+ initialState?: string;
598
+ hideFilters?: boolean;
599
+ };
600
+ type BillingReportDimension = "status" | "payer" | "aging";
601
+ type BillingReportRow = {
602
+ key: string;
603
+ label: string;
604
+ billCount: number;
605
+ totalBilled: number;
606
+ totalPaid: number;
607
+ balanceDue: number;
608
+ };
609
+ type BillingReportProps = BillingComponentProps & {
610
+ bills: BillingDashboardBill[];
611
+ groupBy?: BillingReportDimension;
612
+ heading?: ReactNode;
613
+ description?: ReactNode;
614
+ };
615
+ declare function billAgingDays(bill: BillingDashboardBill, now?: Date): number;
616
+ declare function billAgingBucket(bill: BillingDashboardBill, now?: Date): BillAgingBucketId;
617
+ declare function summarizeBillingDashboard(bills: BillingDashboardBill[], now?: Date): BillingDashboardSummary;
618
+ declare function BillList(props: BillListProps): ReactElement;
619
+ declare function BillAgingSummary(props: BillAgingSummaryProps): ReactElement;
620
+ declare function BillingDashboard({ bills, heading, description, onSelectBill, initialSearch, initialState, hideFilters, appearance, className, style }: BillingDashboardProps): ReactElement;
621
+ declare function buildBillingReportRows(bills: BillingDashboardBill[], groupBy?: BillingReportDimension): BillingReportRow[];
622
+ declare function buildBillingReportCsv(bills: BillingDashboardBill[], groupBy?: BillingReportDimension): string;
623
+ declare function BillingReport({ bills, groupBy, heading, description, appearance, className, style }: BillingReportProps): ReactElement;
624
+
520
625
  type BillStatusData = {
521
626
  billId: string;
522
627
  state: string;
@@ -685,4 +790,4 @@ type MindBillWidgetProps = {
685
790
  declare function MindBillBillTimeline(props: MindBillWidgetProps): ReactElement;
686
791
  declare function MindBillBillReview(props: MindBillWidgetProps): ReactElement;
687
792
 
688
- export { BILL_SUBMISSION_DIAGNOSIS_QUICK_PICKS, BILL_SUBMISSION_DOCUMENT_TYPES, BILL_SUBMISSION_REQUIRED_FIELDS, type BillActivityEvent, BillActivityTimeline, type BillActivityTimelineProps, BillLifecycleActions, type BillLifecycleActionsProps, BillLifecycleProgress, type BillLifecycleProgressProps, type BillLifecycleStage, BillPayerContactCard, type BillPayerContactCardProps, BillPaymentLedger, type BillPaymentLedgerProps, BillReadOnlyForm, type BillReadOnlyFormProps, BillRemittanceCard, type BillRemittanceCardProps, type BillReviewAttachment, type BillReviewBillingProvider, type BillReviewClinician, type BillReviewData, type BillReviewDocumentType, type BillReviewDraft, type BillReviewFeatures, BillReviewForm, type BillReviewFormProps, type BillReviewLineItem, type BillReviewLocation, type BillReviewPayer, type BillReviewSaveInput, BillSnapshotSummary, type BillSnapshotSummaryProps, type BillStatusAction, type BillStatusClient, type BillStatusClientOptions, type BillStatusData, type BillStatusSession, type BillStatusSessionProvider, type BillStatusSessionRequest, BillStatusSummary, type BillStatusSummaryProps, type BillSubmissionAddress, type BillSubmissionDiagnosisOption, type BillSubmissionDocumentType, type BillSubmissionEvaluationType, BillSubmissionForm, type BillSubmissionFormProps, type BillSubmissionFormValue, type BillSubmissionInput, type BillSubmissionModifierOption, type BillSubmissionPostalPlace, type BillSubmissionProcedureOption, type BillSubmissionRoute, type BillSubmissionSourceAttachment, type BillSubmissionUpload, type BillSubmissionValidation, ConnectedBillLifecycle, type ConnectedBillLifecycleProps, ConnectedBillStatus, type ConnectedBillStatusProps, DEFAULT_BILL_SUBMISSION_MODIFIERS, DEFAULT_BILL_SUBMISSION_PROCEDURES, MindBillBillReview, MindBillBillTimeline, type MindBillReactAppearance, type MindBillThemePreset, type MindBillWidgetProps, type UseBillLifecycleOptions, type UseBillLifecycleResult, type UseBillStatusOptions, type UseBillStatusResult, applyBillSubmissionEvaluationModifiers, billActivityEventLabel, billLifecycleDisplayLabel, billLifecycleStage, buildBillReviewSaveInput, calculateBillSubmissionAllowedAmount, createBillStatusClient, ensureTrailingBillSubmissionLine, ensureTrailingProcedureLine, formatBillSubmissionDate, mindBillAppearanceStyle, mindBillThemePresets, parseBillSubmissionDate, resolveMindBillAppearance, useBillLifecycle, useBillStatus, validateBillSubmission, visibleBillLifecycleActions };
793
+ export { BILL_SUBMISSION_DIAGNOSIS_QUICK_PICKS, BILL_SUBMISSION_DOCUMENT_TYPES, BILL_SUBMISSION_REQUIRED_FIELDS, type BillActivityEvent, BillActivityTimeline, type BillActivityTimelineProps, type BillAgingBucket, type BillAgingBucketId, BillAgingSummary, type BillAgingSummaryProps, BillLifecycleActions, type BillLifecycleActionsProps, BillLifecycleProgress, type BillLifecycleProgressProps, type BillLifecycleStage, BillList, type BillListProps, BillPayerContactCard, type BillPayerContactCardProps, BillPaymentLedger, type BillPaymentLedgerProps, BillReadOnlyForm, type BillReadOnlyFormProps, BillRemittanceCard, type BillRemittanceCardProps, type BillReviewAttachment, type BillReviewBillingProvider, type BillReviewClinician, type BillReviewData, type BillReviewDocumentType, type BillReviewDraft, type BillReviewFeatures, BillReviewForm, type BillReviewFormProps, type BillReviewLineItem, type BillReviewLocation, type BillReviewPayer, type BillReviewSaveInput, BillSnapshotSummary, type BillSnapshotSummaryProps, type BillStatusAction, type BillStatusClient, type BillStatusClientOptions, type BillStatusData, type BillStatusSession, type BillStatusSessionProvider, type BillStatusSessionRequest, BillStatusSummary, type BillStatusSummaryProps, BillSubmissionActions, type BillSubmissionAddress, BillSubmissionAttachmentsSection, BillSubmissionClaimSection, type BillSubmissionDiagnosisOption, type BillSubmissionDocumentType, type BillSubmissionEvaluationType, BillSubmissionForm, type BillSubmissionFormProps, type BillSubmissionFormValue, BillSubmissionHeader, type BillSubmissionInput, type BillSubmissionModifierOption, BillSubmissionPatientSection, type BillSubmissionPostalPlace, type BillSubmissionProcedureOption, BillSubmissionProvidersSection, type BillSubmissionRoute, type BillSubmissionSectionId, BillSubmissionServiceLinesSection, type BillSubmissionSourceAttachment, type BillSubmissionUpload, type BillSubmissionValidation, type BillingComponentProps, BillingDashboard, type BillingDashboardBill, type BillingDashboardProps, type BillingDashboardSummary, BillingReport, type BillingReportDimension, type BillingReportProps, type BillingReportRow, ConnectedBillLifecycle, type ConnectedBillLifecycleProps, ConnectedBillStatus, type ConnectedBillStatusProps, DEFAULT_BILL_SUBMISSION_MODIFIERS, DEFAULT_BILL_SUBMISSION_PROCEDURES, MindBillBillReview, MindBillBillTimeline, type MindBillReactAppearance, type MindBillThemePreset, type MindBillWidgetProps, type UseBillLifecycleOptions, type UseBillLifecycleResult, type UseBillStatusOptions, type UseBillStatusResult, applyBillSubmissionEvaluationModifiers, billActivityEventLabel, billAgingBucket, billAgingDays, billLifecycleDisplayLabel, billLifecycleStage, buildBillReviewSaveInput, buildBillingReportCsv, buildBillingReportRows, calculateBillSubmissionAllowedAmount, createBillStatusClient, ensureTrailingBillSubmissionLine, ensureTrailingProcedureLine, formatBillSubmissionDate, mindBillAppearanceStyle, mindBillThemePresets, parseBillSubmissionDate, prepareBillSubmissionDocuments, resolveMindBillAppearance, summarizeBillingDashboard, useBillLifecycle, useBillStatus, validateBillSubmission, visibleBillLifecycleActions };