Package clips.delegate.doctor.diagnosis

Source Code of clips.delegate.doctor.diagnosis.DiagnosisLocal$DiagnosisCacheList

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package clips.delegate.doctor.diagnosis;

import beans.directory.simple.entities.DiagnosisType;
import beans.doctor.diagnosis.DiagnosisBean;
import cli_fmw.delegate.cache.ExtraDataManager;
import beans.doctor.diagnosis.DiagnosisDetails;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import clips.delegate.directory.complex.DirectoryMKB10;
import clips.delegate.directory.complex.DirectoryMKB10Item;
import beans.doctor.diagnosis.DiagnosisBeanRemote;
import cli_fmw.delegate.AuditListener;
import clips.delegate.doctor.HasSerrenLocal;
import clips.delegate.doctor.Iconable;
import clips.delegate.DEC.DECServiceRender;
import cli_fmw.delegate.cache.DelegateExtraData;
import clips.delegate.service.SerRenLocal;
import cli_fmw.main.ClipsException;
import cli_fmw.delegate.utils.TimeLocal;
import clips.doctor.diagnosis.TableModelAccompDiagnosisList;
import cli_fmw.main.DelegatePrintable;
import cli_fmw.report.AlignmentType;
import cli_fmw.report.CombinedReportCreator;
import cli_fmw.report.ExtraField;
import cli_fmw.report.FormReportCreator;
import cli_fmw.report.TableReportOptions;
import cli_fmw.utils.ErrorValue;
import clips.doctor.newEMC.init.generic.DelegateNodeLeaf;
import clips.delegate.directory.simple.diagnosisEncounter.DirectoryDiagnosisEncounter;
import clips.delegate.directory.simple.diagnosisEncounter.DirectoryDiagnosisEncounterItem;
import clips.delegate.directory.simple.diagnosisType.DirectoryDiagnosisType;
import clips.delegate.directory.simple.diagnosisType.DirectoryDiagnosisTypeItem;
import clips.delegate.directory.simple.traumaType.DirectoryTraumaType;
import clips.delegate.directory.simple.traumaType.DirectoryTraumaTypeItem;
import clips.delegate.doctor.Signable;
import java.awt.Color;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.table.TableModel;
import framework.utils.Converter;

