Index: frontend/src/services/billingService.js
===================================================================
--- frontend/src/services/billingService.js	(revision f18b11be234397c492a2b9b7384cd8e3ce7a31dd)
+++ frontend/src/services/billingService.js	(revision f18b11be234397c492a2b9b7384cd8e3ce7a31dd)
@@ -0,0 +1,36 @@
+import apiClient from './api';
+
+const ENDPOINT = '/billing';
+
+export const billingService = {
+  getAllBillings: () => apiClient.get(ENDPOINT),
+
+  getBillingById: (id) => apiClient.get(`${ENDPOINT}/${id}`),
+
+  getBillingHistoryForPatient: (patientId) => apiClient.get(`${ENDPOINT}/patient/${patientId}`),
+
+  getBillingDetail: (id) => apiClient.get(`${ENDPOINT}/${id}/detail`),
+
+  generateBillingRecord: (billing) => apiClient.post(ENDPOINT, billing),
+
+  updatePaymentStatus: (id, paymentData) => apiClient.patch(`${ENDPOINT}/${id}/payment-status`, paymentData),
+
+  downloadInvoicePDF: async (billId) => {
+    try {
+      const response = await apiClient.get(`${ENDPOINT}/${billId}/invoice-pdf`, {
+        responseType: 'blob'
+      });
+      // Create a blob URL and download
+      const url = window.URL.createObjectURL(new Blob([response.data]));
+      const link = document.createElement('a');
+      link.href = url;
+      link.setAttribute('download', `invoice-${billId}.pdf`);
+      document.body.appendChild(link);
+      link.click();
+      link.parentNode.removeChild(link);
+      window.URL.revokeObjectURL(url);
+    } catch (error) {
+      throw error;
+    }
+  },
+};
Index: frontend/src/services/labService.js
===================================================================
--- frontend/src/services/labService.js	(revision f18b11be234397c492a2b9b7384cd8e3ce7a31dd)
+++ frontend/src/services/labService.js	(revision f18b11be234397c492a2b9b7384cd8e3ce7a31dd)
@@ -0,0 +1,55 @@
+import api from './api';
+
+const labService = {
+  // Get all lab tests
+  getAllLabTests: () => {
+    return api.get('/lab-tests');
+  },
+
+  // Get a specific lab test
+  getLabTestById: (testId) => {
+    return api.get(`/lab-tests/${testId}`);
+  },
+
+  // Create a new lab test definition
+  createLabTest: (testData) => {
+    return api.post('/lab-tests', testData);
+  },
+
+  // Update a lab test
+  updateLabTest: (testId, testData) => {
+    return api.put(`/lab-tests/${testId}`, testData);
+  },
+
+  // Request a lab test for a patient (UC013)
+  requestLabTest: (requestData) => {
+    return api.post('/lab-tests/request', requestData);
+  },
+
+  // Get lab test requests for a patient
+  getLabTestRequestsForPatient: (patientId) => {
+    return api.get(`/lab-tests/requests/patient/${patientId}`);
+  },
+
+  // Get lab test requests by doctor
+  getLabTestRequestsByDoctor: (doctorId) => {
+    return api.get(`/lab-tests/requests/doctor/${doctorId}`);
+  },
+
+  // Submit lab results (UC014)
+  submitLabResult: (resultData) => {
+    return api.post('/lab-tests/results', resultData);
+  },
+
+  // Get lab results for a medical record
+  getLabResultsForMedicalRecord: (medicalRecordId) => {
+    return api.get(`/lab-tests/results/medical-record/${medicalRecordId}`);
+  },
+
+  // Get pending lab tests (for lab technicians)
+  getPendingLabTests: () => {
+    return api.get('/lab-tests/requests/pending');
+  },
+};
+
+export { labService };
Index: frontend/src/services/medicalItemsService.js
===================================================================
--- frontend/src/services/medicalItemsService.js	(revision f18b11be234397c492a2b9b7384cd8e3ce7a31dd)
+++ frontend/src/services/medicalItemsService.js	(revision f18b11be234397c492a2b9b7384cd8e3ce7a31dd)
@@ -0,0 +1,11 @@
+import apiClient from './api';
+
+export const medicalItemsService = {
+  getDiagnosesForPatient: (patientId) => apiClient.get(`/diagnoses/patient/${patientId}`),
+
+  getPrescriptionsForMedicalRecord: (medicalRecordId) => apiClient.get(`/prescriptions/medical-record/${medicalRecordId}`),
+
+  getAllergiesForMedicalRecord: (medicalRecordId) => apiClient.get(`/medical-records/${medicalRecordId}/allergies`),
+
+  getSymptomsForMedicalRecord: (medicalRecordId) => apiClient.get(`/medical-records/${medicalRecordId}/symptoms`),
+};
Index: frontend/src/services/procedureService.js
===================================================================
--- frontend/src/services/procedureService.js	(revision f18b11be234397c492a2b9b7384cd8e3ce7a31dd)
+++ frontend/src/services/procedureService.js	(revision f18b11be234397c492a2b9b7384cd8e3ce7a31dd)
@@ -0,0 +1,55 @@
+import api from './api';
+
+const procedureService = {
+  // Get all available procedures
+  getAllProcedures: () => {
+    return api.get('/performed-procedures/available');
+  },
+
+  // Request a procedure for a patient
+  requestProcedure: (requestData) => {
+    return api.post('/performed-procedures/request', requestData);
+  },
+
+  // Get performed procedures for a patient
+  getPerformedProceduresForPatient: (patientId) => {
+    return api.get(`/performed-procedures/patient/${patientId}`);
+  },
+
+  // Get procedures for a medical record
+  getProceduresForMedicalRecord: (medicalRecordId) => {
+    return api.get(`/performed-procedures/medical-record/${medicalRecordId}`);
+  },
+
+  // Record a procedure (UC016)
+  recordProcedure: (procedureData) => {
+    return api.post('/performed-procedures/record', null, {
+      params: {
+        procedureId: procedureData.procedureId,
+        doctorId: procedureData.doctorId,
+        patientId: procedureData.patientId,
+        diagnosisId: procedureData.diagnosisId,
+        procedureDate: procedureData.procedureDate
+      }
+    });
+  },
+
+  // Submit procedure result (UC017)
+  submitProcedureResult: (resultData) => {
+    return api.post('/performed-procedures/results', resultData);
+  },
+
+  // Get procedure results for a medical record
+  getProcedureResultsForMedicalRecord: (medicalRecordId) => {
+    return api.get(`/performed-procedures/results/medical-record/${medicalRecordId}`);
+  },
+
+  // Record procedure outcome (older endpoint)
+  recordProcedureOutcome: (procedureId, notes) => {
+    return api.patch(`/performed-procedures/${procedureId}/outcome`, null, {
+      params: { notes }
+    });
+  }
+};
+
+export { procedureService };
