import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import React from "react"; import { formatDateToHumanReadable } from "@/utils/dateUtils"; import { ClaimWithServiceLines } from "@repo/db/types"; type ClaimViewModalProps = { isOpen: boolean; onOpenChange: (open: boolean) => void; onClose: () => void; claim: ClaimWithServiceLines | null; onEditClaim: (claim: ClaimWithServiceLines) => void; }; export default function ClaimViewModal({ isOpen, onOpenChange, onClose, claim, onEditClaim, }: ClaimViewModalProps) { return ( Claim Details Detailed view of the selected claim. {claim && (
{claim.patientName.charAt(0)}

{claim.patientName}

Claim ID: {claim.id?.toString().padStart(4, "0")}

Basic Information

Date of Birth:{" "} {formatDateToHumanReadable(claim.dateOfBirth)}

Service Date:{" "} {formatDateToHumanReadable(claim.serviceDate)}

Status:{" "} {claim?.status ? claim.status.charAt(0).toUpperCase() + claim.status.slice(1).toLowerCase() : "Unknown"}

Insurance Details

Insurance Provider:{" "} {claim.insuranceProvider || "N/A"}

Member ID:{" "} {claim.memberId}

Remarks:{" "} {claim.remarks || "N/A"}

{/* Metadata */}

Timestamps

Created At:{" "} {formatDateToHumanReadable(claim.createdAt)}

Updated At:{" "} {formatDateToHumanReadable(claim.updatedAt)}

{claim.staff && (

Assigned Staff

Name:{" "} {claim.staff.name}

Role:{" "} {claim.staff.role}

{claim.staff.email && (

Email:{" "} {claim.staff.email}

)} {claim.staff.phone && (

Phone:{" "} {claim.staff.phone}

)}
)}

Service Lines

{claim.serviceLines.length > 0 ? ( <> {claim.serviceLines.map((line, index) => (

Procedure Code:{" "} {line.procedureCode}

Procedure Date:{" "} {formatDateToHumanReadable(line.procedureCode)}

{line.oralCavityArea && (

Oral Cavity Area: {" "} {line.oralCavityArea}

)} {line.toothNumber && (

Tooth Number:{" "} {line.toothNumber}

)} {line.toothSurface && (

Tooth Surface: {" "} {line.toothSurface}

)}

Billed Amount:{" "} ${Number(line.totalBilled).toFixed(2)}

))}
Total Billed Amount: $ {claim.serviceLines .reduce( (total, line) => total + Number(line.totalBilled || 0), 0 ) .toFixed(2)}
) : (

No service lines available.

)}
)}
); }