Package clips.administrator.dloregister

Source Code of clips.administrator.dloregister.DloWriter

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

package clips.administrator.dloregister;

import beans.report.dloregister.PersonalData;
import beans.report.dloregister.RecipeData;
import cli_fmw.main.ClipsException;
import clips.administrator.register.ErrorList;
import clips.main.ClipsConfig;
import java.io.File;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.xBaseJ.micro.DBF;
import org.xBaseJ.micro.fields.Field;
import org.xBaseJ.micro.xBaseJException;

/**
*
* @author lacoste
*/
public class DloWriter {
   
    private final static String dloRegDir = "L_REC";
    private DBF regPin;
    private DBF adPr;
    private PersonFields personF;
    private RecipeFields recipeF;

    public void openPersonInfo() throws xBaseJException, IOException {
        if (regPin == null) {
            ClipsConfig cfg = ClipsConfig.getInstance();
            File dir = new File(cfg.getRegisterExportPath(), "SEND");
            dir.mkdir();
            dir = new File(dir, dloRegDir);
            dir.mkdir();
            File dbfFile = new File(dir, "REG_PIN.DBF");
            regPin = new DBF(dbfFile.getAbsolutePath(), true, "cp866");
        }
        regPin.startTop();
    }

    public void createPersonInfo() throws xBaseJException, IOException, ClipsException {
        openPersonInfo();
        personF = new PersonFields();
        try {
            for (int i = 0; i < personF.getFields().length; i++) {
                Field f = personF.getFields()[i];
                regPin.addField(f);
            }
        } catch (xBaseJException ex) {
            throw new ClipsException("Ошибка при чтении данных из файла " + regPin.getName(), ex);
        }
    }

    public void closePersonInfo() throws IOException {
        regPin.close();
        regPin = null;
    }

    public ErrorList fillPersonInfo(List<PersonalData> list) throws xBaseJException, IOException, ClipsException {
        try {
            createPersonInfo();
            ErrorList errorList = new ErrorList();

            for (PersonalData person : list) {

                //ID
                int id = person.id;

                //SNILS
                String snils = person.snils;
                if (snils == null || snils.isEmpty()) {
                    errorList.add(id, "Не указан СНИЛС", ErrorList.CLIENT_ERROR);
                }
                else {
                    personF.snils.put(id, errorList, snils);
                }

                //POLIS_SN
                String polisSN = person.polisSN;
                if (polisSN == null || polisSN.isEmpty()) {
                    errorList.add(id, "Не указаны серия, номер полиса ОМС", ErrorList.CLIENT_ERROR);
                }
                else {
                    personF.polisSN.put(id, errorList, polisSN);
                }

                //SURNAME
                String surname = person.surname;
                if (surname == null || surname.isEmpty()) {
                    errorList.add(id, "Не указана фамилия пациента", ErrorList.CLIENT_ERROR);
                }
                else {
                    personF.surname.put(id, errorList, surname);
                }

                //NAME
                String name = person.name;
                if (name == null || name.isEmpty()) {
                    errorList.add(id, "Не указано имя пациента", ErrorList.CLIENT_ERROR);
                }
                else {
                    personF.name.put(id, errorList, name);
                }

                //PATHRONYMIC
                String pathronymic = person.pathronymic;
                if (pathronymic == null || pathronymic.isEmpty()) {
                    errorList.add(id, "Не указано отчество пациента", ErrorList.CLIENT_ERROR);
                }
                else {
                    personF.pathronymic.put(id, errorList, pathronymic);
                }

                //SEX
                char sex = person.sex;
                if (sex == Character.MIN_VALUE) {
                    errorList.add(id, "Не указан пол пациента", ErrorList.CLIENT_ERROR);
                }
                else {
                    personF.sex.put(id, errorList, Character.toString(sex));
                }

                //BORN_DATE
                Date bornDate = person.bornDate;
                if (bornDate ==  null) {
                    errorList.add(id, "Не указана дата рождения пациента", ErrorList.CLIENT_ERROR);
                    personF.bornDate.put("");
                }
                else {
                    Calendar cal = Calendar.getInstance();
                    cal.setTime(bornDate);
                    personF.bornDate.put(cal);
                }

                //EXEMPTION_CODE
                String exemptionID = person.exemptionID;
                if (exemptionID == null || exemptionID.isEmpty()) {
                    errorList.add(id, "Не указан код категории льготности", ErrorList.CLIENT_ERROR);
                }
                else {
                    personF.exemCode.put(id, errorList, exemptionID);
                }

                //DOCUMENT_SN
                String docSN = person.docSN;
                if (docSN == null || docSN.isEmpty()) {
                    errorList.add(id, "Не указаны серия, номер документа, удостоверяющего личность", ErrorList.CLIENT_ERROR);
                }
                else {
                    personF.docSN.put(id, errorList, docSN);
                }

                //DOCUMENT_TYPE
                String docTypeID = person.docTypeID;
                if (docTypeID == null || docTypeID.isEmpty()) {
                    errorList.add(id, "Не указан тип документа, удостоверяющего личность", ErrorList.CLIENT_ERROR);
                }
                else {
                    try {
                        Integer docType = Integer.parseInt(docTypeID);
                        personF.docType.put(docType);
                    } catch (NumberFormatException ex) {
                        errorList.add(id, "Код типа документа должен быть числом", ErrorList.CLIENT_ERROR);
                        personF.docType.put(0);
                    }
                }

                //OKATO__OMC
                int okatoOmc = person.okatoOMC;
                if (okatoOmc == Integer.MIN_VALUE) {
                    errorList.add(id, "Не указан код территории страхования по ОМС по ОКАТО", ErrorList.CLIENT_ERROR);
                }
                else {
                    personF.okatoOMC.put(okatoOmc);
                }

                //TODO ОГРН СМО

                //OKATO_REG
                int okatoReg = person.okatoReg;
                if (okatoReg == Integer.MIN_VALUE) {
                    errorList.add(id, "Не указан код территории постоянной регистрации пациента (ОКАТО)", ErrorList.CLIENT_ERROR);
                }
                else {
                    personF.okatoReg.put(okatoReg);
                }

                //SPECIAL_CASE
                String spCase = person.spCase;
                if (spCase == null) {
                    personF.spCase.put(id, errorList, "");
                }
                else {
                    personF.spCase.put(id, errorList, spCase);
                }

                regPin.write();
            }
           
            closePersonInfo();
            return errorList;
        } catch (IOException ex) {
            closePersonInfo();
            throw ex;
        } catch (xBaseJException ex) {
            closePersonInfo();
            throw ex;
        }
    }



