{"ast":null,"code":"var _jsxFileName = \"C:\\\\Users\\\\User\\\\Downloads\\\\medora5\\\\frontend\\\\src\\\\pages\\\\doctors\\\\DoctorDetail.js\",\n _s = $RefreshSig$();\nimport React, { useState, useEffect } from 'react';\nimport { useParams, Link, useNavigate } from 'react-router-dom';\nimport { doctorService } from '../../services/doctorService';\nimport Loading from '../../components/Loading';\nimport ErrorAlert from '../../components/ErrorAlert';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nfunction DoctorDetail() {\n _s();\n var _doctor$specializatio, _doctor$level, _doctor$department;\n const formatDepartmentName = name => {\n if (!name) return 'N/A';\n return name.replace(/_DEPT$/, '').replace(/_/g, ' ').split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(' ');\n };\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 isAdmin = user.role === 'ADMIN';\n const isLabTechnician = user.role === 'LAB_TECHNICIAN';\n const isBillingAdmin = user.role === 'BILLING_ADMIN';\n const [doctor, setDoctor] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n useEffect(() => {\n const fetchDoctor = async () => {\n try {\n setLoading(true);\n const response = await doctorService.getDoctorById(id);\n setDoctor(response.data);\n } catch (err) {\n setError('Failed to fetch doctor details');\n console.error(err);\n } finally {\n setLoading(false);\n }\n };\n fetchDoctor();\n }, [id]);\n if (loading) return /*#__PURE__*/_jsxDEV(Loading, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 42,\n columnNumber: 23\n }, this);\n if (!doctor) {\n return /*#__PURE__*/_jsxDEV(\"div\", {\n children: /*#__PURE__*/_jsxDEV(ErrorAlert, {\n message: \"Doctor not found\",\n onClose: () => navigate('/doctors')\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 47,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 46,\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: [\"Dr. \", doctor.firstName, \" \", doctor.lastName]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 55,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"space-x-2\",\n children: [isAdmin && /*#__PURE__*/_jsxDEV(Link, {\n to: `/doctors/${id}/edit`,\n className: \"bg-purple-600 text-white px-4 py-2 rounded hover:bg-purple-700\",\n children: \"Edit\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 58,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => navigate('/doctors'),\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: 62,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 56,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 54,\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: 68,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 gap-6\",\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: \"Professional Information\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 72,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"space-y-3\",\n children: [/*#__PURE__*/_jsxDEV(InfoRow, {\n label: \"Email\",\n value: doctor.emailAddress\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 74,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(InfoRow, {\n label: \"Specialization\",\n value: (_doctor$specializatio = doctor.specialization) === null || _doctor$specializatio === void 0 ? void 0 : _doctor$specializatio.specializationName\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 75,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(InfoRow, {\n label: \"Level\",\n value: (_doctor$level = doctor.level) === null || _doctor$level === void 0 ? void 0 : _doctor$level.level\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 76,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(InfoRow, {\n label: \"Department\",\n value: formatDepartmentName((_doctor$department = doctor.department) === null || _doctor$department === void 0 ? void 0 : _doctor$department.departmentName)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 77,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 73,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 71,\n columnNumber: 9\n }, this), !isPatient && !isLabTechnician && !isBillingAdmin && /*#__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: \"Quick Links\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 83,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"space-y-2\",\n children: [/*#__PURE__*/_jsxDEV(Link, {\n to: `/appointments?doctorId=${id}`,\n className: \"block p-3 bg-blue-50 hover:bg-purple-100 rounded text-purple-600\",\n children: \"View My Appointments\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 85,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(Link, {\n to: \"/patients\",\n className: \"block p-3 bg-green-50 hover:bg-green-100 rounded text-green-600\",\n children: \"View Patients\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 88,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 84,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 82,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 70,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 53,\n columnNumber: 5\n }, this);\n}\n_s(DoctorDetail, \"9+2pfV15ffmqNyqpacUMEnwqOIc=\", false, function () {\n return [useParams, useNavigate];\n});\n_c = DoctorDetail;\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: 102,\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: 103,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 101,\n columnNumber: 5\n }, this);\n}\n_c2 = InfoRow;\nexport default DoctorDetail;\nvar _c, _c2;\n$RefreshReg$(_c, \"DoctorDetail\");\n$RefreshReg$(_c2, \"InfoRow\");","map":{"version":3,"names":["React","useState","useEffect","useParams","Link","useNavigate","doctorService","Loading","ErrorAlert","jsxDEV","_jsxDEV","DoctorDetail","_s","_doctor$specializatio","_doctor$level","_doctor$department","formatDepartmentName","name","replace","split","map","word","charAt","toUpperCase","slice","toLowerCase","join","id","navigate","user","JSON","parse","localStorage","getItem","isPatient","role","isAdmin","isLabTechnician","isBillingAdmin","doctor","setDoctor","loading","setLoading","error","setError","fetchDoctor","response","getDoctorById","data","err","console","fileName","_jsxFileName","lineNumber","columnNumber","children","message","onClose","className","style","color","firstName","lastName","to","onClick","InfoRow","label","value","emailAddress","specialization","specializationName","level","department","departmentName","_c","_c2","$RefreshReg$"],"sources":["C:/Users/User/Downloads/medora5/frontend/src/pages/doctors/DoctorDetail.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { useParams, Link, useNavigate } from 'react-router-dom';\nimport { doctorService } from '../../services/doctorService';\nimport Loading from '../../components/Loading';\nimport ErrorAlert from '../../components/ErrorAlert';\n\nfunction DoctorDetail() {\n const formatDepartmentName = (name) => {\n if (!name) return 'N/A';\n return name.replace(/_DEPT$/, '').replace(/_/g, ' ').split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(' ');\n };\n\n const { id } = useParams();\n const navigate = useNavigate();\n const user = JSON.parse(localStorage.getItem('user') || '{}');\n const isPatient = user.role === 'PATIENT';\n const isAdmin = user.role === 'ADMIN';\n const isLabTechnician = user.role === 'LAB_TECHNICIAN';\n const isBillingAdmin = user.role === 'BILLING_ADMIN';\n\n const [doctor, setDoctor] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n useEffect(() => {\n const fetchDoctor = async () => {\n try {\n setLoading(true);\n const response = await doctorService.getDoctorById(id);\n setDoctor(response.data);\n } catch (err) {\n setError('Failed to fetch doctor details');\n console.error(err);\n } finally {\n setLoading(false);\n }\n };\n\n fetchDoctor();\n }, [id]);\n\n if (loading) return