Package clips.directory.editors.update.updaters

Source Code of clips.directory.editors.update.updaters.UpdaterSickLists

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

package clips.directory.editors.update.updaters;

import beans.doctor.disease.updater.EmcIdAndDateBorn;
import beans.doctor.sicklist.SicklistBean;
import beans.doctor.sicklist.SicklistBeanRemote;
import cli_fmw.delegate.SharedBean;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import cli_fmw.main.ClipsException;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.SelectorEditableExceptional;
import clips.delegate.client.CollaboratorFunctionsChunk;
import clips.delegate.config.ConfigLocal;
import clips.delegate.directory.filtered.DirectoryService;
import clips.delegate.directory.filtered.DirectoryServiceItem;
import clips.delegate.job.JobLocal;
import clips.login.UserInfo;
import beans.directory.service.entity.ServiceGroup;
import beans.directory.simple.entities.DisabilityType;
import beans.doctor.diagnosis.DiagnosisDetails;
import beans.doctor.sicklist.entity.SickLongDetails;
import beans.doctor.sicklist.entity.SicklistDetails;
import cli_fmw.main.audit.AuditManager;
import clips.delegate.doctor.EmcLocal;
import framework.utils.Converter;
import framework.utils.DateTimeUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;
import java.util.Set;

/**
*
* @author vip
*/
public class UpdaterSickLists extends UpdaterMedData {

    private SharedBean<SicklistBeanRemote> sickListBean = new SharedBean<SicklistBeanRemote>(SicklistBean.class.getSimpleName());
    private AuditManager am;

    public UpdaterSickLists(AuditManager am) {
        this.am = am;
    }

