/* * OffenePflege * Copyright (C) 2006-2012 Torsten Löhr * This program is free software; you can redistribute it and/or modify it under the terms of the * GNU General Public License V2 as published by the Free Software Foundation * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General * Public License for more details. * * You should have received a copy of the GNU General Public License along with this program; if not, write to * the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA * www.offene-pflege.de * ------------------------ * Auf deutsch (freie Übersetzung. Rechtlich gilt die englische Version) * Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU General Public License, * wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, gemäß Version 2 der Lizenz. * * Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen von Nutzen sein wird, aber * OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN * BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License. * * Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem Programm erhalten haben. Falls nicht, * schreiben Sie an die Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA. * */ package op.care.info; import com.jgoodies.forms.factories.CC; import com.jgoodies.forms.layout.FormLayout; import com.jidesoft.popup.JidePopup; import entity.EntityTools; import entity.info.ICD; import entity.info.ResInfo; import entity.info.ResInfoTools; import entity.prescription.GP; import entity.prescription.GPTools; import entity.prescription.Hospital; import entity.prescription.HospitalTools; import gui.GUITools; import op.OPDE; import op.residents.PnlEditGP; import op.residents.PnlEditHospital; import op.threads.DisplayMessage; import op.tools.MyJDialog; import op.tools.SYSConst; import op.tools.SYSTools; import org.apache.commons.collections.Closure; import org.jdesktop.swingx.HorizontalLayout; import org.jdesktop.swingx.JXSearchField; import javax.persistence.EntityManager; import javax.persistence.Query; import javax.swing.*; import javax.swing.border.SoftBevelBorder; import javax.swing.event.ListSelectionListener; import java.awt.*; import java.awt.event.ActionEvent; import java.util.Properties; /** * @author root */ public class DlgDiag extends MyJDialog { public static final String internalClassID = "nursingrecords.info.dlg.diags"; private ListSelectionListener lsl; private String text; private ResInfo diag; private Closure actionBlock; /** * Creates new form DlgVorlage */ public DlgDiag(ResInfo diag, Closure actionBlock) { super(false); this.diag = diag; this.actionBlock = actionBlock; initComponents(); initDialog(); // setVisible(true); } private void initDialog() { fillCMBs(); String tooltip = SYSTools.xx("nursingrecords.info.dlg.diags.tx.tooltip").replace('[', '<').replace(']', '>'); lblTX.setToolTipText(SYSTools.toHTMLForScreen("<p style=\"width:300px;\">" + tooltip + "</p>")); txtSuche.setPrompt(SYSTools.xx("misc.msg.search")); lblDiagBy.setText(SYSTools.xx("nursingrecords.info.dlg.diags.by")); lblSide.setText(SYSTools.xx("misc.msg.diag.side")); lblSecurity.setText(SYSTools.xx("misc.msg.diag.security")); lblInterval.setText(SYSTools.xx("nursingrecords.info.dlg.interval_noconstraints")); lblInterval.setIcon(SYSConst.icon22intervalNoConstraints); reloadTable(); OPDE.getDisplayManager().addSubMessage(new DisplayMessage(SYSTools.xx("nursingrecords.info.dlg.diags"), 10)); } private void txtSucheActionPerformed(ActionEvent e) { reloadTable(); } private void btnAddGPActionPerformed(ActionEvent e) { final PnlEditGP pnlGP = new PnlEditGP(new GP()); JidePopup popup = GUITools.createPanelPopup(pnlGP, o -> { if (o != null) { GP gp = EntityTools.merge((GP) o); cmbArzt.setModel(new DefaultComboBoxModel(new GP[]{gp})); } }, btnAddGP); GUITools.showPopup(popup, SwingConstants.EAST); } private void btnAddHospitalActionPerformed(ActionEvent e) { final PnlEditHospital pnlHospital = new PnlEditHospital(new Hospital()); JidePopup popup = GUITools.createPanelPopup(pnlHospital, o -> { if (o != null) { Hospital hospital = EntityTools.merge((Hospital) o); cmbKH.setModel(new DefaultComboBoxModel(new Hospital[]{hospital})); } }, btnAddHospital); GUITools.showPopup(popup, SwingConstants.EAST); } private void fillCMBs() { EntityManager em = OPDE.createEM(); Query queryArzt = em.createQuery("SELECT a FROM GP a WHERE a.status >= 0 ORDER BY a.name, a.vorname"); java.util.List<GP> listAerzte = queryArzt.getResultList(); listAerzte.add(0, null); Query queryKH = em.createQuery("SELECT k FROM Hospital k WHERE k.state >= 0 ORDER BY k.name"); java.util.List<Hospital> listKH = queryKH.getResultList(); listKH.add(0, null); em.close(); cmbArzt.setModel(new DefaultComboBoxModel(listAerzte.toArray())); cmbArzt.setRenderer(GPTools.getRenderer()); cmbArzt.setSelectedIndex(0); cmbKH.setModel(new DefaultComboBoxModel(listKH.toArray())); cmbKH.setRenderer(HospitalTools.getKHRenderer()); cmbKH.setSelectedIndex(0); cmbSicherheit.setModel(new DefaultComboBoxModel(new String[]{ SYSTools.xx("misc.msg.diag.security.na"), SYSTools.xx("misc.msg.diag.security.confirmed"), SYSTools.xx("misc.msg.diag.security.suspected"), SYSTools.xx("misc.msg.diag.security.rulingout"), SYSTools.xx("misc.msg.diag.security.conditionafter") })); cmbSicherheit.setSelectedIndex(1); cmbKoerper.setModel(new DefaultComboBoxModel(new String[]{ SYSTools.xx("misc.msg.diag.side.na"), SYSTools.xx("misc.msg.diag.side.left"), SYSTools.xx("misc.msg.diag.side.right"), SYSTools.xx("misc.msg.diag.side.both") })); } /** * 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 PrinterForm Editor. */ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jPanel1 = new JPanel(); txtSuche = new JXSearchField(); lblTX = new JLabel(); jspDiagnosen = new JScrollPane(); lstDiag = new JList(); lblDiagBy = new JLabel(); cmbArzt = new JComboBox<>(); btnAddGP = new JButton(); cmbKH = new JComboBox<>(); btnAddHospital = new JButton(); lblSecurity = new JLabel(); lblSide = new JLabel(); cmbKoerper = new JComboBox<>(); cmbSicherheit = new JComboBox<>(); jScrollPane1 = new JScrollPane(); txtBemerkung = new JTextArea(); lblInterval = new JLabel(); panel1 = new JPanel(); btnCancel = new JButton(); btnOK = new JButton(); //======== this ======== Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout()); //======== jPanel1 ======== { jPanel1.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED)); jPanel1.setLayout(new FormLayout( "default, $lcgap, pref, $lcgap, default:grow, $ugap, pref, $lcgap, default:grow, 2*($lcgap, default)", "default, $lgap, fill:default, $lgap, fill:104dlu:grow, $lgap, fill:default, $lgap, default, $lgap, fill:default, $lgap, fill:89dlu:grow, $ugap, default, $lgap, default")); //---- txtSuche ---- txtSuche.setFont(new Font("Arial", Font.PLAIN, 14)); txtSuche.addActionListener(e -> txtSucheActionPerformed(e)); jPanel1.add(txtSuche, CC.xywh(3, 3, 7, 1)); //---- lblTX ---- lblTX.setText(null); lblTX.setIcon(new ImageIcon(getClass().getResource("/artwork/22x22/ambulance2.png"))); jPanel1.add(lblTX, CC.xy(11, 3)); //======== jspDiagnosen ======== { //---- lstDiag ---- lstDiag.setFont(new Font("Arial", Font.PLAIN, 14)); jspDiagnosen.setViewportView(lstDiag); } jPanel1.add(jspDiagnosen, CC.xywh(3, 5, 9, 1)); //---- lblDiagBy ---- lblDiagBy.setText("Festgestellt durch:"); lblDiagBy.setFont(new Font("Arial", Font.PLAIN, 14)); jPanel1.add(lblDiagBy, CC.xy(3, 7, CC.RIGHT, CC.DEFAULT)); //---- cmbArzt ---- cmbArzt.setModel(new DefaultComboBoxModel<>(new String[]{ "Item 1", "Item 2", "Item 3", "Item 4" })); cmbArzt.setFont(new Font("Arial", Font.PLAIN, 14)); jPanel1.add(cmbArzt, CC.xywh(5, 7, 5, 1)); //---- btnAddGP ---- btnAddGP.setText(null); btnAddGP.setBorder(null); btnAddGP.setContentAreaFilled(false); btnAddGP.setIcon(new ImageIcon(getClass().getResource("/artwork/22x22/bw/add.png"))); btnAddGP.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); btnAddGP.setSelectedIcon(new ImageIcon(getClass().getResource("/artwork/22x22/bw/pressed.png"))); btnAddGP.addActionListener(e -> btnAddGPActionPerformed(e)); jPanel1.add(btnAddGP, CC.xy(11, 7)); //---- cmbKH ---- cmbKH.setModel(new DefaultComboBoxModel<>(new String[]{ "Item 1", "Item 2", "Item 3", "Item 4" })); cmbKH.setFont(new Font("Arial", Font.PLAIN, 14)); jPanel1.add(cmbKH, CC.xywh(5, 9, 5, 1)); //---- btnAddHospital ---- btnAddHospital.setText(null); btnAddHospital.setIcon(new ImageIcon(getClass().getResource("/artwork/22x22/bw/add.png"))); btnAddHospital.setBorder(null); btnAddHospital.setContentAreaFilled(false); btnAddHospital.setBorderPainted(false); btnAddHospital.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); btnAddHospital.setSelectedIcon(new ImageIcon(getClass().getResource("/artwork/22x22/bw/pressed.png"))); btnAddHospital.addActionListener(e -> btnAddHospitalActionPerformed(e)); jPanel1.add(btnAddHospital, CC.xy(11, 9)); //---- lblSecurity ---- lblSecurity.setText("Diagnosesicherheit:"); lblSecurity.setFont(new Font("Arial", Font.PLAIN, 14)); jPanel1.add(lblSecurity, CC.xy(7, 11)); //---- lblSide ---- lblSide.setText("K\u00f6rperseite:"); lblSide.setFont(new Font("Arial", Font.PLAIN, 14)); jPanel1.add(lblSide, CC.xy(3, 11, CC.RIGHT, CC.DEFAULT)); //---- cmbKoerper ---- cmbKoerper.setModel(new DefaultComboBoxModel<>(new String[]{ "Nicht festgelegt", "links", "rechts", "beidseitig" })); cmbKoerper.setFont(new Font("Arial", Font.PLAIN, 14)); jPanel1.add(cmbKoerper, CC.xy(5, 11)); //---- cmbSicherheit ---- cmbSicherheit.setModel(new DefaultComboBoxModel<>(new String[]{ "Nicht festgelegt", "gesichert", "Verdacht auf", "Ausschlu\u00df von", "Zustand nach" })); cmbSicherheit.setFont(new Font("Arial", Font.PLAIN, 14)); jPanel1.add(cmbSicherheit, CC.xywh(9, 11, 3, 1)); //======== jScrollPane1 ======== { //---- txtBemerkung ---- txtBemerkung.setColumns(20); txtBemerkung.setRows(5); txtBemerkung.setFont(new Font("Arial", Font.PLAIN, 14)); jScrollPane1.setViewportView(txtBemerkung); } jPanel1.add(jScrollPane1, CC.xywh(3, 13, 9, 1)); //---- lblInterval ---- lblInterval.setText("text"); jPanel1.add(lblInterval, CC.xywh(3, 15, 5, 1)); //======== panel1 ======== { panel1.setLayout(new HorizontalLayout(5)); //---- btnCancel ---- btnCancel.setIcon(new ImageIcon(getClass().getResource("/artwork/22x22/cancel.png"))); btnCancel.setText(null); btnCancel.addActionListener(e -> btnCancelActionPerformed(e)); panel1.add(btnCancel); //---- btnOK ---- btnOK.setIcon(new ImageIcon(getClass().getResource("/artwork/22x22/apply.png"))); btnOK.setText(null); btnOK.addActionListener(e -> btnOKActionPerformed(e)); panel1.add(btnOK); } jPanel1.add(panel1, CC.xywh(7, 15, 5, 1, CC.RIGHT, CC.DEFAULT)); } contentPane.add(jPanel1, BorderLayout.CENTER); setSize(730, 565); setLocationRelativeTo(getOwner()); }// </editor-fold>//GEN-END:initComponents private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOKActionPerformed if (saveOK()) { save(); dispose(); } }//GEN-LAST:event_btnOKActionPerformed private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed diag = null; dispose(); }//GEN-LAST:event_btnCancelActionPerformed @Override public void dispose() { super.dispose(); actionBlock.execute(diag); } private boolean saveOK() { boolean saveOK = true; if (cmbArzt.getSelectedItem() == null && cmbKH.getSelectedItem() == null) { OPDE.getDisplayManager().addSubMessage(new DisplayMessage(SYSTools.xx("misc.msg.gpANDhospitalempty"))); saveOK = false; } if (lstDiag.getSelectedValue() == null) { OPDE.getDisplayManager().addSubMessage(new DisplayMessage(SYSTools.xx("nursingrecords.info.dlg.diags.emptydiag"))); saveOK = false; } return saveOK; } private void save() { GP doc = (GP) cmbArzt.getSelectedItem(); Hospital kh = (Hospital) cmbKH.getSelectedItem(); ICD icd = (ICD) lstDiag.getSelectedValue(); Properties props = new Properties(); props.put("icd", icd.getICD10()); props.put("text", icd.getText()); props.put("koerperseite", cmbKoerper.getSelectedItem()); props.put("diagnosesicherheit", cmbSicherheit.getSelectedItem()); props.put("arztid", doc == null ? "null" : doc.getArztID().toString()); props.put("khid", kh == null ? "null" : kh.getKhid().toString()); String html = ""; html += "<br/>" + SYSConst.html_bold(icd.getICD10() + ": " + icd.getText()) + "<br/>"; html += SYSTools.xx("nursingrecords.info.dlg.diags.by") + ": "; if (kh != null) { html += SYSConst.html_bold(HospitalTools.getFullName(kh)); } if (doc != null) { if (kh != null) { html += "<br/>" + SYSTools.xx("misc.msg.confirmedby") + ": "; } html += SYSConst.html_bold(GPTools.getFullName(doc)) + "<br/>"; } html += SYSTools.xx("misc.msg.diag.side") + ": " + SYSConst.html_bold(cmbKoerper.getSelectedItem().toString()) + "<br/>"; html += SYSTools.xx("misc.msg.diag.security") + ": " + SYSConst.html_bold(cmbSicherheit.getSelectedItem().toString()) + "<br/>"; ResInfoTools.setContent(diag, props); diag.setHtml(html); diag.setText(txtBemerkung.getText().trim()); } private void reloadTable() { if (txtSuche.getText().isEmpty()) { lstDiag.setModel(new DefaultListModel()); return; } EntityManager em = OPDE.createEM(); Query query = em.createQuery("SELECT i FROM ICD i WHERE i.icd10 LIKE :icd10 OR i.text like :text ORDER BY i.icd10 "); String suche = "%" + txtSuche.getText() + "%"; query.setParameter("icd10", suche); query.setParameter("text", suche); lstDiag.setModel(SYSTools.list2dlm(query.getResultList())); em.close(); lstDiag.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); } // Variables declaration - do not modify//GEN-BEGIN:variables private JPanel jPanel1; private JXSearchField txtSuche; private JLabel lblTX; private JScrollPane jspDiagnosen; private JList lstDiag; private JLabel lblDiagBy; private JComboBox<String> cmbArzt; private JButton btnAddGP; private JComboBox<String> cmbKH; private JButton btnAddHospital; private JLabel lblSecurity; private JLabel lblSide; private JComboBox<String> cmbKoerper; private JComboBox<String> cmbSicherheit; private JScrollPane jScrollPane1; private JTextArea txtBemerkung; private JLabel lblInterval; private JPanel panel1; private JButton btnCancel; private JButton btnOK; // End of variables declaration//GEN-END:variables }