@mindbill/react 0.42.4 → 0.43.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
@@ -120,8 +120,11 @@ snapshot and authenticated copies of its documents. API-provided rejection
120
120
  `fieldPaths` call attention to likely problem controls, and payer contact
121
121
  guidance remains visible while the user corrects the bill. Submitting creates
122
122
  the next immutable attempt under the same logical `billId`; the original
123
- attempt and rejection remain in history. The host application does not build a
124
- second correction form or pass bill seed data back into the lifecycle.
123
+ attempt and rejection remain in history. Submit first opens a required delivery
124
+ confirmation for the corrected administrator and selected subpayor, where the
125
+ biller can verify or switch among e-bill, fax, email, and mail. Nothing is sent
126
+ until that second confirmation is submitted. The host application does not
127
+ build a second correction form or pass bill seed data back into the lifecycle.
125
128
 
126
129
  For a **closed** bill the server authorizes exactly two actions — **Reopen**
127
130
  and **Submit New Bill**. Submit New Bill opens the same `BillSubmissionForm`,
@@ -335,7 +338,13 @@ const data = buildBillTasksDashboard(workItems, [
335
338
  />
336
339
  ```
337
340
 
338
- `BillSubmissionsRibbon` renders a horizontal row of submission chips (Original Bill, Second Review, Duplicate Bill, …) with an optional deadline badge and up to three label/value meta pairs; `billSubmissionsRibbonFromHistory` maps the presented history's submission rows into chips.
341
+ `BillSubmissionsRibbon` renders a horizontal row of selectable submission chips
342
+ (Original Bill, Second Review, Duplicate Bill, …). Each chip summarizes its
343
+ attempt's latest acknowledgement or payment state — for example `277 Reject`
344
+ or `Payment in 30 working days` — plus delivery, sent date, and the relevant
345
+ reject/effective date. `billSubmissionsRibbonFromHistory` derives those chips
346
+ from one unified history across every attempt. In `ConnectedBillLifecycle`, a
347
+ chip click opens that shared history and highlights the selected submission.
339
348
 
340
349
  `ReportBillStatusDialog` records the outcome of a payment-status phone call to the Claims Administrator / Bill Review vendor: payer contacts, the host-rendered submission receipt (for example a `BillHistoryTable`), and the five standard reported statuses (`REPORT_BILL_STATUS_OPTIONS`). The host posts the resulting `ReportBillStatusInput` through its own lifecycle action call.
341
350
 
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
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, BillLifecycleDelivery, BillReviewAttachment as BillReviewAttachment$1, BillReviewPayerOption, BrowserBillSubmissionResult, BillLifecycleSessionProvider, BillReviewPayerListInput, BillReviewPayerPage, BillReviewPayer as BillReviewPayer$1, BillClaimsAdministratorDirectory, BillClaimsAdministratorSource, BrowserBillSubmissionDocument, BillDeliveryOptions as BillDeliveryOptions$1, SubmitBillInput, BillTasksDashboardData, BillTasksAgingBucket, BillHistoryEntry, ReportBillStatusInput, OrganizationProfileData, BillRemittanceSummary, BillEorDocument, BillPaymentRecord, BillLifecycleAction, BillRejection, BillLifecycleData, BillLifecycleClientOptions, BillLifecycleClient } from '@mindbill/browser';
4
+ import { BillReviewData as BillReviewData$1, BillLifecycleDelivery, BillReviewAttachment as BillReviewAttachment$1, SubmitBillInput, BillDeliveryOptions as BillDeliveryOptions$1, BillReviewPayerOption, BrowserBillSubmissionResult, BillLifecycleSessionProvider, BillReviewPayerListInput, BillReviewPayerPage, BillReviewPayer as BillReviewPayer$1, BillClaimsAdministratorDirectory, BillClaimsAdministratorSource, BrowserBillSubmissionDocument, BillTasksDashboardData, BillTasksAgingBucket, BillHistoryEntry, BillAttemptSummary, ReportBillStatusInput, OrganizationProfileData, BillRemittanceSummary, BillEorDocument, BillPaymentRecord, BillLifecycleAction, BillRejection, BillLifecycleData, BillLifecycleClientOptions, BillLifecycleClient } from '@mindbill/browser';
5
5
  export { BILL_TASKS_AGING_BUCKETS, BillActivityRecord, BillClaimsAdministratorContact, BillClaimsAdministratorDirectory, BillClaimsAdministratorMailingAddress, BillClaimsAdministratorPattern, BillClaimsAdministratorPayer, BillClaimsAdministratorSource, BillEorDocument, BillLifecycleAction, BillLifecycleActionId, BillLifecycleClient, BillLifecycleClientOptions, BillLifecycleData, BillLifecycleDelivery, BillLifecycleSession, BillLifecycleSessionProvider, BillLifecycleSessionRequest, BillPaymentRecord, BillRejection, BillRemittanceSummary, BillReviewPayerOption, BillReviewPayerSuggestion, BillTasksAgingBucket, BillTasksDashboardData, BillTasksDashboardItem, BillTasksDashboardRow, BillTasksDashboardSection, BillTasksDashboardSectionInput, BillTasksDashboardTone, BrowserBillSubmissionResult, CloseBillInput, PostBillPaymentInput, REPORT_BILL_STATUS_OPTIONS, ReopenBillInput, ReportBillStatusContacts, ReportBillStatusId, ReportBillStatusInput, SECOND_REVIEW_REASON_TEMPLATE, SECOND_REVIEW_WINDOW_DAYS, SecondReviewDeadline, SendDuplicateBillInput, SubmitSecondReviewInput, billTasksAgingBucketIndex, buildBillTasksDashboard, createBillLifecycleClient, reportBillStatusContacts, secondReviewDeadline } from '@mindbill/browser';
6
6
 
7
7
  type MindBillThemePreset = "mindbill" | "qme-companion" | "orange-bright" | "clinical-blue" | "midnight-cyan";
@@ -384,6 +384,24 @@ type BillReadOnlyFormProps = {
384
384
  };
385
385
  declare function BillReadOnlyForm({ data, appearance, className, style, onOpenAttachment }: BillReadOnlyFormProps): ReactElement;
386
386
 
387
+ /** First plausible email address inside a raw contact string, or null. */
388
+ declare function extractSendRouteEmail(raw: string | null | undefined): string | null;
389
+ /** "(213) 555-0199" for 10/11-digit US numbers; anything else trimmed as-is. */
390
+ declare function formatSendRouteFax(raw: string | null | undefined): string;
391
+ type SendRouteSubmission = Pick<SubmitBillInput, "route" | "destination" | "attention" | "subject" | "note" | "cc">;
392
+ type SendRouteDialogProps = {
393
+ /** Dialog heading, e.g. "Send bill". */
394
+ title?: ReactNode;
395
+ delivery: BillDeliveryOptions$1;
396
+ submitting?: boolean;
397
+ /** Disables the confirm button while the caller uploads documents. */
398
+ disabled?: boolean;
399
+ error?: string | null;
400
+ onCancel: () => void;
401
+ onConfirm: (submission: SendRouteSubmission) => void;
402
+ };
403
+ declare function SendRouteDialog({ title, delivery, submitting, disabled, error, onCancel, onConfirm, }: SendRouteDialogProps): ReactElement;
404
+
387
405
  declare const BILL_SUBMISSION_DOCUMENT_TYPES: readonly ["final_report", "proof_of_service", "letter_of_attestation", "form_122", "return_to_work_voucher", "w9", "medical_records", "appeal", "other"];
388
406
  type BillSubmissionDocumentType = (typeof BILL_SUBMISSION_DOCUMENT_TYPES)[number];
389
407
  type BillSubmissionAttachmentReportTypeMode = "auto" | "hidden" | "visible";
@@ -549,6 +567,8 @@ type BillSubmissionUpload = {
549
567
  };
550
568
  type BillSubmissionFormValue = {
551
569
  bill: CompleteBillSubmissionInput;
570
+ /** Delivery route explicitly confirmed by the biller, when the route picker is enabled. */
571
+ submission?: SendRouteSubmission;
552
572
  sourceAttachmentIds: string[];
553
573
  sourceAttachmentReportTypes: Record<string, string>;
554
574
  uploads: BillSubmissionUpload[];
@@ -586,10 +606,13 @@ type BillSubmissionFormProps = {
586
606
  taxonomyOptions?: BillSubmissionTaxonomyOption[];
587
607
  /**
588
608
  * The delivery-method dialog shown when the biller submits.
589
- * "auto" (default) shows it in connected mode whenever the delivery preview
590
- * is available; "off" submits directly on MindBill's recommended route.
609
+ * "auto" (default) shows it whenever the delivery preview is available;
610
+ * "required" fails closed until the biller confirms a route; "off" submits
611
+ * directly on MindBill's recommended route.
591
612
  */
592
- deliveryRoutePicker?: "auto" | "off";
613
+ deliveryRoutePicker?: "auto" | "required" | "off";
614
+ /** Heading for the delivery confirmation dialog. */
615
+ deliveryRouteDialogTitle?: ReactNode;
593
616
  /** Auto hides and forces J4 for med-legal bills; treatment bills show the full report-type directory. */
594
617
  attachmentReportTypeMode?: BillSubmissionAttachmentReportTypeMode;
595
618
  attachmentReportTypes?: readonly BillSubmissionReportTypeOption[];
@@ -659,25 +682,7 @@ declare function BillSubmissionProvidersSection(): ReactElement;
659
682
  declare function BillSubmissionServiceLinesSection(): ReactElement;
660
683
  declare function BillSubmissionAttachmentsSection(): ReactElement;
661
684
  declare function BillSubmissionActions(): ReactElement;
662
- declare function BillSubmissionForm({ initialBill, attachments, onSubmit, onSubmitted, getSession, sessionEndpoint, apiBaseUrl, fetch: fetchOverride, onListClaimsAdministrators, onSearchClaimsAdministrators, onGetClaimsAdministratorDirectory, claimsAdministratorSources, claimsAdministratorHint, diagnosisOptions, onSearchDiagnoses, onLookupPostalCode, procedureOptions, modifierOptions, taxonomyOptions, deliveryRoutePicker, attachmentReportTypeMode, attachmentReportTypes, defaultAttachmentReportType, appearance, className, style, disabled, submitLabel, heading, description, attentionFields, attentionMessage, children, }: BillSubmissionFormProps): ReactElement;
663
-
664
- /** First plausible email address inside a raw contact string, or null. */
665
- declare function extractSendRouteEmail(raw: string | null | undefined): string | null;
666
- /** "(213) 555-0199" for 10/11-digit US numbers; anything else trimmed as-is. */
667
- declare function formatSendRouteFax(raw: string | null | undefined): string;
668
- type SendRouteSubmission = Pick<SubmitBillInput, "route" | "destination" | "attention" | "subject" | "note" | "cc">;
669
- type SendRouteDialogProps = {
670
- /** Dialog heading, e.g. "Send bill". */
671
- title?: ReactNode;
672
- delivery: BillDeliveryOptions$1;
673
- submitting?: boolean;
674
- /** Disables the confirm button while the caller uploads documents. */
675
- disabled?: boolean;
676
- error?: string | null;
677
- onCancel: () => void;
678
- onConfirm: (submission: SendRouteSubmission) => void;
679
- };
680
- declare function SendRouteDialog({ title, delivery, submitting, disabled, error, onCancel, onConfirm, }: SendRouteDialogProps): ReactElement;
685
+ declare function BillSubmissionForm({ initialBill, attachments, onSubmit, onSubmitted, getSession, sessionEndpoint, apiBaseUrl, fetch: fetchOverride, onListClaimsAdministrators, onSearchClaimsAdministrators, onGetClaimsAdministratorDirectory, claimsAdministratorSources, claimsAdministratorHint, diagnosisOptions, onSearchDiagnoses, onLookupPostalCode, procedureOptions, modifierOptions, taxonomyOptions, deliveryRoutePicker, deliveryRouteDialogTitle, attachmentReportTypeMode, attachmentReportTypes, defaultAttachmentReportType, appearance, className, style, disabled, submitLabel, heading, description, attentionFields, attentionMessage, children, }: BillSubmissionFormProps): ReactElement;
681
686
 
682
687
  /** Public-domain and MindBill-owned metadata. CPT descriptions are intentionally limited to the curated catalog. */
683
688
  declare const DEFAULT_BILL_SUBMISSION_PROCEDURES: BillSubmissionProcedureOption[];
@@ -846,10 +851,14 @@ type SurfaceProps$2 = {
846
851
  };
847
852
  type BillSubmissionRibbonItem = {
848
853
  id: string;
854
+ /** Submission history row to reveal when this attempt is selected. */
855
+ historyEntryId?: string;
849
856
  /** "Original Bill" | "Second Review" | "Duplicate Bill" | … */
850
857
  label: string;
851
858
  /** Small rounded badge, e.g. "Denial in 3 working days". */
852
859
  badge?: string;
860
+ /** Semantic color for the status badge. */
861
+ badgeTone?: "neutral" | "success" | "warning" | "danger";
853
862
  /** Up to three label/value pairs rendered under the label. */
854
863
  meta?: Array<{
855
864
  label: string;
@@ -864,8 +873,11 @@ type BillSubmissionsRibbonProps = SurfaceProps$2 & {
864
873
  };
865
874
  /** Maps a presented-history submission summary to its delivery route word. */
866
875
  declare function billSubmissionsRibbonDeliveryLabel(summary: string): string;
867
- /** Builds ribbon items from MindBill's presented history (submission rows only). */
868
- declare function billSubmissionsRibbonFromHistory(history: BillHistoryEntry[]): BillSubmissionRibbonItem[];
876
+ /**
877
+ * Builds one item per immutable submission attempt. Each card summarizes the
878
+ * payer events following that attempt, while the full history remains unified.
879
+ */
880
+ declare function billSubmissionsRibbonFromHistory(history: BillHistoryEntry[], attempts?: BillAttemptSummary[]): BillSubmissionRibbonItem[];
869
881
  declare function BillSubmissionsRibbon({ items, onSelect, appearance, className, style, }: BillSubmissionsRibbonProps): ReactElement;
870
882
 
871
883
  type SurfaceProps$1 = {
@@ -1010,6 +1022,8 @@ declare function billActivityEventLabel(type: string): string;
1010
1022
  declare function BillActivityTimeline({ events, emptyLabel, appearance, className, style, formatDate }: BillActivityTimelineProps): ReactElement;
1011
1023
  type BillHistoryTableProps = SurfaceProps & {
1012
1024
  entries: readonly BillHistoryEntry[];
1025
+ /** History row selected from the submissions ribbon. */
1026
+ selectedEntryId?: string;
1013
1027
  emptyLabel?: string;
1014
1028
  /** Formats the Date column. Defaults to MM/DD/YYYY. */
1015
1029
  formatDate?: (iso: string) => string;
@@ -1030,7 +1044,7 @@ type BillHistoryTableProps = SurfaceProps & {
1030
1044
  * are pale-yellow, and 277 responses expand into decoded status-code sentences. The
1031
1045
  * rows come pre-worded from the MindBill API (`BillLifecycleData.history`).
1032
1046
  */
1033
- declare function BillHistoryTable({ entries, emptyLabel, appearance, className, style, formatDate, documentHref, onOpenDocument }: BillHistoryTableProps): ReactElement;
1047
+ declare function BillHistoryTable({ entries, selectedEntryId, emptyLabel, appearance, className, style, formatDate, documentHref, onOpenDocument }: BillHistoryTableProps): ReactElement;
1034
1048
  type BillLifecycleStage = "submitted" | "accepted" | "processed" | "closed";
1035
1049
  /** Maps MindBill's detailed lifecycle state into a compact progress stage. */
1036
1050
  declare function billLifecycleStage(state: string): BillLifecycleStage;