- Timestamp:
- 05/23/26 11:58:13 (4 months ago)
- Branches:
- master
- Children:
- 0e894d2
- Parents:
- bc882d2
- Location:
- backend/src/main/java/medora
- Files:
-
- 13 added
- 1 edited
-
controller/AppointmentController.java (added)
-
controller/BillingController.java (added)
-
controller/DiagnosisController.java (added)
-
controller/DoctorController.java (added)
-
controller/LabController.java (added)
-
controller/MedicalRecordController.java (added)
-
controller/MedicalReportController.java (added)
-
controller/PatientController.java (added)
-
controller/PrescriptionController.java (added)
-
controller/ProcedureController.java (added)
-
controller/ReferralController.java (added)
-
repository/MedicalRecordProcedureResultRepository.java (added)
-
repository/ProcedureResultRepository.java (added)
-
service/ProcedureService.java (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
backend/src/main/java/medora/service/ProcedureService.java
rbc882d2 rf626fb6 1 1 package medora.service; 2 2 3 import jakarta.persistence.EntityManager;4 3 import medora.dto.SimpleProcedureDTO; 5 4 import medora.models.domain.*; … … 10 9 import org.springframework.transaction.annotation.Transactional; 11 10 11 import jakarta.persistence.EntityManager; 12 12 import java.time.LocalDate; 13 13 import java.util.List; … … 26 26 private final MedicalRecordRepository medicalRecordRepository; 27 27 private final MedicalRecordProcedureRepository medicalRecordProcedureRepository; 28 28 private final ProcedureResultRepository procedureResultRepository; 29 private final MedicalRecordProcedureResultRepository medicalRecordProcedureResultRepository; 29 30 private final EntityManager entityManager; 30 31 … … 36 37 MedicalRecordRepository medicalRecordRepository, 37 38 MedicalRecordProcedureRepository medicalRecordProcedureRepository, 38 39 ProcedureResultRepository procedureResultRepository, 40 MedicalRecordProcedureResultRepository medicalRecordProcedureResultRepository, 39 41 EntityManager entityManager) { 40 42 … … 46 48 this.medicalRecordRepository = medicalRecordRepository; 47 49 this.medicalRecordProcedureRepository = medicalRecordProcedureRepository; 48 50 this.procedureResultRepository = procedureResultRepository; 51 this.medicalRecordProcedureResultRepository = medicalRecordProcedureResultRepository; 49 52 this.entityManager = entityManager; 50 53 } 51 54 52 // REQUEST PROCEDURE55 // ================= REQUEST PROCEDURE (NEW) ================= 53 56 @Transactional 54 57 public PerformedProcedures requestProcedureForPatient(Long patientId, … … 97 100 } 98 101 99 // UC016102 // ================= UC016 ================= 100 103 @Transactional 101 104 public PerformedProcedures recordProcedure(Long procedureId, … … 142 145 } 143 146 144 // UC017147 // ================= UC017 ================= 145 148 @Transactional 146 149 public PerformedProcedures recordProcedureOutcome(Long performedProcedureId, String notes) { … … 160 163 } 161 164 162 // LINK TO MEDICAL RECORD165 // ================= LINK TO MEDICAL RECORD ================= 163 166 @Transactional 164 167 public MedicalRecordProcedures linkProcedureToMedicalRecord(Long medicalRecordId, … … 189 192 } 190 193 191 194 // ================= READ METHODS ================= 192 195 @Transactional(readOnly = true) 193 196 public List<PerformedProcedures> getProcedureRequestsForPatient(Long patientId) { … … 259 262 } 260 263 261 } 264 // ================= STORE PROCEDURE RESULT (UC017 Enhanced) ================= 265 @Transactional 266 public ProcedureResults storeProcedureResult(Long medicalRecordId, 267 Long procedureId, 268 String resultDescription, 269 LocalDate resultDate) { 270 271 if (medicalRecordId == null || medicalRecordId <= 0) 272 throw new IllegalArgumentException("Medical record ID must be valid"); 273 274 if (procedureId == null || procedureId <= 0) 275 throw new IllegalArgumentException("Procedure ID must be valid"); 276 277 if (resultDate == null) 278 throw new IllegalArgumentException("Result date is required"); 279 280 MedicalRecord record = medicalRecordRepository.findById(medicalRecordId) 281 .orElseThrow(() -> new RuntimeException("Medical record not found")); 282 283 Procedure procedure = procedureRepository.findById(procedureId) 284 .orElseThrow(() -> new RuntimeException("Procedure not found")); 285 286 ProcedureResults result = new ProcedureResults(); 287 result.setProcedure(procedure); 288 result.setResultDescription(resultDescription); 289 result.setResultDate(resultDate); 290 291 ProcedureResults savedResult = procedureResultRepository.save(result); 292 293 // Link to medical record 294 MedicalRecordProcedureResults link = new MedicalRecordProcedureResults(record, savedResult); 295 medicalRecordProcedureResultRepository.save(link); 296 297 logger.info("Stored procedure result {} for medical record {}", savedResult.getResultId(), medicalRecordId); 298 return savedResult; 299 } 300 301 @Transactional(readOnly = true) 302 public List<ProcedureResults> getProcedureResultsForMedicalRecord(Long medicalRecordId) { 303 304 if (medicalRecordId == null || medicalRecordId <= 0) 305 throw new IllegalArgumentException("Medical record ID must be valid"); 306 307 if (!medicalRecordRepository.existsById(medicalRecordId)) 308 throw new RuntimeException("Medical record not found"); 309 310 return procedureResultRepository.findByMedicalRecordId(medicalRecordId); 311 } 312 }
Note:
See TracChangeset
for help on using the changeset viewer.
