Package clips.doctor.medexam

Source Code of clips.doctor.medexam.PanelMedexamSearch

/*
* PanelFollowUpSearch.java
*
* Created on 15 Апрель 2008 г., 12:56
*/

package clips.doctor.medexam;

import beans.doctor.medexam.search.MedexamFilter;
import clips.delegate.client.ClientLocal;
import cli_fmw.delegate.DelegateLine2;
import cli_fmw.delegate.utils.TimeLocal;
import cli_fmw.main.ClipsException;
import cli_fmw.main.MainWindow;
import cli_fmw.main.PageContainer;
import cli_fmw.main.PageException;
import cli_fmw.main.PageGeneric;
import cli_fmw.main.PrintCreators;
import cli_fmw.main.Printable;
import cli_fmw.main.PageGeneric;
import cli_fmw.report.TableReportOptions;
import clips.userseach.PanelUserSearch;
import cli_fmw.utils.EmptyDialog;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.ModalDialog;
import cli_fmw.utils.table_config_states.StateSaver;
import cli_fmw.utils.table_config_states.TableState;
import clips.delegate.doctor.DiseaseLocal;
import clips.delegate.doctor.medexam.MedexamLocal;
import clips.delegate.doctor.medexam.MedexamSearchLocal;
import clips.doctor.PanelEMC;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.LinkedHashMap;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import framework.utils.Converter;
import framework.utils.DateTimeUtils;
import java.util.Calendar;

/**
* панель для отображения списка диспансеризации
* @author  lacoste
*/
public class PanelMedexamSearch extends PageGeneric implements Printable {
    private MedexamSearchLocal medexamSearchLocal = new MedexamSearchLocal(getAuditManager());
    private ArrayList<MedexamLocal> medexamList = new ArrayList<MedexamLocal>();
    private MedexamFilter filter = new MedexamFilter();
    private ClientLocal client;
   
