Package clips.doctor.sicklist.sicklist

Source Code of clips.doctor.sicklist.sicklist.PanelSicklistView

/*
* PanelSicklistEdit.java
*
* Created on 11 Август 2008 г., 13:00
*/
package clips.doctor.sicklist.sicklist;

import cli_fmw.delegate.DelegateLine2;
import clips.delegate.directory.ro.DirectoryCollaboratorItem;
import clips.delegate.doctor.sicklist.SicklistLocal;
import clips.doctor.sicklist.dialogs.DialogSicklistClose;
import clips.doctor.sicklist.dialogs.DialogSicklistContinue;
import cli_fmw.main.CheckableDocListener;
import cli_fmw.main.PageContainer;
import cli_fmw.main.PageGeneric;
import cli_fmw.main.Persistentable;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.ModalDialog;
import cli_fmw.main.ClipsException;
import cli_fmw.main.MainWindow;
import cli_fmw.report.CombinedReportCreator;
import cli_fmw.report.ReporterFactory;
import cli_fmw.utils.table_config_states.SplitPaneState;
import cli_fmw.utils.table_config_states.StateSaver;
import clips.delegate.service.SerRenLocal;
import clips.login.UserInfo;
import beans.doctor.sicklist.entity.Sicklist;
import java.util.Calendar;
import javax.swing.ListSelectionModel;
import framework.utils.DateTimeUtils;
import framework.utils.FormatChecker;
import java.util.GregorianCalendar;