    @Override
    public void updateImpl() throws ClipsException {
        super.updateImpl();

        System.out.println("Запись больничных в базу");
        DirectoryService dirService = DirectoryLocator.getDirectory(DirectoryService.class);
        HashMap<String, DirectoryServiceItem> serviceMap = new HashMap<String, DirectoryServiceItem>();
        SelectorEditableExceptional<DirectoryServiceItem> servItems = dirService.getItems();
        for (int i = 0; i < servItems.size(); i++) {
            DirectoryServiceItem item = servItems.get(i);
            if (item.getID() != 0 && !item.getCode().trim().isEmpty()
                    && item.getGroup().getID() == ServiceGroup.SERVICE_GROUP_VISIT) {
                serviceMap.put(item.getCode().trim(), item);
            }
        }

        Set<Entry<Integer, SstData>> sstSet = sstMap.entrySet();
        float size = sstSet.size();
        int counter = 0;
        for (Iterator<Entry<Integer, SstData>> it = sstSet.iterator(); it.hasNext();) {
            //через каждые 1000 заболеваний напоминаем серваку, что юзер здесь, ато 1 раз отвалился
            if ((counter % 1000) == 0) {
                try {
                    UserInfo.get().disturbServer();
                } catch (Throwable ex) {
                    //пофиг
                }
            }
            Entry<Integer, SstData> entry = it.next();
            it.remove();
            SstData sstData = entry.getValue();
            ArrayList<EmcIdAndDateBorn> emcList = clientMap.get(sstData.lnumber);
            if (emcList == null) {
                System.out.println("Не найден пациент № " + sstData.lnumber + " stat_ds.dbf " " (N_SYST = " + sstData.nSyst + ")");
                out.println("Не найден пациент № " + sstData.lnumber + " stat_ds.dbf " " (N_SYST = " + sstData.nSyst + ")");
                counter++;
                continue;
            }
            int emcID = sstData.getTrueEmc(emcList);
            if (emcID == 0) {
                System.out.println("Не найден пациент № " + sstData.lnumber + " дата рождения " + Converter.dateToString(sstData.bithdate)
                        + " stat_ds.dbf " " (N_SYST = " + sstData.nSyst + ")");
                out.println("Не найден пациент № " + sstData.lnumber + " дата рождения " + Converter.dateToString(sstData.bithdate)
                        + " stat_ds.dbf " " (N_SYST = " + sstData.nSyst + ")");
                counter++;
                continue;
            }

            if (sstData.blBeg == null || sstData.blEnd == null) {
                //Больничного нет, пробегаем
                counter++;
                continue;
            }

            DiagnosisDetails diag = null;
            CollaboratorFunctionsChunk cfc = null;
            for (int i = 0; i < sstData.dniList.size(); i++) {
                DniData dni = sstData.dniList.get(i);
                System.out.println("Поиск больничного по посещению (" + counter/size*100 + "%)");

                String serviceCode = dni.mes.substring(3);
                int serviceID = serviceMap.get(serviceCode).getID();
                cfc = findCollFuncByExtKey(String.valueOf(dni.idWrach), sstData.vmu);

                try {
                    diag = updaterStattalonBean.get().getDiagnosisDetails(serviceID, emcID, cfc.getId(), dni.date);
                    if (diag != null) {
                        break;
                    }
                } catch (Exception ex) {
                    updaterStattalonBean.clear();
                    System.out.println(MessageBox.parseException(ex));
                    out.println(MessageBox.parseException(ex));
                }
            }
            if (diag != null) {
                SicklistDetails s = null;
                try {
                    //Проверить есть ли на данный диагноз и посещение больничный
                    s = updaterStattalonBean.get().getSicklist(diag.id);
                } catch (Exception ex) {
                    updaterStattalonBean.clear();
                    System.out.println(MessageBox.parseException(ex));
                    out.println(MessageBox.parseException(ex));
                    counter ++;
                    continue;
                }
                if (s == null) {
                    //Только если есть диагноз и больничный для него отсутствует в базе то создаем больничный
                    s = new SicklistDetails();
                }
                // s.organizationID = UserInfo.get().getCollaborator().getLpu().getID();
                EmcLocal emc = new EmcLocal(emcID, am);
                List<JobLocal> jobList = emc.getClient().getJobList();
                if (jobList.size() > 0) {
                    s.entID = jobList.get(0).getEnterprise().getID();
                }
                s.diagOpenID = diag.getId();
                s.disabID = sstData.blPrich != 0 ? sstData.blPrich : 1;
                if (!sstData.blSex.isEmpty() || !sstData.blAge.isEmpty()) {
                    //Указаны поля по уходу
                    s.disabID = DisabilityType.DISABILITY_TYPE_DISEATED_SUPPORT;
                }
                s.openerID = cfc.getCollaborator().getID();
                s.dateOpen = sstData.blBeg;
                SickLongDetails sld = new SickLongDetails();
                sld.collID = cfc.getCollaborator().getID();
                sld.date = sstData.blEnd;
                sld.serrenID = diag.serviceRenderID;
                s.sickLongList = new ArrayList<SickLongDetails>();
                s.sickLongList.add(sld);
                /*try {
                    sickListBean.get().initByID(s.id, UserInfo.get().getSessionId());
                    sickListBean.get().updateImpl(s);
                } catch (Exception ex) {
                    sickListBean.clear();
                    System.out.println(MessageBox.parseException(ex));
                    continue;
                }*/
                //Создан успешно теперь выставляем серийник.
                s.serial = "АА 0000000";
                s.registratorID = UserInfo.get().getCollaborator().getID();
                /*try {
                    sickListBean.get().initByID(s.id, UserInfo.get().getSessionId());
                    sickListBean.get().updateImpl(s);
                } catch (Exception ex) {
                    sickListBean.clear();
                    System.out.println(MessageBox.parseException(ex));
                    continue;
                }*/
                //Серийник выставлен успешно теперь закрываем.
                s.dateToWork = DateTimeUtils.getNextDay(sstData.blEnd);
                s.diagCloseID = diag.getId();
                s.serrenCloseID = diag.serviceRenderID;
                s.closerID = cfc.getCollaborator().getID();
                try {
                    sickListBean.get().initByID(s.id, UserInfo.get().getSessionId());
                    sickListBean.get().update(s);
                } catch (Exception ex) {
                    sickListBean.clear();
                    System.out.println(MessageBox.parseException(ex));
                    out.println(MessageBox.parseException(ex));
                    counter ++;
                    continue;
                }

            } else {
                System.out.println("Не найден диагноз по статталону, N_SYST = " + sstData.nSyst);
                out.println("Не найден диагноз по статталону, N_SYST = " + sstData.nSyst);
                counter ++;
                continue;
            }
            counter++;
        }
    }

    @Override
    public String getTitle() {
        return "Больничные";
    }

}
TOP

Related Classes of clips.directory.editors.update.updaters.UpdaterSickLists

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.