75 lines
2.9 KiB
Plaintext
75 lines
2.9 KiB
Plaintext
package com.healthcare.ohctech.service.impl;
|
|
|
|
import com.healthcare.ohctech.dto.CheckupFormDto;
|
|
import com.healthcare.ohctech.entity.CheckupForm;
|
|
import com.healthcare.ohctech.entity.Patient;
|
|
import com.healthcare.ohctech.repository.CheckupFormRepo;
|
|
import com.healthcare.ohctech.repository.PatientRepo;
|
|
import com.healthcare.ohctech.service.CheckupFormService;
|
|
import org.springframework.data.domain.Page;
|
|
import org.springframework.data.domain.Pageable;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
@Service
|
|
public class CheckupFormServiceImpl implements CheckupFormService {
|
|
|
|
private final CheckupFormRepo checkupFormRepo;
|
|
private final PatientRepo patientRepo;
|
|
|
|
public CheckupFormServiceImpl(CheckupFormRepo checkupFormRepo, PatientRepo patientRepo) {
|
|
this.checkupFormRepo = checkupFormRepo;
|
|
this.patientRepo = patientRepo;
|
|
}
|
|
|
|
@Override
|
|
public CheckupForm getCheckupFormById(Long checkupFormId) {
|
|
return checkupFormRepo.findById(checkupFormId)
|
|
.orElseThrow(() -> new RuntimeException("CheckupForm not found for ID: " + checkupFormId));
|
|
}
|
|
|
|
@Override
|
|
public CheckupForm getLatestCheckupForm(Long empId) {
|
|
return checkupFormRepo.findFirstByPatient_IdOrderByCheckupDateDesc(empId);
|
|
}
|
|
|
|
@Override
|
|
public Page<CheckupForm> getAllCheckupForms(Pageable pageable) {
|
|
return checkupFormRepo.findAll(pageable);
|
|
}
|
|
|
|
@Override
|
|
public void addCheckupForm(CheckupFormDto checkupFormDto, Long userId) {
|
|
CheckupForm checkupForm = convertToEntity(new CheckupForm(), checkupFormDto);
|
|
checkupForm.setModifiedBy(userId);
|
|
checkupFormRepo.save(checkupForm);
|
|
}
|
|
|
|
@Override
|
|
public void updateCheckupForm(CheckupFormDto checkupFormDto, Long userId) {
|
|
Long checkupFormId = checkupFormDto.id();
|
|
CheckupForm checkupForm = checkupFormRepo.findById(checkupFormId)
|
|
.orElseThrow(() -> new RuntimeException("CheckupForm not found for ID: " + checkupFormId));
|
|
|
|
checkupForm.setModifiedBy(userId);
|
|
convertToEntity(checkupForm, checkupFormDto);
|
|
checkupFormRepo.save(checkupForm);
|
|
}
|
|
|
|
@Override
|
|
public void deleteCheckupForm(Long checkupFormId) {
|
|
CheckupForm checkupForm = checkupFormRepo.findById(checkupFormId)
|
|
.orElseThrow(() -> new RuntimeException("CheckupForm not found for ID: " + checkupFormId));
|
|
checkupFormRepo.delete(checkupForm);
|
|
}
|
|
|
|
private CheckupForm convertToEntity(CheckupForm checkupForm, CheckupFormDto checkupFormDto) {
|
|
checkupForm.setCheckupDate(checkupFormDto.checkupDate());
|
|
Patient patient = patientRepo.findById(checkupFormDto.patientId())
|
|
.orElseThrow(() -> new RuntimeException("Patient not found for ID: " + checkupFormDto.patientId()));
|
|
checkupForm.setPatient(patient);
|
|
checkupForm.setHealthIndex(checkupFormDto.healthIndex());
|
|
checkupForm.setBmi(checkupFormDto.bmi());
|
|
return checkupForm;
|
|
}
|
|
}
|