Package beans.doctor.direction

Source Code of beans.doctor.direction.DirectionBean

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package beans.doctor.direction;

import framework.beans.EntityDetails;
import beans.doctor.MedicalDataBean;
import beans.cec.entity.CommitteeDirection;
import beans.directory.direction.entity.DirectionType;
import beans.directory.mkb10.entity.Mkb10;
import beans.directory.service.entity.Service;
import beans.directory.simple.entities.CommitteeReason;
import beans.service.ServiceRender;
import framework.audit.AuditDoc;
import framework.generic.ClipsServerException;
import framework.generic.EDataIntegrity;
import framework.generic.ESecurity;
import java.util.Date;
import java.util.List;
import javax.ejb.EJBException;
import javax.ejb.Stateful;

/**
* Security - Ok.
* Integrity - may be Ok.
* @author axe
*/
@Stateful(mappedName="clips-beans/DirectionBean")
public class DirectionBean extends MedicalDataBean<Direction>
        implements DirectionBeanRemote {

    public DirectionBean() {
        super(Direction.class);
    }

   
    /**
     * Обновляет данные сущности.
     * @param details новые детали сущности
     * @throws EJBException в случае если обновление отвергнуто системой
     *          безопастности либо произошла ошибка
     * @return идентификатор сущности
     * @security
     * Установка прав для мед. данных Рецептов, рекоммендаций, направлений, противопоказаний,
     * диагнозов и осмотров. Читать можно только по 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(Direction entity, EntityDetails details,
            AuditDoc auditDoc, List<AuditDoc> auditDocList)
            throws ClipsServerException{
       
        super.onUpdate(entity, details, auditDoc, auditDocList);
        DirectionDetails d = (DirectionDetails) details;

        if(entity.getId() != 0) {
            if(entity.getServiceRender().getId() != d.serviceRenderID) {
                throw new ESecurity("Cмена услуги недопустима");
            }
        } else {
            //never use client date +
            entity.setDate(new Date());

            entity.setServiceRender(findEntity(ServiceRender.class, d.serviceRenderID));
        }
       
        entity.setCommitteeReason(d.reasonID == 0 ? null : findEntity(CommitteeReason.class, d.reasonID));
        entity.setDescription(d.description);
        entity.setDirectionType(d.typeID == 0 ? null : findEntity(DirectionType.class, d.typeID));
        entity.setMkb10(d.mkbID == 0 ? null : findEntity(Mkb10.class, d.mkbID));
        entity.setOrdered(d.ordered);
        entity.setService(d.serviceID == 0 ? null : findEntity(Service.class, d.serviceID));
    }   
   
   
    @Override
    protected void onRemove(Direction entity, List<AuditDoc> audit) throws ClipsServerException {
        super.onRemove(entity, audit);
        Field[] fields = new Field[]{
            new Field("direction", entity, Field.OPERATOR_EQUAL)
        };
        if (getEntityCount(CommitteeDirection.class, fields) > 0) {
            throw new EDataIntegrity("Невозможно удалить направление на комиссию, комиссия уже назначена");
        }
    }   
}
TOP

Related Classes of beans.doctor.direction.DirectionBean

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.