feat: schedule page UX improvements + CDT combo price skip

- Move Select Procedures above Check Eligibility in appointment right-click menu
- Show 3 blank service lines by default when opening Select Procedures with no saved procedures
- Fix serviceLines not being preserved when API returns empty procedures list
- CDT combo buttons no longer auto-fill price (only fill codes); user maps price via Map Price button
- Overlap detection in schedule: shorten earlier appointment display span when a later one starts within its range
- Procedures dialog: replace single manual-add row with 3 pre-filled blank rows grid + Add Line / Save Lines buttons

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
ff
2026-05-30 19:37:12 -04:00
parent 70f36fc13c
commit 4bf8cb1a94
4 changed files with 139 additions and 97 deletions

View File

@@ -456,7 +456,7 @@ export function ClaimForm({
setForm((prev) => ({
...prev,
serviceLines: mappedLines,
serviceLines: mappedLines.length > 0 ? mappedLines : prev.serviceLines,
...(data.appointmentFiles?.length
? { claimFiles: data.appointmentFiles }
: {}),
@@ -630,7 +630,7 @@ export function ClaimForm({
insuranceProvider: "",
insuranceSiteKey: "",
status: "PENDING",
serviceLines: Array.from({ length: 10 }, () => ({
serviceLines: Array.from({ length: proceduresOnly ? 3 : 10 }, () => ({
procedureCode: "",
procedureDate: serviceDate,
quad: "",
@@ -1876,7 +1876,7 @@ export function ClaimForm({
prev,
comboKey as any,
patient?.dateOfBirth ?? "",
{ replaceAll: false, lineDate: prev.serviceDate },
{ replaceAll: false, lineDate: prev.serviceDate, skipPrice: true },
prev.insuranceSiteKey,
);
setTimeout(() => scrollToLine(0), 0);
@@ -2116,7 +2116,7 @@ export function ClaimForm({
prev,
comboKey as any,
patient?.dateOfBirth ?? "",
{ replaceAll: false, lineDate: prev.serviceDate },
{ replaceAll: false, lineDate: prev.serviceDate, skipPrice: true },
);
setTimeout(() => scrollToLine(0), 0);
return next;
@@ -2679,7 +2679,7 @@ export function ClaimForm({
prev,
comboKey as any,
patient?.dateOfBirth ?? "",
{ replaceAll: false, lineDate: prev.serviceDate },
{ replaceAll: false, lineDate: prev.serviceDate, skipPrice: true },
);
setTimeout(() => scrollToLine(0), 0);
return next;