{"ast":null,"code":"var _jsxFileName = \"C:\\\\Users\\\\User\\\\Downloads\\\\medora5\\\\frontend\\\\src\\\\pages\\\\medical-records\\\\MedicalRecordDetail.js\",\n _s = $RefreshSig$();\nimport React, { useState, useEffect, useCallback } from 'react';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport { medicalRecordService } from '../../services/medicalRecordService';\nimport { doctorService } from '../../services/doctorService';\nimport { labService } from '../../services/labService';\nimport { procedureService } from '../../services/procedureService';\nimport ErrorAlert from '../../components/ErrorAlert';\nimport SuccessAlert from '../../components/SuccessAlert';\nimport Loading from '../../components/Loading';\nimport apiClient from '../../services/api';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nfunction MedicalRecordDetail() {\n _s();\n const {\n id\n } = useParams();\n const navigate = useNavigate();\n const user = JSON.parse(localStorage.getItem('user') || '{}');\n const isDoctor = user.role === 'DOCTOR';\n const [record, setRecord] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n const [success, setSuccess] = useState(null);\n const [activeTab, setActiveTab] = useState('view');\n const [doctors, setDoctors] = useState([]);\n const [selectedDoctorId, setSelectedDoctorId] = useState(isDoctor ? user.doctorId : '');\n\n // Diagnosis form\n const [diagnosisForm, setDiagnosisForm] = useState({\n diagnosisId: '',\n doctorId: ''\n });\n\n // Symptoms form\n const [symptomsForm, setSymptomsForm] = useState({\n symptomId: ''\n });\n\n // Allergies form\n const [allergyForm, setAllergyForm] = useState({\n allergyId: '',\n severity: 'MEDIUM',\n reaction: ''\n });\n\n // Prescription form\n const [prescriptionForm, setPrescriptionForm] = useState({\n prescriptionId: '',\n dosage: '',\n frequency: '',\n duration: '',\n reason: ''\n });\n\n // Dropdown options\n const [diagnoses, setDiagnoses] = useState([]);\n const [symptoms, setSymptoms] = useState([]);\n const [allergies, setAllergies] = useState([]);\n const [prescriptions, setPrescriptions] = useState([]);\n const [labTests, setLabTests] = useState([]);\n const [procedures, setProcedures] = useState([]);\n\n // Lab test form\n const [labTestForm, setLabTestForm] = useState({\n testId: '',\n testDate: new Date().toISOString().split('T')[0],\n notes: ''\n });\n\n // Procedure form\n const [procedureForm, setProcedureForm] = useState({\n procedureId: '',\n procedureDate: new Date().toISOString().split('T')[0],\n notes: '',\n diagnosisId: ''\n });\n const [labResults, setLabResults] = useState([]);\n const [procedureResults, setProcedureResults] = useState([]);\n const fetchRecord = useCallback(async () => {\n try {\n setLoading(true);\n const response = await medicalRecordService.getMedicalRecordByPatientId(id);\n setRecord(response.data);\n\n // Fetch lab results\n try {\n const resultsResponse = await labService.getLabResultsForMedicalRecord(response.data.recordId);\n setLabResults(resultsResponse.data || []);\n } catch (err) {\n console.error('Failed to fetch lab results:', err);\n setLabResults([]);\n }\n\n // Fetch procedure results\n try {\n const procedureResultsResponse = await procedureService.getProcedureResultsForMedicalRecord(response.data.recordId);\n setProcedureResults(procedureResultsResponse.data || []);\n } catch (err) {\n console.error('Failed to fetch procedure results:', err);\n setProcedureResults([]);\n }\n } catch (err) {\n setError('Failed to fetch medical record');\n console.error(err);\n } finally {\n setLoading(false);\n }\n }, [id]);\n useEffect(() => {\n const fetchDoctors = async () => {\n try {\n if (!isDoctor) {\n const response = await doctorService.getAllDoctors();\n setDoctors(response.data);\n if (response.data.length > 0 && !selectedDoctorId) {\n setSelectedDoctorId(response.data[0].doctorId);\n }\n }\n } catch (err) {\n console.error('Failed to fetch doctors', err);\n }\n };\n const fetchDropdownOptions = async () => {\n try {\n console.log('Fetching dropdown options...');\n const diagnosesRes = await apiClient.get('/medical-records/dropdown/diagnoses');\n console.log('Diagnoses:', diagnosesRes.data);\n const symptomsRes = await apiClient.get('/medical-records/dropdown/symptoms');\n console.log('Symptoms:', symptomsRes.data);\n const allergiesRes = await apiClient.get('/medical-records/dropdown/allergies');\n console.log('Allergies:', allergiesRes.data);\n const prescriptionsRes = await apiClient.get('/medical-records/dropdown/prescriptions');\n console.log('Prescriptions:', prescriptionsRes.data);\n const testsRes = await labService.getAllLabTests();\n console.log('Lab Tests:', testsRes.data);\n const proceduresRes = await procedureService.getAllProcedures();\n console.log('Procedures:', proceduresRes.data);\n setDiagnoses(diagnosesRes.data || []);\n setSymptoms(symptomsRes.data || []);\n setAllergies(allergiesRes.data || []);\n setPrescriptions(prescriptionsRes.data || []);\n setLabTests(testsRes.data || []);\n setProcedures(proceduresRes.data || []);\n console.log('Dropdown options set successfully');\n } catch (err) {\n var _err$response, _err$response$data;\n console.error('Error fetching dropdown options:', err);\n setError('Failed to load dropdown options: ' + (((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.error) || err.message));\n }\n };\n fetchRecord();\n fetchDoctors();\n fetchDropdownOptions();\n }, [id, isDoctor, fetchRecord, selectedDoctorId]);\n const handleAddDiagnosis = async e => {\n e.preventDefault();\n try {\n if (!diagnosisForm.diagnosisId) {\n setError('Please select a diagnosis');\n return;\n }\n if (!selectedDoctorId) {\n setError('Please select a doctor');\n return;\n }\n const selectedDiagnosis = diagnoses.find(d => d.id === parseInt(diagnosisForm.diagnosisId));\n await apiClient.post('/diagnoses', {\n patientId: parseInt(record.patientId),\n doctorId: parseInt(selectedDoctorId),\n name: selectedDiagnosis.name,\n description: ''\n });\n setSuccess('Diagnosis recorded successfully');\n setDiagnosisForm({\n diagnosisId: '',\n doctorId: ''\n });\n setTimeout(() => fetchRecord(), 1000);\n } catch (err) {\n var _err$response2, _err$response2$data;\n setError(((_err$response2 = err.response) === null || _err$response2 === void 0 ? void 0 : (_err$response2$data = _err$response2.data) === null || _err$response2$data === void 0 ? void 0 : _err$response2$data.error) || 'Failed to record diagnosis');\n }\n };\n const handleAddSymptom = async e => {\n e.preventDefault();\n try {\n if (!symptomsForm.symptomId) {\n setError('Please select a symptom');\n return;\n }\n await apiClient.post(`/medical-records/${record.recordId}/symptoms`, {\n symptomId: parseInt(symptomsForm.symptomId),\n severity: 'MEDIUM'\n });\n setSuccess('Symptom recorded successfully');\n setSymptomsForm({\n symptomId: ''\n });\n setTimeout(() => fetchRecord(), 1000);\n } catch (err) {\n var _err$response3, _err$response3$data;\n setError(((_err$response3 = err.response) === null || _err$response3 === void 0 ? void 0 : (_err$response3$data = _err$response3.data) === null || _err$response3$data === void 0 ? void 0 : _err$response3$data.error) || 'Failed to record symptom');\n }\n };\n const handleAddAllergy = async e => {\n e.preventDefault();\n try {\n if (!allergyForm.allergyId) {\n setError('Please select an allergy');\n return;\n }\n await apiClient.post(`/medical-records/${record.recordId}/allergies`, {\n allergyId: parseInt(allergyForm.allergyId),\n severity: allergyForm.severity,\n reaction: allergyForm.reaction\n });\n setSuccess('Allergy recorded successfully');\n setAllergyForm({\n allergyId: '',\n severity: 'MEDIUM',\n reaction: ''\n });\n setTimeout(() => fetchRecord(), 1000);\n } catch (err) {\n var _err$response4, _err$response4$data;\n setError(((_err$response4 = err.response) === null || _err$response4 === void 0 ? void 0 : (_err$response4$data = _err$response4.data) === null || _err$response4$data === void 0 ? void 0 : _err$response4$data.error) || 'Failed to record allergy');\n }\n };\n const handleAddPrescription = async e => {\n e.preventDefault();\n try {\n if (!prescriptionForm.prescriptionId) {\n setError('Please select a prescription medication');\n return;\n }\n if (!prescriptionForm.dosage.trim()) {\n setError('Dosage is required');\n return;\n }\n if (!prescriptionForm.frequency.trim()) {\n setError('Frequency is required');\n return;\n }\n if (!prescriptionForm.duration.trim()) {\n setError('Duration is required');\n return;\n }\n const selectedPrescription = prescriptions.find(p => p.id === parseInt(prescriptionForm.prescriptionId));\n await apiClient.post('/prescriptions', {\n medicalRecordId: record.recordId,\n medicationName: selectedPrescription.name,\n dosage: prescriptionForm.dosage,\n frequency: prescriptionForm.frequency,\n duration: prescriptionForm.duration,\n notes: prescriptionForm.reason\n });\n setSuccess('Prescription recorded successfully');\n setPrescriptionForm({\n prescriptionId: '',\n dosage: '',\n frequency: '',\n duration: '',\n reason: ''\n });\n setTimeout(() => fetchRecord(), 1000);\n } catch (err) {\n var _err$response5, _err$response5$data;\n setError(((_err$response5 = err.response) === null || _err$response5 === void 0 ? void 0 : (_err$response5$data = _err$response5.data) === null || _err$response5$data === void 0 ? void 0 : _err$response5$data.error) || 'Failed to record prescription');\n }\n };\n if (loading) return /*#__PURE__*/_jsxDEV(Loading, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 271,\n columnNumber: 23\n }, this);\n if (!record) {\n return /*#__PURE__*/_jsxDEV(\"div\", {\n children: /*#__PURE__*/_jsxDEV(ErrorAlert, {\n message: \"Medical record not found\",\n onClose: () => navigate('/medical-records')\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 276,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 275,\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 style: {\n fontSize: '36px',\n fontWeight: 'normal'\n },\n children: \"Medical Record\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 284,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => navigate('/medical-records'),\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: 285,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 283,\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: 293,\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: 294,\n columnNumber: 19\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-white rounded-lg shadow p-6 mb-6\",\n children: [/*#__PURE__*/_jsxDEV(\"h2\", {\n style: {\n fontSize: '20px',\n fontWeight: 'normal',\n marginBottom: '16px'\n },\n children: \"Patient Information\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 298,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"grid grid-cols-4 gap-4\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal text-sm text-gray-600\",\n children: \"Patient Name\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 301,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal\",\n children: record.patientName\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 302,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 300,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal text-sm text-gray-600\",\n children: \"EMBG\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 305,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal\",\n children: record.embg\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 306,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 304,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal text-sm text-gray-600\",\n children: \"Record ID\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 309,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal\",\n children: record.recordId\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 310,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 308,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal text-sm text-gray-600\",\n children: \"Patient ID\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 313,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal\",\n children: record.patientId\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 314,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 312,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 299,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 297,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex gap-2 mb-6 border-b\",\n children: [/*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => setActiveTab('view'),\n style: {\n fontWeight: 'normal'\n },\n className: `px-6 py-3 ${activeTab === 'view' ? 'border-b-2 border-purple-600 text-purple-600' : 'text-purple-600 hover:text-purple-700'}`,\n children: \"View Medical Data\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 321,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"text-gray-600 px-3\",\n style: {\n fontWeight: 'normal'\n },\n children: \"|\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 332,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => setActiveTab('diagnosis'),\n style: {\n fontWeight: 'normal'\n },\n className: `px-6 py-3 ${activeTab === 'diagnosis' ? 'border-b-2 border-purple-600 text-purple-600' : 'text-purple-600 hover:text-purple-700'}`,\n children: \"Record Diagnosis\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 333,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"text-gray-600 px-3\",\n style: {\n fontWeight: 'normal'\n },\n children: \"|\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 344,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => setActiveTab('symptoms'),\n style: {\n fontWeight: 'normal'\n },\n className: `px-6 py-3 ${activeTab === 'symptoms' ? 'border-b-2 border-purple-600 text-purple-600' : 'text-purple-600 hover:text-purple-700'}`,\n children: \"Record Symptoms\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 345,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"text-gray-600 px-3\",\n style: {\n fontWeight: 'normal'\n },\n children: \"|\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 356,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => setActiveTab('allergies'),\n style: {\n fontWeight: 'normal'\n },\n className: `px-6 py-3 ${activeTab === 'allergies' ? 'border-b-2 border-purple-600 text-purple-600' : 'text-purple-600 hover:text-purple-700'}`,\n children: \"Record Allergies\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 357,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"text-gray-600 px-3\",\n style: {\n fontWeight: 'normal'\n },\n children: \"|\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 368,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => setActiveTab('prescription'),\n style: {\n fontWeight: 'normal'\n },\n className: `px-6 py-3 ${activeTab === 'prescription' ? 'border-b-2 border-purple-600 text-purple-600' : 'text-purple-600 hover:text-purple-700'}`,\n children: \"Record Prescription\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 369,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"text-gray-600 px-3\",\n style: {\n fontWeight: 'normal'\n },\n children: \"|\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 380,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => setActiveTab('lab-tests'),\n style: {\n fontWeight: 'normal'\n },\n className: `px-6 py-3 ${activeTab === 'lab-tests' ? 'border-b-2 border-purple-600 text-purple-600' : 'text-purple-600 hover:text-purple-700'}`,\n children: \"Request Lab Test\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 381,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"text-gray-600 px-3\",\n style: {\n fontWeight: 'normal'\n },\n children: \"|\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 392,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => setActiveTab('procedures'),\n style: {\n fontWeight: 'normal'\n },\n className: `px-6 py-3 ${activeTab === 'procedures' ? 'border-b-2 border-purple-600 text-purple-600' : 'text-purple-600 hover:text-purple-700'}`,\n children: \"Request Procedure\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 393,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 320,\n columnNumber: 7\n }, this), activeTab === 'view' && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"space-y-6\",\n children: [record.diagnoses && record.diagnoses.length > 0 && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-white rounded-lg shadow p-6\",\n children: [/*#__PURE__*/_jsxDEV(\"h3\", {\n className: \"font-normal\",\n style: {\n fontSize: '20px',\n marginBottom: '16px'\n },\n children: \"Diagnoses\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 412,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"space-y-3\",\n children: record.diagnoses.map(diagnosis => /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"border-l-4 border-purple-500 pl-4 py-2\",\n children: [/*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal\",\n style: {\n fontSize: '18px'\n },\n children: diagnosis.name\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 416,\n columnNumber: 21\n }, this), diagnosis.description && /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal text-gray-600 text-sm\",\n children: diagnosis.description\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 418,\n columnNumber: 23\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal text-xs text-gray-500\",\n children: [\"By: \", diagnosis.doctorName]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 420,\n columnNumber: 21\n }, this)]\n }, diagnosis.diagnosisId, true, {\n fileName: _jsxFileName,\n lineNumber: 415,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 413,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 411,\n columnNumber: 13\n }, this), record.symptoms && record.symptoms.length > 0 && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-white rounded-lg shadow p-6\",\n children: [/*#__PURE__*/_jsxDEV(\"h3\", {\n className: \"font-normal\",\n style: {\n fontSize: '20px',\n marginBottom: '16px'\n },\n children: \"Symptoms\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 430,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex flex-wrap gap-2\",\n children: record.symptoms.map(symptom => /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"bg-yellow-100 text-yellow-800 px-3 py-1 rounded-full text-sm font-normal\",\n children: symptom.symptomName\n }, symptom.symptomId, false, {\n fileName: _jsxFileName,\n lineNumber: 433,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 431,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 429,\n columnNumber: 13\n }, this), record.allergies && record.allergies.length > 0 && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-white rounded-lg shadow p-6\",\n children: [/*#__PURE__*/_jsxDEV(\"h3\", {\n className: \"font-normal\",\n style: {\n fontSize: '20px',\n marginBottom: '16px'\n },\n children: \"Allergies\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 447,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"space-y-3\",\n children: record.allergies.map(allergy => /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"border-l-4 border-red-500 pl-4 py-2\",\n children: [/*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal\",\n children: allergy.allergyName\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 451,\n columnNumber: 21\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal\",\n style: {\n fontSize: '14px'\n },\n children: /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"font-normal\",\n style: {\n padding: '4px 8px',\n borderRadius: '4px',\n color: 'white',\n fontSize: '12px',\n background: allergy.severity === 'CRITICAL' ? '#dc2626' : allergy.severity === 'HIGH' ? '#ef4444' : allergy.severity === 'MEDIUM' ? '#eab308' : '#22c55e'\n },\n children: [allergy.severity, \" Severity\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 453,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 452,\n columnNumber: 21\n }, this), allergy.reaction && /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal text-gray-600 text-sm\",\n children: [\"Reaction: \", allergy.reaction]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 467,\n columnNumber: 23\n }, this)]\n }, allergy.allergyId, true, {\n fileName: _jsxFileName,\n lineNumber: 450,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 448,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 446,\n columnNumber: 13\n }, this), record.prescriptions && record.prescriptions.length > 0 && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-white rounded-lg shadow p-6\",\n children: [/*#__PURE__*/_jsxDEV(\"h3\", {\n className: \"font-normal\",\n style: {\n fontSize: '20px',\n marginBottom: '16px'\n },\n children: \"Prescriptions\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 478,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"space-y-3\",\n children: record.prescriptions.map(prescription => /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"border-l-4 border-purple-500 pl-4 py-2\",\n children: [/*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal\",\n children: prescription.medicationName\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 482,\n columnNumber: 21\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal text-sm text-gray-600\",\n children: [\"Dosage: \", prescription.dosage]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 483,\n columnNumber: 21\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal text-sm text-gray-600\",\n children: [\"Frequency: \", prescription.frequency]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 484,\n columnNumber: 21\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal text-sm text-gray-600\",\n children: [\"Duration: \", prescription.duration]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 485,\n columnNumber: 21\n }, this)]\n }, prescription.prescriptionId, true, {\n fileName: _jsxFileName,\n lineNumber: 481,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 479,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 477,\n columnNumber: 13\n }, this), record.reports && record.reports.length > 0 && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-white rounded-lg shadow p-6\",\n children: [/*#__PURE__*/_jsxDEV(\"h3\", {\n className: \"font-normal\",\n style: {\n fontSize: '20px',\n marginBottom: '16px'\n },\n children: \"Medical Reports\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 495,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"space-y-3\",\n children: record.reports.map(report => /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"border-l-4 border-green-500 pl-4 py-2\",\n children: [/*#__PURE__*/_jsxDEV(\"p\", {\n style: {\n fontWeight: 'normal'\n },\n children: [\"Report from \", report.doctorName]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 499,\n columnNumber: 21\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal text-gray-600 text-sm\",\n children: report.description\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 500,\n columnNumber: 21\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal text-xs text-gray-500\",\n children: [\"Date: \", report.reportDate]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 501,\n columnNumber: 21\n }, this)]\n }, report.reportId, true, {\n fileName: _jsxFileName,\n lineNumber: 498,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 496,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 494,\n columnNumber: 13\n }, this), labResults && labResults.length > 0 && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-white rounded-lg shadow p-6\",\n children: [/*#__PURE__*/_jsxDEV(\"h3\", {\n className: \"font-normal\",\n style: {\n fontSize: '20px',\n marginBottom: '16px'\n },\n children: \"Lab Test Results\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 511,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"space-y-3\",\n children: labResults.map(result => /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"border-l-4 border-cyan-500 pl-4 py-3 bg-cyan-50 rounded\",\n children: [/*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal\",\n style: {\n fontSize: '18px',\n color: '#0891b2'\n },\n children: result.testName\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 515,\n columnNumber: 21\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal text-sm text-gray-700 mt-2\",\n children: [\"Results: \", result.results]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 516,\n columnNumber: 21\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal text-sm text-gray-600\",\n children: [\"Result Date: \", result.resultDate]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 517,\n columnNumber: 21\n }, this)]\n }, result.resultId, true, {\n fileName: _jsxFileName,\n lineNumber: 514,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 512,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 510,\n columnNumber: 13\n }, this), procedureResults && procedureResults.length > 0 && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-white rounded-lg shadow p-6\",\n children: [/*#__PURE__*/_jsxDEV(\"h3\", {\n className: \"font-normal\",\n style: {\n fontSize: '20px',\n marginBottom: '16px'\n },\n children: \"Procedure Results\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 527,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"space-y-3\",\n children: procedureResults.map(result => {\n var _result$procedure;\n return /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"border-l-4 border-orange-500 pl-4 py-3 bg-orange-50 rounded\",\n children: [/*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal\",\n style: {\n fontSize: '18px',\n color: '#b45309'\n },\n children: ((_result$procedure = result.procedure) === null || _result$procedure === void 0 ? void 0 : _result$procedure.procedureType) || 'Procedure'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 531,\n columnNumber: 21\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal text-sm text-gray-700 mt-2\",\n children: [\"Outcome: \", result.resultDescription]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 532,\n columnNumber: 21\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"font-normal text-sm text-gray-600\",\n children: [\"Result Date: \", result.resultDate]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 533,\n columnNumber: 21\n }, this)]\n }, result.resultId, true, {\n fileName: _jsxFileName,\n lineNumber: 530,\n columnNumber: 19\n }, this);\n })\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 528,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 526,\n columnNumber: 13\n }, this), (!record.diagnoses || record.diagnoses.length === 0) && (!record.symptoms || record.symptoms.length === 0) && (!record.allergies || record.allergies.length === 0) && (!record.reports || record.reports.length === 0) && (!labResults || labResults.length === 0) && (!procedureResults || procedureResults.length === 0) && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-blue-50 rounded-lg p-6 text-center\",\n children: /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"text-gray-600\",\n children: \"No medical data recorded yet\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 547,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 546,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 408,\n columnNumber: 9\n }, this), activeTab === 'diagnosis' && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-white rounded-lg shadow p-6\",\n children: [/*#__PURE__*/_jsxDEV(\"h3\", {\n style: {\n fontSize: '20px',\n fontWeight: 'normal',\n marginBottom: '16px'\n },\n children: \"Record New Diagnosis\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 556,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"form\", {\n onSubmit: handleAddDiagnosis,\n className: \"space-y-4 max-w-2xl\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Doctor *\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 559,\n columnNumber: 15\n }, this), isDoctor ? /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"px-4 py-2 bg-gray-100 rounded-lg text-gray-700\",\n children: [\"Dr. \", user.firstName, \" \", user.lastName]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 561,\n columnNumber: 17\n }, this) : /*#__PURE__*/_jsxDEV(\"select\", {\n value: selectedDoctorId,\n onChange: e => setSelectedDoctorId(e.target.value),\n className: \"w-full px-4 py-2 border rounded-lg\",\n required: true,\n children: [/*#__PURE__*/_jsxDEV(\"option\", {\n value: \"\",\n children: \"Select doctor\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 571,\n columnNumber: 19\n }, this), doctors.map(doc => /*#__PURE__*/_jsxDEV(\"option\", {\n value: doc.doctorId,\n children: [\"Dr. \", doc.firstName, \" \", doc.lastName]\n }, doc.doctorId, true, {\n fileName: _jsxFileName,\n lineNumber: 573,\n columnNumber: 21\n }, this))]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 565,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 558,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Diagnosis *\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 581,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"select\", {\n value: diagnosisForm.diagnosisId,\n onChange: e => setDiagnosisForm({\n ...diagnosisForm,\n diagnosisId: e.target.value\n }),\n className: \"w-full px-4 py-2 border rounded-lg\",\n required: true,\n children: [/*#__PURE__*/_jsxDEV(\"option\", {\n value: \"\",\n children: diagnoses.length === 0 ? 'Loading diagnoses...' : 'Select diagnosis'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 588,\n columnNumber: 17\n }, this), diagnoses && diagnoses.length > 0 && diagnoses.map(diagnosis => /*#__PURE__*/_jsxDEV(\"option\", {\n value: diagnosis.id,\n children: diagnosis.name\n }, diagnosis.id, false, {\n fileName: _jsxFileName,\n lineNumber: 590,\n columnNumber: 19\n }, this))]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 582,\n columnNumber: 15\n }, this), diagnoses.length === 0 && /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"text-sm text-gray-500 mt-1\",\n children: \"No diagnoses available. Please wait...\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 596,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 580,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n type: \"submit\",\n style: {\n background: '#9333ea',\n color: 'white',\n padding: '6px 14px',\n borderRadius: '6px',\n border: 'none',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: '600'\n },\n onMouseEnter: e => e.currentTarget.style.background = '#7e22ce',\n onMouseLeave: e => e.currentTarget.style.background = '#9333ea',\n children: \"Record Diagnosis\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 599,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 557,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 555,\n columnNumber: 9\n }, this), activeTab === 'symptoms' && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-white rounded-lg shadow p-6\",\n children: [/*#__PURE__*/_jsxDEV(\"h3\", {\n style: {\n fontSize: '20px',\n fontWeight: 'normal',\n marginBottom: '16px'\n },\n children: \"Record Patient Symptoms\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 612,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"form\", {\n onSubmit: handleAddSymptom,\n className: \"space-y-4 max-w-2xl\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Doctor *\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 615,\n columnNumber: 15\n }, this), isDoctor ? /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"px-4 py-2 bg-gray-100 rounded-lg text-gray-700\",\n children: [\"Dr. \", user.firstName, \" \", user.lastName]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 617,\n columnNumber: 17\n }, this) : /*#__PURE__*/_jsxDEV(\"select\", {\n value: selectedDoctorId,\n onChange: e => setSelectedDoctorId(e.target.value),\n className: \"w-full px-4 py-2 border rounded-lg\",\n required: true,\n children: [/*#__PURE__*/_jsxDEV(\"option\", {\n value: \"\",\n children: \"Select doctor\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 627,\n columnNumber: 19\n }, this), doctors.map(doc => /*#__PURE__*/_jsxDEV(\"option\", {\n value: doc.doctorId,\n children: [\"Dr. \", doc.firstName, \" \", doc.lastName]\n }, doc.doctorId, true, {\n fileName: _jsxFileName,\n lineNumber: 629,\n columnNumber: 21\n }, this))]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 621,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 614,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Symptom *\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 637,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"select\", {\n value: symptomsForm.symptomId,\n onChange: e => setSymptomsForm({\n ...symptomsForm,\n symptomId: e.target.value\n }),\n className: \"w-full px-4 py-2 border rounded-lg\",\n required: true,\n children: [/*#__PURE__*/_jsxDEV(\"option\", {\n value: \"\",\n children: \"Select symptom\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 644,\n columnNumber: 17\n }, this), symptoms.filter(s => {\n var _record$symptoms;\n return !((_record$symptoms = record.symptoms) !== null && _record$symptoms !== void 0 && _record$symptoms.some(rs => rs.symptomId === s.id));\n }).map(symptom => /*#__PURE__*/_jsxDEV(\"option\", {\n value: symptom.id,\n children: symptom.name\n }, symptom.id, false, {\n fileName: _jsxFileName,\n lineNumber: 646,\n columnNumber: 19\n }, this))]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 638,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 636,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n type: \"submit\",\n style: {\n background: '#9333ea',\n color: 'white',\n padding: '6px 14px',\n borderRadius: '6px',\n border: 'none',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: '600'\n },\n onMouseEnter: e => e.currentTarget.style.background = '#7e22ce',\n onMouseLeave: e => e.currentTarget.style.background = '#9333ea',\n children: \"Record Symptom\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 652,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 613,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 611,\n columnNumber: 9\n }, this), activeTab === 'allergies' && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-white rounded-lg shadow p-6\",\n children: [/*#__PURE__*/_jsxDEV(\"h3\", {\n style: {\n fontSize: '20px',\n fontWeight: 'normal',\n marginBottom: '16px'\n },\n children: \"Record Patient Allergies\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 665,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"form\", {\n onSubmit: handleAddAllergy,\n className: \"space-y-4 max-w-2xl\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Doctor *\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 668,\n columnNumber: 15\n }, this), isDoctor ? /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"px-4 py-2 bg-gray-100 rounded-lg text-gray-700\",\n children: [\"Dr. \", user.firstName, \" \", user.lastName]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 670,\n columnNumber: 17\n }, this) : /*#__PURE__*/_jsxDEV(\"select\", {\n value: selectedDoctorId,\n onChange: e => setSelectedDoctorId(e.target.value),\n className: \"w-full px-4 py-2 border rounded-lg\",\n required: true,\n children: [/*#__PURE__*/_jsxDEV(\"option\", {\n value: \"\",\n children: \"Select doctor\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 680,\n columnNumber: 19\n }, this), doctors.map(doc => /*#__PURE__*/_jsxDEV(\"option\", {\n value: doc.doctorId,\n children: [\"Dr. \", doc.firstName, \" \", doc.lastName]\n }, doc.doctorId, true, {\n fileName: _jsxFileName,\n lineNumber: 682,\n columnNumber: 21\n }, this))]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 674,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 667,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Allergy *\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 690,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"select\", {\n value: allergyForm.allergyId,\n onChange: e => setAllergyForm({\n ...allergyForm,\n allergyId: e.target.value\n }),\n className: \"w-full px-4 py-2 border rounded-lg\",\n required: true,\n children: [/*#__PURE__*/_jsxDEV(\"option\", {\n value: \"\",\n children: \"Select allergy\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 697,\n columnNumber: 17\n }, this), allergies.filter(a => {\n var _record$allergies;\n return !((_record$allergies = record.allergies) !== null && _record$allergies !== void 0 && _record$allergies.some(ra => ra.allergyId === a.id));\n }).map(allergy => /*#__PURE__*/_jsxDEV(\"option\", {\n value: allergy.id,\n children: allergy.name\n }, allergy.id, false, {\n fileName: _jsxFileName,\n lineNumber: 699,\n columnNumber: 19\n }, this))]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 691,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 689,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Severity *\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 706,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"select\", {\n value: allergyForm.severity,\n onChange: e => setAllergyForm({\n ...allergyForm,\n severity: e.target.value\n }),\n className: \"w-full px-4 py-2 border rounded-lg\",\n children: [/*#__PURE__*/_jsxDEV(\"option\", {\n value: \"LOW\",\n children: \"Low\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 712,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"option\", {\n value: \"MEDIUM\",\n children: \"Medium\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 713,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"option\", {\n value: \"HIGH\",\n children: \"High\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 714,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"option\", {\n value: \"CRITICAL\",\n children: \"Critical\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 715,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 707,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 705,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Reaction\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 719,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"textarea\", {\n value: allergyForm.reaction,\n onChange: e => setAllergyForm({\n ...allergyForm,\n reaction: e.target.value\n }),\n placeholder: \"Describe the allergic reaction\",\n className: \"w-full px-4 py-2 border rounded-lg\",\n rows: \"3\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 720,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 718,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n type: \"submit\",\n style: {\n background: '#9333ea',\n color: 'white',\n padding: '6px 14px',\n borderRadius: '6px',\n border: 'none',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: '600'\n },\n onMouseEnter: e => e.currentTarget.style.background = '#7e22ce',\n onMouseLeave: e => e.currentTarget.style.background = '#9333ea',\n children: \"Record Allergy\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 728,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 666,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 664,\n columnNumber: 9\n }, this), activeTab === 'prescription' && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-white rounded-lg shadow p-6\",\n children: [/*#__PURE__*/_jsxDEV(\"h3\", {\n style: {\n fontSize: '20px',\n fontWeight: 'normal',\n marginBottom: '16px'\n },\n children: \"Record Prescription\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 741,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"form\", {\n onSubmit: handleAddPrescription,\n className: \"space-y-4 max-w-2xl\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Doctor *\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 744,\n columnNumber: 15\n }, this), isDoctor ? /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"px-4 py-2 bg-gray-100 rounded-lg text-gray-700\",\n children: [\"Dr. \", user.firstName, \" \", user.lastName]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 746,\n columnNumber: 17\n }, this) : /*#__PURE__*/_jsxDEV(\"select\", {\n value: selectedDoctorId,\n onChange: e => setSelectedDoctorId(e.target.value),\n className: \"w-full px-4 py-2 border rounded-lg\",\n required: true,\n children: [/*#__PURE__*/_jsxDEV(\"option\", {\n value: \"\",\n children: \"Select doctor\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 756,\n columnNumber: 19\n }, this), doctors.map(doc => /*#__PURE__*/_jsxDEV(\"option\", {\n value: doc.doctorId,\n children: [\"Dr. \", doc.firstName, \" \", doc.lastName]\n }, doc.doctorId, true, {\n fileName: _jsxFileName,\n lineNumber: 758,\n columnNumber: 21\n }, this))]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 750,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 743,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Medication *\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 766,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"select\", {\n value: prescriptionForm.prescriptionId,\n onChange: e => setPrescriptionForm({\n ...prescriptionForm,\n prescriptionId: e.target.value\n }),\n className: \"w-full px-4 py-2 border rounded-lg\",\n required: true,\n children: [/*#__PURE__*/_jsxDEV(\"option\", {\n value: \"\",\n children: \"Select medication\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 775,\n columnNumber: 17\n }, this), prescriptions.map(prescription => /*#__PURE__*/_jsxDEV(\"option\", {\n value: prescription.id,\n children: prescription.name\n }, prescription.id, false, {\n fileName: _jsxFileName,\n lineNumber: 777,\n columnNumber: 19\n }, this))]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 767,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 765,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"grid grid-cols-2 gap-4\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Dosage *\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 785,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n type: \"text\",\n value: prescriptionForm.dosage,\n onChange: e => setPrescriptionForm({\n ...prescriptionForm,\n dosage: e.target.value\n }),\n placeholder: \"e.g., 500mg\",\n className: \"w-full px-4 py-2 border rounded-lg\",\n required: true\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 786,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 784,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Frequency *\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 798,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n type: \"text\",\n value: prescriptionForm.frequency,\n onChange: e => setPrescriptionForm({\n ...prescriptionForm,\n frequency: e.target.value\n }),\n placeholder: \"e.g., Twice daily\",\n className: \"w-full px-4 py-2 border rounded-lg\",\n required: true\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 799,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 797,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Duration *\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 811,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n type: \"text\",\n value: prescriptionForm.duration,\n onChange: e => setPrescriptionForm({\n ...prescriptionForm,\n duration: e.target.value\n }),\n placeholder: \"e.g., 7 days\",\n className: \"w-full px-4 py-2 border rounded-lg\",\n required: true\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 812,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 810,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 783,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Reason for Prescription\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 825,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"textarea\", {\n value: prescriptionForm.reason,\n onChange: e => setPrescriptionForm({\n ...prescriptionForm,\n reason: e.target.value\n }),\n placeholder: \"Describe why this medication is prescribed\",\n className: \"w-full px-4 py-2 border rounded-lg\",\n rows: \"3\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 826,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 824,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n type: \"submit\",\n style: {\n background: '#9333ea',\n color: 'white',\n padding: '6px 14px',\n borderRadius: '6px',\n border: 'none',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: '600'\n },\n onMouseEnter: e => e.currentTarget.style.background = '#7e22ce',\n onMouseLeave: e => e.currentTarget.style.background = '#9333ea',\n children: \"Record Prescription\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 834,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 742,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 740,\n columnNumber: 9\n }, this), activeTab === 'procedures' && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-white rounded-lg shadow p-6\",\n children: [/*#__PURE__*/_jsxDEV(\"h3\", {\n style: {\n fontSize: '20px',\n fontWeight: 'normal',\n marginBottom: '16px'\n },\n children: \"Request Procedure\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 847,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"form\", {\n onSubmit: async e => {\n e.preventDefault();\n setError(null);\n if (!procedureForm.procedureId) {\n setError('Please select a procedure');\n return;\n }\n try {\n setLoading(true);\n const doctorId = user.doctorId || 1;\n const request = {\n patientId: record.patientId,\n doctorId: parseInt(doctorId),\n procedureId: parseInt(procedureForm.procedureId),\n procedureDate: procedureForm.procedureDate,\n notes: procedureForm.notes,\n diagnosisId: procedureForm.diagnosisId ? parseInt(procedureForm.diagnosisId) : null\n };\n await procedureService.requestProcedure(request);\n setSuccess('Procedure requested successfully');\n setProcedureForm({\n procedureId: '',\n procedureDate: new Date().toISOString().split('T')[0],\n notes: '',\n diagnosisId: ''\n });\n setTimeout(() => setSuccess(null), 3000);\n } catch (err) {\n var _err$response6, _err$response6$data;\n setError('Failed to request procedure: ' + (((_err$response6 = err.response) === null || _err$response6 === void 0 ? void 0 : (_err$response6$data = _err$response6.data) === null || _err$response6$data === void 0 ? void 0 : _err$response6$data.error) || err.message));\n } finally {\n setLoading(false);\n }\n },\n className: \"space-y-4\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"grid grid-cols-2 gap-4\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Procedure *\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 889,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"select\", {\n value: procedureForm.procedureId,\n onChange: e => setProcedureForm({\n ...procedureForm,\n procedureId: e.target.value\n }),\n className: \"w-full px-4 py-2 border rounded-lg\",\n required: true,\n children: [/*#__PURE__*/_jsxDEV(\"option\", {\n value: \"\",\n children: \"Select a procedure\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 896,\n columnNumber: 19\n }, this), procedures.map(proc => /*#__PURE__*/_jsxDEV(\"option\", {\n value: proc.procedureId,\n children: [proc.procedureType, \" ($\", proc.cost, \")\"]\n }, proc.procedureId, true, {\n fileName: _jsxFileName,\n lineNumber: 898,\n columnNumber: 21\n }, this))]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 890,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 888,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Procedure Date *\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 905,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n type: \"date\",\n value: procedureForm.procedureDate,\n onChange: e => setProcedureForm({\n ...procedureForm,\n procedureDate: e.target.value\n }),\n className: \"w-full px-4 py-2 border rounded-lg\",\n required: true\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 906,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 904,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 887,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Related Diagnosis (Optional)\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 916,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"select\", {\n value: procedureForm.diagnosisId,\n onChange: e => setProcedureForm({\n ...procedureForm,\n diagnosisId: e.target.value\n }),\n className: \"w-full px-4 py-2 border rounded-lg\",\n children: [/*#__PURE__*/_jsxDEV(\"option\", {\n value: \"\",\n children: \"Select diagnosis (optional)\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 922,\n columnNumber: 17\n }, this), diagnoses.map(diagnosis => /*#__PURE__*/_jsxDEV(\"option\", {\n value: diagnosis.id,\n children: diagnosis.name\n }, diagnosis.id, false, {\n fileName: _jsxFileName,\n lineNumber: 924,\n columnNumber: 19\n }, this))]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 917,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 915,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Notes\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 931,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"textarea\", {\n value: procedureForm.notes,\n onChange: e => setProcedureForm({\n ...procedureForm,\n notes: e.target.value\n }),\n placeholder: \"Pre-procedure instructions or special notes\",\n className: \"w-full px-4 py-2 border rounded-lg\",\n rows: \"3\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 932,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 930,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n type: \"submit\",\n disabled: loading,\n style: {\n background: loading ? '#9ca3af' : '#9333ea',\n color: 'white',\n padding: '6px 14px',\n borderRadius: '6px',\n border: 'none',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: '600'\n },\n onMouseEnter: e => !loading && (e.currentTarget.style.background = '#7e22ce'),\n onMouseLeave: e => !loading && (e.currentTarget.style.background = '#9333ea'),\n children: loading ? 'Requesting...' : 'Request Procedure'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 940,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 848,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 846,\n columnNumber: 9\n }, this), activeTab === 'lab-tests' && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-white rounded-lg shadow p-6\",\n children: [/*#__PURE__*/_jsxDEV(\"h3\", {\n style: {\n fontSize: '20px',\n fontWeight: 'normal',\n marginBottom: '16px'\n },\n children: \"Request Lab Test\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 954,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"form\", {\n onSubmit: async e => {\n e.preventDefault();\n setError(null);\n if (!labTestForm.testId) {\n setError('Please select a test');\n return;\n }\n try {\n setLoading(true);\n const doctorId = user.doctorId || 1;\n const request = {\n patientId: record.patientId,\n medicalRecordId: record.recordId,\n doctorId: parseInt(doctorId),\n testId: parseInt(labTestForm.testId),\n testDate: labTestForm.testDate,\n notes: labTestForm.notes\n };\n await labService.requestLabTest(request);\n setSuccess('Lab test requested successfully');\n setLabTestForm({\n testId: '',\n testDate: new Date().toISOString().split('T')[0],\n notes: ''\n });\n setTimeout(() => setSuccess(null), 3000);\n } catch (err) {\n var _err$response7, _err$response7$data;\n setError('Failed to request lab test: ' + (((_err$response7 = err.response) === null || _err$response7 === void 0 ? void 0 : (_err$response7$data = _err$response7.data) === null || _err$response7$data === void 0 ? void 0 : _err$response7$data.error) || err.message));\n } finally {\n setLoading(false);\n }\n },\n className: \"space-y-4\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"grid grid-cols-2 gap-4\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Test\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 995,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"select\", {\n value: labTestForm.testId,\n onChange: e => setLabTestForm({\n ...labTestForm,\n testId: e.target.value\n }),\n className: \"w-full px-4 py-2 border rounded-lg\",\n required: true,\n children: [/*#__PURE__*/_jsxDEV(\"option\", {\n value: \"\",\n children: \"Select a test\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 1002,\n columnNumber: 19\n }, this), labTests.map(test => /*#__PURE__*/_jsxDEV(\"option\", {\n value: test.testId,\n children: [test.testName, \" ($\", test.cost, \")\"]\n }, test.testId, true, {\n fileName: _jsxFileName,\n lineNumber: 1004,\n columnNumber: 21\n }, this))]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 996,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 994,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Test Date\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 1011,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n type: \"date\",\n value: labTestForm.testDate,\n onChange: e => setLabTestForm({\n ...labTestForm,\n testDate: e.target.value\n }),\n className: \"w-full px-4 py-2 border rounded-lg\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 1012,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 1010,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 993,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n fontWeight: 'normal'\n },\n className: \"block text-sm mb-2\",\n children: \"Notes\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 1021,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"textarea\", {\n value: labTestForm.notes,\n onChange: e => setLabTestForm({\n ...labTestForm,\n notes: e.target.value\n }),\n placeholder: \"Additional notes for the lab technician\",\n className: \"w-full px-4 py-2 border rounded-lg\",\n rows: \"3\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 1022,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 1020,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n type: \"submit\",\n disabled: loading,\n style: {\n background: loading ? '#9ca3af' : '#9333ea',\n color: 'white',\n padding: '6px 14px',\n borderRadius: '6px',\n border: 'none',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: '600'\n },\n onMouseEnter: e => !loading && (e.currentTarget.style.background = '#7e22ce'),\n onMouseLeave: e => !loading && (e.currentTarget.style.background = '#9333ea'),\n children: loading ? 'Requesting...' : 'Request Test'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 1030,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 955,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 953,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 282,\n columnNumber: 5\n }, this);\n}\n_s(MedicalRecordDetail, \"Jmsg0lGN8qywKXO6ctw8J6N/Ynk=\", false, function () {\n return [useParams, useNavigate];\n});\n_c = MedicalRecordDetail;\nexport default MedicalRecordDetail;\nvar _c;\n$RefreshReg$(_c, \"MedicalRecordDetail\");","map":{"version":3,"names":["React","useState","useEffect","useCallback","useParams","useNavigate","medicalRecordService","doctorService","labService","procedureService","ErrorAlert","SuccessAlert","Loading","apiClient","jsxDEV","_jsxDEV","MedicalRecordDetail","_s","id","navigate","user","JSON","parse","localStorage","getItem","isDoctor","role","record","setRecord","loading","setLoading","error","setError","success","setSuccess","activeTab","setActiveTab","doctors","setDoctors","selectedDoctorId","setSelectedDoctorId","doctorId","diagnosisForm","setDiagnosisForm","diagnosisId","symptomsForm","setSymptomsForm","symptomId","allergyForm","setAllergyForm","allergyId","severity","reaction","prescriptionForm","setPrescriptionForm","prescriptionId","dosage","frequency","duration","reason","diagnoses","setDiagnoses","symptoms","setSymptoms","allergies","setAllergies","prescriptions","setPrescriptions","labTests","setLabTests","procedures","setProcedures","labTestForm","setLabTestForm","testId","testDate","Date","toISOString","split","notes","procedureForm","setProcedureForm","procedureId","procedureDate","labResults","setLabResults","procedureResults","setProcedureResults","fetchRecord","response","getMedicalRecordByPatientId","data","resultsResponse","getLabResultsForMedicalRecord","recordId","err","console","procedureResultsResponse","getProcedureResultsForMedicalRecord","fetchDoctors","getAllDoctors","length","fetchDropdownOptions","log","diagnosesRes","get","symptomsRes","allergiesRes","prescriptionsRes","testsRes","getAllLabTests","proceduresRes","getAllProcedures","_err$response","_err$response$data","message","handleAddDiagnosis","e","preventDefault","selectedDiagnosis","find","d","parseInt","post","patientId","name","description","setTimeout","_err$response2","_err$response2$data","handleAddSymptom","_err$response3","_err$response3$data","handleAddAllergy","_err$response4","_err$response4$data","handleAddPrescription","trim","selectedPrescription","p","medicalRecordId","medicationName","_err$response5","_err$response5$data","fileName","_jsxFileName","lineNumber","columnNumber","children","onClose","className","style","fontSize","fontWeight","onClick","marginBottom","patientName","embg","map","diagnosis","doctorName","symptom","symptomName","allergy","allergyName","padding","borderRadius","color","background","prescription","reports","report","reportDate","reportId","result","testName","results","resultDate","resultId","_result$procedure","procedure","procedureType","resultDescription","onSubmit","firstName","lastName","value","onChange","target","required","doc","type","border","cursor","onMouseEnter","currentTarget","onMouseLeave","filter","s","_record$symptoms","some","rs","a","_record$allergies","ra","placeholder","rows","request","requestProcedure","_err$response6","_err$response6$data","proc","cost","disabled","requestLabTest","_err$response7","_err$response7$data","test","_c","$RefreshReg$"],"sources":["C:/Users/User/Downloads/medora5/frontend/src/pages/medical-records/MedicalRecordDetail.js"],"sourcesContent":["import React, { useState, useEffect, useCallback } from 'react';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport { medicalRecordService } from '../../services/medicalRecordService';\nimport { doctorService } from '../../services/doctorService';\nimport { labService } from '../../services/labService';\nimport { procedureService } from '../../services/procedureService';\nimport ErrorAlert from '../../components/ErrorAlert';\nimport SuccessAlert from '../../components/SuccessAlert';\nimport Loading from '../../components/Loading';\nimport apiClient from '../../services/api';\n\nfunction MedicalRecordDetail() {\n const { id } = useParams();\n const navigate = useNavigate();\n const user = JSON.parse(localStorage.getItem('user') || '{}');\n const isDoctor = user.role === 'DOCTOR';\n\n const [record, setRecord] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n const [success, setSuccess] = useState(null);\n const [activeTab, setActiveTab] = useState('view');\n const [doctors, setDoctors] = useState([]);\n const [selectedDoctorId, setSelectedDoctorId] = useState(isDoctor ? user.doctorId : '');\n\n // Diagnosis form\n const [diagnosisForm, setDiagnosisForm] = useState({\n diagnosisId: '',\n doctorId: '',\n });\n\n // Symptoms form\n const [symptomsForm, setSymptomsForm] = useState({\n symptomId: '',\n });\n\n // Allergies form\n const [allergyForm, setAllergyForm] = useState({\n allergyId: '',\n severity: 'MEDIUM',\n reaction: '',\n });\n\n // Prescription form\n const [prescriptionForm, setPrescriptionForm] = useState({\n prescriptionId: '',\n dosage: '',\n frequency: '',\n duration: '',\n reason: '',\n });\n\n // Dropdown options\n const [diagnoses, setDiagnoses] = useState([]);\n const [symptoms, setSymptoms] = useState([]);\n const [allergies, setAllergies] = useState([]);\n const [prescriptions, setPrescriptions] = useState([]);\n const [labTests, setLabTests] = useState([]);\n const [procedures, setProcedures] = useState([]);\n\n // Lab test form\n const [labTestForm, setLabTestForm] = useState({\n testId: '',\n testDate: new Date().toISOString().split('T')[0],\n notes: '',\n });\n\n // Procedure form\n const [procedureForm, setProcedureForm] = useState({\n procedureId: '',\n procedureDate: new Date().toISOString().split('T')[0],\n notes: '',\n diagnosisId: '',\n });\n\n const [labResults, setLabResults] = useState([]);\n const [procedureResults, setProcedureResults] = useState([]);\n\n const fetchRecord = useCallback(async () => {\n try {\n setLoading(true);\n const response = await medicalRecordService.getMedicalRecordByPatientId(id);\n setRecord(response.data);\n\n // Fetch lab results\n try {\n const resultsResponse = await labService.getLabResultsForMedicalRecord(response.data.recordId);\n setLabResults(resultsResponse.data || []);\n } catch (err) {\n console.error('Failed to fetch lab results:', err);\n setLabResults([]);\n }\n\n // Fetch procedure results\n try {\n const procedureResultsResponse = await procedureService.getProcedureResultsForMedicalRecord(response.data.recordId);\n setProcedureResults(procedureResultsResponse.data || []);\n } catch (err) {\n console.error('Failed to fetch procedure results:', err);\n setProcedureResults([]);\n }\n } catch (err) {\n setError('Failed to fetch medical record');\n console.error(err);\n } finally {\n setLoading(false);\n }\n }, [id]);\n\n useEffect(() => {\n const fetchDoctors = async () => {\n try {\n if (!isDoctor) {\n const response = await doctorService.getAllDoctors();\n setDoctors(response.data);\n if (response.data.length > 0 && !selectedDoctorId) {\n setSelectedDoctorId(response.data[0].doctorId);\n }\n }\n } catch (err) {\n console.error('Failed to fetch doctors', err);\n }\n };\n\n const fetchDropdownOptions = async () => {\n try {\n console.log('Fetching dropdown options...');\n const diagnosesRes = await apiClient.get('/medical-records/dropdown/diagnoses');\n console.log('Diagnoses:', diagnosesRes.data);\n\n const symptomsRes = await apiClient.get('/medical-records/dropdown/symptoms');\n console.log('Symptoms:', symptomsRes.data);\n\n const allergiesRes = await apiClient.get('/medical-records/dropdown/allergies');\n console.log('Allergies:', allergiesRes.data);\n\n const prescriptionsRes = await apiClient.get('/medical-records/dropdown/prescriptions');\n console.log('Prescriptions:', prescriptionsRes.data);\n\n const testsRes = await labService.getAllLabTests();\n console.log('Lab Tests:', testsRes.data);\n\n const proceduresRes = await procedureService.getAllProcedures();\n console.log('Procedures:', proceduresRes.data);\n\n setDiagnoses(diagnosesRes.data || []);\n setSymptoms(symptomsRes.data || []);\n setAllergies(allergiesRes.data || []);\n setPrescriptions(prescriptionsRes.data || []);\n setLabTests(testsRes.data || []);\n setProcedures(proceduresRes.data || []);\n console.log('Dropdown options set successfully');\n } catch (err) {\n console.error('Error fetching dropdown options:', err);\n setError('Failed to load dropdown options: ' + (err.response?.data?.error || err.message));\n }\n };\n\n fetchRecord();\n fetchDoctors();\n fetchDropdownOptions();\n }, [id, isDoctor, fetchRecord, selectedDoctorId]);\n\n const handleAddDiagnosis = async (e) => {\n e.preventDefault();\n try {\n if (!diagnosisForm.diagnosisId) {\n setError('Please select a diagnosis');\n return;\n }\n if (!selectedDoctorId) {\n setError('Please select a doctor');\n return;\n }\n const selectedDiagnosis = diagnoses.find(d => d.id === parseInt(diagnosisForm.diagnosisId));\n await apiClient.post('/diagnoses', {\n patientId: parseInt(record.patientId),\n doctorId: parseInt(selectedDoctorId),\n name: selectedDiagnosis.name,\n description: '',\n });\n setSuccess('Diagnosis recorded successfully');\n setDiagnosisForm({ diagnosisId: '', doctorId: '' });\n setTimeout(() => fetchRecord(), 1000);\n } catch (err) {\n setError(err.response?.data?.error || 'Failed to record diagnosis');\n }\n };\n\n const handleAddSymptom = async (e) => {\n e.preventDefault();\n try {\n if (!symptomsForm.symptomId) {\n setError('Please select a symptom');\n return;\n }\n await apiClient.post(`/medical-records/${record.recordId}/symptoms`, {\n symptomId: parseInt(symptomsForm.symptomId),\n severity: 'MEDIUM',\n });\n setSuccess('Symptom recorded successfully');\n setSymptomsForm({ symptomId: '' });\n setTimeout(() => fetchRecord(), 1000);\n } catch (err) {\n setError(err.response?.data?.error || 'Failed to record symptom');\n }\n };\n\n const handleAddAllergy = async (e) => {\n e.preventDefault();\n try {\n if (!allergyForm.allergyId) {\n setError('Please select an allergy');\n return;\n }\n await apiClient.post(`/medical-records/${record.recordId}/allergies`, {\n allergyId: parseInt(allergyForm.allergyId),\n severity: allergyForm.severity,\n reaction: allergyForm.reaction,\n });\n setSuccess('Allergy recorded successfully');\n setAllergyForm({ allergyId: '', severity: 'MEDIUM', reaction: '' });\n setTimeout(() => fetchRecord(), 1000);\n } catch (err) {\n setError(err.response?.data?.error || 'Failed to record allergy');\n }\n };\n\n const handleAddPrescription = async (e) => {\n e.preventDefault();\n try {\n if (!prescriptionForm.prescriptionId) {\n setError('Please select a prescription medication');\n return;\n }\n if (!prescriptionForm.dosage.trim()) {\n setError('Dosage is required');\n return;\n }\n if (!prescriptionForm.frequency.trim()) {\n setError('Frequency is required');\n return;\n }\n if (!prescriptionForm.duration.trim()) {\n setError('Duration is required');\n return;\n }\n const selectedPrescription = prescriptions.find(p => p.id === parseInt(prescriptionForm.prescriptionId));\n await apiClient.post('/prescriptions', {\n medicalRecordId: record.recordId,\n medicationName: selectedPrescription.name,\n dosage: prescriptionForm.dosage,\n frequency: prescriptionForm.frequency,\n duration: prescriptionForm.duration,\n notes: prescriptionForm.reason,\n });\n setSuccess('Prescription recorded successfully');\n setPrescriptionForm({\n prescriptionId: '',\n dosage: '',\n frequency: '',\n duration: '',\n reason: '',\n });\n setTimeout(() => fetchRecord(), 1000);\n } catch (err) {\n setError(err.response?.data?.error || 'Failed to record prescription');\n }\n };\n\n if (loading) return
Patient Name
\n{record.patientName}
\nEMBG
\n{record.embg}
\nRecord ID
\n{record.recordId}
\nPatient ID
\n{record.patientId}
\n{diagnosis.name}
\n {diagnosis.description && (\n{diagnosis.description}
\n )}\nBy: {diagnosis.doctorName}
\n{allergy.allergyName}
\n\n \n {allergy.severity} Severity\n \n
\n {allergy.reaction && (\nReaction: {allergy.reaction}
\n )}\n{prescription.medicationName}
\nDosage: {prescription.dosage}
\nFrequency: {prescription.frequency}
\nDuration: {prescription.duration}
\nReport from {report.doctorName}
\n{report.description}
\nDate: {report.reportDate}
\n{result.testName}
\nResults: {result.results}
\nResult Date: {result.resultDate}
\n{result.procedure?.procedureType || 'Procedure'}
\nOutcome: {result.resultDescription}
\nResult Date: {result.resultDate}
\nNo medical data recorded yet
\n