{"ast":null,"code":"var _jsxFileName = \"C:\\\\Users\\\\User\\\\Downloads\\\\medora5\\\\frontend\\\\src\\\\pages\\\\billing\\\\BillingDetail.js\",\n  _s = $RefreshSig$();\nimport React, { useState, useEffect } from 'react';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport { billingService } from '../../services/billingService';\nimport Loading from '../../components/Loading';\nimport ErrorAlert from '../../components/ErrorAlert';\nimport SuccessAlert from '../../components/SuccessAlert';\nimport { jsxDEV as _jsxDEV, Fragment as _Fragment } from \"react/jsx-dev-runtime\";\nfunction BillingDetail() {\n  _s();\n  const {\n    id\n  } = useParams();\n  const navigate = useNavigate();\n  const user = JSON.parse(localStorage.getItem('user') || '{}');\n  const isPatient = user.role === 'PATIENT';\n  const [billing, setBilling] = useState(null);\n  const [billingDetail, setBillingDetail] = useState(null);\n  const [loading, setLoading] = useState(true);\n  const [error, setError] = useState(null);\n  const [success, setSuccess] = useState(null);\n  const [updating, setUpdating] = useState(false);\n  const [paymentStatus, setPaymentStatus] = useState('');\n  const [downloading, setDownloading] = useState(false);\n  useEffect(() => {\n    const fetchBilling = async () => {\n      try {\n        setLoading(true);\n        const response = await billingService.getBillingById(id);\n        setBilling(response.data);\n        setPaymentStatus(response.data.paymentStatus);\n\n        // Fetch detailed billing information\n        try {\n          const detailResponse = await billingService.getBillingDetail(id);\n          setBillingDetail(detailResponse.data);\n        } catch (err) {\n          console.error('Could not fetch billing details:', err);\n        }\n      } catch (err) {\n        setError('Failed to fetch billing record');\n        console.error(err);\n      } finally {\n        setLoading(false);\n      }\n    };\n    fetchBilling();\n  }, [id]);\n  const handleUpdatePaymentStatus = async () => {\n    try {\n      setUpdating(true);\n      const response = await billingService.updatePaymentStatus(id, {\n        paymentStatus,\n        paymentDate: new Date().toISOString().split('T')[0]\n      });\n      setBilling(response.data);\n      setSuccess('Payment status updated successfully!');\n    } catch (err) {\n      setError('Failed to update payment status');\n    } finally {\n      setUpdating(false);\n    }\n  };\n  const handleDownloadInvoice = async () => {\n    try {\n      setDownloading(true);\n      await billingService.downloadInvoicePDF(id);\n      setSuccess('Invoice downloaded successfully!');\n    } catch (err) {\n      setError('Failed to download invoice');\n      console.error(err);\n    } finally {\n      setDownloading(false);\n    }\n  };\n  if (loading) return /*#__PURE__*/_jsxDEV(Loading, {}, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 78,\n    columnNumber: 23\n  }, this);\n\n  // Prevent unauthorized access to billing\n  if (user.role === 'DOCTOR' || user.role === 'LAB_TECHNICIAN') {\n    return /*#__PURE__*/_jsxDEV(\"div\", {\n      style: {\n        padding: '20px',\n        textAlign: 'center'\n      },\n      children: [/*#__PURE__*/_jsxDEV(\"h1\", {\n        className: \"text-2xl font-bold\",\n        style: {\n          color: '#7c3aed',\n          marginBottom: '10px'\n        },\n        children: \"Access Denied\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 84,\n        columnNumber: 9\n      }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n        style: {\n          color: 'var(--color-neutral-600)'\n        },\n        children: \"You do not have permission to access billing records.\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 85,\n        columnNumber: 9\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 83,\n      columnNumber: 7\n    }, this);\n  }\n  if (!billing) {\n    return /*#__PURE__*/_jsxDEV(\"div\", {\n      children: /*#__PURE__*/_jsxDEV(ErrorAlert, {\n        message: \"Billing record not found\",\n        onClose: () => navigate('/billing')\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 93,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 92,\n      columnNumber: 7\n    }, this);\n  }\n  return /*#__PURE__*/_jsxDEV(\"div\", {\n    children: [/*#__PURE__*/_jsxDEV(\"div\", {\n      className: \"flex justify-between items-center mb-6\",\n      children: [/*#__PURE__*/_jsxDEV(\"h1\", {\n        className: \"text-3xl font-bold\",\n        style: {\n          color: '#7c3aed'\n        },\n        children: [\"Billing Record #\", billing.billId]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 101,\n        columnNumber: 9\n      }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n        className: \"space-x-2\",\n        children: [/*#__PURE__*/_jsxDEV(\"button\", {\n          onClick: handleDownloadInvoice,\n          disabled: downloading,\n          className: \"bg-green-600 text-white px-4 py-2 rounded hover:bg-green-700 disabled:opacity-50\",\n          children: downloading ? 'Downloading...' : 'Download Invoice (PDF)'\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 103,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n          onClick: () => navigate('/billing'),\n          className: \"bg-gray-300 text-gray-700 px-4 py-2 rounded hover:bg-gray-400\",\n          children: \"Back\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 110,\n          columnNumber: 11\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 102,\n        columnNumber: 9\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 100,\n      columnNumber: 7\n    }, this), error && /*#__PURE__*/_jsxDEV(ErrorAlert, {\n      message: error,\n      onClose: () => setError(null)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 116,\n      columnNumber: 17\n    }, this), success && /*#__PURE__*/_jsxDEV(SuccessAlert, {\n      message: success,\n      onClose: () => setSuccess(null)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 117,\n      columnNumber: 19\n    }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n      className: `grid gap-6 mb-6 ${isPatient ? 'grid-cols-1 lg:grid-cols-2' : 'grid-cols-1 lg:grid-cols-3'}`,\n      children: [/*#__PURE__*/_jsxDEV(\"div\", {\n        className: \"bg-white rounded-lg shadow p-6\",\n        children: [/*#__PURE__*/_jsxDEV(\"h2\", {\n          className: \"text-xl font-bold mb-4\",\n          children: \"Billing Information\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 121,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n          className: \"space-y-3\",\n          children: [/*#__PURE__*/_jsxDEV(InfoRow, {\n            label: \"Patient\",\n            value: billing.patientName\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 123,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(InfoRow, {\n            label: \"Total Cost\",\n            value: `$${billing.totalCost}`\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 124,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(InfoRow, {\n            label: \"Current Status\",\n            value: billing.paymentStatus\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 125,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(InfoRow, {\n            label: \"Payment Date\",\n            value: billing.paymentDate || 'Not paid'\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 126,\n            columnNumber: 13\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 122,\n          columnNumber: 11\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 120,\n        columnNumber: 9\n      }, this), !isPatient && /*#__PURE__*/_jsxDEV(\"div\", {\n        className: \"bg-white rounded-lg shadow p-6\",\n        children: [/*#__PURE__*/_jsxDEV(\"h2\", {\n          className: \"text-xl font-bold mb-4\",\n          children: \"Update Payment Status\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 132,\n          columnNumber: 13\n        }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n          className: \"space-y-4\",\n          children: [/*#__PURE__*/_jsxDEV(\"div\", {\n            children: [/*#__PURE__*/_jsxDEV(\"label\", {\n              className: \"block text-sm font-semibold mb-2\",\n              children: \"Payment Status\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 135,\n              columnNumber: 17\n            }, this), /*#__PURE__*/_jsxDEV(\"select\", {\n              value: paymentStatus,\n              onChange: e => setPaymentStatus(e.target.value),\n              className: \"w-full px-4 py-2 border rounded-lg\",\n              children: [/*#__PURE__*/_jsxDEV(\"option\", {\n                value: \"PENDING\",\n                children: \"Pending\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 141,\n                columnNumber: 19\n              }, this), /*#__PURE__*/_jsxDEV(\"option\", {\n                value: \"PAID\",\n                children: \"Paid\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 142,\n                columnNumber: 19\n              }, this), /*#__PURE__*/_jsxDEV(\"option\", {\n                value: \"CANCELLED\",\n                children: \"Cancelled\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 143,\n                columnNumber: 19\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 136,\n              columnNumber: 17\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 134,\n            columnNumber: 15\n          }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n            onClick: handleUpdatePaymentStatus,\n            disabled: updating || paymentStatus === billing.paymentStatus,\n            className: \"w-full bg-purple-600 text-white px-4 py-2 rounded hover:bg-purple-700 disabled:opacity-50\",\n            children: updating ? 'Updating...' : 'Update Status'\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 146,\n            columnNumber: 15\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 133,\n          columnNumber: 13\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 131,\n        columnNumber: 11\n      }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n        className: \"bg-white rounded-lg shadow p-6\",\n        children: [/*#__PURE__*/_jsxDEV(\"h2\", {\n          className: \"text-xl font-bold mb-4\",\n          children: \"Patient Details\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 158,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n          className: \"space-y-3\",\n          children: billingDetail && /*#__PURE__*/_jsxDEV(_Fragment, {\n            children: [/*#__PURE__*/_jsxDEV(InfoRow, {\n              label: \"EMBG\",\n              value: billingDetail.patientEmbg\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 162,\n              columnNumber: 17\n            }, this), /*#__PURE__*/_jsxDEV(InfoRow, {\n              label: \"Phone\",\n              value: billingDetail.patientPhone\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 163,\n              columnNumber: 17\n            }, this), /*#__PURE__*/_jsxDEV(InfoRow, {\n              label: \"Bill Date\",\n              value: billingDetail.billDate\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 164,\n              columnNumber: 17\n            }, this)]\n          }, void 0, true)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 159,\n          columnNumber: 11\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 157,\n        columnNumber: 9\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 119,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n      className: \"bg-white rounded-lg shadow p-6\",\n      children: [/*#__PURE__*/_jsxDEV(\"h2\", {\n        className: \"text-xl font-bold mb-4\",\n        children: \"Itemized Services\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 172,\n        columnNumber: 9\n      }, this), billingDetail && (billingDetail.procedures.length > 0 || billingDetail.labTests.length > 0) ? /*#__PURE__*/_jsxDEV(\"div\", {\n        className: \"space-y-4\",\n        children: [billingDetail.procedures.length > 0 && /*#__PURE__*/_jsxDEV(\"div\", {\n          children: [/*#__PURE__*/_jsxDEV(\"h3\", {\n            className: \"font-semibold text-lg mb-2\",\n            children: \"Procedures\"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 178,\n            columnNumber: 17\n          }, this), /*#__PURE__*/_jsxDEV(\"table\", {\n            className: \"w-full\",\n            children: [/*#__PURE__*/_jsxDEV(\"thead\", {\n              className: \"bg-gray-100\",\n              children: /*#__PURE__*/_jsxDEV(\"tr\", {\n                children: [/*#__PURE__*/_jsxDEV(\"th\", {\n                  className: \"px-4 py-2 text-left\",\n                  children: \"Description\"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 182,\n                  columnNumber: 23\n                }, this), /*#__PURE__*/_jsxDEV(\"th\", {\n                  className: \"px-4 py-2 text-right\",\n                  children: \"Cost\"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 183,\n                  columnNumber: 23\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 181,\n                columnNumber: 21\n              }, this)\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 180,\n              columnNumber: 19\n            }, this), /*#__PURE__*/_jsxDEV(\"tbody\", {\n              children: billingDetail.procedures.map((proc, idx) => /*#__PURE__*/_jsxDEV(\"tr\", {\n                className: \"border-t\",\n                children: [/*#__PURE__*/_jsxDEV(\"td\", {\n                  className: \"px-4 py-2\",\n                  children: proc.description\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 189,\n                  columnNumber: 25\n                }, this), /*#__PURE__*/_jsxDEV(\"td\", {\n                  className: \"px-4 py-2 text-right\",\n                  children: [\"$\", proc.cost]\n                }, void 0, true, {\n                  fileName: _jsxFileName,\n                  lineNumber: 190,\n                  columnNumber: 25\n                }, this)]\n              }, idx, true, {\n                fileName: _jsxFileName,\n                lineNumber: 188,\n                columnNumber: 23\n              }, this))\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 186,\n              columnNumber: 19\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 179,\n            columnNumber: 17\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 177,\n          columnNumber: 15\n        }, this), billingDetail.labTests.length > 0 && /*#__PURE__*/_jsxDEV(\"div\", {\n          children: [/*#__PURE__*/_jsxDEV(\"h3\", {\n            className: \"font-semibold text-lg mb-2\",\n            children: \"Lab Tests\"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 200,\n            columnNumber: 17\n          }, this), /*#__PURE__*/_jsxDEV(\"table\", {\n            className: \"w-full\",\n            children: [/*#__PURE__*/_jsxDEV(\"thead\", {\n              className: \"bg-gray-100\",\n              children: /*#__PURE__*/_jsxDEV(\"tr\", {\n                children: [/*#__PURE__*/_jsxDEV(\"th\", {\n                  className: \"px-4 py-2 text-left\",\n                  children: \"Description\"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 204,\n                  columnNumber: 23\n                }, this), /*#__PURE__*/_jsxDEV(\"th\", {\n                  className: \"px-4 py-2 text-right\",\n                  children: \"Cost\"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 205,\n                  columnNumber: 23\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 203,\n                columnNumber: 21\n              }, this)\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 202,\n              columnNumber: 19\n            }, this), /*#__PURE__*/_jsxDEV(\"tbody\", {\n              children: billingDetail.labTests.map((test, idx) => /*#__PURE__*/_jsxDEV(\"tr\", {\n                className: \"border-t\",\n                children: [/*#__PURE__*/_jsxDEV(\"td\", {\n                  className: \"px-4 py-2\",\n                  children: test.description\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 211,\n                  columnNumber: 25\n                }, this), /*#__PURE__*/_jsxDEV(\"td\", {\n                  className: \"px-4 py-2 text-right\",\n                  children: [\"$\", test.cost]\n                }, void 0, true, {\n                  fileName: _jsxFileName,\n                  lineNumber: 212,\n                  columnNumber: 25\n                }, this)]\n              }, idx, true, {\n                fileName: _jsxFileName,\n                lineNumber: 210,\n                columnNumber: 23\n              }, this))\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 208,\n              columnNumber: 19\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 201,\n            columnNumber: 17\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 199,\n          columnNumber: 15\n        }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n          className: \"border-t-2 pt-4 mt-4 flex justify-end\",\n          children: /*#__PURE__*/_jsxDEV(\"div\", {\n            className: \"text-right\",\n            children: [/*#__PURE__*/_jsxDEV(\"p\", {\n              className: \"text-gray-600\",\n              children: \"Total Amount:\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 222,\n              columnNumber: 17\n            }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n              className: \"text-2xl font-bold text-purple-600\",\n              children: [\"$\", billing.totalCost]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 223,\n              columnNumber: 17\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 221,\n            columnNumber: 15\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 220,\n          columnNumber: 13\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 175,\n        columnNumber: 11\n      }, this) : /*#__PURE__*/_jsxDEV(\"p\", {\n        className: \"text-gray-500\",\n        children: \"No services itemized for this billing record.\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 228,\n        columnNumber: 11\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 171,\n      columnNumber: 7\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 99,\n    columnNumber: 5\n  }, this);\n}\n_s(BillingDetail, \"+L49HC9Vi3EUS7jcBFcybPeaKcU=\", false, function () {\n  return [useParams, useNavigate];\n});\n_c = BillingDetail;\nfunction InfoRow({\n  label,\n  value\n}) {\n  return /*#__PURE__*/_jsxDEV(\"div\", {\n    className: \"flex justify-between\",\n    children: [/*#__PURE__*/_jsxDEV(\"span\", {\n      className: \"text-gray-800\",\n      children: [label, \":\"]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 238,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n      className: \"text-gray-800\",\n      children: value || 'N/A'\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 239,\n      columnNumber: 7\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 237,\n    columnNumber: 5\n  }, this);\n}\n_c2 = InfoRow;\nexport default BillingDetail;\nvar _c, _c2;\n$RefreshReg$(_c, \"BillingDetail\");\n$RefreshReg$(_c2, \"InfoRow\");","map":{"version":3,"names":["React","useState","useEffect","useParams","useNavigate","billingService","Loading","ErrorAlert","SuccessAlert","jsxDEV","_jsxDEV","Fragment","_Fragment","BillingDetail","_s","id","navigate","user","JSON","parse","localStorage","getItem","isPatient","role","billing","setBilling","billingDetail","setBillingDetail","loading","setLoading","error","setError","success","setSuccess","updating","setUpdating","paymentStatus","setPaymentStatus","downloading","setDownloading","fetchBilling","response","getBillingById","data","detailResponse","getBillingDetail","err","console","handleUpdatePaymentStatus","updatePaymentStatus","paymentDate","Date","toISOString","split","handleDownloadInvoice","downloadInvoicePDF","fileName","_jsxFileName","lineNumber","columnNumber","style","padding","textAlign","children","className","color","marginBottom","message","onClose","billId","onClick","disabled","InfoRow","label","value","patientName","totalCost","onChange","e","target","patientEmbg","patientPhone","billDate","procedures","length","labTests","map","proc","idx","description","cost","test","_c","_c2","$RefreshReg$"],"sources":["C:/Users/User/Downloads/medora5/frontend/src/pages/billing/BillingDetail.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport { billingService } from '../../services/billingService';\nimport Loading from '../../components/Loading';\nimport ErrorAlert from '../../components/ErrorAlert';\nimport SuccessAlert from '../../components/SuccessAlert';\n\nfunction BillingDetail() {\n  const { id } = useParams();\n  const navigate = useNavigate();\n  const user = JSON.parse(localStorage.getItem('user') || '{}');\n  const isPatient = user.role === 'PATIENT';\n\n  const [billing, setBilling] = useState(null);\n  const [billingDetail, setBillingDetail] = useState(null);\n  const [loading, setLoading] = useState(true);\n  const [error, setError] = useState(null);\n  const [success, setSuccess] = useState(null);\n  const [updating, setUpdating] = useState(false);\n  const [paymentStatus, setPaymentStatus] = useState('');\n  const [downloading, setDownloading] = useState(false);\n\n  useEffect(() => {\n    const fetchBilling = async () => {\n      try {\n        setLoading(true);\n        const response = await billingService.getBillingById(id);\n      setBilling(response.data);\n      setPaymentStatus(response.data.paymentStatus);\n\n      // Fetch detailed billing information\n      try {\n        const detailResponse = await billingService.getBillingDetail(id);\n        setBillingDetail(detailResponse.data);\n      } catch (err) {\n        console.error('Could not fetch billing details:', err);\n      }\n      } catch (err) {\n        setError('Failed to fetch billing record');\n        console.error(err);\n      } finally {\n        setLoading(false);\n      }\n    };\n\n    fetchBilling();\n  }, [id]);\n\n  const handleUpdatePaymentStatus = async () => {\n    try {\n      setUpdating(true);\n      const response = await billingService.updatePaymentStatus(id, {\n        paymentStatus,\n        paymentDate: new Date().toISOString().split('T')[0],\n      });\n      setBilling(response.data);\n      setSuccess('Payment status updated successfully!');\n    } catch (err) {\n      setError('Failed to update payment status');\n    } finally {\n      setUpdating(false);\n    }\n  };\n\n  const handleDownloadInvoice = async () => {\n    try {\n      setDownloading(true);\n      await billingService.downloadInvoicePDF(id);\n      setSuccess('Invoice downloaded successfully!');\n    } catch (err) {\n      setError('Failed to download invoice');\n      console.error(err);\n    } finally {\n      setDownloading(false);\n    }\n  };\n\n  if (loading) return <Loading />;\n\n  // Prevent unauthorized access to billing\n  if (user.role === 'DOCTOR' || user.role === 'LAB_TECHNICIAN') {\n    return (\n      <div style={{ padding: '20px', textAlign: 'center' }}>\n        <h1 className=\"text-2xl font-bold\" style={{ color: '#7c3aed', marginBottom: '10px' }}>Access Denied</h1>\n        <p style={{ color: 'var(--color-neutral-600)' }}>You do not have permission to access billing records.</p>\n      </div>\n    );\n  }\n\n  if (!billing) {\n    return (\n      <div>\n        <ErrorAlert message=\"Billing record not found\" onClose={() => navigate('/billing')} />\n      </div>\n    );\n  }\n\n  return (\n    <div>\n      <div className=\"flex justify-between items-center mb-6\">\n        <h1 className=\"text-3xl font-bold\" style={{ color: '#7c3aed' }}>Billing Record #{billing.billId}</h1>\n        <div className=\"space-x-2\">\n          <button\n            onClick={handleDownloadInvoice}\n            disabled={downloading}\n            className=\"bg-green-600 text-white px-4 py-2 rounded hover:bg-green-700 disabled:opacity-50\"\n          >\n            {downloading ? 'Downloading...' : 'Download Invoice (PDF)'}\n          </button>\n          <button onClick={() => navigate('/billing')} className=\"bg-gray-300 text-gray-700 px-4 py-2 rounded hover:bg-gray-400\">\n            Back\n          </button>\n        </div>\n      </div>\n\n      {error && <ErrorAlert message={error} onClose={() => setError(null)} />}\n      {success && <SuccessAlert message={success} onClose={() => setSuccess(null)} />}\n\n      <div className={`grid gap-6 mb-6 ${isPatient ? 'grid-cols-1 lg:grid-cols-2' : 'grid-cols-1 lg:grid-cols-3'}`}>\n        <div className=\"bg-white rounded-lg shadow p-6\">\n          <h2 className=\"text-xl font-bold mb-4\">Billing Information</h2>\n          <div className=\"space-y-3\">\n            <InfoRow label=\"Patient\" value={billing.patientName} />\n            <InfoRow label=\"Total Cost\" value={`$${billing.totalCost}`} />\n            <InfoRow label=\"Current Status\" value={billing.paymentStatus} />\n            <InfoRow label=\"Payment Date\" value={billing.paymentDate || 'Not paid'} />\n          </div>\n        </div>\n\n        {!isPatient && (\n          <div className=\"bg-white rounded-lg shadow p-6\">\n            <h2 className=\"text-xl font-bold mb-4\">Update Payment Status</h2>\n            <div className=\"space-y-4\">\n              <div>\n                <label className=\"block text-sm font-semibold mb-2\">Payment Status</label>\n                <select\n                  value={paymentStatus}\n                  onChange={(e) => setPaymentStatus(e.target.value)}\n                  className=\"w-full px-4 py-2 border rounded-lg\"\n                >\n                  <option value=\"PENDING\">Pending</option>\n                  <option value=\"PAID\">Paid</option>\n                  <option value=\"CANCELLED\">Cancelled</option>\n                </select>\n              </div>\n              <button\n                onClick={handleUpdatePaymentStatus}\n                disabled={updating || paymentStatus === billing.paymentStatus}\n                className=\"w-full bg-purple-600 text-white px-4 py-2 rounded hover:bg-purple-700 disabled:opacity-50\"\n              >\n                {updating ? 'Updating...' : 'Update Status'}\n              </button>\n            </div>\n          </div>\n        )}\n\n        <div className=\"bg-white rounded-lg shadow p-6\">\n          <h2 className=\"text-xl font-bold mb-4\">Patient Details</h2>\n          <div className=\"space-y-3\">\n            {billingDetail && (\n              <>\n                <InfoRow label=\"EMBG\" value={billingDetail.patientEmbg} />\n                <InfoRow label=\"Phone\" value={billingDetail.patientPhone} />\n                <InfoRow label=\"Bill Date\" value={billingDetail.billDate} />\n              </>\n            )}\n          </div>\n        </div>\n      </div>\n\n      <div className=\"bg-white rounded-lg shadow p-6\">\n        <h2 className=\"text-xl font-bold mb-4\">Itemized Services</h2>\n\n        {billingDetail && (billingDetail.procedures.length > 0 || billingDetail.labTests.length > 0) ? (\n          <div className=\"space-y-4\">\n            {billingDetail.procedures.length > 0 && (\n              <div>\n                <h3 className=\"font-semibold text-lg mb-2\">Procedures</h3>\n                <table className=\"w-full\">\n                  <thead className=\"bg-gray-100\">\n                    <tr>\n                      <th className=\"px-4 py-2 text-left\">Description</th>\n                      <th className=\"px-4 py-2 text-right\">Cost</th>\n                    </tr>\n                  </thead>\n                  <tbody>\n                    {billingDetail.procedures.map((proc, idx) => (\n                      <tr key={idx} className=\"border-t\">\n                        <td className=\"px-4 py-2\">{proc.description}</td>\n                        <td className=\"px-4 py-2 text-right\">${proc.cost}</td>\n                      </tr>\n                    ))}\n                  </tbody>\n                </table>\n              </div>\n            )}\n\n            {billingDetail.labTests.length > 0 && (\n              <div>\n                <h3 className=\"font-semibold text-lg mb-2\">Lab Tests</h3>\n                <table className=\"w-full\">\n                  <thead className=\"bg-gray-100\">\n                    <tr>\n                      <th className=\"px-4 py-2 text-left\">Description</th>\n                      <th className=\"px-4 py-2 text-right\">Cost</th>\n                    </tr>\n                  </thead>\n                  <tbody>\n                    {billingDetail.labTests.map((test, idx) => (\n                      <tr key={idx} className=\"border-t\">\n                        <td className=\"px-4 py-2\">{test.description}</td>\n                        <td className=\"px-4 py-2 text-right\">${test.cost}</td>\n                      </tr>\n                    ))}\n                  </tbody>\n                </table>\n              </div>\n            )}\n\n            <div className=\"border-t-2 pt-4 mt-4 flex justify-end\">\n              <div className=\"text-right\">\n                <p className=\"text-gray-600\">Total Amount:</p>\n                <p className=\"text-2xl font-bold text-purple-600\">${billing.totalCost}</p>\n              </div>\n            </div>\n          </div>\n        ) : (\n          <p className=\"text-gray-500\">No services itemized for this billing record.</p>\n        )}\n      </div>\n    </div>\n  );\n}\n\nfunction InfoRow({ label, value }) {\n  return (\n    <div className=\"flex justify-between\">\n      <span className=\"text-gray-800\">{label}:</span>\n      <span className=\"text-gray-800\">{value || 'N/A'}</span>\n    </div>\n  );\n}\n\nexport default BillingDetail;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}