/**
* Панель просмотра больничного
* @author  petr
*/
public class PanelSicklistView extends PageGeneric implements
        Persistentable {

    private SicklistLocal sicklist;

    public PanelSicklistView(PageContainer container, SicklistLocal sicklist) throws ClipsException {
        super(container);
        initComponents();
        this.sicklist = sicklist;
        int prolongationCount = sicklist.getProlongationCount();
        if (prolongationCount == 0){
            btContinue.setEnabled(false);
            btClose.setEnabled(false);
        }
        updateFields();
    StateSaver.setDefaultState(this, jSplitPane1, new SplitPaneState(250d, SplitPaneState.OffsetType.rightOffset));
    StateSaver.setDefaultState(this, jSplitPane2, new SplitPaneState(150d, SplitPaneState.OffsetType.rightOffset));
    StateSaver.attachTo(this);
    }

    /**
     * Данные из больничного перегоняет в хтмл
     * @param sicklist больничный
     * @return форматированный текст
     * @throws generic.ClipsException
     */
    private String CreateHTML(SicklistLocal sicklist) throws ClipsException {
        String s = "<html>";
        String serial = sicklist.getSerial();
        if (serial == null || serial.trim().isEmpty()) {
            serial = "<font color = red>Не введен</font>";
        }
        s += "<p><i>Серийный номер: </i> <b>" + serial + "</b></p>";
        s += "<p><i>Кому выдан: </i> <b>" + sicklist.getClient().toString() + "</b></p>";
        String opener;
        if (sicklist.getOpener() != null) {
            opener = sicklist.getOpener().toString();
        } else if (sicklist.getAltOpener() != null) {
            opener = sicklist.getAltOpener() + " (другая клиника)";
        } else {
            opener = "<font color = red>неизвестно</font>";
        }
        s += "<p><i>Кем выдан: </i> <b>" + opener + "</b></p>";
    String lpu = sicklist.getLpuName();
        s += "<p><i>Где выдан: </i><b>" + (lpu == null? "<font color = red>неизвестно</font>": lpu) + "</b></p>";
        DirectoryCollaboratorItem creator = sicklist.getCreator();
    s += "<p><i>Добавил в базу данных: </i><b>" + (creator != null ? creator.getTitle() : "<i>неизвестно</i>") + "</b></p>";
        s += "<p><i>Дата открытия: </i> <b>" +
                framework.utils.Converter.dateToString(sicklist.getDateOpen().getTime()) + "</b> </p>";
        String direction;
        if (sicklist.getEnterprise().getID() != 0) {
            direction = sicklist.getEnterprise().getTitle();
        } else if (sicklist.getOtherDirection() != null) {
            direction = sicklist.getOtherDirection();
        } else {
            direction = "<font color = green>неизвестно</font>";
        }
        s += "<p><i>Куда: </i> <b>" + direction + "</b></p>";
    s += "<p><i>Диагноз открытия: </i><b>" + sicklist.getDiagnosisOpen().getMkbAndStage() + "</b></p>";
        s += "<p><i>Вид нетрудоспособности: </i><b>" + sicklist.getDisability().getTitle() +
                "</b></p>";

        if (sicklist.getPreviousSicklist() != null) {
            System.out.println("SR: " + sicklist.getPreviousSicklist().toString());
            s += "<p><i>Номер предыдущего больничного: </i><b>" +
                    sicklist.getPreviousSicklist().getSerial() + "</b></p>";
        }
        if (sicklist.isClosed()) {
            s += "<p><i>Статус больничного:</i> <b><font color = red>Закрыт</font></b></p>";
      s += "<p><i>Диагноз закрытия: </i><b>" + sicklist.getDiagnosisClose().getMkbAndStage() + "</b></p>";
            s += "<p><i>Врач, закрывший больничный:</i> <b><font color = red>"
          + sicklist.getCloser() + " </font></b></p>";
            s += "<p><i>Приступить к работе: </i><b><font color = red>" +
                framework.utils.Converter.dateToString(sicklist.getDateToWork().getTime()) + "</font></b></p>";
        } else {
            s += "<p><i>Статус:</i><b> <font color = green>Открыт</font></b></p>";
        }
        s += "  </p></html>";
        return s;
    }

    /**
     * если больничный закрыт отключает кнопки закрытия и продления
     * @throws generic.ClipsException
     */
    private void checkButtons() throws ClipsException {
        boolean closed = sicklist.isClosed();
        boolean hasSerial = sicklist.getSerial() != null && !sicklist.getSerial().trim().isEmpty();
        btContinue.setEnabled(!closed && hasSerial);
        btClose.setEnabled(!closed && hasSerial && !isDirty());
        btPrint.setEnabled(closed);
    }

    /**
     * обновляет панель
     * @throws generic.ClipsException
     */
    private void updateFields() throws ClipsException {
        checkButtons();

        lblSicklistInfo.setText(CreateHTML(sicklist));
        taDescription.setText(sicklist.getDescription());
       
        updateTable();
       
        String serial = sicklist.getSerial();
        if (serial != null && !serial.isEmpty()) {
            tfSerial.setText(serial);
            tfSerial.setEditable(false);
        } else {
            tfSerial.setText("");
            tfSerial.getDocument().addDocumentListener(new CheckableDocListener(tfSerial, FormatChecker.SICK_LIST_SERIAL) {

                @Override
                public void setField(String doc) {
                    updateSerial();
                }
            });
        }
        sicklist.addContentStateListener(getContainer());
    }

    /**
     * обновляет таблицу продлений
     * @throws generic.ClipsException
     */
    private void updateTable() throws ClipsException{
        TableModelSicklistContinued model = new TableModelSicklistContinued(sicklist);
        tblFSicklistContinued.setModel(model);
        tblFSicklistContinued.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    }
   
    /** Creates new form PanelSicklistEdit */
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel3 = new javax.swing.JPanel();
        btPrint1 = new javax.swing.JButton();
        btPrint = new javax.swing.JButton();
        btContinue = new javax.swing.JButton();
        btClose = new javax.swing.JButton();
        jPanel1 = new javax.swing.JPanel();
        jSplitPane2 = new javax.swing.JSplitPane();
        jPanel12 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        tfSerial = new javax.swing.JTextField();
        jSplitPane1 = new javax.swing.JSplitPane();
        jPanel4 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        lblSicklistInfo = new javax.swing.JLabel();
        jPanel5 = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        taDescription = new javax.swing.JTextArea();
        jPanel10 = new javax.swing.JPanel();
        jScrollPane3 = new javax.swing.JScrollPane();
        tblFSicklistContinued = new cli_fmw.utils.sorted_table.SortedTable();

        jPanel3.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT, 10, 5));

        btPrint1.setText("Распечатать больничный");
        btPrint1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btPrint1ActionPerformed(evt);
            }
        });
        jPanel3.add(btPrint1);

        btPrint.setText("Талон на законченый случай");
        btPrint.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btPrintActionPerformed(evt);
            }
        });
        jPanel3.add(btPrint);

        btContinue.setText("Продлить....");
        btContinue.setToolTipText("Продлить больничный лист...");
        btContinue.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btContinueActionPerformed(evt);
            }
        });
        jPanel3.add(btContinue);

        btClose.setText("Закрыть...");
        btClose.setToolTipText("Закрыть больничный лист...");
        btClose.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCloseActionPerformed(evt);
            }
        });
        jPanel3.add(btClose);

        jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        jPanel1.setPreferredSize(new java.awt.Dimension(300, 604));
        jPanel1.setLayout(new java.awt.BorderLayout());

        jSplitPane2.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);

        jPanel12.setBorder(javax.swing.BorderFactory.createTitledBorder("Больничный лист"));
        jPanel12.setLayout(new java.awt.BorderLayout());

        jPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));

        jLabel1.setText("Номер:");
        jPanel2.add(jLabel1);

        tfSerial.setPreferredSize(new java.awt.Dimension(250, 19));
        jPanel2.add(tfSerial);

        jPanel12.add(jPanel2, java.awt.BorderLayout.NORTH);

        jPanel4.setLayout(new java.awt.BorderLayout());

        jScrollPane1.setBackground(new java.awt.Color(255, 255, 255));
        jScrollPane1.setPreferredSize(new java.awt.Dimension(500, 0));

        lblSicklistInfo.setBackground(tfSerial.getBackground());
        lblSicklistInfo.setFont(tfSerial.getFont());
        lblSicklistInfo.setText("<HTML>            \n<p> Текст\n<HTML>");
        lblSicklistInfo.setVerticalAlignment(javax.swing.SwingConstants.TOP);
        lblSicklistInfo.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
        lblSicklistInfo.setOpaque(true);
        lblSicklistInfo.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
        jScrollPane1.setViewportView(lblSicklistInfo);

        jPanel4.add(jScrollPane1, java.awt.BorderLayout.CENTER);

        jSplitPane1.setLeftComponent(jPanel4);

        jPanel5.setLayout(new java.awt.BorderLayout());

        jScrollPane2.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        jScrollPane2.setPreferredSize(new java.awt.Dimension(200, 102));

        taDescription.setColumns(20);
        taDescription.setEditable(false);
        taDescription.setLineWrap(true);
        taDescription.setRows(5);
        taDescription.setWrapStyleWord(true);
        taDescription.setBorder(javax.swing.BorderFactory.createTitledBorder("Примечание"));
        jScrollPane2.setViewportView(taDescription);

        jPanel5.add(jScrollPane2, java.awt.BorderLayout.CENTER);

        jSplitPane1.setRightComponent(jPanel5);

        jPanel12.add(jSplitPane1, java.awt.BorderLayout.CENTER);

        jSplitPane2.setLeftComponent(jPanel12);

        jPanel10.setBorder(javax.swing.BorderFactory.createTitledBorder("Освобождение от работы"));
        jPanel10.setPreferredSize(new java.awt.Dimension(200, 200));
        jPanel10.setLayout(new java.awt.BorderLayout());

        jScrollPane3.setViewportView(tblFSicklistContinued);

        jPanel10.add(jScrollPane3, java.awt.BorderLayout.CENTER);

        jSplitPane2.setRightComponent(jPanel10);

        jPanel1.add(jSplitPane2, java.awt.BorderLayout.CENTER);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 638, Short.MAX_VALUE)
            .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 323, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );
    }// </editor-fold>//GEN-END:initComponents

    /**
     * клик на "продолжить"
     * открывет диалог продления
     * @param evt
     */