/**
* Делегат, предоставляющий доступ к одной записи в таблице diagnosis
* (постановка диагноза)
* @author ViP
*/
public class DiagnosisLocal extends DelegateNodeLeaf<DiagnosisBeanRemote, DiagnosisDetails>
        implements Iconable, DelegatePrintable, HasSerrenLocal, Signable {

    public static String[] STAGES = new String[]{ "","I","II","III","IV" };
    private DiagnosisCacheList accompDiagnosisList = new DiagnosisCacheList(getEDM());
    private DECServiceRender serviceRender = new DECServiceRender(this, "услуга, в рамках которой поставлен дигноз", getAuditListener());
    private static ImageIcon icon = null;

    /**
     *
     */
    private class DiagnosisCacheList extends DelegateExtraData<List<DiagnosisLocal>> {

        public DiagnosisCacheList(ExtraDataManager contaner) {
            super(contaner);
        }
       
        @Override
        protected List<DiagnosisLocal> init() throws Exception {
            List<DiagnosisLocal> res = new ArrayList<DiagnosisLocal>();
            for(DiagnosisDetails d: getBean().getAccomplichedDiagnosisList()) {
                res.add(new DiagnosisLocal(d, serviceRender.get(), getAuditListener()));
            }
            return res;
        }

        @Override
        protected List<DiagnosisLocal> initNew() {
            return new ArrayList<DiagnosisLocal>();
        }

        @Override
        protected void saveDB() throws Exception {
            for (DiagnosisLocal diagnosisLocal : get()) {
                diagnosisLocal.save1();
            }
        }

    }
   
    public DiagnosisLocal(SerRenLocal serRen) throws ClipsException {
        super(serRen.getAuditListener());
        getDetails().date = TimeLocal.getCurrentTime().getTime();
        serviceRender.initBy(serRen);
    }
   
    public DiagnosisLocal(int id/*, SerRenLocal serRen*/, AuditListener al) throws ClipsException {
        super(id, al);
        //serviceRender.initBy(serRen);
    }

    public DiagnosisLocal(DiagnosisDetails details, SerRenLocal serRen, AuditListener al) throws ClipsException {
        super(details, al);
        serviceRender.initBy(serRen);
    }

    @Override
    protected DiagnosisDetails getNewDetails() {
        return new DiagnosisDetails();
    }

    @Override
    public SerRenLocal getSerrenLocal() throws ClipsException {
        return serviceRender.get();
    }   

    /**
     * рекомендуется использовать hasReferencedDiagnosis()
     * @return
     * @throws cli_fmw.main.ClipsException
     * @deprecated
     */
    @Deprecated
    public DiagnosisLocal getReferencedDiagnosis() throws ClipsException {
        if (getDetails().referenced == 0) {
            return null;
        } else {
            return new DiagnosisLocal(getDetails().referenced, getAuditListener());
        }
    }

    public boolean hasReferencedDiagnosis() throws ClipsException {
        return getDetails().referenced != 0;
    }

    public void setReferencedDiagnosis(DiagnosisLocal diagnosis) throws ClipsException {
        getDetails().referenced = diagnosis.getID();       
        fireContentStateEvent();
    }
   
    public DirectoryMKB10Item getMkb() throws ClipsException {       
        DirectoryMKB10 dmkb = (DirectoryMKB10) DirectoryLocator.getDirectory(DirectoryMKB10.class, false);
        return dmkb.getItemFromID(getDetails().mkbID);
    }

    public void setMkb(DirectoryMKB10Item item) throws ClipsException {
        getDetails().mkbID = item.getID();
        fireContentStateEvent();
    }

    public DirectoryMKB10Item getComplication() throws ClipsException {
        DirectoryMKB10 dmkb = DirectoryLocator.getDirectory(DirectoryMKB10.class, false);
        return dmkb.getItemFromID(getDetails().complicationID);
    }

    public void setComplication(DirectoryMKB10Item item) throws ClipsException {
        getDetails().complicationID = item.getID();
        fireContentStateEvent();
    }

    /**
     * @return Полное название диагноза, включая код мкб и стадию
     * @throws cli_fmw.main.ClipsException
     */
    public String getMkbAndStage() throws ClipsException {
        String res;
        if (getStage() > 0) {
            res = getMkb().getDiseaseCode() + " " + getMkb().getTitle() + " - " + STAGES[getStage()] + " стадия";
        } else {
            res = getMkb().getDiseaseCode() + " " + getMkb().getTitle();
        }
        return res;
    }


    public DirectoryDiagnosisTypeItem getType() throws ClipsException {
        DirectoryDiagnosisTypeItem item = DirectoryLocator.getDirectory(DirectoryDiagnosisType.class).getItemFromID(getDetails().type);
        return item;
    }

    public void setType(DirectoryDiagnosisTypeItem type) throws ClipsException {
        getDetails().type = type.getID();
        fireContentStateEvent();
    }

    public DirectoryDiagnosisEncounterItem getEncounter() throws ClipsException {
        DirectoryDiagnosisEncounter dirEncounter = DirectoryLocator.getDirectory(DirectoryDiagnosisEncounter.class);
        return dirEncounter.getItemFromID(getDetails().encounter);
    }

    public void setEncounter(DirectoryDiagnosisEncounterItem encounter) throws ClipsException {
        getDetails().encounter = encounter.getID();
        fireContentStateEvent();
    }

    public String getAuthor() throws ClipsException {
        return getDetails().author;
    }

    public void setAuthor(String author) throws ClipsException {
        if (author == null || author.equals("")) {
            getDetails().author = null;
        } else {
            getDetails().author = author;
        }
        fireContentStateEvent();
    }

    public DirectoryTraumaTypeItem getTrauma() throws ClipsException{
        return DirectoryLocator.getDirectory(DirectoryTraumaType.class).getItemFromID(getDetails().traumaTypeID);
    }

    public void setTrauma(DirectoryTraumaTypeItem traumaType) throws ClipsException{
        getDetails().traumaTypeID = traumaType.getID();
        fireContentStateEvent();
    }

    /**
     * Дата постановки диагноза
     * @return
     * @throws ClipsException
     */
    public Date getDate() throws ClipsException {
        return getDetails().date;
    }

    /**
     * Дата постановки диагноза
     * @param date
     * @throws ClipsException
     */
    @Deprecated
    public void setDate(Date date) throws ClipsException {
        getDetails().date = date;
        fireContentStateEvent();
    }

     /**
     * Возвращает итератор сопутствующих диагнозов
     * если он еще не загружен, то загружает
      * @return
      * @throws ClipsException
     */
    public List<DiagnosisLocal> getAccompDiagnosis() throws ClipsException {
        return new ArrayList<DiagnosisLocal>(accompDiagnosisList.get());
    }

    public void setAccompDiagnosis(List<DiagnosisLocal> diagnosisLocals) throws ClipsException {
        accompDiagnosisList.set(new ArrayList<DiagnosisLocal>(diagnosisLocals));
    }

    public int getStage() throws ClipsException {
        return getDetails().stage;
    }
   
    public void setStage(int stage) throws ClipsException {
        getDetails().stage = stage;
        fireContentStateEvent();
    }

    @Override
    public boolean isSignCorrect() throws ClipsException{
        //STUB
        return (getID() != 63 );
        //END STUB
    }

    @Override
    public String getSignMessage() throws ClipsException {
        if (getID() == 0) {
            return "Подпись отсутствует";
        }
        //STUB
        String coll;
        if (getSerrenLocal().getCollaboratorFunctions() != null) {
            coll = getSerrenLocal().getCollaboratorFunctions().getTitle();
        } else {
            coll = getSerrenLocal().getSerRenDirector().getTitle();
        }

        String s = "Подписано " + Converter.dateToString(getDate())
                + " - " + coll;
        if (isSignCorrect() ) {
            return s;
        } else {
            return "Подпись не соответствует данным!";
        }
        //END STUB
    }


    /**
     * перенесено в делегат клиента
     * Запрашивает у базы характер диагноза с данным заболеванием.
     * База должна самы вычислить характер на основе всех диагнозов данного
     * пациента, исключая текущий диагноз (т.к. он в данный момент изменён)
     * @param item
     * @return элемент справочника
     * @throws ClipsException
     * @deprecated
     */
    @Deprecated
    public DirectoryDiagnosisEncounterItem getAutocalculatedEncounter(DiagnosisLocal dl) throws ClipsException {
        DirectoryDiagnosisEncounter encounterList = DirectoryLocator.getDirectory(DirectoryDiagnosisEncounter.class);
        return encounterList.getItemFromID(1);
    }
   
    @Override
    public Icon getIcon() {
        try {
            if (isSignCorrect()) {
                return icon;
            } else {
                return ErrorValue.RED_KEY_ICON;
            }
        } catch (ClipsException ex) {
            ex.printStackTrace();
            return null;
        }
    }

    @Override
    public String toString() {
        return "Диагноз";
    }

    @Override
    protected String getBeanName() {
        return DiagnosisBean.class.getSimpleName();
    }
   
    @Override
    public void print(CombinedReportCreator cCreator) throws ClipsException {
        FormReportCreator creater = cCreator.createFormReporter(getClass(), 1);
        HashMap<String, Object> data = new LinkedHashMap<String, Object>();
        String title = "Данные диагноза";
       
        AlignmentType alType = AlignmentType.dataInOneColoumnByLeft;
       
        String val = getSerrenLocal().getPolisData().getClient(getAuditListener()).toString();
        ExtraField extraField = new ExtraField(val, "Пациент:", alType);
        data.put("client", extraField);
       
        val = Converter.dateToString(getDate());
        extraField = new ExtraField(val, "Дата:", alType);
        data.put("date", extraField);
       
        val = getMkbAndStage();
        extraField = new ExtraField(val, "Диагноз:", alType);
        data.put("mkb", extraField);
       
        val = getType().getTitle();
        extraField = new ExtraField(val, "Тип диагноза:", alType);
        data.put("type", extraField);
       
        val = getEncounter().getTitle();
        extraField = new ExtraField(val, "Повторяемость:", alType);
        data.put("enc", extraField);
       
        if (getAuthor() != null) {
            val = getAuthor();
            extraField = new ExtraField(val, "Автор:", alType);
            data.put("author", extraField);
        }
       
        TableModel model = null;
        if (!getAccompDiagnosis().isEmpty()) {
            data.put("attended", "Список сопутствующих диагнозов:");
            model = new TableModelAccompDiagnosisList(getAccompDiagnosis(), false);
        }
       
        TableReportOptions ops = new TableReportOptions();
        ops.tableHeaderColor = Color.WHITE;
        ops.bottomMargin = 0;
        ops.topMargin = 0;
        creater.createReport(title, ops, data.entrySet(), model);
        creater.finish();
    }

    /**
     * Является ли диагноз заключительным
     * @return
     */
    public boolean isFinal() throws ClipsException{
        return getType().getID() == DiagnosisType.DIAGNOSIS_TYPE_FINAL;
    }

}
TOP

Related Classes of clips.delegate.doctor.diagnosis.DiagnosisLocal$DiagnosisCacheList

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.