From 8d2652663c3a0dc837d53204b48e3afce1dc4f3b Mon Sep 17 00:00:00 2001 From: Vishnu Date: Tue, 10 Jun 2025 22:37:57 +0530 Subject: [PATCH] procedurecodes abbrevations added --- .../src/assets/data/procedureCodes.json | 344 ++++++++++++++++++ .../src/components/claims/claim-form.tsx | 43 ++- 2 files changed, 384 insertions(+), 3 deletions(-) create mode 100644 apps/Frontend/src/assets/data/procedureCodes.json diff --git a/apps/Frontend/src/assets/data/procedureCodes.json b/apps/Frontend/src/assets/data/procedureCodes.json new file mode 100644 index 0000000..8e57148 --- /dev/null +++ b/apps/Frontend/src/assets/data/procedureCodes.json @@ -0,0 +1,344 @@ +[ + { + "Procedure Code": "D1999", + "Description": "", + "Price": "50" + }, + { + "Procedure Code": "D0120", + "Description": "perio exam", + "Price": "105" + }, + { + "Procedure Code": "D0140", + "Description": "limited exam", + "Price": "90" + }, + { + "Procedure Code": "D0150", + "Description": "comprehensive exam", + "Price": "120" + }, + { + "Procedure Code": "D0210", + "Description": "Fmx.", + "Price": "120" + }, + { + "Procedure Code": "D0220", + "Description": "first PA.", + "Price": "60" + }, + { + "Procedure Code": "D0230", + "Description": "2nd PA.", + "Price": "50" + }, + { + "Procedure Code": "D0330", + "Description": "pano", + "Price": "150" + }, + { + "Procedure Code": "D0272", + "Description": "2 BW", + "Price": "80" + }, + { + "Procedure Code": "D0274", + "Description": "4BW", + "Price": "160" + }, + { + "Procedure Code": "D1110", + "Description": "adult prophy", + "Price": "150" + }, + { + "Procedure Code": "D1120", + "Description": "child prophy", + "Price": "120" + }, + { + "Procedure Code": "D1351", + "Description": "sealant", + "Price": "80" + }, + { + "Procedure Code": "D4341", + "Description": "srp", + "Price": "250" + }, + { + "Procedure Code": "D4910", + "Description": "perio maintains", + "Price": "250" + }, + { + "Procedure Code": "D1208", + "Description": "FL", + "Price": "90" + }, + { + "Procedure Code": "D2330", + "Description": "front composite. 1 s.", + "Price": "180" + }, + { + "Procedure Code": "D2331", + "Description": "2s", + "Price": "220" + }, + { + "Procedure Code": "D2332", + "Description": "3s", + "Price": "280" + }, + { + "Procedure Code": "D2335", + "Description": "4s or more", + "Price": "350" + }, + { + "Procedure Code": "D2391", + "Description": "back. 1s", + "Price": "200" + }, + { + "Procedure Code": "D2392", + "Description": "2s", + "Price": "250" + }, + { + "Procedure Code": "D2393", + "Description": "3s", + "Price": "280" + }, + { + "Procedure Code": "D2394", + "Description": "4s", + "Price": "320" + }, + { + "Procedure Code": "D2140", + "Description": "amalgam, one surface", + "Price": "150" + }, + { + "Procedure Code": "D2150", + "Description": "amalgam, two surface", + "Price": "200" + }, + { + "Procedure Code": "D2750", + "Description": "high noble", + "Price": "1300" + }, + { + "Procedure Code": "D2751", + "Description": "base metal", + "Price": "1200" + }, + { + "Procedure Code": "D2740", + "Description": "crown porcelain", + "Price": "1300" + }, + { + "Procedure Code": "D2954", + "Description": "p/c", + "Price": "450" + }, + { + "Procedure Code": "D7910", + "Description": "suture, small wound up to 5 mm", + "Price": "400" + }, + { + "Procedure Code": "D5110", + "Description": "FU", + "Price": "1200", + "Full Price": "1700" + }, + { + "Procedure Code": "D5120", + "Description": "FL", + "Price": "1700", + "Full Price": "1700" + }, + { + "Procedure Code": "D5211", + "Description": "pu", + "Price": "1300" + }, + { + "Procedure Code": "D5212", + "Description": "pl", + "Price": "1300" + }, + { + "Procedure Code": "D5213", + "Description": "cast pu.", + "Price": "1700" + }, + { + "Procedure Code": "D5214", + "Description": "cast pl", + "Price": "1700" + }, + { + "Procedure Code": "D5510", + "Description": "Repair broken complete denture base (QUAD)", + "Price": "400" + }, + { + "Procedure Code": "D5520", + "Description": "Replace missing or broken teeth - complete denture (each tooth) (TOOTH)", + "Price": "200" + }, + { + "Procedure Code": "D5750", + "Description": "lab reline", + "Price": "600" + }, + { + "Procedure Code": "D5730", + "Description": "chairside reline", + "Price": "500" + }, + { + "Procedure Code": "D2920", + "Description": "re cement crown", + "Price": "120" + }, + { + "Procedure Code": "D2950", + "Description": "core buildup", + "Price": "350" + }, + { + "Procedure Code": "D2955", + "Description": "post renoval", + "Price": "350" + }, + { + "Procedure Code": "D6100", + "Description": "", + "Price": "320" + }, + { + "Procedure Code": "D6110", + "Description": "implant", + "Price": "1600" + }, + { + "Procedure Code": "D6056", + "Description": "pre fab abut", + "Price": "750" + }, + { + "Procedure Code": "D6057", + "Description": "custom abut", + "Price": "800" + }, + { + "Procedure Code": "D6058", + "Description": "porcelain, implant crown, ceramic crown", + "Price": "1400" + }, + { + "Procedure Code": "D6059", + "Description": "", + "Price": "1400" + }, + { + "Procedure Code": "D6242", + "Description": "noble metal. For united", + "Price": "1400" + }, + { + "Procedure Code": "D6245", + "Description": "porcelain, not for united", + "Price": "1400" + }, + { + "Procedure Code": "D0367", + "Description": "", + "Price": "400" + }, + { + "Procedure Code": "D0364", + "Description": "Less than one jaw", + "Price": "350" + }, + { + "Procedure Code": "D0365", + "Description": "Mand", + "Price": "350" + }, + { + "Procedure Code": "D0366", + "Description": "Max", + "Price": "350" + }, + { + "Procedure Code": "D0368", + "Description": "include TMJ", + "Price": "375" + }, + { + "Procedure Code": "D0383", + "Description": "", + "Price": "350" + }, + { + "Procedure Code": "D0380", + "Description": "Less than one jaw", + "Price": "300" + }, + { + "Procedure Code": "D0381", + "Description": "Mand", + "Price": "300" + }, + { + "Procedure Code": "D0382", + "Description": "Max", + "Price": "300" + }, + { + "Procedure Code": "D7950", + "Description": "max", + "Price": "800" + }, + { + "Procedure Code": "D7140", + "Description": "simple ext", + "Price": "150" + }, + { + "Procedure Code": "D7210", + "Description": "surgical ext", + "Price": "280" + }, + { + "Procedure Code": "D7220", + "Description": "soft impacted", + "Price": "380" + }, + { + "Procedure Code": "D7230", + "Description": "partial bony", + "Price": "450" + }, + { + "Procedure Code": "D7240", + "Description": "fully bony", + "Price": "550" + }, + { + "Procedure Code": "D3320", + "Description": "pre M RCT", + "Price": "1050" + } +] \ No newline at end of file diff --git a/apps/Frontend/src/components/claims/claim-form.tsx b/apps/Frontend/src/components/claims/claim-form.tsx index ab1ffa0..013da79 100644 --- a/apps/Frontend/src/components/claims/claim-form.tsx +++ b/apps/Frontend/src/components/claims/claim-form.tsx @@ -11,7 +11,7 @@ import { import { format, parse } from "date-fns"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Label } from "@/components/ui/label"; -import { X, Calendar as CalendarIcon } from "lucide-react"; +import { X, Calendar as CalendarIcon, HelpCircle } from "lucide-react"; import { useToast } from "@/hooks/use-toast"; import { Calendar } from "@/components/ui/calendar"; import { @@ -28,6 +28,13 @@ import { useQuery } from "@tanstack/react-query"; import { apiRequest } from "@/lib/queryClient"; import { MultipleFileUploadZone } from "../file-upload/multiple-file-upload-zone"; import { useAuth } from "@/hooks/use-auth"; +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "@/components/ui/tooltip"; +import procedureCodes from "../../assets/data/procedureCodes.json"; const PatientSchema = ( PatientUncheckedCreateInputObjectSchema as unknown as z.ZodObject @@ -540,8 +547,9 @@ export function ClaimForm({ -
+
Procedure Code + Abbreviation Procedure Date Oral Cavity Area Tooth Number @@ -551,7 +559,7 @@ export function ClaimForm({ {/* Dynamic Rows */} {form.serviceLines.map((line, i) => ( -
+
+
+ + + + + +
+ {line.procedureCode && + line.procedureCode.trim() !== "" + ? (() => { + const normalizedCode = line.procedureCode + .toUpperCase() + .trim(); + const procedureInfo = procedureCodes.find( + (p) => + p["Procedure Code"].toUpperCase().trim() === + normalizedCode + ); + return procedureInfo + ? procedureInfo.Description || + "No description available" + : "Enter a valid procedure code"; + })() + : "Enter a procedure code"} +
+
+
+
+ {/* Date Picker */}