/*
* PatientView
*
* Copyright (c) Worth Solutions Limited 2004-2013
*
* This file is part of PatientView.
*
* PatientView is free software: you can redistribute it and/or modify it under the terms of the
* GNU General Public License as published by the Free Software Foundation, either version 3 of the License,
* or (at your option) any later version.
* PatientView is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License along with PatientView in a file
* titled COPYING. If not, see <http://www.gnu.org/licenses/>.
*
* @package PatientView
* @link http://www.patientview.org
* @author PatientView <info@patientview.org>
* @copyright Copyright (c) 2004-2013, Worth Solutions Limited
* @license http://www.gnu.org/licenses/gpl-3.0.html The GNU General Public License V3.0
*/
package org.patientview.service.ibd.impl;
import org.patientview.ibd.model.Allergy;
import org.patientview.ibd.model.CarePlan;
import org.patientview.ibd.model.MyIbdSeverityLevel;
import org.patientview.ibd.model.Procedure;
import org.patientview.ibd.model.enums.Diagnosis;
import org.patientview.ibd.model.enums.Severity;
import org.patientview.ibd.model.symptoms.ColitisSymptoms;
import org.patientview.ibd.model.symptoms.CrohnsSymptoms;
import org.patientview.ibd.model.MyIbd;
import org.patientview.ibd.model.Nutrition;
import org.patientview.ibd.model.medication.Medication;
import org.patientview.ibd.model.medication.MedicationDose;
import org.patientview.ibd.model.medication.MedicationType;
import org.patientview.ibd.model.medication.MyMedication;
import org.patientview.patientview.model.User;
import org.patientview.patientview.model.UserMapping;
import org.patientview.repository.ibd.AllergyDao;
import org.patientview.repository.ibd.CarePlanDao;
import org.patientview.repository.ibd.ColitisSymptomsDao;
import org.patientview.repository.ibd.CrohnsSymptomsDao;
import org.patientview.repository.ibd.MedicationDao;
import org.patientview.repository.ibd.MedicationTypeDao;
import org.patientview.repository.ibd.MyIbdDao;
import org.patientview.repository.ibd.MyIbdSeverityLevelDao;
import org.patientview.repository.ibd.MyMedicationDao;
import org.patientview.repository.ibd.NutritionDao;
import org.patientview.repository.ibd.MedicationDoseDao;
import org.patientview.repository.ibd.ProcedureDao;
import org.patientview.service.TestResultManager;
import org.patientview.service.UserManager;
import org.patientview.service.ibd.IbdManager;
import org.patientview.utils.LegacySpringUtils;
import org.springframework.stereotype.Service;
import javax.inject.Inject;
import java.util.Date;
import java.util.List;
@Service(value = "ibdManager")
public class IbdManagerImpl implements IbdManager {
@Inject
private MyIbdDao myIbdDao;
@Inject
private MyIbdSeverityLevelDao myIbdSeverityLevelDao;
@Inject
private CarePlanDao carePlanDao;
@Inject
private UserManager userManager;
@Inject
private TestResultManager testResultManager;
@Inject
private MedicationDao medicationDao;
@Inject
private MedicationDoseDao medicationDoseDao;
@Inject
private MedicationTypeDao medicationTypeDao;
@Inject
private MyMedicationDao myMedicationDao;
@Inject
private NutritionDao nutritionDao;
@Inject
private CrohnsSymptomsDao crohnsSymptomsDao;
@Inject
private ColitisSymptomsDao colitisSymptomsDao;
@Inject
private ProcedureDao procedureDao;
@Inject
private AllergyDao allergyDao;
@Override
public MyIbd getMyIbd(User user) {
String nhsNo = getNhsNumber(user);
if (nhsNo != null) {
return getMyIbd(nhsNo);
}
return null;
}
@Override
public MyIbd getMyIbd(String nhsno) {
return myIbdDao.get(nhsno);
}
@Override
public void saveMyIbd(MyIbd myIbd) {
myIbdDao.save(myIbd);
}
@Override
public void deleteMyIbd(String nhsno, String unitcode) {
myIbdDao.delete(nhsno, unitcode);
}
@Override
public MyIbdSeverityLevel getMyIbdSeverityLevel(String nhsno, Severity severity) {
return myIbdSeverityLevelDao.get(nhsno, severity);
}
@Override
public void saveMyIbdSeverityLevel(MyIbdSeverityLevel myIbdSeverityLevel) {
myIbdSeverityLevelDao.save(myIbdSeverityLevel);
}
@Override
public void saveMyIbdSeverityLevels(List<MyIbdSeverityLevel> myIbdSeverityLevels) {
myIbdSeverityLevelDao.save(myIbdSeverityLevels);
}
@Override
public CarePlan getCarePlan(User user) {
String nhsNo = getNhsNumber(user);
if (nhsNo != null) {
return getCarePlan(nhsNo);
}
return null;
}
@Override
public CarePlan getCarePlan(String nhsno) {
return carePlanDao.get(nhsno);
}
@Override
public void saveCarePlan(CarePlan carePlan) {
carePlanDao.save(carePlan);
}
@Override
public Medication getMedication(Long id) {
return medicationDao.get(id);
}
@Override
public MedicationDose getMedicationDose(Long id) {
return medicationDoseDao.get(id);
}
@Override
public MyMedication getMyMedication(Long id) {
return myMedicationDao.get(id);
}
@Override
public void saveMyMedication(MyMedication myMedication) {
myMedicationDao.save(myMedication);
}
@Override
public void saveMyMedication(MyMedication myMedication, Long medicationTypeId, Long medicationId,
Long medicationDoseId) {
if (medicationTypeId != null && medicationTypeId > 0) {
MedicationType medicationType = getMedicationType(medicationTypeId);
if (medicationType != null && medicationType.hasValidId()) {
myMedication.setMedicationType(medicationType);
}
}
if (medicationId != null && medicationId > 0) {
Medication medication = getMedication(medicationId);
if (medication != null && medication.hasValidId()) {
myMedication.setMedication(medication);
}
}
if (medicationDoseId != null && medicationDoseId > 0) {
MedicationDose medicationDose = getMedicationDose(medicationDoseId);
if (medicationDose != null && medicationDose.hasValidId()) {
myMedication.setMedicationDose(medicationDose);
}
}
myMedicationDao.save(myMedication);
}
@Override
public List<MyMedication> getAllMedications(User user) {
String nhsNo = getNhsNumber(user);
if (nhsNo != null) {
return getAllMedications(nhsNo);
}
return null;
}
@Override
public List<MyMedication> getAllMedications(String nhsno) {
return myMedicationDao.getAllMedications(nhsno);
}
@Override
public List<MyMedication> getCurrentMedications(User user) {
String nhsNo = getNhsNumber(user);
if (nhsNo != null) {
return getCurrentMedications(nhsNo);
}
return null;
}
@Override
public List<MyMedication> getCurrentMedications(String nhsno) {
return myMedicationDao.getCurrentMedications(nhsno);
}
@Override
public List<MyMedication> getStoppedMedications(User user) {
String nhsNo = getNhsNumber(user);
if (nhsNo != null) {
return getStoppedMedications(nhsNo);
}
return null;
}
@Override
public List<MyMedication> getStoppedMedications(String nhsno) {
return myMedicationDao.getStoppedMedications(nhsno);
}
@Override
public MedicationType getMedicationType(Long id) {
return medicationTypeDao.get(id);
}
@Override
public List<MedicationType> getMedicationTypes() {
return medicationTypeDao.getAll();
}
@Override
public List<Nutrition> getAllNutritions(User user) {
String nhsNo = getNhsNumber(user);
if (nhsNo != null) {
return getAllNutritions(nhsNo);
}
return null;
}
public List<Nutrition> getAllNutritions(String nhsno) {
return nutritionDao.getAllNutritions(nhsno);
}
@Override
public void saveNutrition(Nutrition nutrition) {
nutritionDao.save(nutrition);
}
@Override
public void saveCrohns(CrohnsSymptoms crohnsSymptoms) {
crohnsSymptomsDao.save(crohnsSymptoms);
}
@Override
public List<CrohnsSymptoms> getAllCrohns(User user) {
return getAllCrohns(user, null, null);
}
@Override
public List<CrohnsSymptoms> getAllCrohns(User user, Date fromDate, Date toDate) {
String nhsNo = getNhsNumber(user);
if (nhsNo != null) {
return getAllCrohns(nhsNo, fromDate, toDate);
}
return null;
}
public List<CrohnsSymptoms> getAllCrohns(String nhsno, Date fromDate, Date toDate) {
return crohnsSymptomsDao.getAllCrohns(nhsno, fromDate, toDate);
}
@Override
public void saveColitis(ColitisSymptoms colitisSymptoms) {
colitisSymptomsDao.save(colitisSymptoms);
}
@Override
public List<ColitisSymptoms> getAllColitis(User user) {
return getAllColitis(user, null, null);
}
@Override
public List<ColitisSymptoms> getAllColitis(User user, Date fromDate, Date toDate) {
String nhsNo = getNhsNumber(user);
if (nhsNo != null) {
return getAllColitis(nhsNo, fromDate, toDate);
}
return null;
}
@Override
public String getWeight(User user) {
return testResultManager.getLatestWeightFromResults(user);
}
public List<ColitisSymptoms> getAllColitis(String nhsno, Date fromDate, Date toDate) {
return colitisSymptomsDao.getAllColitis(nhsno, fromDate, toDate);
}
private String getNhsNumber(User user) {
UserMapping userMapping = userManager.getUserMappingPatientEntered(user);
if (userMapping != null) {
return userMapping.getNhsno();
}
return null;
}
@Override
public Diagnosis getLoggedInUserDiagnosis() {
String username = LegacySpringUtils.getSecurityUserManager().getLoggedInUsername();
if (username != null) {
User user = LegacySpringUtils.getUserManager().get(username);
return getDiagnosis(user);
}
return null;
}
@Override
public Diagnosis getDiagnosis(User user) {
MyIbd myIbd = getMyIbd(user);
if (myIbd != null) {
return myIbd.getDiagnosis();
} else {
return null;
}
}
@Override
public void saveProcedure(Procedure procedure) {
procedureDao.save(procedure);
}
@Override
public Procedure getProcedure(String nhsno) {
return procedureDao.getProcedure(nhsno);
}
@Override
public void deleteProcedure(String nhsno, String unitcode) {
procedureDao.delete(nhsno, unitcode);
}
@Override
public void saveAllergy(Allergy allergy) {
allergyDao.save(allergy);
}
@Override
public Allergy getAllergy(String nhsno) {
return allergyDao.getAllergy(nhsno);
}
@Override
public void deleteAllergy(String nhsno, String unitcode) {
allergyDao.delete(nhsno, unitcode);
}
}