1import { o as __toESM } from "./chunk-6z4oVpB-.js"; 2import "./capitalize-YV0fqYBS.js"; 3import { t as require_react } from "./react-CCT1erMQ.js"; 4import "./prop-types-BP3O0vhg.js"; 5import { t as require_jsx_runtime } from "./jsx-runtime-6ToSbptA.js"; 6import "./hoist-non-react-statics.cjs-aYVW55CP.js"; 7import "./clsx-BbsgvS4T.js"; 8import "./Stack-DHo_Jfjl.js"; 9import "./setPrototypeOf-BJGl62Ep.js"; 10import "./chainPropTypes-Bly6swO2.js"; 11import "./SvgIcon-C1SXqgmo.js"; 12import "./typeof-CtObx4yR.js"; 13import "./Amplify-D0fRojM9.js"; 14import "./types-Badw_GZ3.js"; 15import "./amplifyUrl-DDtOFVK1.js"; 16import "./tslib.es6-DOCxQXyJ.js"; 17import { l as queryClient } from "./api-CPx3dJPV.js"; 18import "./createCognitoUserPoolEndpointResolver-CeOq9LYq.js"; 19import { a as formatCurrency, h as getPageRange, u as formatNumber, x as isValidStr } from "./helpers-CIThgqfh.js"; 20import "./_baseGetTag-DyzlKCT_.js"; 21import "./errors-Bz8_MS_m.js"; 22import "./isObjectLike-YfNJf3G6.js"; 23import "./shim-tM7ZK01N.js"; 24import "./isSymbol-fHles11u.js"; 25import "./debounce-BI4AKE0v.js"; 26import "./dist-9_GVLiOM.js"; 27import "./dist-CuFlg_4O.js"; 28import "./react-dom-ld7mzddK.js"; 29import "./dist-DoGjUkMb.js"; 30import "./dist-CNliTmfT.js"; 31import "./classPrivateFieldGet2-T1C0ibFM.js"; 32import "./dist-D_mba0Ln.js"; 33import "./dist-wmihWyUh.js"; 34import "./Combination-CbWrdVoQ.js"; 35import "./dist-DNn8DQrd.js"; 36import "./dist-4SRU2SWZ.js"; 37import "./dist-auk7r2og.js"; 38import "./select-CAOM9JtG.js"; 39import "./dist-CvnDO-P6.js"; 40import { n as ie } from "./esm-OeroYQy0.js"; 41import { F as useSearchParams, P as useRouteLoaderData, T as useLoaderData, r as Link, t as Await } from "./chunk-62JRHF6Z-af5QuQJC.js"; 42import "./exports-BpI0uky7.js"; 43import "./notifyManager-DecSEhne.js"; 44import "./useBaseQuery-B2Mj_MCe.js"; 45import "./useInfiniteQuery-C4nk9Xz0.js"; 46import "./useMutation-IAQRP4R7.js"; 47import "./QueryClientProvider-C1UBWQV0.js"; 48import "./useQuery-CSX9sxP2.js"; 49import { n as createUiSettingSyncParamsAdapter } from "./uiSettingQueries-DxMHZzte.js"; 50import "./constants-DgZg1qAf.js"; 51import "./iconPropTypes-C5chbmyn-FDi75KL4.js"; 52import "./bucket-0-Dd64UaRz.js"; 53import { o as ChevronRight } from "./bucket-3-C2c54QJ8.js"; 54import "./bucket-6-Bmdc6sX9.js"; 55import "./bucket-10-23Eagi9e.js"; 56import "./bucket-15-CpUGvMi0.js"; 57import "./dist-Z60waVX1.js"; 58import "./dist-CWLu0srv.js"; 59import "./createLucideIcon-COoV7LiJ.js"; 60import "./check-DOlAikXd.js"; 61import "./chevron-left-KK3O4Zh5.js"; 62import "./chevron-right-D6LclTBO.js"; 63import "./more-horizontal-MX1PRlOR.js"; 64import "./search-8Hqcfgqj.js"; 65import { t as cn } from "./utils-DCaTMnxb.js"; 66import "./mixpanel.module-BACt6dlR.js"; 67import "./subDays-Bn5Ubekx.js"; 68import "./addMonths-DV_ETa6N.js"; 69import "./endOfMonth-DiAWB7_8.js"; 70import "./roundingMethods-XHnUL5k_.js"; 71import "./differenceInWeeks-sFLJRI4F.js"; 72import "./constants-fq6SDD6N.js"; 73import "./isValid-B-21K4uE.js"; 74import "./parseISO-CXlN910B.js"; 75import "./vanilla-CLGkZFy8.js"; 76import "./button-CgeNlB2Q.js"; 77import { i as TooltipTrigger, n as TooltipContent, r as TooltipProvider, t as Tooltip } from "./tooltip-B35baM50.js"; 78import { n as LongText_default } from "./LongText-BPuPQL-1.js"; 79import { t as Badge } from "./badge-B_ZVhNO-.js"; 80import "./utils-B9FPGvAJ.js"; 81import "./atoms-DP7aIs_n.js"; 82import { i as createBreadcrumbConfig } from "./dynamic-breadcrumbs.utils-CfffO9VU.js"; 83import "./Button-B4_Mm4Dz.js"; 84import "./Typography-Ds0rUQpc.js"; 85import "./Link-B8ZxMx_M.js"; 86import "./ErrorPage-BhyGtQ5j.js"; 87import "./command-BOGRc9Sm.js"; 88import "./dist-FSwW85_l.js"; 89import "./dialog-CHSk6eNP.js"; 90import "./useDebounce-H0OkZLNE.js"; 91import "./track-BTherQuK.js"; 92import { A as getProcedureCardQueueParams, L as parseProcCardSort, Tt as usePrefCardsBootstrapQuery, _ as PROCEDURE_CARD_QUEUE_DRAWER_FILTER_NAMES, c as DEFAULT_PROC_CARD_SORT_DIR, kt as PROC_CARD_QUERIES, s as DEFAULT_PROC_CARD_SORT_ATTR, t as DEFAULT_PAGE_SIZE, v as PROCEDURE_INTENT } from "./utils-DMECC7FS.js"; 93import "./comments-CJXe8Uor.js"; 94import { n as base_path_default } from "./base-path-DffKLrHl.js"; 95import "./zod-Cm5HR22p.js"; 96import "./input-Ct-ouO13.js"; 97import "./sheet-DOB9Or8E.js"; 98import { t as Skeleton } from "./skeleton-BN73VL4N.js"; 99import { t as invariant } from "./tiny-invariant-wiz_5cyW.js"; 100import { t as LogErrorBoundary } from "./LogErrorBoundary-DcZPNxdu.js"; 101import "./useDebounceCallback-BTOGb8mZ.js"; 102import { i as getCoreRowModel, n as useReactTable, r as createColumnHelper, s as getPaginationRowModel } from "./lib-BY10gxfc.js"; 103import "./controlled-pagination-CBMDgEEg.js"; 104import { a as TableHead, c as TableRow, n as TableBody$1, o as TableHeader$1, r as TableCell, s as TableHeaderRow, t as Table } from "./table-Dy8slfUO.js"; 105import { t as resetToFirstPage } from "./reset-to-first-page-C9Ia8cgw.js"; 106import "./filter-search-params-BsP9grdP.js"; 107import "./use-table-context-vmbhWTsO.js"; 108import { i as TableProvider, n as TableHeader, r as TablePagination, t as TableBody } from "./TableContext-UsmMiNIp.js"; 109import "./icon-input-CDNXspek.js"; 110import "./assignee-select-value-mUf-X1Sf.js"; 111import { n as fullWidthTableCellMeta, r as leftTableCellMeta } from "./table-meta-props-BSU7z6Gh.js";
112import "./Trigger-BoSVQJWZ.js"; 113import "./dist-CbAgl5nj.js"; 114import "./popover-thS7yP-j.js"; 115import "./pluralize-zopUG0kl.js"; 116import { t as FilterButton } from "./ToolbarFilterButton-w9NqPSIP.js"; 117import "./sync-route-params-Br0QEQ45.js"; 118import { t as syncRouteParamsV2 } from "./sync-route-params-v2-DWFBBA2x.js"; 119import { t as InfoToolTip } from "./InfoTooltip-2ydKh2zw.js"; 120import "./utils-DAvJoESF.js"; 121import { t as require_lodash } from "./lodash-BShnG86H.js"; 122import "./AssigneeSelect-ZKiSSEX4.js"; 123import { t as TableLink } from "./table-cell-link-DVaVxhGb.js"; 124import { t as FilterSelect } from "./FilterSelect-DKUVYTiM.js"; 125import { t as SearchBar } from "./SearchBar-C4RUhCCq.js"; 126import "./open-filter-drawer-Z65zArEy.js"; 127import { t as FilterDrawerContainer } from "./FilterDrawer-E7ll7gxx.js"; 128import { n as ProcedureCardStatus } from "./utils-BsjaYkyo.js"; 129import { t as StatusBadge } from "./status-badges-QRXlsldF.js"; 130import { f as selectProcedureAdminPermission } from "./selectors-B1wVjaJW.js"; 131import { n as usePrefCardClinicalLocations, r as usePrefCardServiceLines, t as usePrefCardAssigneeOptions } from "./hooks-CGaqEOka.js"; 132import { t as SortHeaderBase } from "./sort-header-base-DVtDPa45.js"; 133import { S as useProcCardQueueQuery, s as procProcedureCardQueueQuery, v as updateProcedureCard } from "./procedure-cards-C0zzDQza.js"; 134import { t as Protect } from "./protect-3q6osuu0.js"; 135import { t as useTableUrlState } from "./use-table-url-state-BuhBWQsB.js"; 136import { i as procedureQueueParamsSchema, t as hydratePrefCardSyncParamsUiSetting } from "./sync-route-params-schemas-B5FCtCEI.js"; 137import { a as PaginationPrevious, i as PaginationNext, n as PaginationContent, r as PaginationItem, t as Pagination } from "./pagination-CD04lxJ6.js"; 138import { t as ProcedureAssigneeSelect } from "./assignee-select-BFpxugat.js"; 139import { n as PROCEDURE_STATUS_OPTIONS } from "./filters-BMu2nIbH.js"; 140import { t as NumberBadge } from "./number-badge-xCmCqAJD.js"; 141var import_lodash$1 = /* @__PURE__ */ __toESM(require_lodash()); 142var import_react = /* @__PURE__ */ __toESM(require_react(), 1); 143const CO_PROCEDURE_CARD_QUEUE_TOOLTIP_MAP = { 144 total_potential_savings: ["Remaining standardization savings"], 145 count_linked_preference_cards: ["Count of preference cards associated with this procedure card"], 146 count_unique_physicians: ["Count of physicians associated with this procedure card"], 147 count_cases_in_last_12_months: ["Count of completed single panel cases associated with the associated preference cards"], 148 total_cost: ["Sum of items cost on the procedure card (current)"],
149 name: ["Name of procedure card"] 150}; 151var import_jsx_runtime = /* @__PURE__ */ __toESM(require_jsx_runtime(), 1); 152function SortHeader({ title, attr, className }) { 153 const [searchParams, setSearchParams] = useSearchParams(); 154 const [sortAttr, dir] = parseProcCardSort(searchParams.get("sort")); 155 const handleSortingChange = () => { 156 const newSort = `${attr}|${sortAttr === attr && dir === "asc" ? "desc" : "asc"}`; 157 searchParams.set("sort", newSort); 158 setSearchParams(searchParams); 159 }; 160 const isActive = sortAttr === attr; 161 const info = CO_PROCEDURE_CARD_QUEUE_TOOLTIP_MAP[attr]; 162 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeaderBase, { 163 title, 164 className, 165 isActive, 166 handleSortingChange, 167 info 168 }); 169} 170function TooltipBadge({ tooltip, side, align, sideOffset, alignOffset,...badgeProps }) { 171 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Tooltip, { 172 delayDuration: 100, 173 children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipTrigger, { 174 className: "w-fit", 175 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Badge, { ...badgeProps }) 176 }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipContent, { 177 side, 178 align, 179 sideOffset, 180 alignOffset, 181 className: "border-none bg-white px-2 py-1.5 shadow-[0_4px_24px_0_hsl(0_0%_0%_/_0.2)]", 182 children: tooltip 183 })] 184 }) }); 185} 186function ProcedureCardTable() { 187 const { data, isFetching, isSuccess } = useProcCardQueueQuery(); 188 const { data: isProcedureCardAdmin } = usePrefCardsBootstrapQuery(selectProcedureAdminPermission); 189 return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Table, { 190 containerClassName: "h-full", 191 children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHeader$1, { 192 sticky: true, 193 children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(TableHeaderRow, { children: [
194 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, { 195 className: "text-nowrap", 196 children: "Status" 197 }), 198 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, { 199 className: "text-nowrap", 200 children: "ID" 201 }), 202 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, { 203 className: cn("text-nowrap", fullWidthTableCellMeta.tableCellProps?.className), 204 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, { 205 attr: "name", 206 title: "Name" 207 }) 208 }), 209 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, { 210 align: "center", 211 className: "text-nowrap", 212 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, { 213 attr: "total_potential_savings", 214 title: "Remaining Opportunity" 215 }) 216 }), 217 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, { 218 align: "center", 219 className: "text-nowrap", 220 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, { 221 attr: "count_linked_preference_cards", 222 title: "Cards" 223 }) 224 }),
225 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, { 226 align: "center", 227 className: "text-nowrap", 228 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, { 229 attr: "count_unique_physicians", 230 title: "Physicians" 231 }) 232 }), 233 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, { 234 align: "right", 235 className: "text-nowrap", 236 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, { 237 attr: "count_cases_in_last_12_months", 238 title: "Cases" 239 }) 240 }), 241 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, { 242 align: "right", 243 className: "text-nowrap", 244 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, { 245 attr: "total_cost", 246 title: "Card Cost" 247 }) 248 }), 249 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, { 250 className: "text-nowrap", 251 children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { 252 className: "flex items-center space-x-1", 253 children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "Service Line" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InfoToolTip, { 254 info: "Service line(s) assigned to this procedure card", 255 contentClassName: "font-r", 256 iconClassName: "text-indigo-500 group-hover:text-indigo-400 mr-0 ml-1" 257 })] 258 }) 259 }),
260 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, { 261 className: "text-nowrap", 262 children: "Assignee" 263 }) 264 ] }) 265 }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(TableBody$1, { 266 className: "relative", 267 children: [ 268 isFetching ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { 269 className: "relative h-1.5 w-full p-0", 270 colSpan: 12, 271 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Skeleton, { className: "h-full w-full rounded-none bg-gradient-to-l from-primary to-primary-purple duration-1000" }) 272 }) }) : null, 273 isSuccess && data.items.map((row) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(TableRow, { children: [ 274 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StatusBadge, { status: row.procedure_card_status_display_name }) }), 275 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableLink, { 276 to: `${base_path_default}/procedures/${row.procedure_card_id}`, 277 children: row.procedure_card_display_id 278 }) }), 279 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { 280 className: "max-w-[280px]", 281 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableLink, { 282 to: `${base_path_default}/procedures/${row.procedure_card_id}`, 283 children: row.name ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LongText_default, { 284 text: (0, import_lodash$1.unescape)(row.name), 285 toolTipClassName: "max-w-md whitespace-normal break-words text-regular" 286 }) : "â" 287 }) 288 }), 289 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { 290 align: "right", 291 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RemainingOpportunityBadge$1, { item: row }) 292 }), 293 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { 294 align: "center", 295 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NumberBadge, { value: row.count_linked_preference_cards }) 296 }), 297 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { 298 align: "center", 299 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NumberBadge, { value: row.count_unique_physicians }) 300 }), 301 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { 302 align: "right", 303 children: row.count_cases_in_last_12_months ? formatNumber(row.count_cases_in_last_12_months, 0) : "â" 304 }), 305 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { 306 align: "right", 307 children: row.total_cost ? formatCurrency(row.total_cost) : "â" 308 }), 309 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { children: row.service_lines.length ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Badge, { 310 variant: "secondary", 311 children: [row.service_lines[0].name, row.service_lines.length > 1 ? ` +${row.service_lines.length - 1}` : ""] 312 }) : "â" }), 313 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Protect, { 314 condition: isProcedureCardAdmin ?? false, 315 fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: row.assignee_display_name || "â" }), 316 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureAssigneeSelect, { 317 currentAssignee: row.assignee_user_id === null ? null : { 318 value: row.assignee_user_id, 319 name: row.assignee_display_name || "â" 320 }, 321 variant: "outline", 322 resourceId: row.procedure_card_id, 323 name: "procedure-assignee" 324 }) 325 }) }) 326 ] }, row.procedure_card_id)), 327 isSuccess && data?.result_set_size === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { 328 colSpan: 11, 329 className: "h-12 text-center", 330 children: "No results found." 331 }) }) : null 332 ] 333 })] 334 }); 335} 336function RemainingOpportunityBadge$1({ item }) { 337 const total = item.total_potential_savings ?? 0; 338 const declined = item.declined_potential_savings ?? 0; 339 const remainingOpportunity = total - declined; 340 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipBadge, { 341 tooltip: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { 342 className: "type-eyebrow flex flex-col gap-1.5 text-left leading-[13px]", 343 children: [
344 /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { 345 className: "font-medium", 346 children: ["Total Potential: ", formatCurrency(total)] 347 }), 348 /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { 349 className: "space-y-0.5", 350 children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { children: ["Declined: ", formatCurrency(declined)] }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { children: ["Remaining: ", formatCurrency(remainingOpportunity)] })] 351 }), 352 /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Link, { 353 to: `${base_path_default}/procedures/${item.procedure_card_id}/preference-cards`, 354 className: "flex items-center text-nowrap font-medium text-indigo-600", 355 children: ["View Details", /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronRight, { 356 className: "h-3 w-3 shrink-0", 357 accentHeight: 13 358 })] 359 }) 360 ] 361 }), 362 variant: "outline", 363 className: "rounded-lg px-2 py-1 hover:bg-zinc-100", 364 side: "right", 365 align: "start", 366 sideOffset: -8, 367 alignOffset: 18, 368 children: formatCurrency(remainingOpportunity) 369 }); 370} 371function RemainingOpportunityBadge({ item }) { 372 const total = item.total_potential_savings ?? 0; 373 const declined = item.declined_potential_savings ?? 0; 374 const remainingOpportunity = Math.max(0, total - declined); 375 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipBadge, { 376 tooltip: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { 377 className: "type-eyebrow flex flex-col gap-1.5 text-left leading-[13px]", 378 children: [
379 /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { 380 className: "font-medium", 381 children: ["Total Potential: ", formatCurrency(total)] 382 }), 383 /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { 384 className: "space-y-0.5", 385 children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { children: ["Declined: ", formatCurrency(declined)] }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { children: ["Remaining: ", formatCurrency(remainingOpportunity)] })] 386 }), 387 /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Link, { 388 to: `${base_path_default}/procedures/${item.procedure_card_id}/preference-cards`, 389 className: "flex items-center text-nowrap font-medium text-indigo-600", 390 children: ["View Details", /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronRight, { 391 className: "h-3 w-3 shrink-0", 392 accentHeight: 13 393 })] 394 }) 395 ] 396 }), 397 variant: "outline", 398 className: "rounded-lg px-2 py-1 hover:bg-zinc-100", 399 side: "right", 400 align: "start", 401 sideOffset: -8, 402 alignOffset: 18, 403 children: formatCurrency(remainingOpportunity) 404 }); 405} 406var import_lodash = /* @__PURE__ */ __toESM(require_lodash()); 407var procCardsColumnHelper = createColumnHelper(); 408function getDefaultProcCardColumns({ isProcedureCardAdmin = false }) { 409 return [ 410 procCardsColumnHelper.accessor("procedure_card_status_display_name", { 411 id: "procedure_card_status_display_name", 412 size: 84, 413 header: () => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { 414 className: "flex items-center space-x-1", 415 children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "Status" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InfoToolTip, { 416 info: "Procedure card status", 417 contentClassName: "font-r", 418 iconClassName: "text-indigo-500 group-hover:text-indigo-400 mr-0 ml-1" 419 })] 420 }), 421 meta: leftTableCellMeta, 422 cell: (props) => { 423 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StatusBadge, { status: props.row.original.procedure_card_status_display_name }); 424 } 425 }), 426 procCardsColumnHelper.accessor("procedure_card_display_id", { 427 id: "procedure_card_display_id", 428 header: () => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { 429 className: "flex items-center space-x-1", 430 children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "ID" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InfoToolTip, { 431 info: "Procedure card ID", 432 contentClassName: "font-r", 433 iconClassName: "text-indigo-500 group-hover:text-indigo-400 mr-0 ml-1" 434 })] 435 }), 436 meta: leftTableCellMeta, 437 cell: (props) => { 438 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableLink, { 439 to: `${base_path_default}/procedures/${props.row.original.procedure_card_id}`, 440 children: props.row.original.procedure_card_display_id 441 }); 442 } 443 }), 444 procCardsColumnHelper.accessor("name", { 445 id: "name", 446 header: () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, { 447 attr: "name", 448 title: "Name" 449 }), 450 meta: leftTableCellMeta, 451 cell: (props) => { 452 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableLink, { 453 to: `${base_path_default}/procedures/${props.row.original.procedure_card_id}`, 454 children: props.row.original.name ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LongText_default, { 455 text: (0, import_lodash.unescape)(props.row.original.name), 456 toolTipClassName: "max-w-md whitespace-normal break-words text-regular" 457 }) : "â" 458 }); 459 } 460 }), 461 procCardsColumnHelper.accessor("total_potential_savings", { 462 id: "total_potential_savings", 463 size: 200, 464 header: () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, { 465 title: "Remaining Opportunity", 466 attr: "total_potential_savings" 467 }), 468 meta: leftTableCellMeta, 469 cell: (props) => { 470 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RemainingOpportunityBadge, { item: props.row.original }); 471 } 472 }), 473 procCardsColumnHelper.accessor("count_linked_preference_cards", { 474 id: "count_linked_preference_cards", 475 header: () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, { 476 attr: "count_linked_preference_cards", 477 title: "Cards" 478 }), 479 cell: (props) => { 480 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NumberBadge, { value: props.row.original.count_linked_preference_cards }); 481 } 482 }), 483 procCardsColumnHelper.accessor("count_unique_physicians", { 484 id: "count_unique_physicians", 485 header: () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, { 486 attr: "count_unique_physicians", 487 title: "Physicians" 488 }), 489 size: 200, 490 cell: (props) => { 491 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NumberBadge, { value: props.row.original.count_unique_physicians }); 492 } 493 }), 494 procCardsColumnHelper.accessor("count_cases_in_last_12_months", { 495 id: "count_cases_in_last_12_months", 496 size: 200, 497 header: () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, { 498 attr: "count_cases_in_last_12_months", 499 title: "Cases" 500 }), 501 cell: (props) => { 502 return props.row.original.count_cases_in_last_12_months ? formatNumber(props.row.original.count_cases_in_last_12_months, 0) : "â"; 503 } 504 }), 505 procCardsColumnHelper.accessor("total_cost", { 506 id: "total_cost", 507 size: 200, 508 header: () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, { 509 attr: "total_cost", 510 title: "Card Cost" 511 }), 512 cell: (props) => { 513 return props.row.original.total_cost ? formatCurrency(props.row.original.total_cost) : "â"; 514 } 515 }), 516 procCardsColumnHelper.accessor("service_lines", { 517 id: "service_lines", 518 size: 200, 519 header: () => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { 520 className: "flex items-center space-x-1", 521 children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "Service Line" }
521), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InfoToolTip, { 522 info: "Service line(s) assigned to this procedure card", 523 contentClassName: "font-r", 524 iconClassName: "text-indigo-500 group-hover:text-indigo-400 mr-0 ml-1" 525 })] 526 }), 527 cell: (props) => { 528 if (props.row.original.service_lines.length) return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Badge, { 529 variant: "secondary", 530 children: [props.row.original.service_lines[0].name, props.row.original.service_lines.length > 1 ? ` +${props.row.original.service_lines.length - 1}` : ""] 531 }); 532 else return "â"; 533 } 534 }), 535 procCardsColumnHelper.accessor("assignee_display_name", { 536 id: "assignee_display_name", 537 header: () => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { 538 className: "flex items-center space-x-1", 539 children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "Assignee" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InfoToolTip, { 540 info: "Procedure card assignee", 541 contentClassName: "font-r", 542 iconClassName: "text-indigo-500 group-hover:text-indigo-400 mr-0 ml-1" 543 })] 544 }), 545 meta: leftTableCellMeta, 546 size: 180, 547 cell: (props) => { 548 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Protect, { 549 condition: isProcedureCardAdmin ?? false, 550 fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: props.row.original.assignee_display_name || "â" }), 551 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureAssigneeSelect, { 552 currentAssignee: props.row.original.assignee_user_id === null ? null : { 553 value: props.row.original.assignee_user_id, 554 name: props.row.original.assignee_display_name || "â" 555 }, 556 variant: "outline", 557 resourceId: props.row.original.procedure_card_id, 558 name: "procedure-assignee" 559 }) 560 }); 561 } 562 }) 563 ]; 564} 565function ProcedureCardFilterDrawer() { 566 const [searchParams, setSearchParams] = useSearchParams(); 567 const { procedureQueueParams: params } = useLoaderData(); 568 const [values, setValues] = import_react.useState(params); 569 const [formKey, setFormKey] = import_react.useState(JSON.stringify(params)); 570 const { bootstrap } = useRouteLoaderData("co-root"); 571 function handleReset() { 572 setValues({}); 573 setFormKey(Math.random().toString()); 574 } 575 function handleOpenChange(nextOpen) { 576 setTimeout(() => { 577 setValues(params); 578 setFormKey(Math.random().toString()); 579 }, nextOpen ? 0 : 200); 580 } 581 function handleSubmit(e) { 582 e.preventDefault(); 583 const formData = new FormData(e.currentTarget); 584 const trackParams = []; 585 PROCEDURE_CARD_QUEUE_DRAWER_FILTER_NAMES.forEach((n) => searchParams.delete(n)); 586 PROCEDURE_CARD_QUEUE_DRAWER_FILTER_NAMES.forEach((param) => { 587 const value = formData.get(param); 588 if (typeof value === "string" && value) { 589 searchParams.set(param, value); 590 trackParams.push(param); 591 } else searchParams.delete(param); 592 }); 593 resetToFirstPage(searchParams); 594 setSearchParams(searchParams); 595 } 596 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FilterDrawerContainer, { 597 handleSubmit, 598 handleReset, 599 onOpenChange: handleOpenChange, 600 formKey, 601 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Suspense, { 602 fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Fallback, {}), 603 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Await, { 604 resolve: bootstrap, 605 errorElement: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: "Error bootstrap!" }), 606 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AwaitedFilters, { filters: values }) 607 }) 608 }) 609 }); 610} 611function MultipleFilter({ name, defaultValue, options, label, placeholder, inputPlaceholder }) { 612 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FilterSelect, { 613 options, 614 name, 615 label, 616 defaultValue, 617 placeholder, 618 inputPlaceholder 619 }); 620} 621function AwaitedFilters({ filters }) { 622 const serviceLineOptions = usePrefCardServiceLines(); 623 const clinicalLocations = usePrefCardClinicalLocations(); 624 const allDefaultValues = import_react.useMemo(() => ({ 625 statusIds: filters.procedure_card_status_ids ? filters.procedure_card_status_ids.split(",") : void 0, 626 serviceLines: filters.service_line_ids ? filters.service_line_ids.split(",") : void 0, 627 clinicalLocations: filters.preference_card_clinical_location_ids ? filters.preference_card_clinical_location_ids.split(",") : void 0 628 }), [filters]); 629 return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { 630 className: "mb-2 text-large", 631 children: "Procedures" 632 }
632), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { 633 className: "flex flex-col space-y-5", 634 children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(MultipleFilter, { 635 name: "service_line_ids", 636 defaultValue: allDefaultValues.serviceLines, 637 options: serviceLineOptions || [], 638 label: "Service Line", 639 placeholder: "All", 640 inputPlaceholder: "All" 641 }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MultipleFilter, { 642 name: "preference_card_clinical_location_ids", 643 defaultValue: allDefaultValues.clinicalLocations, 644 options: clinicalLocations || [], 645 label: "Site", 646 placeholder: "All", 647 inputPlaceholder: "All" 648 })] 649 })] }); 650} 651function Fallback() { 652 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: "Loading..." }); 653} 654function ProcedureCardFilterBar() { 655 const assigneeOptions = usePrefCardAssigneeOptions(); 656 const [searchParams] = useSearchParams(); 657 return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { 658 className: "flex flex-wrap items-start gap-1.5", 659 children: [ 660 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FilterButton, { 661 options: assigneeOptions || [], 662 attribute: "assignee_user_ids", 663 label: "Assignee", 664 persisted: true, 665 moduleToTrack: "PCM", 666 inputPlaceholder: "Search" 667 }), 668 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FilterButton, { 669 options: PROCEDURE_STATUS_OPTIONS, 670 attribute: "procedure_card_status_ids", 671 label: "Status", 672 persisted: true, 673 moduleToTrack: "PCM", 674 inputPlaceholder: "Search" 675 }), 676 searchParams.has("service_line_ids") ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ServiceLineFilter, {}) : null, 677 searchParams.has("preference_card_clinical_location_ids") ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ClinicalLocationsFilter, {}) : null 678 ] 679 }); 680} 681function ProcedureCardFilterBarContainer() { 682 const { bootstrap } = useRouteLoaderData("co-root"); 683 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Suspense, { 684 fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureCardFilterBar, {}), 685 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Await, { 686 resolve: bootstrap, 687 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureCardFilterBar, {}) 688 }) 689 }); 690} 691function ServiceLineFilter() { 692 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FilterButton, { 693 options: usePrefCardServiceLines() ?? [], 694 attribute: "service_line_ids", 695 label: "Service Lines", 696 moduleToTrack: "PCM", 697 inputPlaceholder: "Search" 698 }); 699} 700function ClinicalLocationsFilter() { 701 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FilterButton, { 702 options: usePrefCardClinicalLocations() ?? [], 703 attribute: "preference_card_clinical_location_ids", 704 label: "Site", 705 moduleToTrack: "PCM", 706 inputPlaceholder: "Search" 707 }); 708} 709function ProcedureCardToolbar() { 710 return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { 711 className: "space-y-2 py-1.5", 712 children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { 713 className: "flex items-center justify-between", 714 children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SearchBar, { 715 placeholder: "Search by Card Name", 716 param: "search_string" 717 }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureCardFilterDrawer, {})] 718 }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureCardFilterBarContainer, {})] 719 }); 720} 721function select(res) { 722 return res.result_set_size; 723} 724function ProcedureCardPagination() { 725 const { data: count = 0 } = useProcCardQueueQuery({ select }); 726 const [searchParams] = useSearchParams(); 727 const page = parseInt(searchParams.get("page_number") || "1", 10); 728 const pageSize = parseInt(searchParams.get("page_size") || "25", 10); 729 const { first, last } = getPageRange(page, count, pageSize); 730 const maxPage = Math.ceil(count / pageSize); 731 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Pagination, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(PaginationContent, { children: [ 732 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PrevLink, { pageNumber: page }), 733 /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(PaginationItem, { 734 className: "text-smallMedium text-muted", 735 children: [ 736 first, 737 " - ", 738 last, 739 " of ", 740 count 741 ] 742 }),
743 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NextLink, { 744 pageNumber: page, 745 totalItems: count, 746 maxPage 747 }) 748 ] }) }); 749} 750function PrevLink({ pageNumber }) { 751 const [searchParams] = useSearchParams(); 752 if (pageNumber !== 1) searchParams.set("page_number", String(pageNumber - 1)); 753 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationItem, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationPrevious, { 754 "data-disabled": pageNumber === 1, 755 to: `?${searchParams.toString()}` 756 }) }); 757} 758function NextLink({ pageNumber, totalItems, maxPage }) { 759 const [searchParams] = useSearchParams(); 760 if (pageNumber !== totalItems) searchParams.set("page_number", String(pageNumber + 1)); 761 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationItem, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationNext, { 762 "data-disabled": pageNumber === maxPage, 763 to: `?${searchParams.toString()}` 764 }) }); 765} 766async function loader({ request }) { 767 await hydratePrefCardSyncParamsUiSetting("pref_card_procedure_queue_filters", { procedure_card_status_ids: ProcedureCardStatus.ACTIVE.toUpperCase() }); 768 await syncRouteParamsV2(request, { 769 storageKey: "pref_card_procedure_queue_filters", 770 schema: procedureQueueParamsSchema, 771 storage: createUiSettingSyncParamsAdapter("pref_card_procedure_queue_filters") 772 }); 773 return { 774 procedureQueueParams: getProcedureCardQueueParams(new URL(request.url).searchParams), 775 ...createBreadcrumbConfig({ 776 label: "Procedures", 777 module: "PHYSICIAN_PREFERENCE_CARDS", 778 subModule: "procedures" 779 }) 780 }; 781} 782async function action({ request }) { 783 const formData = await request.formData(); 784 if (formData.get("intent") === PROCEDURE_INTENT.UPDATE_ASSIGNEE) { 785 const updates = {}; 786 const procedureId = formData.get("resourceId"); 787 const assigneeIdFormData = formData.get("procedure-assignee"); 788 const assigneeNameFormData = formData.get("assignee-name"); 789 invariant(isValidStr(procedureId), "resourceId is required"); 790 invariant(isValidStr(assigneeIdFormData), "Assignee ID is required"); 791 const assigneeId = assigneeIdFormData === "unassigned" ? null : assigneeIdFormData; 792 let assigneeName = null; 793 if (assigneeId !== null) { 794 invariant(isValidStr(assigneeNameFormData), "Assignee Name is required"); 795 assigneeName = assigneeNameFormData; 796 } 797 updates.assignee_user_id = assigneeId; 798 try { 799 await updateProcedureCard(procedureId, updates); 800 queryClient.invalidateQueries([PROC_CARD_QUERIES.procedureDetails, procedureId]); 801 const params = getProcedureCardQueueParams(new URL(request.url).searchParams); 802 queryClient.setQueryData(procProcedureCardQueueQuery(params).queryKey, (oldData) => { 803 if (!oldData) return oldData; 804 return { 805 ...oldData, 806 items: oldData.items.map((d) => { 807 if (d.procedure_card_id === procedureId) return { 808 ...d, 809 assignee_user_id: assigneeId, 810 assignee_display_name: assigneeName 811 }; 812 return d; 813 }) 814 }; 815 }); 816 return { ok: true }; 817 } catch { 818 const errors = { 819 api: null, 820 procedureId: null 821 }; 822 errors.api = "Error updating procedure"; 823 errors.procedureId = procedureId; 824 return errors; 825 } 826 } 827} 828function Component() { 829 const { hasCoProcedureCards } = ie(); 830 if (hasCoProcedureCards) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureCards_V2, {}); 831 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { 832 className: "w-full flex-1 overflow-y-auto", 833 children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { 834 className: "flex h-full min-h-0 flex-col overflow-hidden px-6 pb-1 pt-2", 835 children: [
836 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureCardToolbar, {}), 837 /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { 838 className: "min-h-0 grow-0 pt-1", 839 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureCardTable, {}) 840 }), 841 /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { 842 className: "m-auto w-full grow", 843 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureCardPagination, {}) 844 }) 845 ] 846 }) 847 }); 848} 849function ProcedureCards_V2() { 850 const { data, isFetching } = useProcCardQueueQuery({ keepPreviousData: true }); 851 const { data: isProcedureCardAdmin } = usePrefCardsBootstrapQuery(selectProcedureAdminPermission); 852 const { hasCoProcedureCards } = ie(); 853 const { pagination, sorting, columnFilters, onPaginationChange, onSortingChange, onColumnFiltersChange } = useTableUrlState({ 854 defaultSortField: DEFAULT_PROC_CARD_SORT_ATTR, 855 defaultSortDirection: DEFAULT_PROC_CARD_SORT_DIR, 856 parseSortParam: parseProcCardSort, 857 totalItems: data?.result_set_size ?? 0 858 }); 859 const columns = (0, import_react.useMemo)(() => getDefaultProcCardColumns({ isProcedureCardAdmin: isProcedureCardAdmin ?? false }), [isProcedureCardAdmin]); 860 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { 861 className: "w-full flex-1 overflow-y-auto", 862 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { 863 className: "flex h-full min-h-0 flex-col overflow-hidden px-6", 864 children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(TableProvider, { 865 table: useReactTable({ 866 data: data?.items ?? [], 867 columns, 868 getCoreRowModel: getCoreRowModel(), 869 getPaginationRowModel: getPaginationRowModel(), 870 onPaginationChange, 871 onSortingChange, 872 onColumnFiltersChange, 873 getRowId: (row) => row.procedure_card_id, 874 state: { 875 pagination, 876 sorting, 877 columnFilters 878 }, 879 manualFiltering: true, 880 manualSorting: true, 881 manualPagination: true, 882 rowCount: data?.result_set_size ?? 0,
883 autoResetPageIndex: false, 884 enableSortingRemoval: false 885 }), 886 isLoading: isFetching, 887 children: [ 888 /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { 889 className: "pb-4 pt-6", 890 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureCardToolbar, {}) 891 }), 892 /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { 893 className: "min-h-0 grow-0", 894 children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Table, { 895 containerClassName: "h-full", 896 children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHeader, {}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableBody, {})] 897 }) 898 }), 899 /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { 900 className: "m-auto w-full grow pb-4 pt-6", 901 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TablePagination, { variant: hasCoProcedureCards ? "text-page-number" : "default" }) 902 }) 903 ] 904 }) 905 }) 906 }); 907} 908Component.displayName = "CardProceduresIndex"; 909const ErrorBoundary = () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LogErrorBoundary, { routeComponent: "CardProceduresIndex" }); 910export { Component, ErrorBoundary, action, loader }; 911 912//# sourceMappingURL=procedures-Dg-c345m.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.