    public PanelMedexamSearch(PageContainer container) throws ClipsException{
        super(container);
        initComponents();       
        //cbClosedMedexam.setHorizontalTextPosition(SwingConstants.LEFT);

        dateChFrom.setDate(TimeLocal.getCurrentTime().getTime());
        dateChTill.setDate(TimeLocal.getCurrentTime().getTime());
        refreshTable();

        tabMedexam.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
       
        tabMedexam.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

            @Override
            public void valueChanged(ListSelectionEvent e) {
                boolean active = tabMedexam.getSelectedRowCount() > 0;
                btMedexam.setEnabled(active);
            }
        });

    resizeColumn();
    StateSaver.attachTo(this);
    }

    private void fillFilter() {
        filter = new MedexamFilter();
        if (cbClient.isSelected()) {
            filter.clientId = client.getID();
        }
        filter.dateOpenFrom = DateTimeUtils.getDateOnly(dateChFrom.getDate());
                Calendar gc = GregorianCalendar.getInstance();
                gc.setTime(DateTimeUtils.getDateOnly(dateChTill.getDate()));
                gc.add(Calendar.DAY_OF_YEAR, 1);
        filter.dateOpenTill = gc.getTime();
        filter.onlyOpened = !cbClosedMedexam.isSelected();
        System.out.println("Фильтр медосмотров -------------");
        System.out.println("Date from " + filter.dateOpenFrom);
        System.out.println("Date to " + filter.dateOpenTill);
        System.out.println("ClientID " + filter.clientId);
        System.out.println("Only Opened " + filter.onlyOpened);
    }

    private void refreshTable() {
        tabMedexam.setModel(new TableModelMedexamList(medexamList));
    }
   
    /** 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.
     */
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel2 = new javax.swing.JPanel();
        jPanel3 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jPanel6 = new javax.swing.JPanel();
        cbClient = new javax.swing.JCheckBox();
        tfClient = new javax.swing.JTextField();
        btClient = new javax.swing.JButton();
        jPanel1 = new javax.swing.JPanel();
        jPanel7 = new javax.swing.JPanel();
        jLabel2 = new javax.swing.JLabel();
        dateChFrom = new org.infotechservice.ICalendar.components.ICDateChooser();
        jPanel8 = new javax.swing.JPanel();
        jLabel3 = new javax.swing.JLabel();
        dateChTill = new org.infotechservice.ICalendar.components.ICDateChooser();
        cbClosedMedexam = new javax.swing.JCheckBox();
        jPanel4 = new javax.swing.JPanel();
        btGoGoGo = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        tabMedexam = new cli_fmw.utils.sorted_table.SortedTable();
        jPanel5 = new javax.swing.JPanel();
        btMedexam = new javax.swing.JButton();

        setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
        setLayout(new java.awt.BorderLayout(5, 5));

        jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2, javax.swing.BoxLayout.PAGE_AXIS));

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

        jLabel1.setFont(jLabel1.getFont().deriveFont((jLabel1.getFont().getStyle() & ~java.awt.Font.ITALIC) | java.awt.Font.BOLD, 13));
        jLabel1.setText("Поиск медосмотров:");
        jPanel3.add(jLabel1);

        jPanel2.add(jPanel3);

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

        cbClient.setText("по пациенту:  ");
        cbClient.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbClientActionPerformed(evt);
            }
        });
        jPanel6.add(cbClient, java.awt.BorderLayout.LINE_START);

        tfClient.setColumns(40);
        tfClient.setEditable(false);
        tfClient.setEnabled(false);
        jPanel6.add(tfClient, java.awt.BorderLayout.CENTER);

        btClient.setText("...");
        btClient.setEnabled(false);
        btClient.setPreferredSize(new java.awt.Dimension(24, 24));
        btClient.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btClientActionPerformed(evt);
            }
        });
        jPanel6.add(btClient, java.awt.BorderLayout.LINE_END);

        jPanel2.add(jPanel6);

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

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

        jLabel2.setText("С:  ");
        jPanel7.add(jLabel2, java.awt.BorderLayout.WEST);

        dateChFrom.setPreferredSize(new java.awt.Dimension(130, 19));
        jPanel7.add(dateChFrom, java.awt.BorderLayout.CENTER);

        jPanel1.add(jPanel7);

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

        jLabel3.setText("по:  ");
        jPanel8.add(jLabel3, java.awt.BorderLayout.WEST);

        dateChTill.setPreferredSize(new java.awt.Dimension(130, 19));
        jPanel8.add(dateChTill, java.awt.BorderLayout.CENTER);

        jPanel1.add(jPanel8);

        cbClosedMedexam.setText("+ Пройденные медосмотры ");
        cbClosedMedexam.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbClosedMedexamActionPerformed(evt);
            }
        });
        jPanel1.add(cbClosedMedexam);

        jPanel2.add(jPanel1);

        jPanel4.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 0));

        btGoGoGo.setText("Найти");
        btGoGoGo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btGoGoGoActionPerformed(evt);
            }
        });
        jPanel4.add(btGoGoGo);

        jPanel2.add(jPanel4);

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

        jScrollPane1.setBorder(javax.swing.BorderFactory.createTitledBorder("Найденные медосмотры"));
        jScrollPane1.addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentResized(java.awt.event.ComponentEvent evt) {
                jScrollPane1ComponentResized(evt);
            }
        });

        tabMedexam.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tabMedexamMouseClicked(evt);
            }
        });
        jScrollPane1.setViewportView(tabMedexam);

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

        jPanel5.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));

        btMedexam.setText("Перейти");
        btMedexam.setEnabled(false);
        btMedexam.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btMedexamActionPerformed(evt);
            }
        });
        jPanel5.add(btMedexam);

        add(jPanel5, java.awt.BorderLayout.SOUTH);
    }// </editor-fold>//GEN-END:initComponents

    private void btGoGoGoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btGoGoGoActionPerformed
        try {
            fillFilter();
            medexamList = medexamSearchLocal.findMedexamLocals(filter);
            refreshTable();
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
    }//GEN-LAST:event_btGoGoGoActionPerformed

    private void btMedexamActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btMedexamActionPerformed
        if (tabMedexam.getSelectedRowCount() == 0) {
            MessageBox.showWarning(MessageBox.W_LIST_ELEMENT_NOT_SELECT);
            return;
        }
        try {
            ClientLocal clientLocal = medexamList.get(tabMedexam.getSelectedRowSorted()).getClientLocal();
            DiseaseLocal disease = medexamList.get(tabMedexam.getSelectedRowSorted()).getDiseaseLocal();
            PanelEMC panel = new PanelEMC(getContainer(), clientLocal);
            getContainer().addNewPage(panel, this);
            panel.selectInEmc(disease);
        } catch (PageException ex) {
            MessageBox.showException(ex);
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
        }
}//GEN-LAST:event_btMedexamActionPerformed

