/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package beans.doctor.contraindication;
import framework.beans.EntityDetails;
import beans.doctor.MedicalDataBean;
import beans.directory.vidal.entities.matter.Matter;
import beans.service.ServiceRender;
import framework.audit.AuditDoc;
import framework.generic.ClipsServerException;
import framework.generic.ESecurity;
import framework.utils.DateTimeUtils;
import java.util.Date;
import java.util.List;
import javax.ejb.Stateful;
/**
* @security - Ok.
* Integrity - may be Ok.
* @author axe
*/
@Stateful(mappedName="clips-beans/ContraindicationBean")
public class ContraindicationBean extends MedicalDataBean<Contraindication>
implements ContraindicationBeanRemote {
public ContraindicationBean() {
super(Contraindication.class);
}
/**
* Обновляет данные сущности.
* @param details новые детали сущности
* @throws ClipsServerException в случае если обновление отвергнуто системой
* безопастности либо произошла ошибка
* @return идентификатор сущности
* Безопасность.
* Установка прав для мед. данных Рецептов, рекоммендаций, направлений, противопоказаний,
* диагнозов и осмотров. Читать можно только по READ_MEDICAL_DATA.
* Изменять и удалять по WRITE_MEDICAL_DATA_DURING_DAY и WRITE_MEDICAL_DATA_ANY_TIME.
* Для осмотров ещё два, менее мощных права WRITE_CHECKUP_DURING_DAY и WRITE_CHECKUP_ANY_TIME.
* XXX_DURING_DAY - позволяет писать данные, если услуга не выполнена или выполнена в течении
* текущего дня, изменять данные может только сотрудник, создавший запись.
* XXX_ANY_TIME - позволяет редактировать любую запись, без ограничений.
*/
@Override
protected void onUpdate(Contraindication entity, EntityDetails details,
AuditDoc auditDoc, List<AuditDoc> auditDocList) throws ClipsServerException{
super.onUpdate(entity, details, auditDoc, auditDocList);
ContraindicationDetails d = (ContraindicationDetails) details;
if(entity.getId() != 0) {
if(entity.getServiceRender().getId() != d.serviceRenderID) {
throw new ESecurity("Cмена услуги недопустима");
}
}
if (!DateTimeUtils.belongsToCurrentDay(d.date)) {
throwNeedAdminSecurityException("Попытка подмены даты");
}
entity.setDate(d.date);
entity.setServiceRender(findEntity(ServiceRender.class, d.serviceRenderID));
entity.setMatter(findEntity(Matter.class, d.matter));
}
}