    public void openRecipeInfo() throws xBaseJException, IOException {
        if (adPr == null) {
            ClipsConfig cfg = ClipsConfig.getInstance();
            File dir = new File(cfg.getRegisterExportPath(), "SEND");
            dir.mkdir();
            dir = new File(dir, dloRegDir);
            dir.mkdir();
            File dbfFile = new File(dir, "AD_PR.DBF");
            adPr = new DBF(dbfFile.getAbsolutePath(), true, "cp866");
        }
        adPr.startTop();
    }

    public void createRecipeInfo() throws xBaseJException, IOException, ClipsException {
        openRecipeInfo();
        recipeF = new RecipeFields();
        try {
            for (int i = 0; i < recipeF.getFields().length; i++) {
                Field f = recipeF.getFields()[i];
                adPr.addField(f);
            }
        } catch (xBaseJException ex) {
            throw new ClipsException("Ошибка при чтении данных из файла " + adPr.getName(), ex);
        }
    }

    public void closeRecipeInfo() throws IOException {
        adPr.close();
        adPr = null;
    }

    public ErrorList fillRecipeInfo(List<RecipeData> list) throws xBaseJException, IOException, ClipsException {
        try {
            createRecipeInfo();
            ErrorList errorList = new ErrorList();

            for (RecipeData recipe : list) {

                //ID
                int id = recipe.id;

                //SNILS
                String snils = recipe.snils;
                if (snils == null || snils.isEmpty()) {
                    errorList.add(id, "Не указан СНИЛС", ErrorList.CLIENT_ERROR);
                }
                else {
                    recipeF.snils.put(id, errorList, snils);
                }

                //LPU_TFOMS_CODE
                String lpuTFOMSCode = recipe.lpuTFOMScode;
                if (lpuTFOMSCode == null || lpuTFOMSCode.isEmpty()) {
                    errorList.add(id, "Не указан код ЛПУ в кодировке ТФОМС", ErrorList.CLIENT_ERROR);
                }
                else {
                    recipeF.lpuTFOMScode.put(id, errorList, lpuTFOMSCode);
                }

                //EXEMPTION_CODE
                String exemptionID = recipe.exemptionID;
                if (exemptionID == null || exemptionID.isEmpty()) {
                    errorList.add(id, "Не указан код категории льготности", ErrorList.CLIENT_ERROR);
                }
                else {
                    recipeF.exemCode.put(id, errorList, exemptionID);
                }

                //POLIS_SN
                String polisSN = recipe.polisSN;
                if (polisSN == null || polisSN.isEmpty()) {
                    errorList.add(id, "Не указаны серия, номер полиса ОМС", ErrorList.CLIENT_ERROR);
                }
                else {
                    recipeF.polisSN.put(id, errorList, polisSN);
                }

                //LPU_OGRN
                String lpuOGRN = recipe.lpuOGRN;
                if (lpuOGRN == null || lpuOGRN.isEmpty()) {
                    errorList.add(id, "Не указан ОГРН ЛПУ", ErrorList.CLIENT_ERROR);
                }
                else {
                    recipeF.lpuOGRN.put(id, errorList, lpuOGRN);
                }

                //COLLABORATOR_CODE
                String collabCode = recipe.collabCode;
                if (collabCode == null || collabCode.isEmpty()) {
                    errorList.add(id, "Не указан идентификационный код врача");
                }
                else {
                    recipeF.collCode.put(id, errorList, collabCode);
                }

                //MKB_CODE
                String mkbCode = recipe.mkbCode;
                if (mkbCode == null || mkbCode.isEmpty()) {
                    errorList.add(id, "Не указан МКБ-код заболевания (диагноз)");
                }
                else {
                    recipeF.mkbCode.put(id, errorList, mkbCode);
                }

                //RECIPE_SN
                String recipeSN = recipe.recipeSN;
                if (recipeSN == null || recipeSN.isEmpty()) {
                    errorList.add(id, "Не указаны серия, номер рецепта");
                }
                else {
                    recipeF.recipeSN.put(id, errorList, recipeSN);
                }

                //RECIPE_DATE
                Date recipeDate = recipe.recipeDate;
                if (recipeDate ==  null) {
                    errorList.add(id, "Не указана дата выписки рецепта");
                    recipeF.recipeDate.put("");
                }
                else {
                    Calendar cal = Calendar.getInstance();
                    cal.setTime(recipeDate);
                    recipeF.recipeDate.put(cal);
                }

                //FINANCE_SOURCE
                int financeSource = recipe.financeSource;
                if (financeSource == 0) {
                    errorList.add(id, "Не указан источник финансирования");
                }
                else {
                    recipeF.financeSource.put(financeSource);
                }
               
                //PERCENT
                int percent = recipe.percent;
                recipeF.percent.put(percent);
               
                //MNN & TRADE_NAME
                String mnn = recipe.mnn;
                if (mnn == null || mnn.isEmpty()) {
                    String trn = recipe.trn;
                    if (trn == null || trn.isEmpty()) {
                        errorList.add(id, "Не указаны коды ЛС ни по МНН, ни по торговому наименованию");
                    }
                    else {
                        try {
                            recipeF.trn.put(Integer.parseInt(trn));
                        } catch (NumberFormatException ex) {
                            errorList.add(id, "Код ЛС по торговому наименованию должен быть числом");
                            recipeF.trn.put(0);
                        }
                    }
                }
                else {
                    try {
                        recipeF.mnn.put(Integer.parseInt(mnn));
                    } catch (NumberFormatException ex) {
                        errorList.add(id, "Код ЛС по МНН должен быть числом");
                        recipeF.mnn.put(0);
                    }
                }

                //DOSAGE_FORM
                String dosageForm = recipe.dosageForm;
                if (dosageForm != null && !dosageForm.isEmpty()) {
                    try {
                        recipeF.dosForm.put(Integer.parseInt(dosageForm));
                    } catch (NumberFormatException ex) {
                        errorList.add(id, "Код лекарственной формы должен быть числом");
                        recipeF.dosForm.put(0);
                    }
                }
                else {
                    recipeF.dosForm.put(0);
                }

                //DOSAGE
                String dosage = recipe.dosage;
                if (dosage == null || dosage.isEmpty()) {
                    errorList.add(id, "Не указана дозировка");
                }
                else {
                    recipeF.dosage.put(id, errorList, dosage);
                }

                //DOSAGE_UNIT
                String dosageUnit = recipe.dosageUnit;
                if (dosageUnit == null || dosageUnit.isEmpty()) {
                    errorList.add(id, "Не указан код единицы измерения дозировки");
                }
                else {
                    try {
                        recipeF.dosUnit.put(Integer.parseInt(dosageUnit));
                    } catch (NumberFormatException ex) {
                        errorList.add(id, "Код единицы измерения дозировки должен быть числом");
                        recipeF.dosUnit.put(0);
                    }
                }

                //QUANTITY
                double quantity = recipe.quantity;
                recipeF.quantity.put(quantity);

                //PERIOD
                int period = recipe.period;
                if (period == 0) {
                    errorList.add(id, "Не указан срок действия рецепта");
                }
                else {
                    recipeF.period.put(period);
                }

                //KEK
                boolean kek = recipe.kek;
                recipeF.kek.put(kek ? 1 : 0);

                //SPECIAL_CASE
                String spCase = recipe.spCase;
                if (spCase == null) {
                    recipeF.spCase.put(id, errorList, "");
                }
                else {
                    recipeF.spCase.put(id, errorList, spCase);
                }

                adPr.write();
            }

            closeRecipeInfo();
            return errorList;
        } catch (IOException ex) {
            closeRecipeInfo();
            throw ex;
        } catch (xBaseJException ex) {
            closeRecipeInfo();
            throw ex;
        }
    }

}
TOP

Related Classes of clips.administrator.dloregister.DloWriter

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.