private void btContinueActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btContinueActionPerformed
    try {
        if (sicklist.getProlongationCount() == Sicklist.SICKLIST_PROLONGATION_LIMIT ){
            MessageBox.showWarning("Нельзя продлять больничный более " + (Sicklist.SICKLIST_PROLONGATION_LIMIT - 1) + " раз, создайте новый");
            return;
        }
    GregorianCalendar      till = sicklist.getTill();

        DialogSicklistContinue dsc = new DialogSicklistContinue(MainWindow.mainWindow, sicklist.getClient(), till, getAuditManager());
        dsc.setVisible(true);
        if (dsc.getDlgResult() == ModalDialog.DLG_OK) {
      Calendar        newLong = dsc.getDateTill();
            SerRenLocal serren = dsc.getSerren();
      GregorianCalendar    coll = new GregorianCalendar();
      coll.setTime(DateTimeUtils.getDateOnly(newLong.getTime()));
      coll.add(GregorianCalendar.DAY_OF_MONTH, -1);
      if (till.after(coll)){
        MessageBox.showError(MessageBox.E_INCORRECT_SICKLIST_PROLOG_DATE);
        return;
      }
            sicklist.prolongate(newLong,serren);
            updateFields();
        }
    } catch (ClipsException ex) {
        MessageBox.showException(ex);
    }

}//GEN-LAST:event_btContinueActionPerformed

    /**
     * клик на "закрыть"
     * открывает диалог закрытия
     * @param evt
     */