private void cbClientActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbClientActionPerformed
    btClient.setEnabled(cbClient.isSelected());
    tfClient.setEnabled(cbClient.isSelected());
    if (cbClient.isSelected()){
        selectClient();
    }
    else {
        client = null;
        tfClient.setText("");
        btClient.setEnabled(false);
    }
}//GEN-LAST:event_cbClientActionPerformed

private void btClientActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btClientActionPerformed
        selectClient();
}//GEN-LAST:event_btClientActionPerformed

private void selectClient() {
    try {
        EmptyDialog dlg = new EmptyDialog(MainWindow.mainWindow, "Выбор пациента", getAuditManager());
        PanelUserSearch panel = new PanelUserSearch(dlg, PanelUserSearch.MODE_SELECT);
        dlg.addNewPage(panel, null);
        dlg.setVisible(true);
        if (dlg.getDlgResult() == ModalDialog.DLG_OK) {
            client = panel.getSelectedClient();
            if (client != null) {
                tfClient.setText(client.toString());
                btClient.setEnabled(true);
            } else {
                tfClient.setText("");
                cbClient.setSelected(false);
                btClient.setEnabled(false);
            }
        }else{
            cbClient.setSelected(false);
            btClient.setEnabled(false);
        }
    } catch (ClipsException ex) {
        MessageBox.showException(ex);
    }
}

private void tabMedexamMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tabMedexamMouseClicked
    if (evt.getClickCount() == 2) {
        btMedexamActionPerformed(null);
    }
}//GEN-LAST:event_tabMedexamMouseClicked

private void jScrollPane1ComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_jScrollPane1ComponentResized
   
}//GEN-LAST:event_jScrollPane1ComponentResized

private void cbClosedMedexamActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbClosedMedexamActionPerformed
    // TODO add your handling code here:
}//GEN-LAST:event_cbClosedMedexamActionPerformed

    @Override
    public String getPageTitle() {
        return "Поиск медосмотров";
    }

    private void resizeColumn() {
    TableState          state = new TableState();
    state.setPreferredWidth(TableModelMedexamList.COL_CLIENT,  50);
    state.setPreferredWidth(TableModelMedexamList.COL_TYPE,    20);
    state.setPreferredWidth(TableModelMedexamList.COL_DATE,     10);
    state.setPreferredWidth(TableModelMedexamList.COL_RESULT,  20);
      StateSaver.setDefaultState(this, tabMedexam, state);
    }
   
   
   
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btClient;
    private javax.swing.JButton btGoGoGo;
    private javax.swing.JButton btMedexam;
    private javax.swing.JCheckBox cbClient;
    private javax.swing.JCheckBox cbClosedMedexam;
    private org.infotechservice.ICalendar.components.ICDateChooser dateChFrom;
    private org.infotechservice.ICalendar.components.ICDateChooser dateChTill;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JPanel jPanel8;
    private javax.swing.JScrollPane jScrollPane1;
    private cli_fmw.utils.sorted_table.SortedTable tabMedexam;
    private javax.swing.JTextField tfClient;
    // End of variables declaration//GEN-END:variables

    @Override
    public boolean readyForPrint() {
        return true;
    }

    @Override
    public void print() {
        if (readyForPrint()) {
            //производим поиск чтоб результаты соответствовали фильтру
            btGoGoGoActionPerformed(null);
           
            HashMap<String, Object> data = new LinkedHashMap<String, Object>();           
            data.put("dateFrom", "Дата поиска с: " + Converter.dateToString(dateChFrom.getDate())
                    + "   по: " + Converter.dateToString(dateChTill.getDate()));
            if (client != null) {
                data.put("client", "по пациенту: " + client.toString());
            }
            if (cbClosedMedexam.isSelected()) {
                data.put("plusDown", "включая пройденные медосмотры приемы");
            }
            String title = "Список медицинских осмотров";
            TableReportOptions ops = new TableReportOptions(TableReportOptions.PageOrentation.horizontal);
            PrintCreators.createGeneratedReport(title, ops, data.entrySet(), null, tabMedexam.getModel(), getClass());
        }
    }

    @Override
    public DelegateLine2 getDelegate() {
        return client;
    }

}
TOP

Related Classes of clips.doctor.medexam.PanelMedexamSearch

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.