feat: payment PDF extraction, import, and remittance tracking

- Add Upload Payment Documents section with Extract & Download (Excel)
  and Extract & Import (database) buttons
- PDF extractor (pdfplumber) parses MassHealth RA PDFs: two-pass
  strategy joins summary-page ICN/patient map with detail-page
  procedure data (CDT code, paid code, tooth, date, allowed amount)
- RA cover-page summary (Payee ID, RA #, Payment Amount, etc.)
  included as separate Excel sheet; numeric values written as numbers
- Backend PDF import route groups rows by Member #, finds/creates
  patient, creates Payment + ServiceLines with ICN per procedure
- Add icn, paidCode, allowedAmount fields to ServiceLine schema
- Payments table: status simplified to Paid in Full / Balance;
  adjustment auto-computed on mhPaidAmount/copayment change;
  Paid in Full and Revert buttons with confirmation dialogs
- Edit Payment modal: shows ICN, Paid Code, Allowed Amount per line
- PDF Import badge distinguishes from OCR imports in payments table

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Gitead
2026-05-07 12:53:50 -04:00
co-authored by Claude Sonnet 4.6
parent e204d30ff6
commit dd0df4a435
76 changed files with 1570 additions and 96 deletions
+2
View File
@@ -20,6 +20,7 @@ import paymentsRoutes from "./payments";
import databaseManagementRoutes from "./database-management";
import notificationsRoutes from "./notifications";
import paymentOcrRoutes from "./paymentOcrExtraction";
import paymentPdfRoutes from "./paymentPdfExtraction";
import cloudStorageRoutes from "./cloud-storage";
import paymentsReportsRoutes from "./payments-reports";
import exportPaymentsReportsRoutes from "./export-payments-reports";
@@ -53,6 +54,7 @@ router.use("/payments", paymentsRoutes);
router.use("/database-management", databaseManagementRoutes);
router.use("/notifications", notificationsRoutes);
router.use("/payment-ocr", paymentOcrRoutes);
router.use("/payment-pdf", paymentPdfRoutes);
router.use("/cloud-storage", cloudStorageRoutes);
router.use("/payments-reports", paymentsReportsRoutes);
router.use("/export-payments-reports", exportPaymentsReportsRoutes);
@@ -0,0 +1,78 @@
import { Router, Request, Response } from "express";
import multer from "multer";
import axios from "axios";
import FormData from "form-data";
import { pdfImportService, PdfRow } from "../services/paymentService";
const router = Router();
const upload = multer({ storage: multer.memoryStorage() });
const OCR_BASE_URL = process.env.OCR_SERVICE_BASE_URL || "http://localhost:5003";
router.post(
"/extract",
upload.array("files"),
async (req: Request, res: Response): Promise<any> => {
const files = req.files as Express.Multer.File[] | undefined;
if (!files || files.length === 0) {
return res.status(400).json({ error: "No PDF files uploaded. Use field name 'files'." });
}
const bad = files.filter((f) => !f.originalname.toLowerCase().endsWith(".pdf"));
if (bad.length) {
return res.status(415).json({ error: `Only PDF files are allowed: ${bad.map((b) => b.originalname).join(", ")}` });
}
const form = new FormData();
for (const f of files) {
form.append("files", f.buffer, {
filename: f.originalname,
contentType: "application/pdf",
knownLength: f.size,
});
}
try {
const resp = await axios.post<{ rows: any[] }>(
`${OCR_BASE_URL}/extract/pdf/json`,
form,
{
headers: form.getHeaders(),
maxBodyLength: Infinity,
maxContentLength: Infinity,
timeout: 60_000,
}
);
return res.json({ rows: resp.data?.rows ?? [], headers: resp.data?.headers ?? [] });
} catch (err: any) {
const status = err?.response?.status;
const detail = err?.response?.data?.detail || err?.message || "Unknown error";
return res.status(500).json({ error: `PDF extraction failed${status ? ` (${status})` : ""}: ${detail}` });
}
}
);
// POST /api/payment-pdf/import
// Accepts already-extracted rows and imports them into the database.
router.post(
"/import",
async (req: Request, res: Response): Promise<any> => {
const userId = req.user?.id;
if (!userId) return res.status(401).json({ error: "Unauthorized" });
const { rows } = req.body as { rows: PdfRow[] };
if (!rows || !Array.isArray(rows) || rows.length === 0) {
return res.status(400).json({ error: "No rows provided." });
}
try {
const paymentIds = await pdfImportService.importRows(rows, userId);
return res.json({ message: "PDF rows imported successfully", paymentIds });
} catch (err: any) {
return res.status(500).json({ error: err?.message ?? "Import failed" });
}
}
);
export default router;
+18 -4
View File
@@ -442,12 +442,19 @@ router.patch(
return res.status(400).json({ message: "Invalid mhPaidAmount value" });
}
const existing = await prisma.payment.findUnique({ where: { id: paymentId } });
if (!existing) return res.status(404).json({ message: "Payment not found" });
const totalBilled = Number(existing.totalBilled);
const copayment = Number(existing.copayment ?? 0);
const adjustment = Math.max(0, totalBilled - mhPaidAmount - copayment);
const updated = await prisma.payment.update({
where: { id: paymentId },
data: { mhPaidAmount, updatedById: userId },
data: { mhPaidAmount, adjustment, updatedById: userId },
});
return res.json({ ...updated, mhPaidAmount: Number(updated.mhPaidAmount) });
return res.json({ ...updated, mhPaidAmount: Number(updated.mhPaidAmount), adjustment: Number(updated.adjustment) });
} catch (err: unknown) {
const message = err instanceof Error ? err.message : "Failed to update MH paid amount";
return res.status(500).json({ message });
@@ -469,12 +476,19 @@ router.patch(
return res.status(400).json({ message: "Invalid copayment value" });
}
const existing = await prisma.payment.findUnique({ where: { id: paymentId } });
if (!existing) return res.status(404).json({ message: "Payment not found" });
const totalBilled = Number(existing.totalBilled);
const mhPaidAmount = Number(existing.mhPaidAmount ?? 0);
const adjustment = Math.max(0, totalBilled - mhPaidAmount - val);
const updated = await prisma.payment.update({
where: { id: paymentId },
data: { copayment: val, updatedById: userId },
data: { copayment: val, adjustment, updatedById: userId },
});
return res.json({ ...updated, copayment: Number(updated.copayment) });
return res.json({ ...updated, copayment: Number(updated.copayment), adjustment: Number(updated.adjustment) });
} catch (err: unknown) {
const message = err instanceof Error ? err.message : "Failed to update copayment";
return res.status(500).json({ message });
+148
View File
@@ -176,6 +176,154 @@ export async function updatePayment(
// handling full-ocr-payments-import
// ── helpers shared by the PDF import ──────────────────────────────────────────
function parsePdfDate(dateStr: string): Date {
// "MM/DD/YY" → Date UTC
if (!dateStr) return new Date();
const parts = dateStr.split("/");
if (parts.length !== 3) return new Date();
const month = parseInt(parts[0]!, 10) - 1;
const day = parseInt(parts[1]!, 10);
const year = 2000 + parseInt(parts[2]!, 10);
return new Date(Date.UTC(year, month, day));
}
function parseTooth(tooth: string): { toothNumber: string | null; toothSurface: string | null } {
if (!tooth?.trim()) return { toothNumber: null, toothSurface: null };
const parts = tooth.trim().split(/\s+/);
return {
toothNumber: parts[0] || null,
toothSurface: parts.slice(1).join(" ") || null,
};
}
function parsePdfName(fullName: string): { firstName: string; lastName: string } {
// "LAST, FIRST" or "LAST LAST, FIRST"
const commaIdx = fullName.indexOf(", ");
if (commaIdx === -1) return { firstName: fullName, lastName: "Unknown" };
return {
lastName: fullName.slice(0, commaIdx).trim(),
firstName: fullName.slice(commaIdx + 2).trim(),
};
}
export type PdfRow = {
"Patient Name": string;
"Member #": string;
"ICN": string;
"Submitted Code": string;
"Paid Code": string;
"Tooth": string;
"Date of Service": string;
"Submitted Amount": string;
"Allowed Amount": string;
"Paid Amount": string;
"Source File": string;
};
export const pdfImportService = {
async importRows(rows: PdfRow[], userId: number) {
// Group by Member # — one payment per patient
const byMember = new Map<string, PdfRow[]>();
for (const row of rows) {
const key = row["Member #"] || row["Patient Name"];
if (!byMember.has(key)) byMember.set(key, []);
byMember.get(key)!.push(row);
}
const paymentIds: number[] = [];
for (const [, patientRows] of byMember) {
const first = patientRows[0]!;
const memberNo = first["Member #"];
const patientName = first["Patient Name"];
const totalBilled = patientRows.reduce(
(s, r) => s.plus(new Decimal(r["Submitted Amount"] || 0)),
new Decimal(0)
);
const totalMhPaid = patientRows.reduce(
(s, r) => s.plus(new Decimal(r["Paid Amount"] || 0)),
new Decimal(0)
);
const adjustment = Decimal.max(0, totalBilled.minus(totalMhPaid));
const paymentId = await prisma.$transaction(async (tx: typeof prisma) => {
// 1. Find or create patient
let patient = memberNo
? await tx.patient.findFirst({ where: { insuranceId: memberNo } })
: null;
if (!patient) {
const { firstName, lastName } = parsePdfName(patientName);
patient = await tx.patient.create({
data: {
firstName,
lastName,
insuranceId: memberNo || null,
dateOfBirth: new Date(Date.UTC(1900, 0, 1)),
gender: "",
phone: "",
userId,
},
});
}
// 2. Create payment
const payment = await tx.payment.create({
data: {
patientId: patient.id,
userId,
totalBilled,
totalPaid: new Decimal(0),
totalAdjusted: new Decimal(0),
totalDue: totalBilled,
mhPaidAmount: totalMhPaid,
adjustment,
status: "PENDING",
notes: `PDF import from ${first["Source File"] ?? "unknown file"}`,
},
});
// 3. Create one service line per row
for (const row of patientRows) {
const billed = new Decimal(row["Submitted Amount"] || 0);
const mhPaid = new Decimal(row["Paid Amount"] || 0);
const due = Decimal.max(0, billed.minus(mhPaid));
const { toothNumber, toothSurface } = parseTooth(row["Tooth"]);
const allowed = new Decimal(row["Allowed Amount"] || 0);
await tx.serviceLine.create({
data: {
paymentId: payment.id,
icn: row["ICN"] || null,
procedureCode: row["Submitted Code"] || "",
paidCode: row["Paid Code"] || null,
allowedAmount: allowed,
toothNumber,
toothSurface,
procedureDate: parsePdfDate(row["Date of Service"]),
totalBilled: billed,
totalPaid: mhPaid,
totalAdjusted: new Decimal(0),
totalDue: due,
status: mhPaid.gt(0) ? "PARTIALLY_PAID" : "UNPAID",
},
});
}
return payment.id;
});
paymentIds.push(paymentId);
}
return paymentIds;
},
};
export const fullOcrPaymentService = {
async importRows(rows: OcrRow[], userId: number) {
const results: number[] = [];
+1
View File
@@ -85,6 +85,7 @@
"vaul": "^1.1.2",
"wouter": "^3.7.0",
"ws": "^8.18.0",
"xlsx": "^0.18.5",
"zod": "^3.24.2",
"zod-validation-error": "^3.4.0"
},
@@ -504,6 +504,10 @@ export default function PaymentEditModal({
<span className="bg-gray-100 text-gray-800 px-2 py-0.5 rounded-full font-medium">
Claim #{payment.claimId.toString().padStart(4, "0")}
</span>
) : payment.notes?.startsWith("PDF import") ? (
<span className="bg-blue-100 text-blue-800 px-2 py-0.5 rounded-full font-medium">
PDF Import
</span>
) : (
<span className="bg-gray-100 text-gray-800 px-2 py-0.5 rounded-full font-medium">
OCR Imported Payment
@@ -628,6 +632,28 @@ export default function PaymentEditModal({
{line.procedureCode}
</span>
</p>
{(line as any).icn && (
<p>
<span className="text-gray-500">ICN:</span>{" "}
<span className="font-medium font-mono text-xs">
{(line as any).icn}
</span>
</p>
)}
{(line as any).paidCode && (line as any).paidCode !== line.procedureCode && (
<p>
<span className="text-gray-500">Paid Code:</span>{" "}
<span className="font-medium">{(line as any).paidCode}</span>
</p>
)}
{(line as any).allowedAmount != null && (
<p>
<span className="text-gray-500">Allowed:</span>{" "}
<span className="font-medium text-blue-600">
${Number((line as any).allowedAmount).toFixed(2)}
</span>
</p>
)}
{(line as any).quad && (
<p>
<span className="text-gray-500">Quad:</span>{" "}
@@ -0,0 +1,267 @@
import * as React from "react";
import * as XLSX from "xlsx";
import {
Card,
CardContent,
CardDescription,
CardHeader,
CardTitle,
} from "@/components/ui/card";
import { Button } from "@/components/ui/button";
import { FileText, X, Download, DatabaseIcon } from "lucide-react";
import { useMutation } from "@tanstack/react-query";
import { apiRequest, queryClient } from "@/lib/queryClient";
import { toast } from "@/hooks/use-toast";
import { QK_PAYMENTS_RECENT_BASE } from "@/components/payments/payments-recent-table";
import {
MultipleFileUploadZone,
MultipleFileUploadZoneHandle,
} from "../file-upload/multiple-file-upload-zone";
type Row = Record<string, string>;
type Header = Record<string, string>;
const COLUMNS: { key: string; label: string }[] = [
{ key: "Patient Name", label: "Patient Name" },
{ key: "Member #", label: "Member #" },
{ key: "ICN", label: "ICN" },
{ key: "Submitted Code", label: "Submitted Code" },
{ key: "Paid Code", label: "Paid Code" },
{ key: "Tooth", label: "Tooth" },
{ key: "Date of Service", label: "Date of Service" },
{ key: "Submitted Amount", label: "Submitted ($)" },
{ key: "Allowed Amount", label: "Allowed ($)" },
{ key: "Paid Amount", label: "Paid ($)" },
];
const SUMMARY_FIELDS = [
"Source File",
"Payee ID",
"Business NPI",
"Run #",
"RA #",
"RA Date",
"Claim Detail Amount",
"Claim Adjustment Amount",
"Misc. Adjustment Amount",
"Payment Amount",
];
// Convert a string value to a number if it looks numeric, otherwise keep as string.
// Handles: "36.00" → 36, "$14,369.00" → 14369, "($3,107.39)" → -3107.39
function toExcelValue(val: string): string | number {
if (!val) return "";
const stripped = val
.replace(/\$/g, "")
.replace(/,/g, "")
.replace(/^\((.+)\)$/, "-$1") // (3,107.39) → -3107.39
.trim();
const num = Number(stripped);
return stripped !== "" && !isNaN(num) ? num : val;
}
function downloadExcel(rows: Row[], headers: Header[], sourceFileName: string) {
const wb = XLSX.utils.book_new();
// Sheet 1 — RA Summary (one row per uploaded PDF)
if (headers.length > 0) {
const summaryData = headers.map((h) => {
const out: Record<string, string | number> = {};
SUMMARY_FIELDS.forEach((f) => { out[f] = toExcelValue(h[f] ?? ""); });
return out;
});
const wsSummary = XLSX.utils.json_to_sheet(summaryData, {
header: SUMMARY_FIELDS,
});
XLSX.utils.book_append_sheet(wb, wsSummary, "RA Summary");
}
// Sheet 2 — Payment Data (one row per ICN)
const data = rows.map((row) => {
const out: Record<string, string | number> = {};
COLUMNS.forEach(({ key, label }) => { out[label] = toExcelValue(row[key] ?? ""); });
return out;
});
const wsData = XLSX.utils.json_to_sheet(data, {
header: COLUMNS.map((c) => c.label),
});
XLSX.utils.book_append_sheet(wb, wsData, "Payment Data");
const name = sourceFileName.replace(/\.pdf$/i, "") || "payment_extract";
XLSX.writeFile(wb, `${name}.xlsx`);
}
export default function PaymentUploadDocumentsBlock() {
const MAX_FILES = 10;
const ACCEPTED_FILE_TYPES = "application/pdf";
const uploadZoneRef = React.useRef<MultipleFileUploadZoneHandle | null>(null);
const [filesForUI, setFilesForUI] = React.useState<File[]>([]);
const [isUploading] = React.useState(false);
const [error, setError] = React.useState<string | null>(null);
// ── shared extract helper ────────────────────────────────────────────────
const extractData = async (files: File[]): Promise<{ rows: Row[]; headers: Header[] }> => {
const formData = new FormData();
files.forEach((file) => formData.append("files", file, file.name));
const res = await apiRequest("POST", "/api/payment-pdf/extract", formData);
if (!res.ok) {
const err = await res.json().catch(() => ({}));
throw new Error(err?.error || "Failed to extract PDF data");
}
const data = (await res.json()) as { rows: Row[]; headers: Header[] };
return { rows: data.rows ?? [], headers: data.headers ?? [] };
};
const getFiles = () => {
const files = uploadZoneRef.current?.getFiles() ?? [];
if (!files.length) {
setError("Please upload at least one PDF file.");
return null;
}
setError(null);
return files;
};
// ── Extract & Download ───────────────────────────────────────────────────
const downloadMutation = useMutation({
mutationFn: async (files: File[]) => {
const { rows, headers } = await extractData(files);
return { rows, headers, sourceName: files[0]?.name ?? "payment_extract" };
},
onSuccess: ({ rows, headers, sourceName }) => {
if (rows.length === 0) {
toast({ title: "No data", description: "No rows were extracted from the PDF.", variant: "destructive" });
return;
}
downloadExcel(rows, headers, sourceName);
toast({ title: "Downloaded", description: `${rows.length} rows exported to Excel.` });
},
onError: (err: any) => {
toast({ title: "Error", description: err.message, variant: "destructive" });
},
});
// ── Extract & Import ─────────────────────────────────────────────────────
const importMutation = useMutation({
mutationFn: async (files: File[]) => {
const { rows } = await extractData(files);
if (rows.length === 0) throw new Error("No rows extracted from the PDF.");
const res = await apiRequest("POST", "/api/payment-pdf/import", { rows });
if (!res.ok) {
const err = await res.json().catch(() => ({}));
throw new Error(err?.error || "Import failed");
}
return res.json();
},
onSuccess: async (data) => {
toast({
title: "Imported",
description: `${data.paymentIds?.length ?? 0} payment(s) created successfully.`,
});
await queryClient.invalidateQueries({ queryKey: QK_PAYMENTS_RECENT_BASE });
},
onError: (err: any) => {
toast({ title: "Error", description: err.message, variant: "destructive" });
},
});
const handleZoneFilesChange = React.useCallback((files: File[]) => {
setFilesForUI(files);
setError(null);
}, []);
const removeUploadedFile = React.useCallback((index: number) => {
uploadZoneRef.current?.removeFile(index);
}, []);
const busy = downloadMutation.isPending || importMutation.isPending;
return (
<div className="mb-8">
<Card>
<CardHeader>
<CardTitle>Upload Payment Documents</CardTitle>
<CardDescription>
Upload up to 10 MassHealth remittance PDFs. Extract and download as
Excel, or import directly into the database.
</CardDescription>
</CardHeader>
<CardContent>
<div className="bg-gray-100 p-4 rounded-md space-y-4">
<MultipleFileUploadZone
ref={uploadZoneRef}
isUploading={isUploading}
acceptedFileTypes={ACCEPTED_FILE_TYPES}
maxFiles={MAX_FILES}
onFilesChange={handleZoneFilesChange}
/>
{filesForUI.length > 0 && (
<div>
<p className="text-sm text-gray-600 mb-2">
Uploaded ({filesForUI.length}/{MAX_FILES})
</p>
<ul className="space-y-2 max-h-48 overflow-auto">
{filesForUI.map((file, idx) => (
<li
key={`${file.name}-${file.size}-${idx}`}
className="flex items-center justify-between border rounded-md p-2 bg-white"
>
<div className="flex items-center gap-3">
<FileText className="h-6 w-6 text-blue-500" />
<div className="text-left">
<p className="font-medium text-blue-700 truncate">{file.name}</p>
<p className="text-sm text-gray-500">
{(file.size / 1024 / 1024).toFixed(2)} MB
</p>
</div>
</div>
<Button variant="ghost" size="sm" onClick={() => removeUploadedFile(idx)}>
<X className="h-4 w-4" />
</Button>
</li>
))}
</ul>
</div>
)}
</div>
<div className="mt-4 flex gap-3">
{/* Extract & Download */}
<Button
className="flex-1 h-12 gap-2 bg-blue-600 hover:bg-blue-700 text-white"
type="button"
disabled={busy || !filesForUI.length}
onClick={() => {
const files = getFiles();
if (files) downloadMutation.mutate(files);
}}
>
<Download className="h-4 w-4" />
{downloadMutation.isPending ? "Extracting…" : "Extract & Download"}
</Button>
{/* Extract & Import */}
<Button
className="flex-1 h-12 gap-2 bg-teal-600 hover:bg-teal-700 text-white"
type="button"
disabled={busy || !filesForUI.length}
onClick={() => {
const files = getFiles();
if (files) importMutation.mutate(files);
}}
>
<DatabaseIcon className="h-4 w-4" />
{importMutation.isPending ? "Importing…" : "Extract & Import"}
</Button>
</div>
{error && <p className="mt-3 text-sm text-red-600">{error}</p>}
</CardContent>
</Card>
</div>
);
}
@@ -103,8 +103,6 @@ export default function PaymentsRecentTable({
const [editingMhPaidValue, setEditingMhPaidValue] = useState<string>("");
const [editingCopaymentId, setEditingCopaymentId] = useState<number | null>(null);
const [editingCopaymentValue, setEditingCopaymentValue] = useState<string>("");
const [editingAdjustmentId, setEditingAdjustmentId] = useState<number | null>(null);
const [editingAdjustmentValue, setEditingAdjustmentValue] = useState<string>("");
const [isRevertOpen, setIsRevertOpen] = useState(false);
const [revertPaymentId, setRevertPaymentId] = useState<number | null>(null);
@@ -394,6 +392,12 @@ export default function PaymentsRecentTable({
const [isUnvoidOpen, setIsUnvoidOpen] = useState(false);
const [unvoidPaymentId, setUnvoidPaymentId] = useState<number | null>(null);
const [isPaidInFullOpen, setIsPaidInFullOpen] = useState(false);
const [paidInFullPaymentId, setPaidInFullPaymentId] = useState<number | null>(null);
const [isRevertPaidOpen, setIsRevertPaidOpen] = useState(false);
const [revertPaidPaymentId, setRevertPaidPaymentId] = useState<number | null>(null);
const handleConfirmVoid = () => {
if (!voidPaymentId) return;
handleVoid(voidPaymentId);
@@ -408,6 +412,20 @@ export default function PaymentsRecentTable({
setIsUnvoidOpen(false);
};
const handleConfirmPaidInFull = () => {
if (!paidInFullPaymentId) return;
updatePaymentStatusMutation.mutate({ paymentId: paidInFullPaymentId, status: "PAID" });
setPaidInFullPaymentId(null);
setIsPaidInFullOpen(false);
};
const handleConfirmRevertPaid = () => {
if (!revertPaidPaymentId) return;
updatePaymentStatusMutation.mutate({ paymentId: revertPaidPaymentId, status: "PENDING" });
setRevertPaidPaymentId(null);
setIsRevertPaidOpen(false);
};
// Pagination
useEffect(() => {
if (onPageChange) onPageChange(currentPage);
@@ -660,9 +678,13 @@ export default function PaymentsRecentTable({
</TableCell>
)}
<TableCell>
<span className="text-sm font-mono">
{payment.claim?.claimNumber ?? <span className="text-gray-400">—</span>}
</span>
{payment.claim?.claimNumber ? (
<span className="text-sm font-mono">{payment.claim.claimNumber}</span>
) : payment.notes?.startsWith("PDF import") ? (
<span className="text-xs font-medium bg-blue-100 text-blue-800 px-2 py-0.5 rounded-full">PDF Import</span>
) : (
<span className="text-gray-400">—</span>
)}
</TableCell>
<TableCell>
@@ -717,37 +739,19 @@ export default function PaymentsRecentTable({
<TableCell>
<div className="flex items-center gap-2">
{(() => {
// VOID and DENIED are manual decisions — show as-is
if (payment.status === "VOID" || payment.status === "DENIED" || payment.status === "OVERPAID") {
const { label, color, icon } = getStatusInfo(payment.status);
return (
<span className={`px-2 py-1 text-xs font-medium rounded-full ${color}`}>
<span className="flex items-center">{icon}{label}</span>
</span>
);
}
// Compute status from numbers
if (totalDue === 0) {
return (
<span className="px-2 py-1 text-xs font-medium rounded-full bg-teal-100 text-teal-800">
<span className="flex items-center"><CheckCircle className="h-3 w-3 mr-1" />Paid in Full</span>
</span>
);
}
if (totalCollected > 0) {
return (
<span className="px-2 py-1 text-xs font-medium rounded-full bg-blue-100 text-blue-800">
<span className="flex items-center"><DollarSign className="h-3 w-3 mr-1" />Partially Paid</span>
</span>
);
}
return (
<span className="px-2 py-1 text-xs font-medium rounded-full bg-red-100 text-red-800">
<span className="flex items-center"><Clock className="h-3 w-3 mr-1" />Pending</span>
</span>
);
})()}
{payment.status === "VOID" ? (
<span className="px-2 py-1 text-xs font-medium rounded-full bg-gray-100 text-gray-800 flex items-center">
<Ban className="h-3 w-3 mr-1" />Void
</span>
) : payment.status === "PAID" ? (
<span className="px-2 py-1 text-xs font-medium rounded-full bg-teal-100 text-teal-800 flex items-center">
<CheckCircle className="h-3 w-3 mr-1" />Paid in Full
</span>
) : (
<span className="px-2 py-1 text-xs font-medium rounded-full bg-yellow-100 text-yellow-800 flex items-center">
<Clock className="h-3 w-3 mr-1" />Balance
</span>
)}
</div>
</TableCell>
@@ -875,50 +879,11 @@ export default function PaymentsRecentTable({
)}
</TableCell>
{/* Adjustment */}
{/* Adjustment — auto-computed: totalBilled - mhPaid - copayment */}
<TableCell>
{editingAdjustmentId === payment.id ? (
<input
type="number"
min="0"
step="0.01"
autoFocus
className="w-24 border border-blue-400 rounded px-1 py-0.5 text-sm focus:outline-none focus:ring-2 focus:ring-blue-300"
value={editingAdjustmentValue}
onChange={(e) => setEditingAdjustmentValue(e.target.value)}
onKeyDown={(e) => {
if (e.key === "Enter") e.currentTarget.blur();
else if (e.key === "Escape") setEditingAdjustmentId(null);
}}
onBlur={async () => {
const val = parseFloat(editingAdjustmentValue);
if (!isNaN(val) && val >= 0) {
try {
const res = await apiRequest("PATCH", `/api/payments/${payment.id}/adjustment`, { adjustment: val });
if (res.ok) {
await queryClient.invalidateQueries({ queryKey: QK_PAYMENTS_RECENT_BASE });
} else {
toast({ title: "Error", description: "Failed to save adjustment.", variant: "destructive" });
}
} catch {
toast({ title: "Error", description: "Failed to save adjustment.", variant: "destructive" });
}
}
setEditingAdjustmentId(null);
}}
/>
) : (
<span
className="text-sm font-medium text-orange-700 cursor-pointer hover:underline hover:text-orange-900"
title="Click to edit"
onClick={() => {
setEditingAdjustmentId(payment.id);
setEditingAdjustmentValue(Number(payment.adjustment ?? 0).toFixed(2));
}}
>
${Number(payment.adjustment ?? 0).toFixed(2)}
</span>
)}
<span className="text-sm font-medium text-orange-700">
${adjustment.toFixed(2)}
</span>
</TableCell>
<TableCell className="text-right">
@@ -949,6 +914,38 @@ export default function PaymentsRecentTable({
</Button>
)}
{/* Paid in Full — only when not already paid or voided */}
{payment.status !== "PAID" &&
payment.status !== "VOID" &&
payment.status !== "DENIED" && (
<Button
variant="default"
size="sm"
className="bg-teal-600 hover:bg-teal-700 text-white"
onClick={() => {
setPaidInFullPaymentId(payment.id);
setIsPaidInFullOpen(true);
}}
>
Paid in Full
</Button>
)}
{/* Revert — only when already Paid in Full */}
{payment.status === "PAID" && (
<Button
variant="outline"
size="sm"
className="border-teal-400 text-teal-700 hover:bg-teal-50"
onClick={() => {
setRevertPaidPaymentId(payment.id);
setIsRevertPaidOpen(true);
}}
>
Revert
</Button>
)}
{/* Show Void unless already voided or denied */}
{payment.status !== "VOID" &&
payment.status !== "DENIED" && (
@@ -1010,6 +1007,28 @@ export default function PaymentsRecentTable({
onCancel={() => setIsRevertOpen(false)}
/>
{/* Revert Paid in Full Confirmation Dialog */}
<ConfirmationDialog
isOpen={isRevertPaidOpen}
title="Revert Paid in Full?"
message="This will revert the status back to Balance. The amounts stay unchanged. Continue?"
confirmLabel="Revert"
confirmColor="bg-yellow-600 hover:bg-yellow-700"
onConfirm={handleConfirmRevertPaid}
onCancel={() => setIsRevertPaidOpen(false)}
/>
{/* Paid in Full Confirmation Dialog */}
<ConfirmationDialog
isOpen={isPaidInFullOpen}
title="Mark as Paid in Full?"
message="This will set the status to Paid in Full and close the balance for this payment. Continue?"
confirmLabel="Paid in Full"
confirmColor="bg-teal-600 hover:bg-teal-700"
onConfirm={handleConfirmPaidInFull}
onCancel={() => setIsPaidInFullOpen(false)}
/>
{/* NEW: Void Confirmation Dialog */}
<ConfirmationDialog
isOpen={isVoidOpen}
@@ -24,6 +24,7 @@ import { Calendar } from "@/components/ui/calendar";
import PaymentsRecentTable from "@/components/payments/payments-recent-table";
import PaymentsOfPatientModal from "@/components/payments/payments-of-patient-table";
import PaymentOCRBlock from "@/components/payments/payment-ocr-block";
import PaymentUploadDocumentsBlock from "@/components/payments/payment-upload-documents-block";
import { useLocation } from "wouter";
import { Patient, PaymentWithExtras } from "@repo/db/types";
import { apiRequest } from "@/lib/queryClient";
@@ -330,6 +331,9 @@ export default function PaymentsPage() {
}}
/>
{/* Upload Payment Documents Section */}
<PaymentUploadDocumentsBlock />
{/* OCR Image Upload Section*/}
<PaymentOCRBlock />
+35 -1
View File
@@ -10,6 +10,7 @@ from dotenv import load_dotenv
load_dotenv()
from complete_pipeline_adapter import process_images_to_rows,rows_to_csv_bytes
from pdf_extractor import extract_ra_pdf
app = FastAPI(
title="Payment OCR Services API",
@@ -35,7 +36,8 @@ app.add_middleware(
allow_headers=["*"],
)
ALLOWED_EXTS = {".jpg", ".jpeg", ".png", ".tif", ".tiff", ".bmp"}
ALLOWED_EXTS = {".jpg", ".jpeg", ".png", ".tif", ".tiff", ".bmp"}
ALLOWED_PDF_EXTS = {".pdf"}
# -------------------------------------------------
# Health + status
@@ -122,6 +124,38 @@ async def extract_csvtext(files: List[UploadFile] = File(...)):
async with lock:
active_jobs -= 1
@app.post("/extract/pdf/json")
async def extract_pdf_json(files: List[UploadFile] = File(...)):
bad = [f.filename for f in files if os.path.splitext(f.filename or "")[1].lower() not in ALLOWED_PDF_EXTS]
if bad:
raise HTTPException(status_code=415, detail=f"Only PDF files allowed. Got: {', '.join(bad)}")
async with lock:
global waiting_jobs
waiting_jobs += 1
async with semaphore:
async with lock:
waiting_jobs -= 1
global active_jobs
active_jobs += 1
try:
all_rows = []
all_headers = []
for f in files:
blob = await f.read()
result = extract_ra_pdf(blob, f.filename or "upload.pdf")
all_rows.extend(result["rows"])
all_headers.append(result["header"])
return JSONResponse(content={"rows": all_rows, "headers": all_headers})
except Exception as e:
raise HTTPException(status_code=500, detail=f"PDF extraction error: {e}")
finally:
async with lock:
active_jobs -= 1
@app.post("/extract/csv")
async def extract_csv(files: List[UploadFile] = File(...), filename: Optional[str] = None):
_validate_files(files)
+224
View File
@@ -0,0 +1,224 @@
import io
import re
import pdfplumber
DCODE_RE = re.compile(r'^D\d{4}$')
MEMBER_RE = re.compile(r'\b(\d{12})\b') # MassHealth member IDs are always 12 digits
# ── Page-1 header patterns ────────────────────────────────────────────────────
_H = {
"Payee ID": re.compile(r'Payee ID:\s*(\S+)'),
"Business NPI": re.compile(r'Business NPI:\s*(\S+)'),
"Run #": re.compile(r'Run #:\s*(\S+)'),
"RA #": re.compile(r'RA #:\s*(\S+)'),
"RA Date": re.compile(r'RA Date:\s*(\S+)'),
"Claim Detail Amount": re.compile(r'Claim Detail Amount:\s*([\$\d,\.]+)'),
"Claim Adjustment Amount": re.compile(r'Claim Adjustment Amount:\s*([\$\(\)\d,\.]+)'),
"Misc. Adjustment Amount": re.compile(r'Misc\. Adjustment Amount:\s*([\$\(\)\d,\.]+)'),
"Payment Amount": re.compile(r'Payment Amount:\s*([\$\d,\.]+)'),
}
def extract_ra_header(pdf_bytes: bytes, filename: str) -> dict:
"""Extract the cover-page summary (Payee ID, RA #, Payment Amount, etc.)."""
header: dict[str, str] = {"Source File": filename}
with pdfplumber.open(io.BytesIO(pdf_bytes)) as pdf:
# Header info lives on pages 1 and 2 — scan both to be safe
for page in pdf.pages[:2]:
text = page.extract_text() or ""
for field, pattern in _H.items():
if field not in header or not header[field]:
m = pattern.search(text)
if m:
header[field] = m.group(1).strip()
return header
def _c(val) -> str:
return str(val).replace("\n", " ").strip() if val else ""
def _amt(val: str) -> str:
return val.replace("$", "").replace(",", "").strip() if val else ""
def _col(headers: list[str], *keywords) -> int | None:
for i, h in enumerate(headers):
hl = h.lower()
if all(k.lower() in hl for k in keywords):
return i
return None
def _find_header_row(table: list[list]) -> tuple[int | None, list[str]]:
for i, row in enumerate(table):
# Skip merged context rows (only one non-None cell)
if sum(1 for c in row if c) <= 1:
continue
flat = [_c(c) for c in row]
j = " ".join(flat).lower()
if "patient name" in j and "icn" in j and "code" not in j:
return i, flat
if ("submitted" in j and "code" in j) or "paid code" in j:
return i, flat
return None, []
def _is_summary(h: list[str]) -> bool:
j = " ".join(h).lower()
return "patient name" in j and "icn" in j and "code" not in j
def _is_detail(h: list[str]) -> bool:
j = " ".join(h).lower()
return ("submitted" in j and "code" in j) or "paid code" in j
def _merge_headers(table: list[list], hdr_idx: int) -> list[str]:
n = max(len(r) for r in table[: hdr_idx + 1])
merged = []
for ci in range(n):
parts = [_c(table[ri][ci]) for ri in range(hdr_idx + 1)
if ci < len(table[ri]) and table[ri][ci]]
merged.append(" ".join(parts))
return merged
# ── Pass 1: summary pages → {icn: patient_name} ──────────────────────────────
def _build_patient_map(pdf) -> dict[str, str]:
patient_map: dict[str, str] = {}
for page in pdf.pages:
for tobj in page.find_tables():
table = tobj.extract()
if not table or len(table) < 2:
continue
hdr_idx, headers = _find_header_row(table)
if hdr_idx is None or not _is_summary(headers):
continue
pi = _col(headers, "Patient Name")
ii = _col(headers, "ICN")
if pi is None or ii is None:
continue
for row in table[hdr_idx + 1:]:
if not row:
continue
patient = _c(row[pi]) if pi < len(row) else ""
icn = _c(row[ii]) if ii < len(row) else ""
if not patient or not icn:
continue
if "Total" in patient or not icn.replace(" ", "").isdigit():
continue
patient_map[icn] = patient
return patient_map
# ── Pass 2: detail pages → {icn: procedure_dict} ─────────────────────────────
def _build_detail_map(pdf) -> dict[str, dict]:
detail_map: dict[str, dict] = {}
for page in pdf.pages:
for tobj in page.find_tables():
table = tobj.extract()
if not table or len(table) < 2:
continue
hdr_idx, headers = _find_header_row(table)
if hdr_idx is None or not _is_detail(headers):
continue
# ICN is in the merged first cell (row 0)
context_cell = str(table[0][0]) if table[0] and table[0][0] else ""
icn_m = re.search(r'ICN:\s*(\d+)', context_cell)
member_m = MEMBER_RE.search(context_cell)
icn = icn_m.group(1) if icn_m else ""
member = member_m.group(1) if member_m else ""
if not icn:
continue
h = _merge_headers(table, hdr_idx)
sub_code_i = _col(h, "Submitted", "Code")
paid_code_i = _col(h, "Paid", "Code")
tooth_i = _col(h, "Tooth")
date_i = _col(h, "Date")
allowed_i = _col(h, "Allowed")
sub_amt_i = paid_amt_i = None
for i, col_h in enumerate(h):
lh = col_h.lower()
if "submitted" in lh and "code" not in lh and sub_amt_i is None:
sub_amt_i = i
if "paid" in lh and "code" not in lh and ("amount" in lh or paid_amt_i is None):
paid_amt_i = i
for row in table[hdr_idx + 1:]:
if not row:
continue
cdt = _c(row[sub_code_i]) if sub_code_i is not None and sub_code_i < len(row) else ""
if not DCODE_RE.match(cdt):
continue
paid_code = _c(row[paid_code_i]) if paid_code_i is not None and paid_code_i < len(row) else ""
tooth = _c(row[tooth_i]) if tooth_i is not None and tooth_i < len(row) else ""
date = _c(row[date_i]) if date_i is not None and date_i < len(row) else ""
sub_a = _amt(_c(row[sub_amt_i])) if sub_amt_i is not None and sub_amt_i < len(row) else ""
allow_a = _amt(_c(row[allowed_i])) if allowed_i is not None and allowed_i < len(row) else ""
paid_a = _amt(_c(row[paid_amt_i])) if paid_amt_i is not None and paid_amt_i < len(row) else ""
detail_map[icn] = {
"Member #": member,
"Submitted Code": cdt,
"Paid Code": paid_code,
"Tooth": tooth,
"Date of Service": date,
"Submitted Amount": sub_a,
"Allowed Amount": allow_a,
"Paid Amount": paid_a,
}
return detail_map
# ── Main: join on ICN ─────────────────────────────────────────────────────────
def extract_ra_pdf(pdf_bytes: bytes, filename: str) -> dict:
"""
Two-pass extraction of a MassHealth Remittance Advice PDF.
Returns:
{
"header": { Payee ID, Business NPI, Run #, RA #, RA Date,
Claim Detail Amount, Claim Adjustment Amount,
Misc. Adjustment Amount, Payment Amount },
"rows": [ one dict per ICN … ]
}
"""
header = extract_ra_header(pdf_bytes, filename)
with pdfplumber.open(io.BytesIO(pdf_bytes)) as pdf:
patient_map = _build_patient_map(pdf)
detail_map = _build_detail_map(pdf)
rows = []
for icn, patient_name in patient_map.items():
detail = detail_map.get(icn, {})
rows.append({
"Patient Name": patient_name,
"Member #": detail.get("Member #", ""),
"ICN": icn,
"Submitted Code": detail.get("Submitted Code", ""),
"Paid Code": detail.get("Paid Code", ""),
"Tooth": detail.get("Tooth", ""),
"Date of Service": detail.get("Date of Service", ""),
"Submitted Amount": detail.get("Submitted Amount", ""),
"Allowed Amount": detail.get("Allowed Amount", ""),
"Paid Amount": detail.get("Paid Amount", ""),
"Source File": filename,
})
return {"header": header, "rows": rows}
+1
View File
@@ -24,3 +24,4 @@ typing_extensions==4.15.0
tzdata==2025.2
uvicorn==0.35.0
python-multipart==0.0.20
pdfplumber==0.11.4
+92
View File
@@ -157,6 +157,7 @@
"vaul": "^1.1.2",
"wouter": "^3.7.0",
"ws": "^8.18.0",
"xlsx": "^0.18.5",
"zod": "^3.24.2",
"zod-validation-error": "^3.4.0"
},
@@ -5544,6 +5545,15 @@
"node": ">=0.4.0"
}
},
"node_modules/adler-32": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz",
"integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==",
"license": "Apache-2.0",
"engines": {
"node": ">=0.8"
}
},
"node_modules/agent-base": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
@@ -6281,6 +6291,19 @@
"node": ">=6"
}
},
"node_modules/cfb": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz",
"integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
"license": "Apache-2.0",
"dependencies": {
"adler-32": "~1.3.0",
"crc-32": "~1.2.0"
},
"engines": {
"node": ">=0.8"
}
},
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -6400,6 +6423,15 @@
"react-dom": "^18 || ^19 || ^19.0.0-rc"
}
},
"node_modules/codepage": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz",
"integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==",
"license": "Apache-2.0",
"engines": {
"node": ">=0.8"
}
},
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -8175,6 +8207,15 @@
"node": ">= 0.6"
}
},
"node_modules/frac": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz",
"integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==",
"license": "Apache-2.0",
"engines": {
"node": ">=0.8"
}
},
"node_modules/fraction.js": {
"version": "5.3.4",
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz",
@@ -12832,6 +12873,18 @@
"node": ">= 0.6"
}
},
"node_modules/ssf": {
"version": "0.11.2",
"resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz",
"integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
"license": "Apache-2.0",
"dependencies": {
"frac": "~1.1.2"
},
"engines": {
"node": ">=0.8"
}
},
"node_modules/standard-as-callback": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz",
@@ -14757,6 +14810,24 @@
"node": ">=8"
}
},
"node_modules/wmf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz",
"integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==",
"license": "Apache-2.0",
"engines": {
"node": ">=0.8"
}
},
"node_modules/word": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz",
"integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==",
"license": "Apache-2.0",
"engines": {
"node": ">=0.8"
}
},
"node_modules/word-wrap": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
@@ -14897,6 +14968,27 @@
}
}
},
"node_modules/xlsx": {
"version": "0.18.5",
"resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz",
"integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
"license": "Apache-2.0",
"dependencies": {
"adler-32": "~1.3.0",
"cfb": "~1.2.1",
"codepage": "~1.15.0",
"crc-32": "~1.2.1",
"ssf": "~0.11.2",
"wmf": "~1.0.1",
"word": "~0.3.0"
},
"bin": {
"xlsx": "bin/xlsx.njs"
},
"engines": {
"node": ">=0.8"
}
},
"node_modules/xmlbuilder": {
"version": "13.0.2",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-13.0.2.tgz",
File diff suppressed because one or more lines are too long
@@ -242,6 +242,9 @@ exports.Prisma.ServiceLineScalarFieldEnum = {
arch: 'arch',
toothNumber: 'toothNumber',
toothSurface: 'toothSurface',
icn: 'icn',
paidCode: 'paidCode',
allowedAmount: 'allowedAmount',
totalBilled: 'totalBilled',
totalPaid: 'totalPaid',
totalAdjusted: 'totalAdjusted',
+145 -1
View File
@@ -14710,6 +14710,7 @@ export namespace Prisma {
id: number | null
claimId: number | null
paymentId: number | null
allowedAmount: Decimal | null
totalBilled: Decimal | null
totalPaid: Decimal | null
totalAdjusted: Decimal | null
@@ -14720,6 +14721,7 @@ export namespace Prisma {
id: number | null
claimId: number | null
paymentId: number | null
allowedAmount: Decimal | null
totalBilled: Decimal | null
totalPaid: Decimal | null
totalAdjusted: Decimal | null
@@ -14736,6 +14738,9 @@ export namespace Prisma {
arch: string | null
toothNumber: string | null
toothSurface: string | null
icn: string | null
paidCode: string | null
allowedAmount: Decimal | null
totalBilled: Decimal | null
totalPaid: Decimal | null
totalAdjusted: Decimal | null
@@ -14753,6 +14758,9 @@ export namespace Prisma {
arch: string | null
toothNumber: string | null
toothSurface: string | null
icn: string | null
paidCode: string | null
allowedAmount: Decimal | null
totalBilled: Decimal | null
totalPaid: Decimal | null
totalAdjusted: Decimal | null
@@ -14770,6 +14778,9 @@ export namespace Prisma {
arch: number
toothNumber: number
toothSurface: number
icn: number
paidCode: number
allowedAmount: number
totalBilled: number
totalPaid: number
totalAdjusted: number
@@ -14783,6 +14794,7 @@ export namespace Prisma {
id?: true
claimId?: true
paymentId?: true
allowedAmount?: true
totalBilled?: true
totalPaid?: true
totalAdjusted?: true
@@ -14793,6 +14805,7 @@ export namespace Prisma {
id?: true
claimId?: true
paymentId?: true
allowedAmount?: true
totalBilled?: true
totalPaid?: true
totalAdjusted?: true
@@ -14809,6 +14822,9 @@ export namespace Prisma {
arch?: true
toothNumber?: true
toothSurface?: true
icn?: true
paidCode?: true
allowedAmount?: true
totalBilled?: true
totalPaid?: true
totalAdjusted?: true
@@ -14826,6 +14842,9 @@ export namespace Prisma {
arch?: true
toothNumber?: true
toothSurface?: true
icn?: true
paidCode?: true
allowedAmount?: true
totalBilled?: true
totalPaid?: true
totalAdjusted?: true
@@ -14843,6 +14862,9 @@ export namespace Prisma {
arch?: true
toothNumber?: true
toothSurface?: true
icn?: true
paidCode?: true
allowedAmount?: true
totalBilled?: true
totalPaid?: true
totalAdjusted?: true
@@ -14947,6 +14969,9 @@ export namespace Prisma {
arch: string | null
toothNumber: string | null
toothSurface: string | null
icn: string | null
paidCode: string | null
allowedAmount: Decimal | null
totalBilled: Decimal
totalPaid: Decimal
totalAdjusted: Decimal
@@ -14983,6 +15008,9 @@ export namespace Prisma {
arch?: boolean
toothNumber?: boolean
toothSurface?: boolean
icn?: boolean
paidCode?: boolean
allowedAmount?: boolean
totalBilled?: boolean
totalPaid?: boolean
totalAdjusted?: boolean
@@ -15004,6 +15032,9 @@ export namespace Prisma {
arch?: boolean
toothNumber?: boolean
toothSurface?: boolean
icn?: boolean
paidCode?: boolean
allowedAmount?: boolean
totalBilled?: boolean
totalPaid?: boolean
totalAdjusted?: boolean
@@ -15023,6 +15054,9 @@ export namespace Prisma {
arch?: boolean
toothNumber?: boolean
toothSurface?: boolean
icn?: boolean
paidCode?: boolean
allowedAmount?: boolean
totalBilled?: boolean
totalPaid?: boolean
totalAdjusted?: boolean
@@ -15042,6 +15076,9 @@ export namespace Prisma {
arch?: boolean
toothNumber?: boolean
toothSurface?: boolean
icn?: boolean
paidCode?: boolean
allowedAmount?: boolean
totalBilled?: boolean
totalPaid?: boolean
totalAdjusted?: boolean
@@ -15049,7 +15086,7 @@ export namespace Prisma {
status?: boolean
}
export type ServiceLineOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "claimId" | "paymentId" | "procedureCode" | "procedureDate" | "quad" | "arch" | "toothNumber" | "toothSurface" | "totalBilled" | "totalPaid" | "totalAdjusted" | "totalDue" | "status", ExtArgs["result"]["serviceLine"]>
export type ServiceLineOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "claimId" | "paymentId" | "procedureCode" | "procedureDate" | "quad" | "arch" | "toothNumber" | "toothSurface" | "icn" | "paidCode" | "allowedAmount" | "totalBilled" | "totalPaid" | "totalAdjusted" | "totalDue" | "status", ExtArgs["result"]["serviceLine"]>
export type ServiceLineInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
claim?: boolean | ServiceLine$claimArgs<ExtArgs>
payment?: boolean | ServiceLine$paymentArgs<ExtArgs>
@@ -15082,6 +15119,9 @@ export namespace Prisma {
arch: string | null
toothNumber: string | null
toothSurface: string | null
icn: string | null
paidCode: string | null
allowedAmount: Prisma.Decimal | null
totalBilled: Prisma.Decimal
totalPaid: Prisma.Decimal
totalAdjusted: Prisma.Decimal
@@ -15522,6 +15562,9 @@ export namespace Prisma {
readonly arch: FieldRef<"ServiceLine", 'String'>
readonly toothNumber: FieldRef<"ServiceLine", 'String'>
readonly toothSurface: FieldRef<"ServiceLine", 'String'>
readonly icn: FieldRef<"ServiceLine", 'String'>
readonly paidCode: FieldRef<"ServiceLine", 'String'>
readonly allowedAmount: FieldRef<"ServiceLine", 'Decimal'>
readonly totalBilled: FieldRef<"ServiceLine", 'Decimal'>
readonly totalPaid: FieldRef<"ServiceLine", 'Decimal'>
readonly totalAdjusted: FieldRef<"ServiceLine", 'Decimal'>
@@ -38840,6 +38883,9 @@ export namespace Prisma {
arch: 'arch',
toothNumber: 'toothNumber',
toothSurface: 'toothSurface',
icn: 'icn',
paidCode: 'paidCode',
allowedAmount: 'allowedAmount',
totalBilled: 'totalBilled',
totalPaid: 'totalPaid',
totalAdjusted: 'totalAdjusted',
@@ -40282,6 +40328,9 @@ export namespace Prisma {
arch?: StringNullableFilter<"ServiceLine"> | string | null
toothNumber?: StringNullableFilter<"ServiceLine"> | string | null
toothSurface?: StringNullableFilter<"ServiceLine"> | string | null
icn?: StringNullableFilter<"ServiceLine"> | string | null
paidCode?: StringNullableFilter<"ServiceLine"> | string | null
allowedAmount?: DecimalNullableFilter<"ServiceLine"> | Decimal | DecimalJsLike | number | string | null
totalBilled?: DecimalFilter<"ServiceLine"> | Decimal | DecimalJsLike | number | string
totalPaid?: DecimalFilter<"ServiceLine"> | Decimal | DecimalJsLike | number | string
totalAdjusted?: DecimalFilter<"ServiceLine"> | Decimal | DecimalJsLike | number | string
@@ -40302,6 +40351,9 @@ export namespace Prisma {
arch?: SortOrderInput | SortOrder
toothNumber?: SortOrderInput | SortOrder
toothSurface?: SortOrderInput | SortOrder
icn?: SortOrderInput | SortOrder
paidCode?: SortOrderInput | SortOrder
allowedAmount?: SortOrderInput | SortOrder
totalBilled?: SortOrder
totalPaid?: SortOrder
totalAdjusted?: SortOrder
@@ -40325,6 +40377,9 @@ export namespace Prisma {
arch?: StringNullableFilter<"ServiceLine"> | string | null
toothNumber?: StringNullableFilter<"ServiceLine"> | string | null
toothSurface?: StringNullableFilter<"ServiceLine"> | string | null
icn?: StringNullableFilter<"ServiceLine"> | string | null
paidCode?: StringNullableFilter<"ServiceLine"> | string | null
allowedAmount?: DecimalNullableFilter<"ServiceLine"> | Decimal | DecimalJsLike | number | string | null
totalBilled?: DecimalFilter<"ServiceLine"> | Decimal | DecimalJsLike | number | string
totalPaid?: DecimalFilter<"ServiceLine"> | Decimal | DecimalJsLike | number | string
totalAdjusted?: DecimalFilter<"ServiceLine"> | Decimal | DecimalJsLike | number | string
@@ -40345,6 +40400,9 @@ export namespace Prisma {
arch?: SortOrderInput | SortOrder
toothNumber?: SortOrderInput | SortOrder
toothSurface?: SortOrderInput | SortOrder
icn?: SortOrderInput | SortOrder
paidCode?: SortOrderInput | SortOrder
allowedAmount?: SortOrderInput | SortOrder
totalBilled?: SortOrder
totalPaid?: SortOrder
totalAdjusted?: SortOrder
@@ -40370,6 +40428,9 @@ export namespace Prisma {
arch?: StringNullableWithAggregatesFilter<"ServiceLine"> | string | null
toothNumber?: StringNullableWithAggregatesFilter<"ServiceLine"> | string | null
toothSurface?: StringNullableWithAggregatesFilter<"ServiceLine"> | string | null
icn?: StringNullableWithAggregatesFilter<"ServiceLine"> | string | null
paidCode?: StringNullableWithAggregatesFilter<"ServiceLine"> | string | null
allowedAmount?: DecimalNullableWithAggregatesFilter<"ServiceLine"> | Decimal | DecimalJsLike | number | string | null
totalBilled?: DecimalWithAggregatesFilter<"ServiceLine"> | Decimal | DecimalJsLike | number | string
totalPaid?: DecimalWithAggregatesFilter<"ServiceLine"> | Decimal | DecimalJsLike | number | string
totalAdjusted?: DecimalWithAggregatesFilter<"ServiceLine"> | Decimal | DecimalJsLike | number | string
@@ -42610,6 +42671,9 @@ export namespace Prisma {
arch?: string | null
toothNumber?: string | null
toothSurface?: string | null
icn?: string | null
paidCode?: string | null
allowedAmount?: Decimal | DecimalJsLike | number | string | null
totalBilled: Decimal | DecimalJsLike | number | string
totalPaid?: Decimal | DecimalJsLike | number | string
totalAdjusted?: Decimal | DecimalJsLike | number | string
@@ -42630,6 +42694,9 @@ export namespace Prisma {
arch?: string | null
toothNumber?: string | null
toothSurface?: string | null
icn?: string | null
paidCode?: string | null
allowedAmount?: Decimal | DecimalJsLike | number | string | null
totalBilled: Decimal | DecimalJsLike | number | string
totalPaid?: Decimal | DecimalJsLike | number | string
totalAdjusted?: Decimal | DecimalJsLike | number | string
@@ -42645,6 +42712,9 @@ export namespace Prisma {
arch?: NullableStringFieldUpdateOperationsInput | string | null
toothNumber?: NullableStringFieldUpdateOperationsInput | string | null
toothSurface?: NullableStringFieldUpdateOperationsInput | string | null
icn?: NullableStringFieldUpdateOperationsInput | string | null
paidCode?: NullableStringFieldUpdateOperationsInput | string | null
allowedAmount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
totalBilled?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalPaid?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalAdjusted?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
@@ -42665,6 +42735,9 @@ export namespace Prisma {
arch?: NullableStringFieldUpdateOperationsInput | string | null
toothNumber?: NullableStringFieldUpdateOperationsInput | string | null
toothSurface?: NullableStringFieldUpdateOperationsInput | string | null
icn?: NullableStringFieldUpdateOperationsInput | string | null
paidCode?: NullableStringFieldUpdateOperationsInput | string | null
allowedAmount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
totalBilled?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalPaid?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalAdjusted?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
@@ -42683,6 +42756,9 @@ export namespace Prisma {
arch?: string | null
toothNumber?: string | null
toothSurface?: string | null
icn?: string | null
paidCode?: string | null
allowedAmount?: Decimal | DecimalJsLike | number | string | null
totalBilled: Decimal | DecimalJsLike | number | string
totalPaid?: Decimal | DecimalJsLike | number | string
totalAdjusted?: Decimal | DecimalJsLike | number | string
@@ -42697,6 +42773,9 @@ export namespace Prisma {
arch?: NullableStringFieldUpdateOperationsInput | string | null
toothNumber?: NullableStringFieldUpdateOperationsInput | string | null
toothSurface?: NullableStringFieldUpdateOperationsInput | string | null
icn?: NullableStringFieldUpdateOperationsInput | string | null
paidCode?: NullableStringFieldUpdateOperationsInput | string | null
allowedAmount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
totalBilled?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalPaid?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalAdjusted?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
@@ -42714,6 +42793,9 @@ export namespace Prisma {
arch?: NullableStringFieldUpdateOperationsInput | string | null
toothNumber?: NullableStringFieldUpdateOperationsInput | string | null
toothSurface?: NullableStringFieldUpdateOperationsInput | string | null
icn?: NullableStringFieldUpdateOperationsInput | string | null
paidCode?: NullableStringFieldUpdateOperationsInput | string | null
allowedAmount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
totalBilled?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalPaid?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalAdjusted?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
@@ -45071,6 +45153,9 @@ export namespace Prisma {
arch?: SortOrder
toothNumber?: SortOrder
toothSurface?: SortOrder
icn?: SortOrder
paidCode?: SortOrder
allowedAmount?: SortOrder
totalBilled?: SortOrder
totalPaid?: SortOrder
totalAdjusted?: SortOrder
@@ -45082,6 +45167,7 @@ export namespace Prisma {
id?: SortOrder
claimId?: SortOrder
paymentId?: SortOrder
allowedAmount?: SortOrder
totalBilled?: SortOrder
totalPaid?: SortOrder
totalAdjusted?: SortOrder
@@ -45098,6 +45184,9 @@ export namespace Prisma {
arch?: SortOrder
toothNumber?: SortOrder
toothSurface?: SortOrder
icn?: SortOrder
paidCode?: SortOrder
allowedAmount?: SortOrder
totalBilled?: SortOrder
totalPaid?: SortOrder
totalAdjusted?: SortOrder
@@ -45115,6 +45204,9 @@ export namespace Prisma {
arch?: SortOrder
toothNumber?: SortOrder
toothSurface?: SortOrder
icn?: SortOrder
paidCode?: SortOrder
allowedAmount?: SortOrder
totalBilled?: SortOrder
totalPaid?: SortOrder
totalAdjusted?: SortOrder
@@ -45126,6 +45218,7 @@ export namespace Prisma {
id?: SortOrder
claimId?: SortOrder
paymentId?: SortOrder
allowedAmount?: SortOrder
totalBilled?: SortOrder
totalPaid?: SortOrder
totalAdjusted?: SortOrder
@@ -52410,6 +52503,9 @@ export namespace Prisma {
arch?: string | null
toothNumber?: string | null
toothSurface?: string | null
icn?: string | null
paidCode?: string | null
allowedAmount?: Decimal | DecimalJsLike | number | string | null
totalBilled: Decimal | DecimalJsLike | number | string
totalPaid?: Decimal | DecimalJsLike | number | string
totalAdjusted?: Decimal | DecimalJsLike | number | string
@@ -52428,6 +52524,9 @@ export namespace Prisma {
arch?: string | null
toothNumber?: string | null
toothSurface?: string | null
icn?: string | null
paidCode?: string | null
allowedAmount?: Decimal | DecimalJsLike | number | string | null
totalBilled: Decimal | DecimalJsLike | number | string
totalPaid?: Decimal | DecimalJsLike | number | string
totalAdjusted?: Decimal | DecimalJsLike | number | string
@@ -52780,6 +52879,9 @@ export namespace Prisma {
arch?: StringNullableFilter<"ServiceLine"> | string | null
toothNumber?: StringNullableFilter<"ServiceLine"> | string | null
toothSurface?: StringNullableFilter<"ServiceLine"> | string | null
icn?: StringNullableFilter<"ServiceLine"> | string | null
paidCode?: StringNullableFilter<"ServiceLine"> | string | null
allowedAmount?: DecimalNullableFilter<"ServiceLine"> | Decimal | DecimalJsLike | number | string | null
totalBilled?: DecimalFilter<"ServiceLine"> | Decimal | DecimalJsLike | number | string
totalPaid?: DecimalFilter<"ServiceLine"> | Decimal | DecimalJsLike | number | string
totalAdjusted?: DecimalFilter<"ServiceLine"> | Decimal | DecimalJsLike | number | string
@@ -53792,6 +53894,9 @@ export namespace Prisma {
arch?: string | null
toothNumber?: string | null
toothSurface?: string | null
icn?: string | null
paidCode?: string | null
allowedAmount?: Decimal | DecimalJsLike | number | string | null
totalBilled: Decimal | DecimalJsLike | number | string
totalPaid?: Decimal | DecimalJsLike | number | string
totalAdjusted?: Decimal | DecimalJsLike | number | string
@@ -53810,6 +53915,9 @@ export namespace Prisma {
arch?: string | null
toothNumber?: string | null
toothSurface?: string | null
icn?: string | null
paidCode?: string | null
allowedAmount?: Decimal | DecimalJsLike | number | string | null
totalBilled: Decimal | DecimalJsLike | number | string
totalPaid?: Decimal | DecimalJsLike | number | string
totalAdjusted?: Decimal | DecimalJsLike | number | string
@@ -54097,6 +54205,9 @@ export namespace Prisma {
arch?: string | null
toothNumber?: string | null
toothSurface?: string | null
icn?: string | null
paidCode?: string | null
allowedAmount?: Decimal | DecimalJsLike | number | string | null
totalBilled: Decimal | DecimalJsLike | number | string
totalPaid?: Decimal | DecimalJsLike | number | string
totalAdjusted?: Decimal | DecimalJsLike | number | string
@@ -54116,6 +54227,9 @@ export namespace Prisma {
arch?: string | null
toothNumber?: string | null
toothSurface?: string | null
icn?: string | null
paidCode?: string | null
allowedAmount?: Decimal | DecimalJsLike | number | string | null
totalBilled: Decimal | DecimalJsLike | number | string
totalPaid?: Decimal | DecimalJsLike | number | string
totalAdjusted?: Decimal | DecimalJsLike | number | string
@@ -54198,6 +54312,9 @@ export namespace Prisma {
arch?: NullableStringFieldUpdateOperationsInput | string | null
toothNumber?: NullableStringFieldUpdateOperationsInput | string | null
toothSurface?: NullableStringFieldUpdateOperationsInput | string | null
icn?: NullableStringFieldUpdateOperationsInput | string | null
paidCode?: NullableStringFieldUpdateOperationsInput | string | null
allowedAmount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
totalBilled?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalPaid?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalAdjusted?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
@@ -54217,6 +54334,9 @@ export namespace Prisma {
arch?: NullableStringFieldUpdateOperationsInput | string | null
toothNumber?: NullableStringFieldUpdateOperationsInput | string | null
toothSurface?: NullableStringFieldUpdateOperationsInput | string | null
icn?: NullableStringFieldUpdateOperationsInput | string | null
paidCode?: NullableStringFieldUpdateOperationsInput | string | null
allowedAmount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
totalBilled?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalPaid?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalAdjusted?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
@@ -57608,6 +57728,9 @@ export namespace Prisma {
arch?: string | null
toothNumber?: string | null
toothSurface?: string | null
icn?: string | null
paidCode?: string | null
allowedAmount?: Decimal | DecimalJsLike | number | string | null
totalBilled: Decimal | DecimalJsLike | number | string
totalPaid?: Decimal | DecimalJsLike | number | string
totalAdjusted?: Decimal | DecimalJsLike | number | string
@@ -57629,6 +57752,9 @@ export namespace Prisma {
arch?: NullableStringFieldUpdateOperationsInput | string | null
toothNumber?: NullableStringFieldUpdateOperationsInput | string | null
toothSurface?: NullableStringFieldUpdateOperationsInput | string | null
icn?: NullableStringFieldUpdateOperationsInput | string | null
paidCode?: NullableStringFieldUpdateOperationsInput | string | null
allowedAmount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
totalBilled?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalPaid?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalAdjusted?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
@@ -57647,6 +57773,9 @@ export namespace Prisma {
arch?: NullableStringFieldUpdateOperationsInput | string | null
toothNumber?: NullableStringFieldUpdateOperationsInput | string | null
toothSurface?: NullableStringFieldUpdateOperationsInput | string | null
icn?: NullableStringFieldUpdateOperationsInput | string | null
paidCode?: NullableStringFieldUpdateOperationsInput | string | null
allowedAmount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
totalBilled?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalPaid?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalAdjusted?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
@@ -57664,6 +57793,9 @@ export namespace Prisma {
arch?: NullableStringFieldUpdateOperationsInput | string | null
toothNumber?: NullableStringFieldUpdateOperationsInput | string | null
toothSurface?: NullableStringFieldUpdateOperationsInput | string | null
icn?: NullableStringFieldUpdateOperationsInput | string | null
paidCode?: NullableStringFieldUpdateOperationsInput | string | null
allowedAmount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
totalBilled?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalPaid?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalAdjusted?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
@@ -57791,6 +57923,9 @@ export namespace Prisma {
arch?: string | null
toothNumber?: string | null
toothSurface?: string | null
icn?: string | null
paidCode?: string | null
allowedAmount?: Decimal | DecimalJsLike | number | string | null
totalBilled: Decimal | DecimalJsLike | number | string
totalPaid?: Decimal | DecimalJsLike | number | string
totalAdjusted?: Decimal | DecimalJsLike | number | string
@@ -57843,6 +57978,9 @@ export namespace Prisma {
arch?: NullableStringFieldUpdateOperationsInput | string | null
toothNumber?: NullableStringFieldUpdateOperationsInput | string | null
toothSurface?: NullableStringFieldUpdateOperationsInput | string | null
icn?: NullableStringFieldUpdateOperationsInput | string | null
paidCode?: NullableStringFieldUpdateOperationsInput | string | null
allowedAmount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
totalBilled?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalPaid?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalAdjusted?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
@@ -57861,6 +57999,9 @@ export namespace Prisma {
arch?: NullableStringFieldUpdateOperationsInput | string | null
toothNumber?: NullableStringFieldUpdateOperationsInput | string | null
toothSurface?: NullableStringFieldUpdateOperationsInput | string | null
icn?: NullableStringFieldUpdateOperationsInput | string | null
paidCode?: NullableStringFieldUpdateOperationsInput | string | null
allowedAmount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
totalBilled?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalPaid?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalAdjusted?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
@@ -57878,6 +58019,9 @@ export namespace Prisma {
arch?: NullableStringFieldUpdateOperationsInput | string | null
toothNumber?: NullableStringFieldUpdateOperationsInput | string | null
toothSurface?: NullableStringFieldUpdateOperationsInput | string | null
icn?: NullableStringFieldUpdateOperationsInput | string | null
paidCode?: NullableStringFieldUpdateOperationsInput | string | null
allowedAmount?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
totalBilled?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalPaid?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
totalAdjusted?: DecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "prisma-client-ebe3d1cd873b9c6e2edb160c4f217518634cbc7f123503e3d10ebc0103f5ee7e",
"name": "prisma-client-65b4b0529ca5bcef69b2b7d648f9d9e21ab6d965bbe6bce4db167fdccbcd499f",
"main": "index.js",
"types": "index.d.ts",
"browser": "default.js",
@@ -242,6 +242,9 @@ model ServiceLine {
arch String?
toothNumber String?
toothSurface String?
icn String?
paidCode String?
allowedAmount Decimal? @db.Decimal(10, 2)
totalBilled Decimal @db.Decimal(10, 2)
totalPaid Decimal @default(0.00) @db.Decimal(10, 2)
totalAdjusted Decimal @default(0.00) @db.Decimal(10, 2)
+3
View File
@@ -243,6 +243,9 @@ model ServiceLine {
arch String?
toothNumber String?
toothSurface String?
icn String?
paidCode String?
allowedAmount Decimal? @db.Decimal(10, 2)
totalBilled Decimal @db.Decimal(10, 2)
totalPaid Decimal @default(0.00) @db.Decimal(10, 2)
totalAdjusted Decimal @default(0.00) @db.Decimal(10, 2)
@@ -1,7 +1,7 @@
{
"version": "1.0",
"generatorVersion": "1.0.0",
"generatedAt": "2026-05-07T01:12:17.979Z",
"generatedAt": "2026-05-07T12:25:40.373Z",
"outputPath": "/home/ee/Desktop/DentalManagementMH05/packages/db/shared",
"files": [
"schemas/enums/TransactionIsolationLevel.schema.ts",
@@ -1,5 +1,5 @@
import * as z from 'zod';
export const ServiceLineScalarFieldEnumSchema = z.enum(['id', 'claimId', 'paymentId', 'procedureCode', 'procedureDate', 'quad', 'arch', 'toothNumber', 'toothSurface', 'totalBilled', 'totalPaid', 'totalAdjusted', 'totalDue', 'status'])
export const ServiceLineScalarFieldEnumSchema = z.enum(['id', 'claimId', 'paymentId', 'procedureCode', 'procedureDate', 'quad', 'arch', 'toothNumber', 'toothSurface', 'icn', 'paidCode', 'allowedAmount', 'totalBilled', 'totalPaid', 'totalAdjusted', 'totalDue', 'status'])
export type ServiceLineScalarFieldEnum = z.infer<typeof ServiceLineScalarFieldEnumSchema>;
@@ -19,6 +19,9 @@ export const ServiceLineFindFirstOrThrowSelectSchema: z.ZodType<Prisma.ServiceLi
arch: z.boolean().optional(),
toothNumber: z.boolean().optional(),
toothSurface: z.boolean().optional(),
icn: z.boolean().optional(),
paidCode: z.boolean().optional(),
allowedAmount: z.boolean().optional(),
totalBilled: z.boolean().optional(),
totalPaid: z.boolean().optional(),
totalAdjusted: z.boolean().optional(),
@@ -40,6 +43,9 @@ export const ServiceLineFindFirstOrThrowSelectZodSchema = z.object({
arch: z.boolean().optional(),
toothNumber: z.boolean().optional(),
toothSurface: z.boolean().optional(),
icn: z.boolean().optional(),
paidCode: z.boolean().optional(),
allowedAmount: z.boolean().optional(),
totalBilled: z.boolean().optional(),
totalPaid: z.boolean().optional(),
totalAdjusted: z.boolean().optional(),
@@ -19,6 +19,9 @@ export const ServiceLineFindFirstSelectSchema: z.ZodType<Prisma.ServiceLineSelec
arch: z.boolean().optional(),
toothNumber: z.boolean().optional(),
toothSurface: z.boolean().optional(),
icn: z.boolean().optional(),
paidCode: z.boolean().optional(),
allowedAmount: z.boolean().optional(),
totalBilled: z.boolean().optional(),
totalPaid: z.boolean().optional(),
totalAdjusted: z.boolean().optional(),
@@ -40,6 +43,9 @@ export const ServiceLineFindFirstSelectZodSchema = z.object({
arch: z.boolean().optional(),
toothNumber: z.boolean().optional(),
toothSurface: z.boolean().optional(),
icn: z.boolean().optional(),
paidCode: z.boolean().optional(),
allowedAmount: z.boolean().optional(),
totalBilled: z.boolean().optional(),
totalPaid: z.boolean().optional(),
totalAdjusted: z.boolean().optional(),
@@ -19,6 +19,9 @@ export const ServiceLineFindManySelectSchema: z.ZodType<Prisma.ServiceLineSelect
arch: z.boolean().optional(),
toothNumber: z.boolean().optional(),
toothSurface: z.boolean().optional(),
icn: z.boolean().optional(),
paidCode: z.boolean().optional(),
allowedAmount: z.boolean().optional(),
totalBilled: z.boolean().optional(),
totalPaid: z.boolean().optional(),
totalAdjusted: z.boolean().optional(),
@@ -40,6 +43,9 @@ export const ServiceLineFindManySelectZodSchema = z.object({
arch: z.boolean().optional(),
toothNumber: z.boolean().optional(),
toothSurface: z.boolean().optional(),
icn: z.boolean().optional(),
paidCode: z.boolean().optional(),
allowedAmount: z.boolean().optional(),
totalBilled: z.boolean().optional(),
totalPaid: z.boolean().optional(),
totalAdjusted: z.boolean().optional(),
@@ -6,6 +6,7 @@ const makeSchema = () => z.object({
id: z.literal(true).optional(),
claimId: z.literal(true).optional(),
paymentId: z.literal(true).optional(),
allowedAmount: z.literal(true).optional(),
totalBilled: z.literal(true).optional(),
totalPaid: z.literal(true).optional(),
totalAdjusted: z.literal(true).optional(),
@@ -6,6 +6,7 @@ const makeSchema = () => z.object({
id: SortOrderSchema.optional(),
claimId: SortOrderSchema.optional(),
paymentId: SortOrderSchema.optional(),
allowedAmount: SortOrderSchema.optional(),
totalBilled: SortOrderSchema.optional(),
totalPaid: SortOrderSchema.optional(),
totalAdjusted: SortOrderSchema.optional(),
@@ -12,6 +12,9 @@ const makeSchema = () => z.object({
arch: z.literal(true).optional(),
toothNumber: z.literal(true).optional(),
toothSurface: z.literal(true).optional(),
icn: z.literal(true).optional(),
paidCode: z.literal(true).optional(),
allowedAmount: z.literal(true).optional(),
totalBilled: z.literal(true).optional(),
totalPaid: z.literal(true).optional(),
totalAdjusted: z.literal(true).optional(),
@@ -12,6 +12,9 @@ const makeSchema = () => z.object({
arch: SortOrderSchema.optional(),
toothNumber: SortOrderSchema.optional(),
toothSurface: SortOrderSchema.optional(),
icn: SortOrderSchema.optional(),
paidCode: SortOrderSchema.optional(),
allowedAmount: SortOrderSchema.optional(),
totalBilled: SortOrderSchema.optional(),
totalPaid: SortOrderSchema.optional(),
totalAdjusted: SortOrderSchema.optional(),
@@ -14,6 +14,17 @@ const makeSchema = () => z.object({
arch: z.string().optional().nullable(),
toothNumber: z.string().optional().nullable(),
toothSurface: z.string().optional().nullable(),
icn: z.string().optional().nullable(),
paidCode: z.string().optional().nullable(),
allowedAmount: z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}).optional().nullable(),
totalBilled: z.union([
z.number(),
z.string(),
@@ -13,6 +13,17 @@ const makeSchema = () => z.object({
arch: z.string().optional().nullable(),
toothNumber: z.string().optional().nullable(),
toothSurface: z.string().optional().nullable(),
icn: z.string().optional().nullable(),
paidCode: z.string().optional().nullable(),
allowedAmount: z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}).optional().nullable(),
totalBilled: z.union([
z.number(),
z.string(),
@@ -14,6 +14,17 @@ const makeSchema = () => z.object({
arch: z.string().optional().nullable(),
toothNumber: z.string().optional().nullable(),
toothSurface: z.string().optional().nullable(),
icn: z.string().optional().nullable(),
paidCode: z.string().optional().nullable(),
allowedAmount: z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}).optional().nullable(),
totalBilled: z.union([
z.number(),
z.string(),
@@ -13,6 +13,17 @@ const makeSchema = () => z.object({
arch: z.string().optional().nullable(),
toothNumber: z.string().optional().nullable(),
toothSurface: z.string().optional().nullable(),
icn: z.string().optional().nullable(),
paidCode: z.string().optional().nullable(),
allowedAmount: z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}).optional().nullable(),
totalBilled: z.union([
z.number(),
z.string(),
@@ -13,6 +13,17 @@ const makeSchema = () => z.object({
arch: z.string().optional().nullable(),
toothNumber: z.string().optional().nullable(),
toothSurface: z.string().optional().nullable(),
icn: z.string().optional().nullable(),
paidCode: z.string().optional().nullable(),
allowedAmount: z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}).optional().nullable(),
totalBilled: z.union([
z.number(),
z.string(),
@@ -13,6 +13,17 @@ const makeSchema = () => z.object({
arch: z.string().optional().nullable(),
toothNumber: z.string().optional().nullable(),
toothSurface: z.string().optional().nullable(),
icn: z.string().optional().nullable(),
paidCode: z.string().optional().nullable(),
allowedAmount: z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}).optional().nullable(),
totalBilled: z.union([
z.number(),
z.string(),
@@ -13,6 +13,17 @@ const makeSchema = () => z.object({
arch: z.string().optional().nullable(),
toothNumber: z.string().optional().nullable(),
toothSurface: z.string().optional().nullable(),
icn: z.string().optional().nullable(),
paidCode: z.string().optional().nullable(),
allowedAmount: z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}).optional().nullable(),
totalBilled: z.union([
z.number(),
z.string(),
@@ -12,6 +12,9 @@ const makeSchema = () => z.object({
arch: z.literal(true).optional(),
toothNumber: z.literal(true).optional(),
toothSurface: z.literal(true).optional(),
icn: z.literal(true).optional(),
paidCode: z.literal(true).optional(),
allowedAmount: z.literal(true).optional(),
totalBilled: z.literal(true).optional(),
totalPaid: z.literal(true).optional(),
totalAdjusted: z.literal(true).optional(),
@@ -12,6 +12,9 @@ const makeSchema = () => z.object({
arch: SortOrderSchema.optional(),
toothNumber: SortOrderSchema.optional(),
toothSurface: SortOrderSchema.optional(),
icn: SortOrderSchema.optional(),
paidCode: SortOrderSchema.optional(),
allowedAmount: SortOrderSchema.optional(),
totalBilled: SortOrderSchema.optional(),
totalPaid: SortOrderSchema.optional(),
totalAdjusted: SortOrderSchema.optional(),
@@ -12,6 +12,9 @@ const makeSchema = () => z.object({
arch: z.literal(true).optional(),
toothNumber: z.literal(true).optional(),
toothSurface: z.literal(true).optional(),
icn: z.literal(true).optional(),
paidCode: z.literal(true).optional(),
allowedAmount: z.literal(true).optional(),
totalBilled: z.literal(true).optional(),
totalPaid: z.literal(true).optional(),
totalAdjusted: z.literal(true).optional(),
@@ -12,6 +12,9 @@ const makeSchema = () => z.object({
arch: SortOrderSchema.optional(),
toothNumber: SortOrderSchema.optional(),
toothSurface: SortOrderSchema.optional(),
icn: SortOrderSchema.optional(),
paidCode: SortOrderSchema.optional(),
allowedAmount: SortOrderSchema.optional(),
totalBilled: SortOrderSchema.optional(),
totalPaid: SortOrderSchema.optional(),
totalAdjusted: SortOrderSchema.optional(),
@@ -18,6 +18,9 @@ const makeSchema = () => z.object({
arch: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
toothNumber: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
toothSurface: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
icn: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
paidCode: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
allowedAmount: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
totalBilled: SortOrderSchema.optional(),
totalPaid: SortOrderSchema.optional(),
totalAdjusted: SortOrderSchema.optional(),
@@ -16,6 +16,9 @@ const makeSchema = () => z.object({
arch: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
toothNumber: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
toothSurface: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
icn: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
paidCode: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
allowedAmount: z.union([SortOrderSchema, z.lazy(() => SortOrderInputObjectSchema)]).optional(),
totalBilled: SortOrderSchema.optional(),
totalPaid: SortOrderSchema.optional(),
totalAdjusted: SortOrderSchema.optional(),
@@ -6,6 +6,7 @@ import { IntNullableFilterObjectSchema as IntNullableFilterObjectSchema } from '
import { StringFilterObjectSchema as StringFilterObjectSchema } from './StringFilter.schema';
import { DateTimeFilterObjectSchema as DateTimeFilterObjectSchema } from './DateTimeFilter.schema';
import { StringNullableFilterObjectSchema as StringNullableFilterObjectSchema } from './StringNullableFilter.schema';
import { DecimalNullableFilterObjectSchema as DecimalNullableFilterObjectSchema } from './DecimalNullableFilter.schema';
import { DecimalFilterObjectSchema as DecimalFilterObjectSchema } from './DecimalFilter.schema';
import { EnumServiceLineStatusFilterObjectSchema as EnumServiceLineStatusFilterObjectSchema } from './EnumServiceLineStatusFilter.schema';
import { ServiceLineStatusSchema } from '../enums/ServiceLineStatus.schema'
@@ -24,6 +25,17 @@ const servicelinescalarwhereinputSchema = z.object({
arch: z.union([z.lazy(() => StringNullableFilterObjectSchema), z.string()]).optional().nullable(),
toothNumber: z.union([z.lazy(() => StringNullableFilterObjectSchema), z.string()]).optional().nullable(),
toothSurface: z.union([z.lazy(() => StringNullableFilterObjectSchema), z.string()]).optional().nullable(),
icn: z.union([z.lazy(() => StringNullableFilterObjectSchema), z.string()]).optional().nullable(),
paidCode: z.union([z.lazy(() => StringNullableFilterObjectSchema), z.string()]).optional().nullable(),
allowedAmount: z.union([z.lazy(() => DecimalNullableFilterObjectSchema), z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
})]).optional().nullable(),
totalBilled: z.union([z.lazy(() => DecimalFilterObjectSchema), z.union([
z.number(),
z.string(),
@@ -6,6 +6,7 @@ import { IntNullableWithAggregatesFilterObjectSchema as IntNullableWithAggregate
import { StringWithAggregatesFilterObjectSchema as StringWithAggregatesFilterObjectSchema } from './StringWithAggregatesFilter.schema';
import { DateTimeWithAggregatesFilterObjectSchema as DateTimeWithAggregatesFilterObjectSchema } from './DateTimeWithAggregatesFilter.schema';
import { StringNullableWithAggregatesFilterObjectSchema as StringNullableWithAggregatesFilterObjectSchema } from './StringNullableWithAggregatesFilter.schema';
import { DecimalNullableWithAggregatesFilterObjectSchema as DecimalNullableWithAggregatesFilterObjectSchema } from './DecimalNullableWithAggregatesFilter.schema';
import { DecimalWithAggregatesFilterObjectSchema as DecimalWithAggregatesFilterObjectSchema } from './DecimalWithAggregatesFilter.schema';
import { EnumServiceLineStatusWithAggregatesFilterObjectSchema as EnumServiceLineStatusWithAggregatesFilterObjectSchema } from './EnumServiceLineStatusWithAggregatesFilter.schema';
import { ServiceLineStatusSchema } from '../enums/ServiceLineStatus.schema'
@@ -24,6 +25,17 @@ const servicelinescalarwherewithaggregatesinputSchema = z.object({
arch: z.union([z.lazy(() => StringNullableWithAggregatesFilterObjectSchema), z.string()]).optional().nullable(),
toothNumber: z.union([z.lazy(() => StringNullableWithAggregatesFilterObjectSchema), z.string()]).optional().nullable(),
toothSurface: z.union([z.lazy(() => StringNullableWithAggregatesFilterObjectSchema), z.string()]).optional().nullable(),
icn: z.union([z.lazy(() => StringNullableWithAggregatesFilterObjectSchema), z.string()]).optional().nullable(),
paidCode: z.union([z.lazy(() => StringNullableWithAggregatesFilterObjectSchema), z.string()]).optional().nullable(),
allowedAmount: z.union([z.lazy(() => DecimalNullableWithAggregatesFilterObjectSchema), z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
})]).optional().nullable(),
totalBilled: z.union([z.lazy(() => DecimalWithAggregatesFilterObjectSchema), z.union([
z.number(),
z.string(),
@@ -15,6 +15,9 @@ const makeSchema = () => z.object({
arch: z.boolean().optional(),
toothNumber: z.boolean().optional(),
toothSurface: z.boolean().optional(),
icn: z.boolean().optional(),
paidCode: z.boolean().optional(),
allowedAmount: z.boolean().optional(),
totalBilled: z.boolean().optional(),
totalPaid: z.boolean().optional(),
totalAdjusted: z.boolean().optional(),
@@ -6,6 +6,7 @@ const makeSchema = () => z.object({
id: z.literal(true).optional(),
claimId: z.literal(true).optional(),
paymentId: z.literal(true).optional(),
allowedAmount: z.literal(true).optional(),
totalBilled: z.literal(true).optional(),
totalPaid: z.literal(true).optional(),
totalAdjusted: z.literal(true).optional(),
@@ -6,6 +6,7 @@ const makeSchema = () => z.object({
id: SortOrderSchema.optional(),
claimId: SortOrderSchema.optional(),
paymentId: SortOrderSchema.optional(),
allowedAmount: SortOrderSchema.optional(),
totalBilled: SortOrderSchema.optional(),
totalPaid: SortOrderSchema.optional(),
totalAdjusted: SortOrderSchema.optional(),
@@ -15,6 +15,17 @@ const makeSchema = () => z.object({
arch: z.string().optional().nullable(),
toothNumber: z.string().optional().nullable(),
toothSurface: z.string().optional().nullable(),
icn: z.string().optional().nullable(),
paidCode: z.string().optional().nullable(),
allowedAmount: z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}).optional().nullable(),
totalBilled: z.union([
z.number(),
z.string(),
@@ -14,6 +14,17 @@ const makeSchema = () => z.object({
arch: z.string().optional().nullable(),
toothNumber: z.string().optional().nullable(),
toothSurface: z.string().optional().nullable(),
icn: z.string().optional().nullable(),
paidCode: z.string().optional().nullable(),
allowedAmount: z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}).optional().nullable(),
totalBilled: z.union([
z.number(),
z.string(),
@@ -14,6 +14,17 @@ const makeSchema = () => z.object({
arch: z.string().optional().nullable(),
toothNumber: z.string().optional().nullable(),
toothSurface: z.string().optional().nullable(),
icn: z.string().optional().nullable(),
paidCode: z.string().optional().nullable(),
allowedAmount: z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}).optional().nullable(),
totalBilled: z.union([
z.number(),
z.string(),
@@ -14,6 +14,17 @@ const makeSchema = () => z.object({
arch: z.string().optional().nullable(),
toothNumber: z.string().optional().nullable(),
toothSurface: z.string().optional().nullable(),
icn: z.string().optional().nullable(),
paidCode: z.string().optional().nullable(),
allowedAmount: z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}).optional().nullable(),
totalBilled: z.union([
z.number(),
z.string(),
@@ -6,6 +6,7 @@ import { NullableIntFieldUpdateOperationsInputObjectSchema as NullableIntFieldUp
import { StringFieldUpdateOperationsInputObjectSchema as StringFieldUpdateOperationsInputObjectSchema } from './StringFieldUpdateOperationsInput.schema';
import { DateTimeFieldUpdateOperationsInputObjectSchema as DateTimeFieldUpdateOperationsInputObjectSchema } from './DateTimeFieldUpdateOperationsInput.schema';
import { NullableStringFieldUpdateOperationsInputObjectSchema as NullableStringFieldUpdateOperationsInputObjectSchema } from './NullableStringFieldUpdateOperationsInput.schema';
import { NullableDecimalFieldUpdateOperationsInputObjectSchema as NullableDecimalFieldUpdateOperationsInputObjectSchema } from './NullableDecimalFieldUpdateOperationsInput.schema';
import { DecimalFieldUpdateOperationsInputObjectSchema as DecimalFieldUpdateOperationsInputObjectSchema } from './DecimalFieldUpdateOperationsInput.schema';
import { ServiceLineStatusSchema } from '../enums/ServiceLineStatus.schema';
import { EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema as EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema } from './EnumServiceLineStatusFieldUpdateOperationsInput.schema';
@@ -22,6 +23,17 @@ const makeSchema = () => z.object({
arch: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothNumber: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothSurface: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
icn: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
paidCode: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
allowedAmount: z.union([z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}), z.lazy(() => NullableDecimalFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
totalBilled: z.union([z.union([
z.number(),
z.string(),
@@ -6,6 +6,7 @@ import { NullableIntFieldUpdateOperationsInputObjectSchema as NullableIntFieldUp
import { StringFieldUpdateOperationsInputObjectSchema as StringFieldUpdateOperationsInputObjectSchema } from './StringFieldUpdateOperationsInput.schema';
import { DateTimeFieldUpdateOperationsInputObjectSchema as DateTimeFieldUpdateOperationsInputObjectSchema } from './DateTimeFieldUpdateOperationsInput.schema';
import { NullableStringFieldUpdateOperationsInputObjectSchema as NullableStringFieldUpdateOperationsInputObjectSchema } from './NullableStringFieldUpdateOperationsInput.schema';
import { NullableDecimalFieldUpdateOperationsInputObjectSchema as NullableDecimalFieldUpdateOperationsInputObjectSchema } from './NullableDecimalFieldUpdateOperationsInput.schema';
import { DecimalFieldUpdateOperationsInputObjectSchema as DecimalFieldUpdateOperationsInputObjectSchema } from './DecimalFieldUpdateOperationsInput.schema';
import { ServiceLineStatusSchema } from '../enums/ServiceLineStatus.schema';
import { EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema as EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema } from './EnumServiceLineStatusFieldUpdateOperationsInput.schema'
@@ -21,6 +22,17 @@ const makeSchema = () => z.object({
arch: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothNumber: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothSurface: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
icn: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
paidCode: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
allowedAmount: z.union([z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}), z.lazy(() => NullableDecimalFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
totalBilled: z.union([z.union([
z.number(),
z.string(),
@@ -6,6 +6,7 @@ import { NullableIntFieldUpdateOperationsInputObjectSchema as NullableIntFieldUp
import { StringFieldUpdateOperationsInputObjectSchema as StringFieldUpdateOperationsInputObjectSchema } from './StringFieldUpdateOperationsInput.schema';
import { DateTimeFieldUpdateOperationsInputObjectSchema as DateTimeFieldUpdateOperationsInputObjectSchema } from './DateTimeFieldUpdateOperationsInput.schema';
import { NullableStringFieldUpdateOperationsInputObjectSchema as NullableStringFieldUpdateOperationsInputObjectSchema } from './NullableStringFieldUpdateOperationsInput.schema';
import { NullableDecimalFieldUpdateOperationsInputObjectSchema as NullableDecimalFieldUpdateOperationsInputObjectSchema } from './NullableDecimalFieldUpdateOperationsInput.schema';
import { DecimalFieldUpdateOperationsInputObjectSchema as DecimalFieldUpdateOperationsInputObjectSchema } from './DecimalFieldUpdateOperationsInput.schema';
import { ServiceLineStatusSchema } from '../enums/ServiceLineStatus.schema';
import { EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema as EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema } from './EnumServiceLineStatusFieldUpdateOperationsInput.schema'
@@ -20,6 +21,17 @@ const makeSchema = () => z.object({
arch: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothNumber: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothSurface: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
icn: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
paidCode: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
allowedAmount: z.union([z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}), z.lazy(() => NullableDecimalFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
totalBilled: z.union([z.union([
z.number(),
z.string(),
@@ -6,6 +6,7 @@ import { NullableIntFieldUpdateOperationsInputObjectSchema as NullableIntFieldUp
import { StringFieldUpdateOperationsInputObjectSchema as StringFieldUpdateOperationsInputObjectSchema } from './StringFieldUpdateOperationsInput.schema';
import { DateTimeFieldUpdateOperationsInputObjectSchema as DateTimeFieldUpdateOperationsInputObjectSchema } from './DateTimeFieldUpdateOperationsInput.schema';
import { NullableStringFieldUpdateOperationsInputObjectSchema as NullableStringFieldUpdateOperationsInputObjectSchema } from './NullableStringFieldUpdateOperationsInput.schema';
import { NullableDecimalFieldUpdateOperationsInputObjectSchema as NullableDecimalFieldUpdateOperationsInputObjectSchema } from './NullableDecimalFieldUpdateOperationsInput.schema';
import { DecimalFieldUpdateOperationsInputObjectSchema as DecimalFieldUpdateOperationsInputObjectSchema } from './DecimalFieldUpdateOperationsInput.schema';
import { ServiceLineStatusSchema } from '../enums/ServiceLineStatus.schema';
import { EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema as EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema } from './EnumServiceLineStatusFieldUpdateOperationsInput.schema'
@@ -20,6 +21,17 @@ const makeSchema = () => z.object({
arch: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothNumber: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothSurface: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
icn: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
paidCode: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
allowedAmount: z.union([z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}), z.lazy(() => NullableDecimalFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
totalBilled: z.union([z.union([
z.number(),
z.string(),
@@ -6,6 +6,7 @@ import { NullableIntFieldUpdateOperationsInputObjectSchema as NullableIntFieldUp
import { StringFieldUpdateOperationsInputObjectSchema as StringFieldUpdateOperationsInputObjectSchema } from './StringFieldUpdateOperationsInput.schema';
import { DateTimeFieldUpdateOperationsInputObjectSchema as DateTimeFieldUpdateOperationsInputObjectSchema } from './DateTimeFieldUpdateOperationsInput.schema';
import { NullableStringFieldUpdateOperationsInputObjectSchema as NullableStringFieldUpdateOperationsInputObjectSchema } from './NullableStringFieldUpdateOperationsInput.schema';
import { NullableDecimalFieldUpdateOperationsInputObjectSchema as NullableDecimalFieldUpdateOperationsInputObjectSchema } from './NullableDecimalFieldUpdateOperationsInput.schema';
import { DecimalFieldUpdateOperationsInputObjectSchema as DecimalFieldUpdateOperationsInputObjectSchema } from './DecimalFieldUpdateOperationsInput.schema';
import { ServiceLineStatusSchema } from '../enums/ServiceLineStatus.schema';
import { EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema as EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema } from './EnumServiceLineStatusFieldUpdateOperationsInput.schema';
@@ -21,6 +22,17 @@ const makeSchema = () => z.object({
arch: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothNumber: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothSurface: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
icn: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
paidCode: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
allowedAmount: z.union([z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}), z.lazy(() => NullableDecimalFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
totalBilled: z.union([z.union([
z.number(),
z.string(),
@@ -6,6 +6,7 @@ import { NullableIntFieldUpdateOperationsInputObjectSchema as NullableIntFieldUp
import { StringFieldUpdateOperationsInputObjectSchema as StringFieldUpdateOperationsInputObjectSchema } from './StringFieldUpdateOperationsInput.schema';
import { DateTimeFieldUpdateOperationsInputObjectSchema as DateTimeFieldUpdateOperationsInputObjectSchema } from './DateTimeFieldUpdateOperationsInput.schema';
import { NullableStringFieldUpdateOperationsInputObjectSchema as NullableStringFieldUpdateOperationsInputObjectSchema } from './NullableStringFieldUpdateOperationsInput.schema';
import { NullableDecimalFieldUpdateOperationsInputObjectSchema as NullableDecimalFieldUpdateOperationsInputObjectSchema } from './NullableDecimalFieldUpdateOperationsInput.schema';
import { DecimalFieldUpdateOperationsInputObjectSchema as DecimalFieldUpdateOperationsInputObjectSchema } from './DecimalFieldUpdateOperationsInput.schema';
import { ServiceLineStatusSchema } from '../enums/ServiceLineStatus.schema';
import { EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema as EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema } from './EnumServiceLineStatusFieldUpdateOperationsInput.schema';
@@ -21,6 +22,17 @@ const makeSchema = () => z.object({
arch: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothNumber: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothSurface: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
icn: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
paidCode: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
allowedAmount: z.union([z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}), z.lazy(() => NullableDecimalFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
totalBilled: z.union([z.union([
z.number(),
z.string(),
@@ -6,6 +6,7 @@ import { NullableIntFieldUpdateOperationsInputObjectSchema as NullableIntFieldUp
import { StringFieldUpdateOperationsInputObjectSchema as StringFieldUpdateOperationsInputObjectSchema } from './StringFieldUpdateOperationsInput.schema';
import { DateTimeFieldUpdateOperationsInputObjectSchema as DateTimeFieldUpdateOperationsInputObjectSchema } from './DateTimeFieldUpdateOperationsInput.schema';
import { NullableStringFieldUpdateOperationsInputObjectSchema as NullableStringFieldUpdateOperationsInputObjectSchema } from './NullableStringFieldUpdateOperationsInput.schema';
import { NullableDecimalFieldUpdateOperationsInputObjectSchema as NullableDecimalFieldUpdateOperationsInputObjectSchema } from './NullableDecimalFieldUpdateOperationsInput.schema';
import { DecimalFieldUpdateOperationsInputObjectSchema as DecimalFieldUpdateOperationsInputObjectSchema } from './DecimalFieldUpdateOperationsInput.schema';
import { ServiceLineStatusSchema } from '../enums/ServiceLineStatus.schema';
import { EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema as EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema } from './EnumServiceLineStatusFieldUpdateOperationsInput.schema'
@@ -21,6 +22,17 @@ const makeSchema = () => z.object({
arch: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothNumber: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothSurface: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
icn: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
paidCode: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
allowedAmount: z.union([z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}), z.lazy(() => NullableDecimalFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
totalBilled: z.union([z.union([
z.number(),
z.string(),
@@ -4,6 +4,7 @@ import Decimal from 'decimal.js';
import { StringFieldUpdateOperationsInputObjectSchema as StringFieldUpdateOperationsInputObjectSchema } from './StringFieldUpdateOperationsInput.schema';
import { DateTimeFieldUpdateOperationsInputObjectSchema as DateTimeFieldUpdateOperationsInputObjectSchema } from './DateTimeFieldUpdateOperationsInput.schema';
import { NullableStringFieldUpdateOperationsInputObjectSchema as NullableStringFieldUpdateOperationsInputObjectSchema } from './NullableStringFieldUpdateOperationsInput.schema';
import { NullableDecimalFieldUpdateOperationsInputObjectSchema as NullableDecimalFieldUpdateOperationsInputObjectSchema } from './NullableDecimalFieldUpdateOperationsInput.schema';
import { DecimalFieldUpdateOperationsInputObjectSchema as DecimalFieldUpdateOperationsInputObjectSchema } from './DecimalFieldUpdateOperationsInput.schema';
import { ServiceLineStatusSchema } from '../enums/ServiceLineStatus.schema';
import { EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema as EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema } from './EnumServiceLineStatusFieldUpdateOperationsInput.schema';
@@ -19,6 +20,17 @@ const makeSchema = () => z.object({
arch: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothNumber: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothSurface: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
icn: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
paidCode: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
allowedAmount: z.union([z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}), z.lazy(() => NullableDecimalFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
totalBilled: z.union([z.union([
z.number(),
z.string(),
@@ -4,6 +4,7 @@ import Decimal from 'decimal.js';
import { StringFieldUpdateOperationsInputObjectSchema as StringFieldUpdateOperationsInputObjectSchema } from './StringFieldUpdateOperationsInput.schema';
import { DateTimeFieldUpdateOperationsInputObjectSchema as DateTimeFieldUpdateOperationsInputObjectSchema } from './DateTimeFieldUpdateOperationsInput.schema';
import { NullableStringFieldUpdateOperationsInputObjectSchema as NullableStringFieldUpdateOperationsInputObjectSchema } from './NullableStringFieldUpdateOperationsInput.schema';
import { NullableDecimalFieldUpdateOperationsInputObjectSchema as NullableDecimalFieldUpdateOperationsInputObjectSchema } from './NullableDecimalFieldUpdateOperationsInput.schema';
import { DecimalFieldUpdateOperationsInputObjectSchema as DecimalFieldUpdateOperationsInputObjectSchema } from './DecimalFieldUpdateOperationsInput.schema';
import { ServiceLineStatusSchema } from '../enums/ServiceLineStatus.schema';
import { EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema as EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema } from './EnumServiceLineStatusFieldUpdateOperationsInput.schema'
@@ -16,6 +17,17 @@ const makeSchema = () => z.object({
arch: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothNumber: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothSurface: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
icn: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
paidCode: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
allowedAmount: z.union([z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}), z.lazy(() => NullableDecimalFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
totalBilled: z.union([z.union([
z.number(),
z.string(),
@@ -4,6 +4,7 @@ import Decimal from 'decimal.js';
import { StringFieldUpdateOperationsInputObjectSchema as StringFieldUpdateOperationsInputObjectSchema } from './StringFieldUpdateOperationsInput.schema';
import { DateTimeFieldUpdateOperationsInputObjectSchema as DateTimeFieldUpdateOperationsInputObjectSchema } from './DateTimeFieldUpdateOperationsInput.schema';
import { NullableStringFieldUpdateOperationsInputObjectSchema as NullableStringFieldUpdateOperationsInputObjectSchema } from './NullableStringFieldUpdateOperationsInput.schema';
import { NullableDecimalFieldUpdateOperationsInputObjectSchema as NullableDecimalFieldUpdateOperationsInputObjectSchema } from './NullableDecimalFieldUpdateOperationsInput.schema';
import { DecimalFieldUpdateOperationsInputObjectSchema as DecimalFieldUpdateOperationsInputObjectSchema } from './DecimalFieldUpdateOperationsInput.schema';
import { ServiceLineStatusSchema } from '../enums/ServiceLineStatus.schema';
import { EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema as EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema } from './EnumServiceLineStatusFieldUpdateOperationsInput.schema';
@@ -18,6 +19,17 @@ const makeSchema = () => z.object({
arch: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothNumber: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothSurface: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
icn: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
paidCode: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
allowedAmount: z.union([z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}), z.lazy(() => NullableDecimalFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
totalBilled: z.union([z.union([
z.number(),
z.string(),
@@ -4,6 +4,7 @@ import Decimal from 'decimal.js';
import { StringFieldUpdateOperationsInputObjectSchema as StringFieldUpdateOperationsInputObjectSchema } from './StringFieldUpdateOperationsInput.schema';
import { DateTimeFieldUpdateOperationsInputObjectSchema as DateTimeFieldUpdateOperationsInputObjectSchema } from './DateTimeFieldUpdateOperationsInput.schema';
import { NullableStringFieldUpdateOperationsInputObjectSchema as NullableStringFieldUpdateOperationsInputObjectSchema } from './NullableStringFieldUpdateOperationsInput.schema';
import { NullableDecimalFieldUpdateOperationsInputObjectSchema as NullableDecimalFieldUpdateOperationsInputObjectSchema } from './NullableDecimalFieldUpdateOperationsInput.schema';
import { DecimalFieldUpdateOperationsInputObjectSchema as DecimalFieldUpdateOperationsInputObjectSchema } from './DecimalFieldUpdateOperationsInput.schema';
import { ServiceLineStatusSchema } from '../enums/ServiceLineStatus.schema';
import { EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema as EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema } from './EnumServiceLineStatusFieldUpdateOperationsInput.schema';
@@ -18,6 +19,17 @@ const makeSchema = () => z.object({
arch: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothNumber: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothSurface: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
icn: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
paidCode: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
allowedAmount: z.union([z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}), z.lazy(() => NullableDecimalFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
totalBilled: z.union([z.union([
z.number(),
z.string(),
@@ -4,6 +4,7 @@ import Decimal from 'decimal.js';
import { StringFieldUpdateOperationsInputObjectSchema as StringFieldUpdateOperationsInputObjectSchema } from './StringFieldUpdateOperationsInput.schema';
import { DateTimeFieldUpdateOperationsInputObjectSchema as DateTimeFieldUpdateOperationsInputObjectSchema } from './DateTimeFieldUpdateOperationsInput.schema';
import { NullableStringFieldUpdateOperationsInputObjectSchema as NullableStringFieldUpdateOperationsInputObjectSchema } from './NullableStringFieldUpdateOperationsInput.schema';
import { NullableDecimalFieldUpdateOperationsInputObjectSchema as NullableDecimalFieldUpdateOperationsInputObjectSchema } from './NullableDecimalFieldUpdateOperationsInput.schema';
import { DecimalFieldUpdateOperationsInputObjectSchema as DecimalFieldUpdateOperationsInputObjectSchema } from './DecimalFieldUpdateOperationsInput.schema';
import { ServiceLineStatusSchema } from '../enums/ServiceLineStatus.schema';
import { EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema as EnumServiceLineStatusFieldUpdateOperationsInputObjectSchema } from './EnumServiceLineStatusFieldUpdateOperationsInput.schema';
@@ -18,6 +19,17 @@ const makeSchema = () => z.object({
arch: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothNumber: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
toothSurface: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
icn: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
paidCode: z.union([z.string(), z.lazy(() => NullableStringFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
allowedAmount: z.union([z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
}), z.lazy(() => NullableDecimalFieldUpdateOperationsInputObjectSchema)]).optional().nullable(),
totalBilled: z.union([z.union([
z.number(),
z.string(),
@@ -6,6 +6,7 @@ import { IntNullableFilterObjectSchema as IntNullableFilterObjectSchema } from '
import { StringFilterObjectSchema as StringFilterObjectSchema } from './StringFilter.schema';
import { DateTimeFilterObjectSchema as DateTimeFilterObjectSchema } from './DateTimeFilter.schema';
import { StringNullableFilterObjectSchema as StringNullableFilterObjectSchema } from './StringNullableFilter.schema';
import { DecimalNullableFilterObjectSchema as DecimalNullableFilterObjectSchema } from './DecimalNullableFilter.schema';
import { DecimalFilterObjectSchema as DecimalFilterObjectSchema } from './DecimalFilter.schema';
import { EnumServiceLineStatusFilterObjectSchema as EnumServiceLineStatusFilterObjectSchema } from './EnumServiceLineStatusFilter.schema';
import { ServiceLineStatusSchema } from '../enums/ServiceLineStatus.schema';
@@ -29,6 +30,17 @@ const servicelinewhereinputSchema = z.object({
arch: z.union([z.lazy(() => StringNullableFilterObjectSchema), z.string()]).optional().nullable(),
toothNumber: z.union([z.lazy(() => StringNullableFilterObjectSchema), z.string()]).optional().nullable(),
toothSurface: z.union([z.lazy(() => StringNullableFilterObjectSchema), z.string()]).optional().nullable(),
icn: z.union([z.lazy(() => StringNullableFilterObjectSchema), z.string()]).optional().nullable(),
paidCode: z.union([z.lazy(() => StringNullableFilterObjectSchema), z.string()]).optional().nullable(),
allowedAmount: z.union([z.lazy(() => DecimalNullableFilterObjectSchema), z.union([
z.number(),
z.string(),
z.instanceof(Decimal),
z.instanceof(Prisma.Decimal),
DecimalJSLikeSchema,
]).refine((v) => isValidDecimalInput(v), {
message: "Field 'allowedAmount' must be a Decimal",
})]).optional().nullable(),
totalBilled: z.union([z.lazy(() => DecimalFilterObjectSchema), z.union([
z.number(),
z.string(),
@@ -9,6 +9,9 @@ export const ServiceLineAggregateResultSchema = z.object({ _count: z.object({
arch: z.number(),
toothNumber: z.number(),
toothSurface: z.number(),
icn: z.number(),
paidCode: z.number(),
allowedAmount: z.number(),
totalBilled: z.number(),
totalPaid: z.number(),
totalAdjusted: z.number(),
@@ -22,6 +25,7 @@ export const ServiceLineAggregateResultSchema = z.object({ _count: z.object({
id: z.number().nullable(),
claimId: z.number().nullable(),
paymentId: z.number().nullable(),
allowedAmount: z.number().nullable(),
totalBilled: z.number().nullable(),
totalPaid: z.number().nullable(),
totalAdjusted: z.number().nullable(),
@@ -31,6 +35,7 @@ export const ServiceLineAggregateResultSchema = z.object({ _count: z.object({
id: z.number().nullable(),
claimId: z.number().nullable(),
paymentId: z.number().nullable(),
allowedAmount: z.number().nullable(),
totalBilled: z.number().nullable(),
totalPaid: z.number().nullable(),
totalAdjusted: z.number().nullable(),
@@ -46,6 +51,9 @@ export const ServiceLineAggregateResultSchema = z.object({ _count: z.object({
arch: z.string().nullable(),
toothNumber: z.string().nullable(),
toothSurface: z.string().nullable(),
icn: z.string().nullable(),
paidCode: z.string().nullable(),
allowedAmount: z.number().nullable(),
totalBilled: z.number().nullable(),
totalPaid: z.number().nullable(),
totalAdjusted: z.number().nullable(),
@@ -61,6 +69,9 @@ export const ServiceLineAggregateResultSchema = z.object({ _count: z.object({
arch: z.string().nullable(),
toothNumber: z.string().nullable(),
toothSurface: z.string().nullable(),
icn: z.string().nullable(),
paidCode: z.string().nullable(),
allowedAmount: z.number().nullable(),
totalBilled: z.number().nullable(),
totalPaid: z.number().nullable(),
totalAdjusted: z.number().nullable(),
@@ -9,6 +9,9 @@ export const ServiceLineCreateResultSchema = z.object({
arch: z.string().optional(),
toothNumber: z.string().optional(),
toothSurface: z.string().optional(),
icn: z.string().optional(),
paidCode: z.string().optional(),
allowedAmount: z.number().optional(),
totalBilled: z.number(),
totalPaid: z.number(),
totalAdjusted: z.number(),
@@ -9,6 +9,9 @@ export const ServiceLineDeleteResultSchema = z.nullable(z.object({
arch: z.string().optional(),
toothNumber: z.string().optional(),
toothSurface: z.string().optional(),
icn: z.string().optional(),
paidCode: z.string().optional(),
allowedAmount: z.number().optional(),
totalBilled: z.number(),
totalPaid: z.number(),
totalAdjusted: z.number(),
@@ -9,6 +9,9 @@ export const ServiceLineFindFirstResultSchema = z.nullable(z.object({
arch: z.string().optional(),
toothNumber: z.string().optional(),
toothSurface: z.string().optional(),
icn: z.string().optional(),
paidCode: z.string().optional(),
allowedAmount: z.number().optional(),
totalBilled: z.number(),
totalPaid: z.number(),
totalAdjusted: z.number(),
@@ -10,6 +10,9 @@ export const ServiceLineFindManyResultSchema = z.object({
arch: z.string().optional(),
toothNumber: z.string().optional(),
toothSurface: z.string().optional(),
icn: z.string().optional(),
paidCode: z.string().optional(),
allowedAmount: z.number().optional(),
totalBilled: z.number(),
totalPaid: z.number(),
totalAdjusted: z.number(),
@@ -9,6 +9,9 @@ export const ServiceLineFindUniqueResultSchema = z.nullable(z.object({
arch: z.string().optional(),
toothNumber: z.string().optional(),
toothSurface: z.string().optional(),
icn: z.string().optional(),
paidCode: z.string().optional(),
allowedAmount: z.number().optional(),
totalBilled: z.number(),
totalPaid: z.number(),
totalAdjusted: z.number(),
@@ -9,6 +9,9 @@ export const ServiceLineGroupByResultSchema = z.array(z.object({
arch: z.string(),
toothNumber: z.string(),
toothSurface: z.string(),
icn: z.string(),
paidCode: z.string(),
allowedAmount: z.number(),
totalBilled: z.number(),
totalPaid: z.number(),
totalAdjusted: z.number(),
@@ -23,6 +26,9 @@ export const ServiceLineGroupByResultSchema = z.array(z.object({
arch: z.number(),
toothNumber: z.number(),
toothSurface: z.number(),
icn: z.number(),
paidCode: z.number(),
allowedAmount: z.number(),
totalBilled: z.number(),
totalPaid: z.number(),
totalAdjusted: z.number(),
@@ -36,6 +42,7 @@ export const ServiceLineGroupByResultSchema = z.array(z.object({
id: z.number().nullable(),
claimId: z.number().nullable(),
paymentId: z.number().nullable(),
allowedAmount: z.number().nullable(),
totalBilled: z.number().nullable(),
totalPaid: z.number().nullable(),
totalAdjusted: z.number().nullable(),
@@ -45,6 +52,7 @@ export const ServiceLineGroupByResultSchema = z.array(z.object({
id: z.number().nullable(),
claimId: z.number().nullable(),
paymentId: z.number().nullable(),
allowedAmount: z.number().nullable(),
totalBilled: z.number().nullable(),
totalPaid: z.number().nullable(),
totalAdjusted: z.number().nullable(),
@@ -60,6 +68,9 @@ export const ServiceLineGroupByResultSchema = z.array(z.object({
arch: z.string().nullable(),
toothNumber: z.string().nullable(),
toothSurface: z.string().nullable(),
icn: z.string().nullable(),
paidCode: z.string().nullable(),
allowedAmount: z.number().nullable(),
totalBilled: z.number().nullable(),
totalPaid: z.number().nullable(),
totalAdjusted: z.number().nullable(),
@@ -75,6 +86,9 @@ export const ServiceLineGroupByResultSchema = z.array(z.object({
arch: z.string().nullable(),
toothNumber: z.string().nullable(),
toothSurface: z.string().nullable(),
icn: z.string().nullable(),
paidCode: z.string().nullable(),
allowedAmount: z.number().nullable(),
totalBilled: z.number().nullable(),
totalPaid: z.number().nullable(),
totalAdjusted: z.number().nullable(),
@@ -9,6 +9,9 @@ export const ServiceLineUpdateResultSchema = z.nullable(z.object({
arch: z.string().optional(),
toothNumber: z.string().optional(),
toothSurface: z.string().optional(),
icn: z.string().optional(),
paidCode: z.string().optional(),
allowedAmount: z.number().optional(),
totalBilled: z.number(),
totalPaid: z.number(),
totalAdjusted: z.number(),
@@ -9,6 +9,9 @@ export const ServiceLineUpsertResultSchema = z.object({
arch: z.string().optional(),
toothNumber: z.string().optional(),
toothSurface: z.string().optional(),
icn: z.string().optional(),
paidCode: z.string().optional(),
allowedAmount: z.number().optional(),
totalBilled: z.number(),
totalPaid: z.number(),
totalAdjusted: z.number(),
@@ -11,6 +11,9 @@ export const ServiceLineInputSchema = z.object({
arch: z.string().optional().nullable(),
toothNumber: z.string().optional().nullable(),
toothSurface: z.string().optional().nullable(),
icn: z.string().optional().nullable(),
paidCode: z.string().optional().nullable(),
allowedAmount: z.number().optional().nullable(),
totalBilled: z.number(),
totalPaid: z.number(),
totalAdjusted: z.number(),
@@ -11,6 +11,9 @@ export const ServiceLineModelSchema = z.object({
arch: z.string().nullable(),
toothNumber: z.string().nullable(),
toothSurface: z.string().nullable(),
icn: z.string().nullable(),
paidCode: z.string().nullable(),
allowedAmount: z.number().nullable(),
totalBilled: z.number(),
totalPaid: z.number(),
totalAdjusted: z.number(),
@@ -11,6 +11,9 @@ export const ServiceLineResultSchema = z.object({
arch: z.string().nullable(),
toothNumber: z.string().nullable(),
toothSurface: z.string().nullable(),
icn: z.string().nullable(),
paidCode: z.string().nullable(),
allowedAmount: z.number().nullable(),
totalBilled: z.number(),
totalPaid: z.number(),
totalAdjusted: z.number(),