private void btCloseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCloseActionPerformed
   
        try {
            DialogSicklistClose dsc = new DialogSicklistClose(MainWindow.mainWindow, sicklist, getAuditManager());
            dsc.setVisible(true);
            if (dsc.getDlgResult() == ModalDialog.DLG_OK) {
                Calendar dateToWork = dsc.getDateToWork();
                if (DateTimeUtils.daysBetween(sicklist.getTill(), dateToWork) != 1) {
                    if (MessageBox.showConfirmYesNo(MessageBox.C_DATE_TO_WORK_BAD) == MessageBox.ANSWER_NO) {
                        return;
                    }
                }
                sicklist.setDateToWork(dsc.getDateToWork());
                sicklist.setCloser(UserInfo.get().getCollaborator());
        sicklist.setDiagnosisClose(dsc.getDiagnosisClose());
                sicklist.setSerrenClosed(dsc.getSerren());
                updateFields();
            }
        } catch (ClipsException ex) {
             MessageBox.showException(ex);
        }

}//GEN-LAST:event_btCloseActionPerformed

private void btPrintActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btPrintActionPerformed
    try {
        CombinedReportCreator parCreator = ReporterFactory.getFinalCreator();
        parCreator.setUpReport();
        sicklist.print(parCreator);
        parCreator.finish();
    } catch (ClipsException ex) {
        MessageBox.showException(ex);
    }
}//GEN-LAST:event_btPrintActionPerformed

private void btPrint1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btPrint1ActionPerformed
    try {
      sicklist.printOverBlank();
    } catch (ClipsException ex) {
      MessageBox.showException(ex);
    }
}//GEN-LAST:event_btPrint1ActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btClose;
    private javax.swing.JButton btContinue;
    private javax.swing.JButton btPrint;
    private javax.swing.JButton btPrint1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel10;
    private javax.swing.JPanel jPanel12;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JSplitPane jSplitPane1;
    private javax.swing.JSplitPane jSplitPane2;
    private javax.swing.JLabel lblSicklistInfo;
    private javax.swing.JTextArea taDescription;
    private cli_fmw.utils.sorted_table.SortedTable tblFSicklistContinued;
    private javax.swing.JTextField tfSerial;
    // End of variables declaration//GEN-END:variables
    @Override
    public String getPageTitle() {
        return "Редактирование больничного";
    }

    /**
     * пишет данные из поля ввода номера в делегат
     */
    private void updateSerial() {
        try {
            sicklist.setSerial(tfSerial.getText());
            sicklist.setRegistrator(UserInfo.get().getCollaborator());
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }
    @Override
    public boolean isDirty() {
        return sicklist == null ? false : sicklist.isDirty();
    }

    @Override
    public void save() throws ClipsException {
        if (sicklist != null) {
            sicklist.save1();
        }
        updateFields();
    }

    @Override
    public void restore() {
        try {
            if (sicklist != null) {
                sicklist.restore();
            }
            updateFields();
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }

    @Override
    public DelegateLine2 getDelegate() {
        return sicklist;
    }
}
TOP

Related Classes of clips.doctor.sicklist.sicklist.PanelSicklistView

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.