1 package org
.therapi
.reha
.patient
;
5 import hauptFenster
.AktiveFenster
;
6 import hauptFenster
.Reha
;
7 import hmrCheck
.HMRCheck
;
9 import java
.awt
.BorderLayout
;
10 import java
.awt
.Component
;
11 import java
.awt
.Dimension
;
13 import java
.awt
.MouseInfo
;
14 import java
.awt
.Point
;
15 import java
.awt
.PointerInfo
;
16 import java
.awt
.Toolkit
;
17 import java
.awt
.datatransfer
.StringSelection
;
18 import java
.awt
.event
.ActionEvent
;
19 import java
.awt
.event
.ActionListener
;
20 import java
.awt
.event
.KeyAdapter
;
21 import java
.awt
.event
.KeyEvent
;
22 import java
.awt
.event
.MouseAdapter
;
23 import java
.awt
.event
.MouseEvent
;
24 import java
.awt
.event
.WindowEvent
;
25 import java
.awt
.event
.WindowListener
;
26 import java
.beans
.PropertyChangeEvent
;
27 import java
.beans
.PropertyChangeListener
;
28 import java
.text
.DecimalFormat
;
29 import java
.util
.ArrayList
;
30 import java
.util
.Arrays
;
31 import java
.util
.Collections
;
32 import java
.util
.Comparator
;
33 import java
.util
.EventObject
;
34 import java
.util
.HashMap
;
35 import java
.util
.List
;
37 import java
.util
.Vector
;
39 import javax
.mail
.MessagingException
;
40 import javax
.mail
.internet
.AddressException
;
41 import javax
.swing
.ImageIcon
;
42 import javax
.swing
.JButton
;
43 import javax
.swing
.JComponent
;
44 import javax
.swing
.JLabel
;
45 import javax
.swing
.JList
;
46 import javax
.swing
.JMenuItem
;
47 import javax
.swing
.JOptionPane
;
48 import javax
.swing
.JPopupMenu
;
49 import javax
.swing
.JScrollPane
;
50 import javax
.swing
.JToolBar
;
51 import javax
.swing
.ListSelectionModel
;
52 import javax
.swing
.SwingUtilities
;
53 import javax
.swing
.event
.ChangeEvent
;
54 import javax
.swing
.event
.ListSelectionEvent
;
55 import javax
.swing
.event
.ListSelectionListener
;
56 import javax
.swing
.event
.TableColumnModelEvent
;
57 import javax
.swing
.event
.TableModelEvent
;
58 import javax
.swing
.event
.TableModelListener
;
59 import javax
.swing
.table
.DefaultTableModel
;
60 import javax
.swing
.table
.TableCellEditor
;
61 import javax
.swing
.table
.TableCellRenderer
;
63 import jxTableTools
.MyTableStringDatePicker
;
64 import jxTableTools
.TableTool
;
65 import krankenKasse
.KassenFormulare
;
66 import oOorgTools
.OOTools
;
68 import org
.jdesktop
.swingworker
.SwingWorker
;
69 import org
.jdesktop
.swingx
.JXPanel
;
70 import org
.jdesktop
.swingx
.JXTable
;
71 import org
.jdesktop
.swingx
.decorator
.HighlighterFactory
;
72 import org
.jdesktop
.swingx
.event
.TableColumnModelExtListener
;
73 import org
.jdesktop
.swingx
.renderer
.DefaultTableRenderer
;
74 import org
.jdesktop
.swingx
.renderer
.IconValues
;
75 import org
.jdesktop
.swingx
.renderer
.MappedValue
;
76 import org
.jdesktop
.swingx
.renderer
.StringValues
;
78 import patientenFenster
.KeinRezept
;
79 import patientenFenster
.RezNeuanlage
;
80 import patientenFenster
.RezTest
;
81 import patientenFenster
.RezTestPanel
;
82 import patientenFenster
.RezeptGebuehren
;
83 import patientenFenster
.RezeptVorlage
;
84 import rechteTools
.Rechte
;
85 import CommonTools
.ExUndHop
;
86 import CommonTools
.SqlInfo
;
87 import stammDatenTools
.KasseTools
;
88 import stammDatenTools
.RezTools
;
89 import stammDatenTools
.ZuzahlTools
;
91 import systemEinstellungen
.SystemConfig
;
92 import systemEinstellungen
.SystemPreislisten
;
93 import CommonTools
.Colors
;
94 import systemTools
.IconListRenderer
;
95 import CommonTools
.JCompTools
;
96 import CommonTools
.JRtaTextField
;
97 import systemTools
.ListenerTools
;
98 import CommonTools
.StringTools
;
99 import terminKalender
.DatFunk
;
100 import CommonTools
.INIFile
;
101 import CommonTools
.INITool
;
102 import abrechnung
.AbrechnungPrivat
;
103 import abrechnung
.AbrechnungRezept
;
104 import abrechnung
.RezeptGebuehrRechnung
;
106 import com
.jgoodies
.forms
.builder
.PanelBuilder
;
107 import com
.jgoodies
.forms
.layout
.CellConstraints
;
108 import com
.jgoodies
.forms
.layout
.FormLayout
;
110 import dialoge
.PinPanel
;
111 import dialoge
.RehaSmartDialog
;
112 import dialoge
.ToolsDialog
;
113 import emailHandling
.EmailSendenExtern
;
114 import events
.RehaTPEvent
;
115 import events
.RehaTPEventClass
;
116 import events
.RehaTPEventListener
;
119 public class AktuelleRezepte
extends JXPanel
implements ListSelectionListener
,TableModelListener
,TableColumnModelExtListener
,PropertyChangeListener
, ActionListener
{
123 private static final long serialVersionUID
= 5440388431022834348L;
124 //public AktuelleRezepte aktRez = null;
125 JXPanel leerPanel
= null;
126 JXPanel vollPanel
= null;
127 JXPanel wechselPanel
= null;
128 public JLabel anzahlTermine
= null;
129 public JLabel anzahlRezepte
= null;
130 public String aktPanel
= "";
131 public JXTable tabaktrez
= null;
132 public JXTable tabaktterm
= null;
133 public MyAktRezeptTableModel dtblm
;
134 public MyTermTableModel dtermm
;
135 public TableCellEditor tbl
= null;
136 public boolean rezneugefunden
= false;
137 public boolean neuDlgOffen
= false;
138 public String
[] indphysio
= null;
139 public String
[] indergo
= null;
140 public String
[] indlogo
= null;
141 public String
[] indpodo
= null;
142 public RezeptDaten rezDatenPanel
= null;
143 public JButton
[] aktrbut
= {null,null,null,null,null,null,null,null,null};
144 public boolean suchePatUeberRez
= false;
145 public String rezAngezeigt
= "";
146 public static boolean inRezeptDaten
= false;
147 public static boolean inEinzelTermine
= false;
148 public static boolean initOk
= false;
149 public JLabel dummyLabel
= null;
150 private JRtaTextField formularid
= new JRtaTextField("NIX",false);
151 Vector
<String
> titel
= new Vector
<String
>() ;
152 Vector
<String
> formular
= new Vector
<String
>();
153 Vector
<String
> aktTerminBuffer
= new Vector
<String
>();
154 int aktuellAngezeigt
= -1;
158 int termineInTable
= 9;
160 AbrechnungRezept abrRez
= null;
163 //public boolean lneu = false;
164 public AktuelleRezepte(PatientHauptPanel eltern
){
170 setLayout(new BorderLayout());
172 leerPanel
= new KeinRezept("Keine Rezepte angelegt für diesen Patient");
173 leerPanel
.setName("leerpanel");
174 leerPanel
.setOpaque(false);
176 JXPanel allesrein
= new JXPanel(new BorderLayout());
177 allesrein
.setOpaque(false);
178 allesrein
.setBorder(null);
180 FormLayout lay
= new FormLayout("5dlu,fill:0:grow(1.00),0dlu",
181 "0dlu,p,2dlu,p,2dlu,fill:0:grow(1.00),5dlu");
182 CellConstraints cc
= new CellConstraints();
183 allesrein
.setLayout(lay
);
186 wechselPanel
= new JXPanel(new BorderLayout());
187 wechselPanel
.setOpaque(false);
188 wechselPanel
.setBorder(null);
189 //leerPanel = new KeinRezept();
191 wechselPanel
.add(leerPanel
,BorderLayout
.CENTER
);
193 aktPanel
= "leerPanel";
195 //wechselPanel.add(getDatenpanel(),BorderLayout.CENTER);
196 allesrein
.add(getToolbar(),cc
.xy(2, 2));
197 //allesrein.add(getTabelle(),cc.xy(2, 4));
198 allesrein
.add(wechselPanel
,cc
.xy(2, 6));
200 add(JCompTools
.getTransparentScrollPane(allesrein
),BorderLayout
.CENTER
);
202 final PatientHauptPanel xeltern
= eltern
;
203 new SwingWorker
<Void
,Void
>(){
206 protected Void
doInBackground() throws Exception
{
208 vollPanel
= new JXPanel();
209 // Lemmi 20110105: Layout etwas dynamischer gestaltet
210 FormLayout vplay
= new FormLayout("fill:0:grow(0.75),5dlu,fill:0:grow(0.25),5dlu","13dlu,53dlu,5dlu,fill:0:grow(1.00),0dlu");
211 //Das soll nicht "dynamische" gestaltet werden sondern genau so belassen werden
212 //wie es ist! Ansonsten muß bei den meisten Diagnosen gescrollt werden
213 //und genau das ist Murks in einer View die einem einen schnellen Gesamtüberblick verschaffen soll!
216 //FormLayout vplay = new FormLayout("fill:0:grow(0.6),5dlu,fill:0:grow(0.4),5dlu",
217 // "13dlu,53dlu,5dlu,fill:0:grow(1.00),0dlu");
218 CellConstraints vpcc
= new CellConstraints();
219 vollPanel
.setLayout(vplay
);
220 vollPanel
.setOpaque(false);
221 vollPanel
.setBorder(null);
223 Font font
= new Font("Tahome",Font
.PLAIN
,11);
224 anzahlRezepte
= new JLabel("Anzahl Rezepte: 0");
225 anzahlRezepte
.setFont(font
);
226 vollPanel
.add(anzahlRezepte
,vpcc
.xy(1,1));
227 vollPanel
.add(getTabelle(),vpcc
.xywh(1,2,1,1));
228 anzahlTermine
= new JLabel("Anzahl Termine: 0");
229 anzahlTermine
.setFont(font
);
230 anzahlTermine
.setOpaque(false);
231 vollPanel
.add(anzahlTermine
,vpcc
.xywh(3,1,1,1));
233 JXPanel dummy
= new JXPanel();
234 dummy
.setOpaque(false);
235 //dummy.setBackground(Color.BLACK);
236 FormLayout dumlay
= new FormLayout("fill:0:grow(0.25),p,fill:0:grow(0.25),p,fill:0:grow(0.25),p,fill:0:grow(0.25)",
237 "fill:0:grow(1.00),2dlu,p,2dlu");
238 CellConstraints dumcc
= new CellConstraints();
239 dummy
.setLayout(dumlay
);
240 vollPanel
.add(dummy
,vpcc
.xywh(3,2,1,3));
243 dummy
.add(getTermine(),dumcc
.xyw(1, 1, 7));
244 dummy
.add(getTerminToolbar(),dumcc
.xyw(1, 3, 7));
246 rezDatenPanel
= new RezeptDaten(xeltern
);
247 vollPanel
.add(rezDatenPanel
,vpcc
.xyw(1,4,1));
250 }catch(Exception ex
){
251 ex
.printStackTrace();
260 SwingUtilities
.invokeLater(new Runnable(){
271 public void getAktDates(){
274 public void setDtblmValues(ImageIcon ico
,int row
,int col
){
275 dtblm
.setValueAt(ico
,row
,col
);
277 public void formulareAuswerten(){
278 int row
= tabaktrez
.getSelectedRow();
281 KassenFormulare kf
= new KassenFormulare(Reha
.thisFrame
,titel
,formularid
);
282 Point pt
= aktrbut
[8].getLocationOnScreen();
283 kf
.setLocation(pt
.x
-100,pt
.y
+32);
286 if(!formularid
.getText().equals("")){
287 iformular
= Integer
.valueOf(formularid
.getText());
291 new SwingWorker
<Void
,Void
>(){
294 protected Void
doInBackground() throws Exception
{
295 RezTools
.constructRawHMap();
297 System.out.println("Anzahl Termine = "+SystemConfig.hmAdrRDaten.get("<Ranzahltage>"));
298 System.out.println("Wegpos = "+SystemConfig.hmAdrRDaten.get("<Rwegpos>"));
299 System.out.println("Wegpreis = "+SystemConfig.hmAdrRDaten.get("<Rwegpreis>"));
300 System.out.println("Rkuerzel1 = "+SystemConfig.hmAdrRDaten.get("<Rkuerzel1>"));
301 System.out.println("Rlangtext1 = "+SystemConfig.hmAdrRDaten.get("<Rlangtext1>"));
302 //RezTools.constructFormularHMap();
304 OOTools
.starteStandardFormular(Reha
.proghome
+"vorlagen/"+Reha
.aktIK
+"/"+formular
.get(iformular
),null);
317 public void setzeRezeptPanelAufNull(boolean aufnull
){
319 if(aktPanel
.equals("vollPanel")){
320 wechselPanel
.remove(vollPanel
);
321 wechselPanel
.add(leerPanel
);
322 aktPanel
= "leerPanel";
323 aktrbut
[0].setEnabled(true);
324 for(int i
= 1; i
< 9;i
++){
326 aktrbut
[i
].setEnabled(false);
327 }catch(Exception ex
){}
329 //PatGrundPanel.thisClass.jtab.setIconAt(0, SystemConfig.hmSysIcons.get("zuzahlnichtok"));
331 aktrbut
[0].setEnabled(true);
337 if(aktPanel
.equals("leerPanel")){
338 wechselPanel
.remove(leerPanel
);
339 wechselPanel
.add(vollPanel
);
340 aktPanel
= "vollPanel";
341 for(int i
= 0; i
< 9;i
++){
343 aktrbut
[i
].setEnabled(true);
344 }catch(Exception ex
){}
346 //PatGrundPanel.thisClass.jtab.setIconAt(0, SystemConfig.hmSysIcons.get("zuzahlok"));
351 public JXPanel
getDatenpanel(){
352 FormLayout datenlay
= new FormLayout("","");
353 PanelBuilder builder
= new PanelBuilder(datenlay
);
354 builder
.getPanel().setOpaque(false);
355 //CellConstraints cc = new CellConstraints();
356 JXPanel dumm
= new JXPanel(new BorderLayout());
357 dumm
.setOpaque(false);
358 dumm
.setBorder(null);
359 dumm
.add(builder
.getPanel(),BorderLayout
.CENTER
);
362 public JToolBar
getToolbar(){
363 JToolBar jtb
= new JToolBar();
364 jtb
.setOpaque(false);
365 jtb
.setRollover(true);
367 jtb
.setOpaque(false);
369 aktrbut
[0] = new JButton();
370 aktrbut
[0].setIcon(SystemConfig
.hmSysIcons
.get("neu"));
371 //Strg-Funktion in normalen Betrieben eher nutzlos und erheblich gehleranfällig /st.
372 aktrbut
[0].setToolTipText("<html>neues Rezept anlegen<br><br>" +
373 "Halten sie gleichzeitig Die Taste <b><font color='#0000ff'>Shift</font></b> gedrückt,<br>"+
374 "wird das aktuell unterlegte bzw. <font color='#0000ff'>aktive Rezept</font> das Patienten kopiert!<br><br>"+
375 "Halten sie gleichzeitig Die Taste <b><font color='#0000ff'>Strg</font></b> gedrückt,"+
376 "<br>wird <font color='#0000ff'>das jüngste Rezept</font> das Patienten kopiert!<br><br></html>"
378 aktrbut
[0].setActionCommand("rezneu");
379 aktrbut
[0].addActionListener(this);
381 aktrbut
[1] = new JButton();
382 aktrbut
[1].setIcon(SystemConfig
.hmSysIcons
.get("edit"));
383 aktrbut
[1].setToolTipText("aktuelles Rezept ändern/editieren");
384 aktrbut
[1].setActionCommand("rezedit");
385 aktrbut
[1].addActionListener(this);
387 aktrbut
[2] = new JButton();
388 aktrbut
[2].setIcon(SystemConfig
.hmSysIcons
.get("delete"));
389 aktrbut
[2].setToolTipText("aktuelles Rezept löschen");
390 aktrbut
[2].setActionCommand("rezdelete");
391 aktrbut
[2].addActionListener(this);
393 jtb
.addSeparator(new Dimension(30,0));
395 aktrbut
[8] = new JButton();
396 aktrbut
[8].setIcon(SystemConfig
.hmSysIcons
.get("print"));
397 aktrbut
[8].setToolTipText("Rezeptbezogenen Brief/Formular erstellen");
398 aktrbut
[8].setActionCommand("rezeptbrief");
399 aktrbut
[8].addActionListener(this);
402 aktrbut
[7] = new JButton();
403 aktrbut
[7].setIcon(SystemConfig
.hmSysIcons
.get("arztbericht"));
404 aktrbut
[7].setToolTipText("Arztbericht erstellen/ändern");
405 aktrbut
[7].setActionCommand("arztbericht");
406 aktrbut
[7].addActionListener(this);
408 jtb
.addSeparator(new Dimension(30,0));
410 aktrbut
[3] = new JButton();
411 aktrbut
[3].setIcon(SystemConfig
.hmSysIcons
.get("tools"));
412 aktrbut
[3].setToolTipText("Werkzeugkiste für aktuelle Rezepte");
413 aktrbut
[3].setActionCommand("werkzeuge");
414 aktrbut
[3].addActionListener(this);
420 for(int i
= 0; i
< 9;i
++){
422 aktrbut
[i
].setEnabled(false);
423 }catch(Exception ex
){};
428 // Lemmi Doku: Liste mit den aktuellen Rezepten
429 public JXPanel
getTabelle(){
430 JXPanel dummypan
= new JXPanel(new BorderLayout());
431 dummypan
.setOpaque(false);
432 dummypan
.setBorder(null);
433 dtblm
= new MyAktRezeptTableModel();
434 String
[] column
= {"Rezept-Nr.","bezahlt","Rez-Datum","angelegt am","spät.Beginn","Status","Pat-Nr.","Indi.Schl.",""};
435 dtblm
.setColumnIdentifiers(column
);
436 tabaktrez
= new JXTable(dtblm
);
437 tabaktrez
.setHighlighters(HighlighterFactory
.createSimpleStriping(Colors
.PiOrange
.alpha(0.25f
)));
438 tabaktrez
.setDoubleBuffered(true);
439 tabaktrez
.setEditable(false);
440 tabaktrez
.setSortable(false);
441 tabaktrez
.getColumn(0).setMaxWidth(75);
442 TableCellRenderer renderer
= new DefaultTableRenderer(new MappedValue(StringValues
.EMPTY
, IconValues
.ICON
), JLabel
.CENTER
);
443 tabaktrez
.getColumn(1).setCellRenderer(renderer
);
444 tabaktrez
.getColumn(1).setMaxWidth(45);
445 tabaktrez
.getColumn(3).setMaxWidth(75);
446 tabaktrez
.getColumn(5).setMaxWidth(45);
447 tabaktrez
.getColumn(5).setCellRenderer(renderer
);
449 //tabaktrez.getColumn(4).setMaxWidth(70);
450 tabaktrez
.getColumn(6).setMinWidth(0);
451 tabaktrez
.getColumn(6).setMaxWidth(0);
452 tabaktrez
.getColumn(idInTable
).setMinWidth(0);
453 tabaktrez
.getColumn(idInTable
).setMaxWidth(0);
455 tabaktrez.getColumn(1).setCellRenderer(renderer);
456 tabaktrez.getColumn(1).setMaxWidth(45);
457 tabaktrez.getColumn(3).setMaxWidth(75);
459 // Lemmi 20110105: Maximal Spaltenbreite dieser Datumsangaben auch begrenzen
460 tabaktrez.getColumn(2).setMaxWidth(75);
461 tabaktrez.getColumn(4).setMaxWidth(75);
463 tabaktrez.getColumn(5).setMaxWidth(45);
464 tabaktrez.getColumn(5).setCellRenderer(renderer);
466 //tabaktrez.getColumn(4).setMaxWidth(70);
467 tabaktrez.getColumn(6).setMinWidth(0);
468 tabaktrez.getColumn(6).setMaxWidth(0);
469 tabaktrez.getColumn(7).setMinWidth(0);
470 tabaktrez.getColumn(7).setMaxWidth(0);
471 tabaktrez.getColumn(0).setMaxWidth(75);
473 tabaktrez.getColumn(1).setCellRenderer(renderer);
474 tabaktrez.getColumn(1).setMaxWidth(45);
475 tabaktrez.getColumn(3).setMaxWidth(75);
476 tabaktrez.getColumn(5).setMaxWidth(45);
477 tabaktrez.getColumn(5).setCellRenderer(renderer);
479 //tabaktrez.getColumn(4).setMaxWidth(70);
480 tabaktrez.getColumn(6).setMinWidth(0);
481 tabaktrez.getColumn(6).setMaxWidth(0);
482 tabaktrez.getColumn(7).setMinWidth(0);
483 tabaktrez.getColumn(7).setMaxWidth(0);
485 tabaktrez
.validate();
486 tabaktrez
.setName("AktRez");
487 tabaktrez
.setSelectionMode(0);
488 //tabaktrez.addPropertyChangeListener(this);
489 tabaktrez
.getSelectionModel().addListSelectionListener( new RezepteListSelectionHandler());
490 tabaktrez
.addMouseListener(new MouseAdapter(){
491 public void mouseClicked(MouseEvent arg0
) {
492 // TODO Auto-generated method stub
493 if(arg0
.getClickCount()==2 && arg0
.getButton()==1){
494 //while(inRezeptDaten && !RezeptDaten.feddisch){
495 long zeit
= System
.currentTimeMillis();
496 while(!RezeptDaten
.feddisch
){
499 if(System
.currentTimeMillis()-zeit
> 5000){
500 JOptionPane
.showMessageDialog(null,"Fehler beim Bezug der Rezeptdaten");
503 } catch (InterruptedException e
) {
504 JOptionPane
.showMessageDialog(null,"Fehler beim Bezug der Rezeptdaten\n Bitte Administrator verständigen (Exception)\n\n"+e
.getMessage());
508 if(rezGeschlossen()){return;}
509 neuanlageRezept(false,"","");
511 if(arg0
.getClickCount()==1 && arg0
.getButton()==3){
512 if(Rechte
.hatRecht(Rechte
.Funktion_rezgebstatusedit
, false)){
513 Point point
= arg0
.getPoint();
514 int row
= tabaktrez
.rowAtPoint(point
);
516 tabaktrez
.columnAtPoint(point
);
517 tabaktrez
.setRowSelectionInterval(row
, row
);
518 ZeigePopupMenu(arg0
);
521 EmailSendenExtern oMail = new EmailSendenExtern();
522 String smtphost = SystemConfig.hmEmailExtern.get("SmtpHost");
523 String authent = SystemConfig.hmEmailExtern.get("SmtpAuth");
524 String benutzer = SystemConfig.hmEmailExtern.get("Username") ;
525 String pass1 = SystemConfig.hmEmailExtern.get("Password");
526 String sender = SystemConfig.hmEmailExtern.get("SenderAdresse");
527 String recipient = SystemConfig.hmEmailExtern.get("SenderAdresse");
528 ArrayList<String[]> attachments = new ArrayList<String[]>();
529 boolean authx = (authent.equals("0") ? false : true);
530 boolean bestaetigen = false;
532 oMail.sendMail(smtphost, benutzer, pass1, sender, recipient, "Fehler", "Rechte-Maustaste im Rezept ausgelöst",attachments,authx,bestaetigen);
533 } catch (AddressException e) {
535 } catch (MessagingException e) {
543 tabaktrez
.addKeyListener(new KeyAdapter(){
544 public void keyPressed(KeyEvent arg0
) {
545 if(arg0
.getKeyCode()==10){
547 if(rezGeschlossen()){return;}
548 neuanlageRezept(false,"","");
550 if(arg0
.getKeyCode()==27){
553 if(arg0
.getKeyCode()==65 && arg0
.isControlDown()){
560 dummypan
.setPreferredSize(new Dimension(0,100));
561 JScrollPane aktrezscr
= JCompTools
.getTransparentScrollPane((Component
)tabaktrez
);
562 aktrezscr
.getVerticalScrollBar().setUnitIncrement(15);
563 dummypan
.add(aktrezscr
,BorderLayout
.CENTER
);
567 private void ZeigePopupMenu(java
.awt
.event
.MouseEvent me
){
568 JPopupMenu jPop
= getTerminPopupMenu();
570 jPop
.show( me
.getComponent(), me
.getX(), me
.getY() );
572 private void ZeigePopupMenu2(java
.awt
.event
.MouseEvent me
){
573 JPopupMenu jPop
= getBehandlungsartLoeschenMenu();
574 jPop
.show( me
.getComponent(), me
.getX(), me
.getY() );
577 // Lemmi Doku: RMT Menü in "aktuelle Rezepte" zur Einstellung des Zuzahlungsstatus
578 private JPopupMenu
getTerminPopupMenu(){
579 JPopupMenu jPopupMenu
= new JPopupMenu();
580 // Lemmi 20101231: Icon zugefügt
581 JMenuItem item
= new JMenuItem("Zuzahlungsstatus auf befreit setzen", new ImageIcon(Reha
.proghome
+"icons/frei.png"));
582 item
.setActionCommand("statusfrei");
583 item
.addActionListener(this);
584 jPopupMenu
.add(item
);
585 // Lemmi 20101231: Icon zugefügt
586 item
= new JMenuItem("... auf bereits bezahlt setzen", new ImageIcon(Reha
.proghome
+"icons/Haken_klein.gif"));
587 item
.setActionCommand("statusbezahlt");
588 item
.addActionListener(this);
589 jPopupMenu
.add(item
);
590 // Lemmi 20101231: Icon zugefügt
591 item
= new JMenuItem("... auf nicht befreit und nicht bezahlt", new ImageIcon(Reha
.proghome
+"icons/Kreuz.png"));
592 item
.setActionCommand("statusnichtbezahlt");
593 item
.addActionListener(this);
594 jPopupMenu
.add(item
);
596 jPopupMenu
.addSeparator();
598 // Lemmi 201110106: Knopf zum Kopieren des aktiven Rezeptes zugefügt
599 item
= new JMenuItem("Angewähltes Rezept kopieren"); // new ImageIcon(Reha.proghome+"icons/Kreuz.png"));
600 item
.setActionCommand("KopiereAngewaehltes");
601 item
.addActionListener(this);
602 jPopupMenu
.add(item
);
604 // Lemmi 201110113: Knopf zum Kopieren des jüngsten Rezeptes zugefügt
605 item
= new JMenuItem("Jüngstes Rezept kopieren"); // new ImageIcon(Reha.proghome+"icons/Kreuz.png"));
606 item
.setActionCommand("KopiereLetztes");
607 item
.addActionListener(this);
608 jPopupMenu
.add(item
);
610 jPopupMenu
.addSeparator();
612 item
= new JMenuItem("Angewähltes Rezept aufteilen"); // new ImageIcon(Reha.proghome+"icons/Kreuz.png"));
613 item
.setActionCommand("RezeptTeilen");
614 item
.addActionListener(this);
615 jPopupMenu
.add(item
);
620 private JPopupMenu
getBehandlungsartLoeschenMenu(){
621 JPopupMenu jPopupMenu
= new JPopupMenu();
622 JMenuItem item
= new JMenuItem("alle im Rezept gespeicherten Behandlungsarten löschen");
623 item
.setActionCommand("deletebehandlungen");
624 item
.addActionListener(this);
625 jPopupMenu
.add(item
);
627 item
= new JMenuItem("alle Behandlungsarten den Rezeptdaten angleichen");
628 item
.setActionCommand("angleichenbehandlungen");
629 item
.addActionListener(this);
630 jPopupMenu
.add(item
);
632 jPopupMenu
.addSeparator();
634 // vvv Lemmi 20110105: aktuellen Behandler auf alle leeren Behandler kopieren
635 item
= new JMenuItem("gewählten Behandler in alle leeren Behandler-Felder kopieren");
636 item
.setActionCommand("behandlerkopieren");
637 // aktuell gewählte Zeile finden - mit Sicherung, wenn keine angewählt worden ist !
638 int iPos
= tabaktterm
.getSelectedRow();
639 if ( iPos
< 0 || iPos
>= tabaktterm
.getRowCount() || tabaktterm
.getStringAt(tabaktterm
.getSelectedRow(), 1).isEmpty() )
640 item
.setEnabled(false);
641 item
.addActionListener(this);
642 jPopupMenu
.add(item
);
643 // ^^^ Lemmi 20110105: aktuellen Behandler auf alle leeren Behandler kopieren
647 public JToolBar
getTerminToolbar(){
648 JToolBar jtb
= new JToolBar();
649 jtb
.setOpaque(false);
650 jtb
.setRollover(true);
652 jtb
.setOpaque(false);
654 JButton jbut
= new JButton();
655 jbut
.setIcon(SystemConfig
.hmSysIcons
.get("neu"));
656 jbut
.setToolTipText("Neuen Termin eintragen");
657 jbut
.setActionCommand("terminplus");
658 jbut
.addActionListener(this);
660 jbut
= new JButton();
661 jbut
.setIcon(SystemConfig
.hmSysIcons
.get("delete"));
662 jbut
.setToolTipText("Termin löschen");
663 jbut
.setActionCommand("terminminus");
664 jbut
.addActionListener(this);
666 jtb
.addSeparator(new Dimension(40,0));
667 jbut
= new JButton();
668 jbut
.setIcon(SystemConfig
.hmSysIcons
.get("sort"));
670 jbut
.setActionCommand("terminsortieren");
671 jbut
.addActionListener(this);
672 jbut
.setToolTipText("Termine nach Datum sortieren");
677 // Lemmi-Doku: Liste mit den Terminen am aktuellen Rezept
678 public JScrollPane
getTermine(){
680 dtermm
= new MyTermTableModel();
681 dtermm
.addTableModelListener(this);
682 String
[] column
= {"Beh.Datum","Behandler","Text","Beh.Art",""};
683 dtermm
.setColumnIdentifiers(column
);
684 tabaktterm
= new JXTable(dtermm
){
689 private static final long serialVersionUID
= 1L;
691 public boolean editCellAt(int row
, int column
, EventObject e
) {
692 ////System.out.println("edit! in Zeile: "+row+" Spalte: "+column);
693 ////System.out.println("Event = "+e);
696 ////System.out.println("edit! in Zeile: "+row+" Spalte: "+column);
698 if (e
instanceof MouseEvent
) {
699 MouseEvent mouseEvent
= (MouseEvent
) e
;
700 if (mouseEvent
.getClickCount() > 1) {
701 //System.out.println("edit!");
702 return super.editCellAt(row
, column
, e
);
704 }else if (e
instanceof KeyEvent
) {
705 KeyEvent keyEvent
= (KeyEvent
) e
;
706 if (keyEvent
.getKeyChar()==10) {
707 //System.out.println("edit!");
708 return super.editCellAt(row
, column
, e
);
717 //abaktterm.setSurrendersFocusOnKeystroke(false);
718 //tabaktterm.setVerifyInputWhenFocusTarget(true);
720 tabaktterm
.setHighlighters(HighlighterFactory
.createSimpleStriping(Colors
.PiOrange
.alpha(0.25f
)));
721 tabaktterm
.setDoubleBuffered(true);
722 tabaktterm
.addPropertyChangeListener(this);
723 tabaktterm
.setEditable(true);
724 tabaktterm
.setSortable(false);
725 //SortOrder setSort = SortOrder.ASCENDING;
726 //tabaktterm.setSortOrder(4,(SortOrder) setSort);
727 tabaktterm
.setSelectionMode(0);
728 tabaktterm
.setHorizontalScrollEnabled(true);
731 //tbl = new DateTableCellEditor();
732 //tabaktterm.getColumnModel().getColumn(0).setCellEditor(tbl);
733 //tabaktterm.getColumnModel().getColumn(0).setCellEditor(tbl);
735 MyTableStringDatePicker pic
= new MyTableStringDatePicker();
736 tabaktterm
.getColumnModel().getColumn(0).setCellEditor(pic
);
738 //tabaktterm.getColumn(0).setCellEditor(new DatumTableCellEditor(new JFormattedTextField()));
739 //tabaktterm.getColumnModel().getColumn(0).setCellEditor(new DatumTableCellEditor(new JFormattedTextField()));
740 //tabaktterm.getColumn(0).setCellEditor(new MyDateEditor(new SimpleDateFormat("dd.mm.yyyyy")));
741 tabaktterm
.setAutoStartEditOnKeyStroke(true);
742 tabaktterm
.getColumn(0).setMinWidth(40);
744 // vvv Lemmi 20110105: Layout etwas dynamischer gestaltet
745 tabaktterm
.getColumn(0).setMaxWidth(80);
746 tabaktterm
.getColumn(1).setMaxWidth(80);
747 // ^^^ Lemmi 20110105: Layout etwas dynamischer gestaltet
749 tabaktterm
.getColumn(1).setMinWidth(60);
750 tabaktterm
.getColumn(2).setMinWidth(40);
751 tabaktterm
.getColumn(3).setMinWidth(40);
752 tabaktterm
.getColumn(4).setMinWidth(0);
753 tabaktterm
.getColumn(4).setMaxWidth(0);
754 tabaktterm
.setOpaque(true);
755 tabaktterm
.setAutoStartEditOnKeyStroke(false);
756 tabaktterm
.addMouseListener(new MouseAdapter(){
758 public void mousePressed(MouseEvent arg0
){
760 //tabaktterm.requestFocus();
761 final MouseEvent xarg0
= arg0
;
762 SwingUtilities
.invokeLater(new Runnable(){
764 if(xarg0
.getButton() == 1){
765 int row
= tabaktterm
.getSelectedRow();
766 int col
= tabaktterm
.getSelectedColumn();
768 tabaktterm
.setRowSelectionInterval(row
, row
);
769 tabaktterm
.setColumnSelectionInterval(col
, col
);
776 if(arg0.getClickCount()==2 ){
777 startCellEditing(tabaktterm,row,col);
781 public void mouseReleased(MouseEvent arg0
){
784 public void mouseClicked(MouseEvent arg0
) {
786 //System.out.println("Im eigenen Mouseadapter");
787 if(arg0
.getClickCount()==2){
788 SwingUtilities
.invokeLater(new Runnable(){
790 int row
= tabaktterm
.getSelectedRow();
791 int col
= tabaktterm
.getSelectedColumn();
793 startCellEditing(tabaktterm
,row
,col
);
799 if(arg0
.getButton()==3){
800 if(!Rechte
.hatRecht(Rechte
.Sonstiges_rezeptbehandlungsartloeschen
, false)){
803 ZeigePopupMenu2(arg0
);
807 tabaktterm
.addKeyListener(new KeyAdapter(){
808 public void keyPressed(KeyEvent arg0
) {
809 // TODO Auto-generated method stub
810 ////System.out.println("keypressed in Editor");
811 if(arg0
.getKeyCode()==10){
813 //tbl.stopCellEditing();
814 }else if(arg0
.getKeyCode()==27){
816 ////System.out.println("cancel in tabelle");
817 tbl
.cancelCellEditing();
819 int row = tabaktterm.getSelectedRow();
820 int col = tabaktterm.getSelectedColumn();
821 boolean success = tabaktterm.editCellAt(row, col);
824 boolean toggle = false;
825 boolean extend = false;
826 tabaktterm.changeSelection(row, col, toggle, extend);
828 // Cell could not be edited
836 tabaktterm
.validate();
837 tabaktterm
.setName("AktTerm");
838 //tabaktterm.setPreferredSize(new Dimension(300,300));
839 //tabaktterm.addPropertyChangeListener(this);
840 JScrollPane termscr
= JCompTools
.getTransparentScrollPane(tabaktterm
);
841 termscr
.getVerticalScrollBar().setUnitIncrement(15);
844 private void startCellEditing(JXTable table
,int row
,int col
){
845 final int xrows
= row
;
846 final int xcols
= col
;
847 final JXTable xtable
= table
;
848 SwingUtilities
.invokeLater(new Runnable(){
850 //xtable.setRowSelectionInterval(xrows, xrows);
851 //xtable.setColumnSelectionInterval(xcols, xcols);
852 //xtable.scrollRowToVisible(xrows);
853 xtable
.editCellAt(xrows
,xcols
);
859 private String
macheHtmlTitel(int anz
,String titel
){
861 String ret
= titel
+" - "+Integer
.toString(anz
);
864 String ret = "<html>"+titel+
865 (anz > 0 ? " - <font color='#ff0000'>"+Integer.valueOf(anz).toString()+"<font></html>" : " - <font color='#000000'>"+Integer.valueOf(anz).toString()+"</font>");
870 public void holeRezepte(String patint
,String rez_nr
){
871 final String xpatint
= patint
;
872 final String xrez_nr
= rez_nr
;
874 new SwingWorker
<Void
,Void
>(){
875 @SuppressWarnings("rawtypes")
877 protected Void
doInBackground() throws Exception
{
879 aktTerminBuffer
.clear();
880 aktTerminBuffer
.trimToSize();
882 //String sstmt = "select * from verordn where PAT_INTERN ='"+xpatint+"' ORDER BY REZ_DATUM";
883 Vector
<Vector
<String
>> vec
= SqlInfo
.holeSaetze("verordn", "rez_nr,zzstatus,DATE_FORMAT(rez_datum,'%d.%m.%Y') AS drez_datum,DATE_FORMAT(datum,'%d.%m.%Y') AS datum," +
884 "DATE_FORMAT(lastdate,'%d.%m.%Y') AS datum,abschluss,pat_intern,indikatschl,id,termine",
885 "pat_intern='"+xpatint
+"' ORDER BY rez_datum", Arrays
.asList(new String
[]{}));
886 int anz
= vec
.size();
888 for(int i
= 0; i
< anz
;i
++){
890 dtblm
.setRowCount(0);
892 aktTerminBuffer
.add(String
.valueOf(vec
.get(i
).get(termineInTable
)));
895 if( ((Vector
)vec
.get(i
)).get(1) == null){
897 }else if(!((Vector
)vec
.get(i
)).get(1).equals("")){
898 zzbild
= Integer
.valueOf((String
) ((Vector
)vec
.get(i
)).get(1) );
900 if(((Vector
)vec
.get(i
)).get(5).equals("T")){
903 //((Vector)vec.get(i)).set(3, PatGrundPanel.thisClass.imgzuzahl[zzbild]);
905 ////System.out.println("Inhalt von zzstatus ="+zzbild);
906 dtblm
.addRow((Vector
)vec
.get(i
));
908 dtblm
.setValueAt(Reha
.thisClass
.patpanel
.imgzuzahl
[zzbild
], i
, 1);
909 dtblm
.setValueAt(Reha
.thisClass
.patpanel
.imgrezstatus
[rezstatus
],i
,5);
911 if(vec
.get(i
).get(0).startsWith("RH") && Reha
.thisClass
.dta301panel
!= null){
912 final String testreznum
= String
.valueOf(vec
.get(i
).get(0));
913 new SwingWorker
<Void
,Void
>(){
915 protected Void
doInBackground()
917 Reha
.thisClass
.dta301panel
.aktualisieren(testreznum
);
925 if(suchePatUeberRez
){
926 suchePatUeberRez
= false;
929 if(!inEinzelTermine){
930 new SwingWorker<Void,Void>(){
932 protected Void doInBackground()
935 inEinzelTermine = true;
936 holeEinzelTermine(ix,null,"aus suche (hole Rezepte)");
937 inEinzelTermine = false;
938 }catch(Exception ex){
939 inEinzelTermine = false;
950 /************** Bis hierher hat man die Sätze eingelesen ********************/
952 Reha
.thisClass
.patpanel
.multiTab
.setTitleAt(0,macheHtmlTitel(anz
,"aktuelle Rezepte"));
953 }catch(Exception ex
){
954 System
.out
.println("Timingprobleme beim setzen des Reitertitels - Reiter: aktuelle Rezepte");
958 setzeRezeptPanelAufNull(false);
960 if(xrez_nr
.length() > 0){
962 rezneugefunden
= true;
963 for(int ii
= 0; ii
< anz
;ii
++){
964 if(tabaktrez
.getValueAt(ii
,0).equals(xrez_nr
)){
970 //tabaktrez.setRowSelectionInterval(row, row);
971 Reha
.thisClass
.patpanel
.vecaktrez
= ((Vector
<String
>)SqlInfo
.holeSatz("verordn", " * ", "id = '"+(String
)tabaktrez
.getValueAt(row
, idInTable
)+"'", Arrays
.asList(new String
[] {}) ));
972 rezDatenPanel
.setRezeptDaten((String
)tabaktrez
.getValueAt(row
, 0),(String
)tabaktrez
.getValueAt(row
, idInTable
));
973 //RezTools.constructRawHMap();
975 if(!inEinzelTermine){
977 inEinzelTermine = true;
978 holeEinzelTermine(row,null,"in if anz > 0 ebenfalls in hole rezepte");
979 inEinzelTermine = false;
980 }catch(Exception ex){
981 inEinzelTermine = false;
985 ////System.out.println("rezeptdaten akutalisieren in holeRezepte 1");
987 rezneugefunden
= true;
988 //tabaktrez.setRowSelectionInterval(0, 0);
989 Reha
.thisClass
.patpanel
.vecaktrez
= ((Vector
<String
>)SqlInfo
.holeSatz("verordn", " * ", "id = '"+(String
)tabaktrez
.getValueAt(row
, idInTable
)+"'", Arrays
.asList(new String
[] {}) ));
990 rezDatenPanel
.setRezeptDaten((String
)tabaktrez
.getValueAt(0, 0),(String
)tabaktrez
.getValueAt(0, idInTable
));
991 //RezTools.constructRawHMap();
992 ////System.out.println("rezeptdaten akutalisieren in holeRezepte 1");
996 if(! inEinzelTermine
){
997 inEinzelTermine
= true;
999 if(aktTerminBuffer
.size() > row
){
1000 holeEinzelTermineAusRezept("",aktTerminBuffer
.get(row
));
1002 termineInTabelle( null);
1005 }catch(Exception ex
){
1006 ex
.printStackTrace();
1007 //JOptionPane.showMessageDialog(null, "Fehler in holeEinzelTermine-1");
1008 //JOptionPane.showMessageDialog(null, ex.getMessage());
1010 aktuellAngezeigt
= row
;
1011 //holeEinzelTermineAktuell(0,null,aktTerminBuffer.get(row));
1012 tabaktrez
.setRowSelectionInterval(row
, row
);
1013 tabaktrez
.scrollRowToVisible(row
);
1014 rezAngezeigt
= tabaktrez
.getValueAt(row
,0).toString().trim();
1015 inEinzelTermine
= false;
1018 }catch(Exception ex
){
1019 JOptionPane
.showMessageDialog(null, "Fehler in holeEinzelTermine-2");
1020 JOptionPane
.showMessageDialog(null, ex
.getMessage());
1021 inEinzelTermine
= false;
1024 anzahlRezepte
.setText("Anzahl Rezepte: "+anz
);
1025 wechselPanel
.revalidate();
1026 wechselPanel
.repaint();
1029 setzeRezeptPanelAufNull(true);
1031 anzahlRezepte
.setText("Anzahl Rezepte: "+anz
);
1032 wechselPanel
.revalidate();
1033 wechselPanel
.repaint();
1034 dtblm
.setRowCount(0);
1035 dtermm
.setRowCount(0);
1036 aktuellAngezeigt
= -1;
1037 if(Reha
.thisClass
.patpanel
.vecaktrez
!= null){
1038 Reha
.thisClass
.patpanel
.vecaktrez
.clear();
1041 }catch(Exception ex
){
1042 ex
.printStackTrace();
1043 JOptionPane
.showMessageDialog(null,"Fehler in der Funktion holeRezepte()");
1044 inEinzelTermine
= false;
1052 public void setzeKarteiLasche(){
1053 if(tabaktrez
.getRowCount()==0){
1054 holeRezepte(Reha
.thisClass
.patpanel
.patDaten
.get(29),"");
1055 Reha
.thisClass
.patpanel
.multiTab
.setTitleAt(0,macheHtmlTitel(tabaktrez
.getRowCount(),"aktuelle Rezepte"));
1057 Reha
.thisClass
.patpanel
.multiTab
.setTitleAt(0,macheHtmlTitel(tabaktrez
.getRowCount(),"aktuelle Rezepte"));
1060 public void aktualisiereVector(String rid
){
1062 Reha
.thisClass
.patpanel
.vecaktrez
= ((Vector
<String
>)SqlInfo
.holeSatz("verordn", " * ", "id = '"+rid
+"'", Arrays
.asList(strg
) ));
1065 public void setRezeptDaten(){
1066 int row
= this.tabaktrez
.getSelectedRow();
1068 //final int xrow = row;
1069 String reznr
= (String
)tabaktrez
.getValueAt(row
,0);
1070 rezAngezeigt
= reznr
;
1071 String id
= (String
)tabaktrez
.getValueAt(row
,idInTable
);
1072 rezDatenPanel
.setRezeptDaten(reznr
,id
);
1075 public void updateEinzelTermine(String einzel
){
1076 String
[] tlines
= einzel
.split("\n");
1077 int lines
= tlines
.length
;
1078 ////System.out.println("Anzahl Termine = "+lines);
1079 Vector
<String
> tvec
= new Vector
<String
>();
1080 dtermm
.setRowCount(0);
1081 String
[] terdat
= null;
1082 for(int i
= 0;i
<lines
;i
++){
1083 terdat
= tlines
[i
].split("@");
1084 int ieinzel
= terdat
.length
;
1085 ////System.out.println("Anzahl Splits = "+ieinzel);
1087 for(int y
= 0; y
< ieinzel
;y
++){
1089 tvec
.add(String
.valueOf((terdat
[y
].trim().equals("") ?
" . . " : terdat
[y
])));
1091 SystemConfig
.hmAdrRDaten
.put("<Rerstdat>",(terdat
[y
].trim().equals("") ?
" . . " : terdat
[y
]));
1094 tvec
.add(terdat
[y
]);
1096 ////System.out.println("Feld "+y+" = "+terdat[y]);
1098 ////System.out.println("Termivector = "+tvec);
1099 dtermm
.addRow((Vector
<?
>)tvec
.clone());
1101 tabaktterm
.validate();
1102 tabaktterm
.repaint();
1103 anzahlTermine
.setText("Anzahl Termine: "+lines
);
1105 tabaktterm
.setRowSelectionInterval(lines
-1, lines
-1);
1107 SystemConfig
.hmAdrRDaten
.put("<Rletztdat>",(terdat
[0].trim().equals("") ?
" . . " : terdat
[0]));
1108 SystemConfig
.hmAdrRDaten
.put("<Ranzahltage>", Integer
.toString(lines
));
1111 public void setzeBild(int satz
,int icon
){
1112 dtblm
.setValueAt(Reha
.thisClass
.patpanel
.imgzuzahl
[icon
],satz
,1);
1113 tabaktrez
.validate();
1114 tabaktrez
.repaint();
1116 private void termineAufNull(){
1117 dtermm
.setRowCount(0);
1118 tabaktterm
.validate();
1119 anzahlTermine
.setText("Anzahl Termine: 0");
1120 SystemConfig
.hmAdrRDaten
.put("<Rletztdat>","");
1121 SystemConfig
.hmAdrRDaten
.put("<Rerstdat>","");
1122 SystemConfig
.hmAdrRDaten
.put("<Ranzahltage>","0");
1124 @SuppressWarnings({ "unchecked", "rawtypes" })
1125 public void holeEinzelTermineAusRezept(String xreznr
,String termine
){
1127 Vector
<String
> xvec
= null;
1128 Vector
<Vector
<String
>> retvec
= new Vector
<Vector
<String
>>();
1129 String terms
= null;
1130 if(termine
== null){
1131 xvec
= SqlInfo
.holeSatz("verordn", "termine,pat_intern", "rez_nr='"+xreznr
+"'", Arrays
.asList(new String
[] {}));
1136 terms
= (String
) xvec
.get(0);
1145 if(terms
.equals("")){
1149 String
[] tlines
= terms
.split("\n");
1150 int lines
= tlines
.length
;
1151 Vector
<String
> tvec
= new Vector
<String
>();
1154 for(int i
= 0;i
<lines
;i
++){
1156 String
[] terdat
= tlines
[i
].split("@");
1157 int ieinzel
= terdat
.length
;
1158 for(int y
= 0; y
< ieinzel
;y
++){
1160 tvec
.add(String
.valueOf((terdat
[y
].trim().equals("") ?
" . . " : terdat
[y
])));
1161 stage
=stage
+(i
>0 ?
", " : "")+(terdat
[y
].trim().equals("") ?
" . . " : terdat
[y
]);
1163 tvec
.add(String
.valueOf(terdat
[y
]));
1166 retvec
.add((Vector
<String
>)tvec
.clone());
1169 SystemConfig
.hmAdrRDaten
.put("<Rtage>", String
.valueOf(stage
));
1170 Comparator
<Vector
> comparator
= new Comparator
<Vector
>() {
1172 public int compare(Vector o1
, Vector o2
) {
1173 // TODO Auto-generated method stub
1174 String s1
= (String
)o1
.get(4);
1175 String s2
= (String
)o2
.get(4);
1176 return s1
.compareTo(s2
);
1179 Collections
.sort(retvec
,comparator
);
1180 //System.out.println(retvec);
1181 termineInTabelle((Vector
)retvec
.clone());
1182 }catch(Exception ex
){
1183 ex
.printStackTrace();
1184 termineInTabelle(null);
1187 private void termineInTabelle( Vector
<Vector
<String
>> terms
){
1188 dtermm
.setRowCount(0);
1189 //System.out.println(terms);
1191 for(int i
= 0; i
< terms
.size();i
++){
1193 SystemConfig
.hmAdrRDaten
.put("<Rerstdat>",(terms
.get(i
).get(0).equals("") ?
" . . " : String
.valueOf(terms
.get(i
).get(0))) );
1195 dtermm
.addRow((Vector
<?
>)terms
.get(i
));
1197 SystemConfig
.hmAdrRDaten
.put("<Rletztdat>",(terms
.get(terms
.size()-1).get(0).equals("") ?
" . . " : String
.valueOf(terms
.get(terms
.size()-1).get(0))) );
1198 tabaktterm
.validate();
1199 anzahlTermine
.setText("Anzahl Termine: "+terms
.size());
1200 SystemConfig
.hmAdrRDaten
.put("<Ranzahltage>",Integer
.toString(terms
.size()));
1202 SystemConfig
.hmAdrRDaten
.put("<Rletztdat>", " . . " );
1203 tabaktterm
.validate();
1204 anzahlTermine
.setText("Anzahl Termine: "+"0");
1205 SystemConfig
.hmAdrRDaten
.put("<Ranzahltage>","0");
1208 @SuppressWarnings({ "unchecked", "unused" })
1209 private void holeEinzelTermineAktuell(int row
,Vector
<String
> vvec
,String aufruf
){
1210 //System.out.println("Aufruf aus --> "+aufruf);
1211 inEinzelTermine
= true;
1212 Vector
<String
> xvec
= null;
1214 xvec
= (Vector
<String
>) SqlInfo
.holeSatz("verordn", "termine", "id='"+tabaktrez
.getValueAt(row
,idInTable
)+"'", Arrays
.asList(new String
[] {}));
1219 String terms
= (String
) xvec
.get(0);
1220 ////System.out.println(terms+" / id der rezeptes = "+tabaktrez.getValueAt(row,4));
1221 ////System.out.println("Inhalt von Termine = *********\n"+terms+"**********");
1223 dtermm
.setRowCount(0);
1224 tabaktterm
.validate();
1225 anzahlTermine
.setText("Anzahl Termine: 0");
1226 SystemConfig
.hmAdrRDaten
.put("<Rletztdat>","");
1227 SystemConfig
.hmAdrRDaten
.put("<Rerstdat>","");
1228 SystemConfig
.hmAdrRDaten
.put("<Ranzahltage>","0");
1229 inEinzelTermine
= false;
1232 if(terms
.equals("")){
1233 dtermm
.setRowCount(0);
1234 tabaktterm
.validate();
1235 anzahlTermine
.setText("Anzahl Termine: 0");
1236 SystemConfig
.hmAdrRDaten
.put("<Rletztdat>","");
1237 SystemConfig
.hmAdrRDaten
.put("<Rerstdat>","");
1238 SystemConfig
.hmAdrRDaten
.put("<Ranzahltage>","0");
1239 inEinzelTermine
= false;
1242 String
[] tlines
= terms
.split("\n");
1243 int lines
= tlines
.length
;
1244 ////System.out.println("Anzahl Termine = "+lines);
1245 @SuppressWarnings("rawtypes")
1246 Vector tvec
= new Vector();
1247 dtermm
.setRowCount(0);
1248 String
[] terdat
= null;
1249 for(int i
= 0;i
<lines
;i
++){
1250 terdat
= tlines
[i
].split("@");
1251 int ieinzel
= terdat
.length
;
1252 ////System.out.println("Anzahl Splits = "+ieinzel);
1254 for(int y
= 0; y
< ieinzel
;y
++){
1256 tvec
.add(String
.valueOf((terdat
[y
].trim().equals("") ?
" . . " : terdat
[y
])));
1258 SystemConfig
.hmAdrRDaten
.put("<Rerstdat>",String
.valueOf((terdat
[y
].trim().equals("") ?
" . . " : terdat
[y
])));
1261 tvec
.add(String
.valueOf(terdat
[y
]));
1264 dtermm
.addRow((Vector
<?
>)tvec
.clone());
1266 tabaktterm
.validate();
1267 tabaktterm
.repaint();
1268 anzahlTermine
.setText("Anzahl Terimine: "+lines
);
1270 //tabaktterm.setRowSelectionInterval(lines-1, lines-1);
1272 SystemConfig
.hmAdrRDaten
.put("<Rletztdat>",(terdat
[0].trim().equals("") ?
" . . " : terdat
[0]));
1273 SystemConfig
.hmAdrRDaten
.put("<Ranzahltage>",Integer
.toString(lines
));
1274 inEinzelTermine
= false;
1277 public void termineSpeichern(){
1278 int reihen
= dtermm
.getRowCount();
1279 StringBuffer sb
= new StringBuffer();
1281 for(int i
= 0;i
<reihen
;i
++){
1282 sdat
= (dtermm
.getValueAt(i
,0)!= null ?
((String
)dtermm
.getValueAt(i
,0)).trim() : ". .");
1283 if(i
==0){SystemConfig
.hmAdrRDaten
.put("<Rerstdat>",sdat
);}
1284 if(i
==(reihen
-1)){SystemConfig
.hmAdrRDaten
.put("<Rletztdat>",sdat
);}
1286 dtermm
.setValueAt((sdat
.equals(". .") ?
" " : DatFunk
.sDatInSQL(sdat
)), i
, 4);
1287 sb
.append((sdat
.equals(". .") ?
" . . @" : sdat
)+"@");
1288 sb
.append((dtermm
.getValueAt(i
,1)!= null ?
((String
)dtermm
.getValueAt(i
,1)).trim() : "")+"@");
1289 sb
.append((dtermm
.getValueAt(i
,2)!= null ?
((String
)dtermm
.getValueAt(i
,2)).trim() : "")+"@");
1290 sb
.append((dtermm
.getValueAt(i
,3)!= null ?
((String
)dtermm
.getValueAt(i
,3)).trim() : "")+"@");
1291 sb
.append((dtermm
.getValueAt(i
,4)!= null ?
((String
)dtermm
.getValueAt(i
,4)).trim() : "")+"\n");
1293 SystemConfig
.hmAdrRDaten
.put("<Ranzahltage>",Integer
.toString(reihen
));
1294 SqlInfo
.aktualisiereSatz("verordn", "termine='"+sb
.toString()+"'","id='"+(String
)tabaktrez
.getValueAt(tabaktrez
.getSelectedRow(), idInTable
)+"'");
1295 Reha
.thisClass
.patpanel
.vecaktrez
.set(34,sb
.toString());
1296 if(aktuellAngezeigt
>=0){
1298 aktTerminBuffer
.set(aktuellAngezeigt
, sb
.toString());
1299 }catch(Exception ex
){
1300 ex
.printStackTrace();
1305 public void propertyChange(PropertyChangeEvent arg0
) {
1308 public void tableChanged(TableModelEvent arg0
) {
1309 //boolean update = false;
1310 //int fi = arg0.getFirstRow();
1311 //int fl = arg0.getLastRow();
1312 int col
= arg0
.getColumn();
1313 int type
= arg0
.getType();
1315 String stype; // = "";
1316 if(type == TableModelEvent.UPDATE){
1319 if(type == TableModelEvent.INSERT){
1322 if(type == TableModelEvent.DELETE){
1327 if( (col
>= 0 && col
< 4 && type
== TableModelEvent
.UPDATE
) ){
1328 final int xcol
= col
;
1343 private void starteTests(){
1346 //System.out.println("Hier den Termintest");
1347 if(Reha
.thisClass
.patpanel
.vecaktrez
.get(60).equals("T")){
1348 Vector
<String
>tage
= new Vector
<String
>();
1349 Vector
<?
> v
= dtermm
.getDataVector();
1350 for(int i
= 0; i
< v
.size();i
++){
1351 tage
.add((String
) ((Vector
<?
>)v
.get(i
)).get(0));
1353 /*Object[] ret = */ZuzahlTools
.unter18TestDirekt(tage
,true,false);
1354 //String resultgleich = "";
1356 if(!Reha
.thisClass
.patpanel
.patDaten
.get(69).equals("")){
1357 ZuzahlTools
.jahresWechselTest((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1),true,false);
1364 public void valueChanged(ListSelectionEvent arg0
) {
1366 if( (/*index = */arg0
.getFirstIndex()) >= 0){
1367 if(! arg0
.getValueIsAdjusting()){
1373 class RezepteListSelectionHandler
implements ListSelectionListener
{
1375 public void valueChanged(ListSelectionEvent e
) {
1377 rezneugefunden
= false;
1380 if(!RezeptDaten
.feddisch
){
1383 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
1385 //int firstIndex = e.getFirstIndex();
1386 //int lastIndex = e.getLastIndex();
1387 boolean isAdjusting
= e
.getValueIsAdjusting();
1391 //StringBuffer output = new StringBuffer();
1392 if (lsm
.isSelectionEmpty()) {
1395 int minIndex
= lsm
.getMinSelectionIndex();
1396 int maxIndex
= lsm
.getMaxSelectionIndex();
1397 for (int i
= minIndex
; i
<= maxIndex
; i
++) {
1398 if (lsm
.isSelectedIndex(i
)) {
1399 RezeptDaten
.feddisch
= false;
1401 new SwingWorker
<Void
,Void
>(){
1403 protected Void
doInBackground() throws Exception
{
1405 if(suchePatUeberRez
){
1406 suchePatUeberRez
= false;
1409 setCursor(Reha
.thisClass
.wartenCursor
);
1410 if(!inEinzelTermine
){
1412 inEinzelTermine
= true;
1413 //holeEinzelTermineAktuell(0,null,aktTerminBuffer.get(ix));
1414 //holeEinzelTermine(ix,null,"aus rezeptselect Listener");
1415 //System.out.println(aktTerminBuffer.get(ix));
1417 holeEinzelTermineAusRezept("",aktTerminBuffer
.get(ix
));
1418 }catch(Exception ex
){
1419 ex
.printStackTrace();
1421 aktuellAngezeigt
= ix
;
1422 inEinzelTermine
= false;
1424 }catch(Exception ex
){
1425 inEinzelTermine
= false;
1428 Reha
.thisClass
.patpanel
.vecaktrez
= ((Vector
<String
>)SqlInfo
.holeSatz("verordn", " * ", "id = '"+(String
)tabaktrez
.getValueAt(ix
, idInTable
)+"'", Arrays
.asList(new String
[] {}) ));
1429 Reha
.thisClass
.patpanel
.aktRezept
.rezAngezeigt
= (String
)tabaktrez
.getValueAt(ix
, 0);
1430 rezDatenPanel
.setRezeptDaten((String
)tabaktrez
.getValueAt(ix
, 0),(String
)tabaktrez
.getValueAt(ix
, idInTable
));
1431 setCursor(Reha
.thisClass
.normalCursor
);
1432 final String testreznum
= (String
)tabaktrez
.getValueAt(ix
, 0).toString();
1433 //System.out.println("**********"+testreznum+" "+Reha.thisClass.dta301panel);
1434 new SwingWorker
<Void
,Void
>(){
1436 protected Void
doInBackground()
1439 if( (testreznum
.startsWith("RH")) && (Reha
.thisClass
.dta301panel
!= null) ){
1440 Reha
.thisClass
.dta301panel
.aktualisieren(testreznum
);
1442 //RezTools.constructRawHMap();
1443 }catch(Exception ex
){
1444 ex
.printStackTrace();
1450 }catch(Exception ex
){
1451 setCursor(Reha
.thisClass
.normalCursor
);
1452 ex
.printStackTrace();
1453 inEinzelTermine
= false;
1454 //JOptionPane.showMessageDialog(null, "Fehler im ListSelection-Listener aktuelle Rezepte");
1464 ////System.out.println(output.toString());
1468 public void indiSchluessel(){
1469 indphysio
= new String
[] {
1471 "AT1 a","AT1 b","AT1 c",
1472 "AT2 a","AT2 b","AT2 c",
1473 "AT3 a","AT3 b","AT3 c",
1475 "EX1 a","EX1 b","EX1 c",
1476 "EX2 a","EX2 b","EX2 c","EX2 d",
1477 "EX3 a","EX3 b","EX3 c","EX3 d",
1480 "LY1 a", "LY1 b","LY2 a","LY3 a",
1481 "PN a","PN b","PN c",
1482 "SO1 a","SO2 a","SO3 a","SO4 a","SO5 a",
1483 "WS1 a","WS1 b","WS1 c","WS1 d","WS1 e",
1484 "WS2 a","WS2 b","WS2 c","WS2 d","WS2 e","WS2 f","WS2 g",
1485 "ZN1 a","ZN1 b","ZN1 c",
1486 "ZN2 a","ZN2 b","ZN2 c",
1489 indergo
= new String
[] {
1491 "EN1","EN2","EN3","EN4",
1492 "SB1","SB2","SB3","SB4","SB5","SB6","SB7",
1493 "PS1","PS2","PS3","PS4","PS5",
1495 indlogo
= new String
[] {
1500 "SP1","SP2","SP3","SP4","SP5","SP6",
1501 "ST1","ST2","ST3","ST4",
1503 indpodo
= new String
[] {
1510 String[] indischluessel = {
1511 "WS1 a","WS1 b","WS1 c","WS1 d","WS1 e",
1512 "WS2 a","WS2 b","WS2 c","WS2 d","WS2 e","WS2 f","WS2 g",
1513 "EX1 a","EX1 b","EX1 c",
1514 "EX2 a","EX2 b","EX2 c","EX2 d",
1515 "EX3 a","EX3 b","EX3 c","EX3 d","EX4 a",
1517 "ZN1 a","ZN1 b","ZN1 c",
1518 "ZN2 a","ZN2 b","ZN2 c",
1519 "PN a","PN b","PN c",
1520 "AT1 a","AT1 b","AT1 c",
1521 "AT2 a","AT2 b","AT2 c",
1522 "AT3 a","AT3 b","AT3 c",
1524 "LY1 b","LY2 a","LY3 a",
1525 "SO1 a","SO2 a","SO3 a","SO4 a","SO5 a",
1526 "SB1","SB2","SB3","SB4","SB5","SB6","SB7",
1527 "EN1","EN2","EN3","EN4",
1528 "PS1","PS2","PS3","PS4","PS5",
1529 "ST1","ST2","ST3","ST4",
1530 "SP1","SP2","SP3","SP4","SP5","SP6",
1539 public void columnPropertyChange(PropertyChangeEvent arg0
) {
1540 // TODO Auto-generated method stub
1541 ////System.out.println("model-listener"+arg0);
1544 public void columnAdded(TableColumnModelEvent arg0
) {
1545 // TODO Auto-generated method stub
1549 public void columnMarginChanged(ChangeEvent arg0
) {
1550 // TODO Auto-generated method stub
1554 public void columnMoved(TableColumnModelEvent arg0
) {
1555 // TODO Auto-generated method stub
1559 public void columnRemoved(TableColumnModelEvent arg0
) {
1560 // TODO Auto-generated method stub
1564 public void columnSelectionChanged(ListSelectionEvent arg0
) {
1565 // TODO Auto-generated method stub
1568 public void holeFormulare(){
1569 new SwingWorker
<Void
,Void
>(){
1571 protected Void
doInBackground() throws Exception
{
1572 // TODO Auto-generated method stub
1573 INIFile inif
= INITool
.openIni(Reha
.proghome
+"ini/"+Reha
.aktIK
+"/", "rezept.ini");
1574 int forms
= inif
.getIntegerProperty("Formulare", "RezeptFormulareAnzahl");
1575 for(int i
= 1; i
<= forms
; i
++){
1576 titel
.add(inif
.getStringProperty("Formulare","RFormularText"+i
));
1577 formular
.add(inif
.getStringProperty("Formulare","RFormularName"+i
));
1587 @SuppressWarnings("unchecked")
1589 public void actionPerformed(ActionEvent arg0
) {
1590 // TODO Auto-generated method stub
1592 String cmd
= arg0
.getActionCommand();
1594 for(int i
= 0; i
< 1; i
++){
1595 if(cmd
.equals("terminplus")){
1596 if(rezGeschlossen()){return;}
1598 Object
[] objTerm
= RezTools
.BehandlungenAnalysieren(Reha
.thisClass
.patpanel
.vecaktrez
.get(1),
1599 false,false,false,null,null,null,DatFunk
.sHeute()); //hier noch ein Point Object übergeben
1600 //System.out.println("objTerm[0]="+objTerm[0]);
1601 //System.out.println("objTerm[1]="+objTerm[1]);
1603 if(objTerm
==null){return;}
1605 if( (Integer
)objTerm
[1] == RezTools
.REZEPT_IST_BEREITS_VOLL
){
1607 }else if((Integer
)objTerm
[1] == RezTools
.REZEPT_ABBRUCH
){
1610 Vector
<String
> vec
= new Vector
<String
>();
1611 vec
.add(DatFunk
.sHeute());
1614 vec
.add( ((String
)objTerm
[0]).split("@")[3]);
1615 dtermm
.addRow((Vector
<String
>)vec
.clone());
1618 if( (Integer
)objTerm
[1] == RezTools
.REZEPT_IST_JETZ_VOLL
){
1620 RezTools
.fuelleVolleTabelle( ((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1)) , Reha
.aktUser
);
1621 }catch(Exception ex
){
1622 JOptionPane
.showMessageDialog(null,"Fehler beim Aufruf von 'fuelleVolleTabelle'");
1626 tabaktterm
.validate();
1627 int tanzahl
= tabaktterm
.getRowCount();
1628 anzahlTermine
.setText("Anzahl Terimine: "+Integer
.toString(tanzahl
));
1630 tabaktterm
.setRowSelectionInterval(tanzahl
-1, tanzahl
-1);
1632 SwingUtilities
.invokeLater(new Runnable(){
1634 tabaktterm
.scrollRowToVisible(tabaktterm
.getRowCount());
1638 tabaktterm
.validate();
1639 tabaktterm
.repaint();
1641 }catch(Exception ex
){
1642 ex
.printStackTrace();
1646 if(cmd
.equals("terminminus")){
1647 if(rezGeschlossen()){return;}
1648 int row
= tabaktterm
.getSelectedRow();
1650 dtermm
.removeRow(row
);
1651 tabaktterm
.validate();
1652 if(tabaktterm
.getRowCount() > 0){
1653 tabaktterm
.setRowSelectionInterval(tabaktterm
.getRowCount()-1, tabaktterm
.getRowCount()-1);
1655 anzahlTermine
.setText("Anzahl Termine: "+tabaktterm
.getRowCount());
1667 if(cmd
.equals("terminsortieren")){
1668 if(rezGeschlossen()){return;}
1669 int row
= tabaktterm
.getRowCount();
1672 Vector
<Vector
<String
>> vec
= (Vector
<Vector
<String
>>)dtermm
.getDataVector().clone();
1674 ////System.out.println("Unsortiert = "+vec);
1676 Comparator
<Vector
<String
>> comparator
= new Comparator
<Vector
<String
>>() {
1678 public int compare(Vector
<String
> o1
, Vector
<String
> o2
) {
1679 String s1
= (String
)o1
.get(4);
1680 String s2
= (String
)o2
.get(4);
1681 return s1
.compareTo(s2
);
1684 Collections
.sort(vec
,comparator
);
1685 dtermm
.setRowCount(0);
1686 ////System.out.println("Sortiert = "+vec);
1687 for(int y
= 0;y
< vec
.size();y
++){
1688 dtermm
.addRow(vec
.get(y
));
1690 tabaktterm
.validate();
1701 if(cmd
.equals("rezneu")){
1702 if(!Rechte
.hatRecht(Rechte
.Rezept_anlegen
, true)){
1705 if(Reha
.thisClass
.patpanel
.autoPatid
<= 0){
1706 JOptionPane
.showMessageDialog(null,"Oh Herr laß halten...\n\n"+
1707 "....und für welchen Patienten wollen Sie ein neues Rezept anlegen....");
1710 // Lemmi 20110101: Kopieren des letzten Rezepts des selben Patienten bei Rezept-Neuanlage wenn Ctrl gedrückt ist
1711 //neuanlageRezept(true,"");
1712 //int iCtrlPressed = arg0.CTRL_MASK;
1713 //int iModifier = arg0.getModifiers();
1714 //System.out.println ( "iCtrlPressed=" + iCtrlPressed + ", iModifier=" + iModifier + "");
1716 //neuanlageRezept(true,"", false);
1717 //Kopieren funktioniert mit der aktuellen Version von
1718 //RezNeuanlage.java nicht
1719 boolean bCtrlPressed
= ( (arg0
.getModifiers() & KeyEvent
.CTRL_MASK
) == KeyEvent
.CTRL_MASK
);
1720 boolean bShiftPressed
= ( (arg0
.getModifiers() & KeyEvent
.SHIFT_MASK
) == KeyEvent
.SHIFT_MASK
);
1721 String strModus
= "";
1722 if ( bCtrlPressed
) strModus
= "KopiereLetztes";
1723 else if ( bShiftPressed
) strModus
= "KopiereAngewaehltes";
1724 neuanlageRezept( true,"", strModus
);
1728 if(cmd
.equals("rezedit")){
1729 if(aktPanel
.equals("leerPanel")){
1730 JOptionPane
.showMessageDialog(null,"Oh Herr laß halten...\n\n"+
1731 "....und welches der nicht vorhandenen Rezepte möchten Sie bitteschön ändern....");
1734 if(rezGeschlossen()){return;}
1735 neuanlageRezept(false,"", "");
1738 if(cmd
.equals("rezdelete")){
1739 if(!Rechte
.hatRecht(Rechte
.Rezept_delete
, true)){
1742 if(aktPanel
.equals("leerPanel")){
1743 JOptionPane
.showMessageDialog(null,"Oh Herr laß halten...\n\n"+
1744 "....und welches der nicht vorhandenen Rezepte möchten Sie bitteschön löschen....");
1747 if(rezGeschlossen()){return;}
1748 int currow
= tabaktrez
.getSelectedRow();
1749 //int anzrow = tabaktrez.getRowCount();
1751 JOptionPane
.showMessageDialog(null,"Kein Rezept zum -> löschen <- ausgewählt");
1754 String reznr
= (String
)tabaktrez
.getValueAt(currow
, 0);
1755 String rezid
= (String
)tabaktrez
.getValueAt(currow
, idInTable
);
1756 int frage
= JOptionPane
.showConfirmDialog(null,"Wollen Sie das Rezept "+reznr
+" wirklich löschen?","Wichtige Benutzeranfrage",JOptionPane
.YES_NO_OPTION
);
1757 if(frage
== JOptionPane
.NO_OPTION
){
1760 String sqlcmd
= "delete from verordn where id='"+rezid
+"'";
1761 SqlInfo
.sqlAusfuehren(sqlcmd
);
1762 sqlcmd
= "delete from fertige where id='"+rezid
+"'";
1763 new ExUndHop().setzeStatement(sqlcmd
);
1764 RezTools
.loescheRezAusVolleTabelle(reznr
);
1765 aktTerminBuffer
.remove(currow
);
1767 currow
= TableTool
.loescheRow(tabaktrez
, Integer
.valueOf(currow
));
1768 int uebrig
= tabaktrez
.getRowCount();
1770 anzahlRezepte
.setText("Anzahl Rezepte: "+Integer
.toString(uebrig
));
1771 Reha
.thisClass
.patpanel
.multiTab
.setTitleAt(0,macheHtmlTitel(uebrig
,"aktuelle Rezepte"));
1773 holeRezepte(Reha
.thisClass
.patpanel
.patDaten
.get(29),"");
1778 /******************************/
1779 if(cmd
.equals("rezeptgebuehr")){
1780 if(!Rechte
.hatRecht(Rechte
.Rezept_gebuehren
, true)){
1785 if(cmd
.equals("barcode")){
1789 if(cmd
.equals("arztbericht")){
1790 if(!Rechte
.hatRecht(Rechte
.Rezept_thbericht
, true)){
1793 // hier muß noch getestet werden:
1794 // 1 ist es eine Neuanlage oder soll ein bestehender Ber. editiert werden
1795 // 2 ist ein Ber. überhaupt angefordert
1796 // 3 gibt es einen Rezeptbezug oder nicht
1797 if(aktPanel
.equals("leerPanel")){
1798 JOptionPane
.showMessageDialog(null,"Ich sag jetz nix....\n\n"+
1799 "....außer - und für welches der nicht vorhandenen Rezepte wollen Sie einen Therapiebericht erstellen....");
1804 boolean neuber
= true;
1807 String xverfasser
= "";
1808 int currow
= tabaktrez
.getSelectedRow();
1810 xreznr
= (String
)tabaktrez
.getValueAt(currow
,0);
1814 int iexistiert
= Reha
.thisClass
.patpanel
.berichte
.berichtExistiert(xreznr
);
1816 xverfasser
= Reha
.thisClass
.patpanel
.berichte
.holeVerfasser();
1819 String meldung
= "<html>Für das Rezept <b>"+xreznr
+"</b> existiert bereits ein Bericht.<br>Vorhandener Bericht wird jetzt geöffnet</html>";
1820 JOptionPane
.showMessageDialog(null, meldung
);
1822 ////System.out.println("ArztberichtFenster erzeugen!");
1823 final boolean xneuber
= neuber
;
1824 final String xxreznr
= xreznr
;
1825 final int xberid
= berid
;
1826 final int xcurrow
= currow
;
1827 final String xxverfasser
= xverfasser
;
1828 new SwingWorker
<Void
,Void
>(){
1830 protected Void
doInBackground() throws Exception
{
1832 ArztBericht ab
= new ArztBericht(null,"arztberichterstellen",xneuber
,xxreznr
,xberid
,0,xxverfasser
,"",xcurrow
);
1834 ab
.setLocationRelativeTo(null);
1836 ab
.setVisible(true);
1838 }catch(Exception ex
){
1839 ex
.printStackTrace();
1840 JOptionPane
.showMessageDialog(null, ex
.getMessage());
1847 if(cmd
.equals("ausfallrechnung")){
1848 if(!Rechte
.hatRecht(Rechte
.Rezept_ausfallrechnung
, true)){
1853 if(cmd
.equals("statusfrei")){
1854 if(!Rechte
.hatRecht(Rechte
.Rezept_editvoll
, true)){
1857 if(rezGeschlossen()){return;}
1858 int currow
= tabaktrez
.getSelectedRow();
1861 xreznr
= (String
)tabaktrez
.getValueAt(currow
,0);
1862 String xcmd
= "update verordn set zzstatus='"+0+"', befr='T',rez_bez='F' where rez_nr='"+xreznr
+"' LIMIT 1";
1863 SqlInfo
.sqlAusfuehren(xcmd
);
1864 dtblm
.setValueAt(Reha
.thisClass
.patpanel
.imgzuzahl
[0],currow
,1);
1865 tabaktrez
.validate();
1866 doVectorAktualisieren(new int[]{12,14,39},new String
[] {"T","F","0"});
1867 SqlInfo
.sqlAusfuehren("delete from kasse where rez_nr='"+xreznr
+"' LIMIT 1");
1871 if(cmd
.equals("statusbezahlt")){
1872 if(!Rechte
.hatRecht(Rechte
.Rezept_editvoll
, true)){
1875 if(rezGeschlossen()){return;}
1876 int currow
= tabaktrez
.getSelectedRow();
1879 xreznr
= (String
)tabaktrez
.getValueAt(currow
,0);
1880 String xcmd
= "update verordn set zzstatus='"+1+"', befr='F',rez_bez='T' where rez_nr='"+xreznr
+"' LIMIT 1";
1881 SqlInfo
.sqlAusfuehren(xcmd
);
1882 dtblm
.setValueAt(Reha
.thisClass
.patpanel
.imgzuzahl
[1],currow
,1);
1883 tabaktrez
.validate();
1884 doVectorAktualisieren(new int[]{12,14,39},new String
[] {"F","T","1"});
1888 if(cmd
.equals("statusnichtbezahlt")){
1889 if(!Rechte
.hatRecht(Rechte
.Rezept_editvoll
, true)){
1892 if(rezGeschlossen()){return;}
1893 int currow
= tabaktrez
.getSelectedRow();
1896 xreznr
= (String
)tabaktrez
.getValueAt(currow
,0);
1897 String xcmd
= "update verordn set zzstatus='"+2+"', befr='F', rez_geb='0.00',rez_bez='F' where rez_nr='"+xreznr
+"' LIMIT 1";
1898 SqlInfo
.sqlAusfuehren(xcmd
);
1899 dtblm
.setValueAt(Reha
.thisClass
.patpanel
.imgzuzahl
[2],currow
,1);
1900 tabaktrez
.validate();
1901 doVectorAktualisieren(new int[]{12,13,14,39},new String
[] {"F","0.00","F","2"});
1902 SqlInfo
.sqlAusfuehren("delete from kasse where rez_nr='"+xreznr
+"' LIMIT 1");
1907 // Lemmi 201110106: Knopf zum Kopieren des aktiven Rezeptes zugefügt
1908 if(cmd
.equals("KopiereAngewaehltes")) {
1909 neuanlageRezept( true,"", "KopiereAngewaehltes" );
1912 // Lemmi 201110113: Knopf zum Kopieren des jüngsten Rezeptes zugefügt
1913 if(cmd
.equals("KopiereLetztes")) {
1914 neuanlageRezept( true,"", "KopiereLetztes" );
1917 if(cmd
.equals("rezeptbrief")){
1918 formulareAuswerten();
1920 if(cmd
.equals("rezeptabschliessen")){
1921 rezeptAbschliessen();
1923 if(cmd
.equals("werkzeuge")){
1924 new ToolsDlgAktuelleRezepte("",aktrbut
[3].getLocationOnScreen());
1926 if(cmd
.equals("deletebehandlungen")){
1927 doDeleteBehandlungen();
1929 if(cmd
.equals("angleichenbehandlungen")){
1930 doAngleichenBehandlungen();
1933 // Lemmi 20110105: aktuellen Behandler auf alle leeren Behandler kopieren
1934 if(cmd
.equals("behandlerkopieren")){
1935 doBehandlerKopieren();
1937 if(cmd
.equals("RezeptTeilen")){
1938 JOptionPane
.showMessageDialog(null, "<html>Diese Funktion ist noch nicht implementiert.<br><br>Bitte wenden Sie sich "+
1939 "im Forum unter www.Thera-Pi.org an Teilnehmern <b>letzter3</b>!<br>Das wäre nämlich seine "+
1940 "Lieblingsfunktion - so es sie gäbe....<br><br><html>");
1945 public static String
getActiveRezNr(){
1946 int row
= Reha
.thisClass
.patpanel
.aktRezept
.tabaktrez
.getSelectedRow();
1948 return Reha
.thisClass
.patpanel
.aktRezept
.tabaktrez
.getValueAt(row
, 0).toString();
1952 public void doVectorAktualisieren(int[]elemente
,String
[] werte
){
1953 for(int i
= 0; i
< elemente
.length
;i
++){
1954 Reha
.thisClass
.patpanel
.vecaktrez
.set(elemente
[i
],werte
[i
]);
1958 // Lemmi 20110105: aktuellen Behandler auf alle leeren Behandler kopieren
1960 // nimmt den Behandler aus der aktuell markierten Zeile und kopiert ihn auf alle leeren Behandlerfelder
1961 private void doBehandlerKopieren(){
1962 if(this.tabaktterm
.getRowCount() <= 0){
1966 // aktuell gewählte Zeile finden - mit Sicherung, wenn keine angewählt worden ist !
1967 int iPos
= tabaktterm
.getSelectedRow();
1968 if ( iPos
< 0 || iPos
>= tabaktterm
.getRowCount() )
1971 // Behandler aus aktuell angewähler Zeile holen
1972 String strBehandler
= tabaktterm
.getStringAt(tabaktterm
.getSelectedRow(), 1);
1973 if ( !strBehandler
.isEmpty() ) {
1974 for (int i
= 0; i
< tabaktterm
.getRowCount(); i
++ ) {
1975 if ( tabaktterm
.getStringAt(i
, 1).isEmpty() ) // nur wenn der Behandler leer ist eintragen.
1976 tabaktterm
.setValueAt(strBehandler
, i
, 1);
1982 private void doDeleteBehandlungen(){
1983 if(this.tabaktterm
.getRowCount() <= 0){
1986 //String akttermine = this.aktTerminBuffer.get(aktuellAngezeigt);
1987 Vector
<Vector
<String
>> vec
= RezTools
.macheTerminVector(this.aktTerminBuffer
.get(aktuellAngezeigt
));
1988 //System.out.println(vec);
1989 dtermm
.setRowCount(0);
1990 for(int i
= 0; i
< vec
.size();i
++){
1991 vec
.get(i
).set(3,"");
1992 dtermm
.addRow(vec
.get(i
));
1997 private void doAngleichenBehandlungen(){
1998 if(this.tabaktterm
.getRowCount() <= 0){
2001 //String akttermine = this.aktTerminBuffer.get(aktuellAngezeigt);
2002 Vector
<Vector
<String
>> vec
= RezTools
.macheTerminVector(this.aktTerminBuffer
.get(aktuellAngezeigt
));
2003 //System.out.println(vec);
2004 dtermm
.setRowCount(0);
2005 for(int i
= 0; i
< vec
.size();i
++){
2006 vec
.get(i
).set(3, (((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(48)).trim().equals("") ?
"" : (String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(48)) +
2007 (((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(49)).trim().equals("") ?
"" : ","+(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(49)) +
2008 (((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(50)).trim().equals("") ?
"" : ","+(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(50)) +
2009 (((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(51)).trim().equals("") ?
"" : ","+(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(51))
2011 dtermm
.addRow(vec
.get(i
));
2017 private void rezeptAbschliessen(){
2019 if(this.neuDlgOffen
){return;}
2020 int pghmr
= Integer
.parseInt(Reha
.thisClass
.patpanel
.vecaktrez
.get(41));
2021 String disziplin
= StringTools
.getDisziplin(Reha
.thisClass
.patpanel
.vecaktrez
.get(1));
2022 //if(SystemConfig.vHMRAbrechnung.get(pghmr-1) < 1){
2023 if(SystemPreislisten
.hmHMRAbrechnung
.get(disziplin
).get(pghmr
-1) < 1){
2024 String meldung
= "Die Tarifgruppe dieser Verordnung unterliegt nicht den Heilmittelrichtlinien.\n\n"+
2025 "Abschließen des Rezeptes ist nicht erforderlich";
2026 JOptionPane
.showMessageDialog(null,meldung
);
2030 if(Reha
.thisClass
.abrechnungpanel
!= null){
2031 String
[] diszis
= {"Physio","Massage","Ergo","Logo","Podo"};
2032 String aktDisziplin
= diszis
[Reha
.thisClass
.abrechnungpanel
.cmbDiszi
.getSelectedIndex()];
2033 if(RezTools
.putRezNrGetDisziplin(Reha
.thisClass
.patpanel
.vecaktrez
.get(1)).equals(aktDisziplin
)){
2034 Reha
.thisClass
.abrechnungpanel
.einlesenErneuern();
2037 }catch(Exception ex
){
2038 ex
.printStackTrace();
2041 private void ausfallRechnung(){
2042 new SwingWorker
<Void
,Void
>(){
2044 protected Void
doInBackground() throws Exception
{
2045 //System.out.println("in Ausfallrechnung");
2046 AusfallRechnung ausfall
= new AusfallRechnung( aktrbut
[3].getLocationOnScreen() );
2047 ausfall
.setModal(true);
2049 ausfall
.setVisible(true);
2055 private void rezeptGebuehr(){
2056 if(aktPanel
.equals("leerPanel")){
2057 JOptionPane
.showMessageDialog(null,"Ich sag jetz nix....\n\n"+
2058 "....außer - und von welchem der nicht vorhandenen Rezepte wollen Sie Rezeptgebühren kassieren....");
2061 int currow
= tabaktrez
.getSelectedRow();
2062 //int anzrow = tabaktrez.getRowCount();
2064 JOptionPane
.showMessageDialog(null,"Kein Rezept zum -> kassieren <- ausgewählt");
2067 doRezeptGebuehr( aktrbut
[3].getLocationOnScreen() );
2070 private void doAbschlussTest(){
2071 int currow
= tabaktrez
.getSelectedRow();
2072 if(currow
< 0){return;}
2073 if(dtblm
.getValueAt(currow
,5)==null){
2074 // derzeit offen also abschliessen
2075 if(!Rechte
.hatRecht(Rechte
.Rezept_lock
, true)){
2079 int anzterm
= dtermm
.getRowCount();
2080 if(anzterm
<= 0){return;}
2081 String vgldat1
= (String
) tabaktrez
.getValueAt(currow
, 2);
2082 String vgldat2
= (String
) dtermm
.getValueAt(0,0);
2083 String vgldat3
= (String
) tabaktrez
.getValueAt(currow
, 4);
2084 String vglreznum
= tabaktrez
.getValueAt(currow
,0).toString();
2085 //System.out.println(vgldat1+" / "+vgldat2);
2086 /***Kann ausgeschaltet werden wenn die HMRCheck-Tabelle vollständig befüll ist**/
2087 // ist ohnehin nur halblebig
2088 int dummypeisgruppe
= Integer
.parseInt(Reha
.thisClass
.patpanel
.vecaktrez
.get(41))-1;
2090 long differenz = HMRCheck.hmrTageErmitteln(dummypeisgruppe,vglreznum,vgldat1,vgldat2,vgldat3);
2092 JOptionPane.showMessageDialog(null, "Behandlungsbeginn ist vor dem Rezeptdatum!");
2094 }else if(differenz > 10){
2095 if(DatFunk.TageDifferenz(vgldat3, vgldat2) > 0){
2096 int anfrage = JOptionPane.showConfirmDialog(null, "Behandlungsbeginn länger als 10 Tage nach Ausstellung des Rezeptes!!!\nSpätester Behandlungsbeginn wurde ebenfalls überschritten\n\nRezept trotzdem abschließen", "Achtung wichtige Benutzeranfrage", JOptionPane.YES_NO_OPTION);
2097 if(anfrage != JOptionPane.YES_OPTION){
2102 }else if(differenz <= 10 && differenz >= 0){
2103 if(DatFunk.TageDifferenz(vgldat3, vgldat2) > 0){
2104 int anfrage = JOptionPane.showConfirmDialog(null, "Behandlungsbeginn nach der Angabe --> spätester Beginn, Frist ist somit überschritten.\n\nRezept trotzdem abschließen", "Achtung wichtige Benutzeranfrage", JOptionPane.YES_NO_OPTION);
2105 if(anfrage != JOptionPane.YES_OPTION){
2113 if(Reha
.thisClass
.patpanel
.patDaten
.get(23).trim().length() != 5){
2114 JOptionPane
.showMessageDialog(null, "Die im Patientenstamm zugewiesene Postleitzahl ist fehlerhaft");
2117 if(Reha
.thisClass
.patpanel
.patDaten
.get(14).trim().equals("")){
2118 JOptionPane
.showMessageDialog(null, "Die im Patientenstamm zugewiesene Krankenkasse hat keine Kassennummer");
2121 if(Reha
.thisClass
.patpanel
.patDaten
.get(15).trim().equals("")){
2122 JOptionPane
.showMessageDialog(null, "Der Mitgliedsstatus fehlt im Patientenstamm, bitte eintragen");
2125 if("135".indexOf(Reha
.thisClass
.patpanel
.patDaten
.get(15).substring(0,1)) < 0){
2126 JOptionPane
.showMessageDialog(null, "Der im Patientenstamm vermerkte Mitgliedsstatus ist ungültig\n\n"+
2127 "Fehlerhafter Status = "+Reha
.thisClass
.patpanel
.patDaten
.get(15)+"\n");
2130 if(Reha
.thisClass
.patpanel
.patDaten
.get(16).trim().equals("")){
2131 JOptionPane
.showMessageDialog(null, "Die Krankenkassen-Mitgliedsnummer fehlt im Patientenstamm, bitte eintragen");
2134 if(!Reha
.thisClass
.patpanel
.patDaten
.get(68).trim().equals(
2135 Reha
.thisClass
.patpanel
.vecaktrez
.get(37))){
2136 JOptionPane
.showMessageDialog(null, "ID der Krankenkasse im Patientenstamm paßt nicht zu der ID der Krankenkasse im Rezept");
2140 /*********************/
2141 String diszi
= RezTools
.putRezNrGetDisziplin(Reha
.thisClass
.patpanel
.vecaktrez
.get(1));
2142 String preisgruppe
= Reha
.thisClass
.patpanel
.vecaktrez
.get(41);
2144 if(! doTageTest(vgldat3
,vgldat2
,anzterm
,diszi
,Integer
.parseInt(preisgruppe
)-1)){return;}
2146 Vector
<Vector
<String
>> doublette
= null;
2147 if( ((doublette
=doDoublettenTest(anzterm
)).size() > 0) ){
2148 String msg
= "<html><b><font color='#ff0000'>Achtung!</font><br><br>Ein oder mehrere Behandlungstage wurden in anderen Rezepten entdeckt/abgerechnet</b><br><br>";
2149 for(int i
= 0; i
< doublette
.size();i
++){
2150 msg
= msg
+"Behandlungstag: "+doublette
.get(i
).get(1)+" - enthalten in Rezept: "+doublette
.get(i
).get(0)+" - Standort: "+doublette
.get(i
).get(2)+"<br>";
2152 msg
= msg
+"<br><br>Wollen Sie das Rezept trotzdem abschließen?</html>";
2153 int frage
= JOptionPane
.showConfirmDialog(null, msg
, "Behandlungsdaten in anderen Rezepten erfaßt",JOptionPane
.YES_NO_OPTION
);
2154 if(frage
!=JOptionPane
.YES_OPTION
){
2160 /*********************/
2161 //String diszi = RezTools.putRezNrGetDisziplin(Reha.thisClass.patpanel.vecaktrez.get(1));
2162 //String preisgruppe = Reha.thisClass.patpanel.vecaktrez.get(41);
2165 String indi
= Reha
.thisClass
.patpanel
.vecaktrez
.get(44);
2166 if(indi
.equals("") || indi
.contains("kein IndiSchl.")){
2167 JOptionPane
.showMessageDialog(null, "<html><b>Kein Indikationsschlüssel angegeben.<br>Die Angaben sind <font color='#ff0000'>nicht</font> gemäß den gültigen Heilmittelrichtlinien!</b></html>");
2170 if(Reha
.thisClass
.patpanel
.vecaktrez
.get(71).trim().length() > 0){
2171 //für die Suche alles entfernen das nicht in der icd10-Tabelle aufgeführt sein kann
2172 //String suchenach = Reha.thisClass.patpanel.vecaktrez.get(71).trim();
2173 String String1
= Reha
.thisClass
.patpanel
.vecaktrez
.get(71).trim().substring(0,1).toUpperCase();
2174 String String2
= Reha
.thisClass
.patpanel
.vecaktrez
.get(71).trim().substring(1).toUpperCase().replace(" ", "").replace("*", "").replace("!", "").replace("+","").replace("R", "").replace("L","").replace("B","").replace("G","").replace("V","").replace("Z","");;
2175 String suchenach
= String1
+String2
;
2176 //suchenach = suchenach.replace(" ", "").replace("*", "").replace("!", "").replace("R", "").replace("L","").replace("B","").replace("G","").replace("V","").replace("Z","");
2177 if(SqlInfo
.holeEinzelFeld("select id from icd10 where schluessel1 like '"+suchenach
+"%' LIMIT 1").equals("")){
2178 //if(SqlInfo.holeEinzelFeld("select id from icd10 where schluessel1 like '"+suchenach+"%' LIMIT 1").equals("")){
2180 int frage = JOptionPane.showConfirmDialog(null, "<html>Achtung!!<br><br>Der ICD-10 Code <b>"+jtf[cICD10].getText().trim()+
2181 "</b> existiert nicht!<br>"+
2182 "Wollen Sie jetzt das ICD-10-Tool starten?<br><br></html>", "falscher ICD-10",JOptionPane.YES_NO_OPTION);
2183 if(frage==JOptionPane.YES_OPTION){
2184 new LadeProg(Reha.proghome+"ICDSuche.jar"+" "+Reha.proghome+" "+Reha.aktIK);
2187 int frage
= JOptionPane
.showConfirmDialog(null, "<html><b>Der eingetragene ICD-10-Code ist falsch: <font color='#ff0000'>"+
2188 Reha
.thisClass
.patpanel
.vecaktrez
.get(71).trim()+"</font></b><br>"+
2189 "HMR-Check nicht möglich!<br><br>"+
2190 "Wollen Sie jetzt das ICD-10-Tool starten?<br><br></html>", "falscher ICD-10",JOptionPane
.YES_NO_OPTION
);
2191 if(frage
==JOptionPane
.YES_OPTION
){
2192 new LadeProg(Reha
.proghome
+"ICDSuche.jar"+" "+Reha
.proghome
+" "+Reha
.aktIK
);
2198 indi
= indi
.replace(" ", "");
2199 Vector
<Integer
> anzahlen
= new Vector
<Integer
>();
2200 Vector
<String
> hmpositionen
= new Vector
<String
>();
2202 String position
= "";
2203 String
[] diszis
= {"Physio","Massage","Ergo","Logo","Reha"};
2204 List
<String
> list
= Arrays
.asList(diszis
);
2205 for(int i
= 2;i
<= 5;i
++ ){
2207 idtest
= Integer
.parseInt(Reha
.thisClass
.patpanel
.vecaktrez
.get(6+i
));
2208 }catch(Exception ex
){
2213 anzahlen
.add( Integer
.parseInt(Reha
.thisClass
.patpanel
.vecaktrez
.get(1+i
)) );
2214 }catch(Exception ex
){
2218 position
= RezTools
.getPosFromID(Integer
.toString(idtest
),preisgruppe
, SystemPreislisten
.hmPreise
.get(diszi
).get(Integer
.parseInt(preisgruppe
)-1) );
2219 hmpositionen
.add(position
);
2220 }catch(Exception ex
){
2221 hmpositionen
.add("");
2227 System.out.println("Anzahlen="+anzahlen);
2228 System.out.println("Positionen="+hmpositionen);
2229 System.out.println("Disziplin="+diszi);
2230 System.out.println("Preisgruppe"+preisgruppe);
2231 System.out.println("Preisvector"+SystemPreislisten.hmPreise.get(diszi).get(Integer.parseInt(preisgruppe)-1));
2233 if(hmpositionen
.size() > 0){
2234 boolean checkok
= new HMRCheck(
2236 list
.indexOf(diszi
),
2237 anzahlen
,hmpositionen
,
2238 Integer
.parseInt(preisgruppe
)-1,
2239 SystemPreislisten
.hmPreise
.get(diszi
).get(Integer
.parseInt(preisgruppe
)-1),
2240 Integer
.parseInt(Reha
.thisClass
.patpanel
.vecaktrez
.get(27)),
2241 (Reha
.thisClass
.patpanel
.vecaktrez
.get(1)),
2242 DatFunk
.sDatInDeutsch(Reha
.thisClass
.patpanel
.vecaktrez
.get(2)),
2243 DatFunk
.sDatInDeutsch(Reha
.thisClass
.patpanel
.vecaktrez
.get(40))
2245 //System.out.println("Rückgabewert des HMR-Checks="+checkok);
2247 int anfrage
= JOptionPane
.showConfirmDialog(null, "Das Rezept entspricht nicht den geltenden Heilmittelrichtlinien\nWollen Sie diesen Rezept trotzdem abschließen?", "Achtung wichtige Benutzeranfrage", JOptionPane
.YES_NO_OPTION
);
2248 if(anfrage
!= JOptionPane
.YES_OPTION
){
2253 JOptionPane
.showMessageDialog(null, "Keine Behandlungspositionen angegeben, HMR-Check nicht möglich!!!");
2256 /*********************/
2257 /********************************************************************************/
2258 dtblm
.setValueAt(Reha
.thisClass
.patpanel
.imgrezstatus
[1],currow
,5);
2260 String xcmd
= "update verordn set abschluss='T' where id='"+Reha
.thisClass
.patpanel
.vecaktrez
.get(35)+"' LIMIT 1";
2261 SqlInfo
.sqlAusfuehren(xcmd
);
2262 Reha
.thisClass
.patpanel
.vecaktrez
.set(62,(String
)"T");
2263 Vector
<Vector
<String
>> kdat
= SqlInfo
.holeFelder("select ik_kasse,ik_kostent from kass_adr where id='"+
2264 Reha
.thisClass
.patpanel
.vecaktrez
.get(37)+"' LIMIT 1");
2265 String ikkass
="",ikkost
="",kname
="",rnr
="",patint
="";
2267 ikkass
= kdat
.get(0).get(0);
2268 ikkost
= kdat
.get(0).get(1);
2273 kname
= (String
) Reha
.thisClass
.patpanel
.vecaktrez
.get(36);
2274 patint
=(String
) Reha
.thisClass
.patpanel
.vecaktrez
.get(0);
2275 rnr
= (String
) Reha
.thisClass
.patpanel
.vecaktrez
.get(1);
2276 String cmd
= "insert into fertige set ikktraeger='"+ikkost
+"', ikkasse='"+ikkass
+"', "+
2277 "name1='"+kname
+"', rez_nr='"+rnr
+"', pat_intern='"+patint
+"', rezklasse='"+rnr
.substring(0,2)+"'";
2278 SqlInfo
.sqlAusfuehren(cmd
);
2279 JComponent abrech1
= AktiveFenster
.getFensterAlle("Abrechnung-1");
2280 /********************************************************************************/
2282 if(abrech1
!= null){
2283 Reha
.thisClass
.abrechnungpanel
.doEinlesen(Reha
.thisClass
.abrechnungpanel
.getaktuellerKassenKnoten());
2287 if(!Rechte
.hatRecht(Rechte
.Rezept_unlock
, true)){
2290 // bereits abgeschlossen muß geöffnet werden
2291 dtblm
.setValueAt(Reha
.thisClass
.patpanel
.imgrezstatus
[0],currow
,5);
2293 String xcmd
= "update verordn set abschluss='F' where id='"+Reha
.thisClass
.patpanel
.vecaktrez
.get(35)+"' LIMIT 1";
2294 Reha
.thisClass
.patpanel
.vecaktrez
.set(62,(String
)"F");
2295 SqlInfo
.sqlAusfuehren(xcmd
);
2296 ////System.out.println(xcmd);
2297 String rnr
= (String
) Reha
.thisClass
.patpanel
.vecaktrez
.get(1);
2298 String cmd
= "delete from fertige where rez_nr='"+rnr
+"' LIMIT 1";
2299 SqlInfo
.sqlAusfuehren(cmd
);
2300 JComponent abrech1
= AktiveFenster
.getFensterAlle("Abrechnung-1");
2301 if(abrech1
!= null){
2302 Reha
.thisClass
.abrechnungpanel
.doEinlesen(Reha
.thisClass
.abrechnungpanel
.getaktuellerKassenKnoten());
2306 private Vector
<Vector
<String
>> doDoublettenTest(int anzahl
){
2307 Vector
<Vector
<String
>> doublette
= new Vector
<Vector
<String
>>();
2311 Vector
<Vector
<String
>> tests
= null;
2312 Vector
<String
> dummy
= new Vector
<String
>();
2313 String lastrezdate
= DatFunk
.sDatInSQL(DatFunk
.sDatPlusTage(DatFunk
.sDatInDeutsch((String
) Reha
.thisClass
.patpanel
.vecaktrez
.get(2)),-90));
2314 String diszi
= ((String
) Reha
.thisClass
.patpanel
.vecaktrez
.get(1)).substring(0,2);
2315 String cmd
= "select rez_datum,rez_nr,termine from verordn where pat_intern = '"+
2316 (String
) Reha
.thisClass
.patpanel
.vecaktrez
.get(0)+"' and rez_nr != '"+(String
) Reha
.thisClass
.patpanel
.vecaktrez
.get(1)+"'";
2318 tests
= SqlInfo
.holeFelder(cmd
);
2319 //zuerst in den aktuellen Rezepten nachsehen
2320 //wir holen uns Rezeptnummer,Rezeptdatum und die Termine
2321 //Anzahl der Termine
2322 //dtermm.getValueAt(i-1,0);
2323 //1. for next für jeden einzelnen Tag des Rezeptes, darin enthalten eine neue for next für alle vorhandenen Rezepte
2324 //2. nur dieselbe Disziplin überpüfen
2325 //3. dann durch alle Rezepte hangeln und testen ob irgend ein Tag in den Terminen enthalten ist
2327 for(int i
= 0; i
< tests
.size();i
++){
2328 if(tests
.get(i
).get(1).startsWith(diszi
)){
2329 for(int i2
= 0; i2
< anzahl
; i2
++){
2330 if(tests
.get(i
).get(2).contains(dtermm
.getValueAt(i2
,0).toString())){
2332 dummy
.add(tests
.get(i
).get(1));
2333 dummy
.add(dtermm
.getValueAt(i2
,0).toString());
2334 dummy
.add("aktuelle Rezepte");
2335 doublette
.add( (Vector
<String
>)dummy
.clone() );
2340 //dann in der Historie
2341 //1. for next für jeden einzelnen Tag, darin enthalten eine neue for next für alle vorhandenen Rezepte
2342 //2. nur dieselbe Disziplin überpüfen
2343 //3. dann durch alle Rezepte hangeln und testen ob irgend ein Tag in den Terminen enthalten ist
2344 //4. dann testen ob der Rezeptdatumsvergleich > als 3 Monate trifft dies zu abbruch
2345 cmd
= "select rez_datum,rez_nr,termine from lza where pat_intern = '"+
2346 (String
) Reha
.thisClass
.patpanel
.vecaktrez
.get(0)+"' and rez_nr != '"+(String
) Reha
.thisClass
.patpanel
.vecaktrez
.get(1)+"' and rez_datum >= '"+lastrezdate
+"'";
2348 tests
= SqlInfo
.holeFelder(cmd
);
2349 for(int i
= 0; i
< tests
.size();i
++){
2350 if(tests
.get(i
).get(1).startsWith(diszi
)){
2351 for(int i2
= 0; i2
< anzahl
; i2
++){
2352 if(tests
.get(i
).get(2).contains(dtermm
.getValueAt(i2
,0).toString())){
2354 dummy
.add(tests
.get(i
).get(1));
2355 dummy
.add(dtermm
.getValueAt(i2
,0).toString());
2356 dummy
.add("Historie");
2357 doublette
.add( (Vector
<String
>)dummy
.clone() );
2362 }catch(Exception ex
){
2363 ex
.printStackTrace();
2364 JOptionPane
.showMessageDialog(null,"Fehler im Doublettentest\n"+ex
.getMessage());
2370 private boolean doTageTest(String latestdat
,String starttag
,int tageanzahl
,String disziplin
, int preisgruppe
){
2375 //Frist zwischen RezDat (bzw. spätester BehBeginn) und tatsächlichem BehBeginn
2376 int fristbeginn
= (Integer
)((Vector
<?
>)SystemPreislisten
.hmFristen
.get(disziplin
).get(0)).get(preisgruppe
);
2377 //Frist zwischen den Behjandlungen
2378 int fristbreak
= (Integer
)((Vector
<?
>)SystemPreislisten
.hmFristen
.get(disziplin
).get(2)).get(preisgruppe
);
2379 //Beginn-Berechnung nach Kalendertagen
2380 boolean ktagebeginn
= (Boolean
)((Vector
<?
>)SystemPreislisten
.hmFristen
.get(disziplin
).get(1)).get(preisgruppe
);
2381 //Unterbrechung-Berechnung nach Kalendertagen
2382 boolean ktagebreak
= (Boolean
)((Vector
<?
>)SystemPreislisten
.hmFristen
.get(disziplin
).get(3)).get(preisgruppe
);
2383 //Beginnfrist: Samstag als Werktag werten (wirk nur bei Werktagregel)
2384 boolean beginnsamstag
= (Boolean
)((Vector
<?
>)SystemPreislisten
.hmFristen
.get(disziplin
).get(4)).get(preisgruppe
);
2385 //Unterbrechungsfrist: Samstag als Werktag werten (wirk nur bei Werktagregel)
2386 boolean breaksamstag
= (Boolean
)((Vector
<?
>)SystemPreislisten
.hmFristen
.get(disziplin
).get(5)).get(preisgruppe
);
2387 for(int i
= 0; i
< tageanzahl
;i
++){
2389 // hier die neue Prüfung einbauen Unterbrechungstest
2390 vglalt
= (String
) dtermm
.getValueAt(i
-1,0);
2391 vglneu
= (String
) dtermm
.getValueAt(i
,0);
2392 if(vglalt
.equals(vglneu
)){
2393 JOptionPane
.showMessageDialog(null,"Zwei identische Behandlungstage sind nicht zulässig - Abschluß des Rezeptes fehlgeschlagen");
2396 if(DatFunk
.TageDifferenz(vglalt
, vglneu
) < 0 ){
2397 JOptionPane
.showMessageDialog(null,"Bitte sortieren Sie zuerst die Behandlungstage - Abschluß des Rezeptes fehlgeschlagen");
2401 kommentar
= (String
) dtermm
.getValueAt(i
,2);
2403 //Wenn nach Kalendertagen ermittelt werden soll
2405 //System.out.println("Kalendertage zwischen den Behandlungen = "+DatFunk.TageDifferenz(vglalt, vglneu)+"\n"+
2406 //"erlaubt sind "+fristbreak);
2407 if( (DatFunk
.TageDifferenz(vglalt
, vglneu
) > fristbreak
) && (kommentar
.trim().equals("")) ){
2408 ret
= rezUnterbrechung(true,"",i
+1);// Unterbrechungsgrund
2412 dtermm
.setValueAt(ret
,i
,2);
2416 //System.out.println("Differenz zwischen dem letzt möglichen und dem tatsächlichen Zeitaum\n"+
2417 //HMRCheck.hmrTageDifferenz(vglalt,vglneu,fristbreak,breaksamstag));
2418 if(HMRCheck
.hmrTageDifferenz(vglalt
,vglneu
,fristbreak
,breaksamstag
) > 0 && kommentar
.trim().equals("")){
2419 ret
= rezUnterbrechung(true,"",i
+1);// Unterbrechungsgrund
2423 dtermm
.setValueAt(ret
,i
,2);
2430 //hier die neue Prüfung einbauen Frist bis erste Behandlung
2431 if(ktagebeginn){ //Frist bis Rezeptbeginn in Kalendertagen
2432 if(DatFunk.TageDifferenz(latestdat, starttag) < 0){
2433 System.out.println("Letzter Behandlungsbeginn wurde überschritten");
2435 }else{//Frist bis Rezeptbeginn in Werktagen
2444 private boolean rezGeschlossen(){
2445 if(Reha
.thisClass
.patpanel
.vecaktrez
.get(62).equals("T")){
2446 JOptionPane
.showMessageDialog(null,"Das Rezept ist bereits abgeschlossen\nÄnderungen sind nur noch durch berechtigte Personen möglich");
2452 private void privatRechnung(){
2454 //Preisgruppe ermitteln
2455 int preisgruppe
= 0;
2456 KasseTools
.constructKasseHMap(Reha
.thisClass
.patpanel
.vecaktrez
.get(37));
2458 preisgruppe
= Integer
.parseInt(Reha
.thisClass
.patpanel
.vecaktrez
.get(41));
2459 }catch(Exception ex
){
2460 JOptionPane
.showMessageDialog(null,"Fehler in Preisgruppe "+ex
.getMessage());
2461 ex
.printStackTrace();
2463 Point pt
= aktrbut
[3].getLocationOnScreen();
2466 AbrechnungPrivat abrechnungPrivat
= new AbrechnungPrivat(Reha
.thisFrame
,"Privat-/BG-/Nachsorge-Rechnung erstellen",-1,preisgruppe
);
2467 abrechnungPrivat
.setLocation(pt
);
2468 abrechnungPrivat
.pack();
2469 abrechnungPrivat
.setModal(true);
2470 abrechnungPrivat
.setVisible(true);
2471 int rueckgabe
= abrechnungPrivat
.rueckgabe
;
2472 abrechnungPrivat
= null;
2474 neuanlageRezept(false,"","");
2476 }catch(Exception ex
){
2477 JOptionPane
.showMessageDialog(null, "Funktion privatRechnung(), Exception = "+ex
.getMessage());
2478 ex
.printStackTrace();
2483 private void doAbschliessen(){
2486 private void doAufschliessen(){
2489 /*****************************************************/
2496 public MyTermClass(String s1
, String s2
,String s3
,String s4
,String s5
){
2501 qdatum
= (s5
==null ?
" " : s5
);
2504 public String
getDDatum(){
2507 public String
getBehandler(){
2510 public String
getStext(){
2513 public String
getSArt(){
2516 public String
getQDatum(){
2521 class MyTermTableModel
extends DefaultTableModel
{
2525 private static final long serialVersionUID
= 1L;
2527 public Class
<?
> getColumnClass(int columnIndex
) {
2528 if(columnIndex
==0){return String
.class;}
2529 /*else if(columnIndex==1){return JLabel.class;}*/
2530 else{return String
.class;}
2531 //return (columnIndex == 0) ? Boolean.class : String.class;
2534 public boolean isCellEditable(int row
, int col
) {
2535 //Note that the data/cell address is constant,
2536 //no matter where the cell appears onscreen.
2537 if(Reha
.thisClass
.patpanel
.vecaktrez
.get(62).equals("T")){
2548 }else if(col
== 11){
2555 class MyAktRezeptTableModel
extends DefaultTableModel
{
2559 private static final long serialVersionUID
= 1L;
2561 public Class
<?
> getColumnClass(int columnIndex
) {
2562 if(columnIndex
==1 || columnIndex
==5 ){
2563 return JLabel
.class;}
2565 return String
.class;
2567 //return (columnIndex == 0) ? Boolean.class : String.class;
2570 public boolean isCellEditable(int row
, int col
) {
2571 //Note that the data/cell address is constant,
2572 //no matter where the cell appears onscreen.
2580 }else if(col
== 11){
2588 public void doRezeptGebuehr(Point pt
){ // Lemmi Doku: Bares Kassieren der Rezeptgebühr
2589 boolean bereitsbezahlt
= false;
2591 // vvv Lemmi 20101218: Prüfung, ob es eine RGR-RECHNUNG bereits gibt, falls ja, geht hier gar nix !
2592 Vector
<Vector
<String
>> testvec
= SqlInfo
.holeFelder("select rnr from rgaffaktura where reznr='"+
2593 (String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1)+
2594 "' AND rnr LIKE 'RGR-%' LIMIT 1");
2596 if(testvec
.size() > 0){
2597 JOptionPane
.showMessageDialog(null, "<html>Für dieses Rezept <b>" + (String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1)
2598 + "</b> wurde bereits eine Rezeptgebühren-Rechnung <b>" + testvec
.get(0) + "</b> angelegt!<br>"
2599 + "Eine Barzahlungs-Quittung kann nicht mehr erstellt werden.</html>",
2600 "Bar-Quittung nicht mehr möglich", JOptionPane
.WARNING_MESSAGE
, null);
2603 // ^^^ Lemmi 20101218: Prüfung, ob es eine RGR-RECHNUNG bereits gibt, falls ja, geht hier gar nix !
2606 // noch zu erledigen
2607 // erst prüfen ob Zuzahlstatus = 0, wenn ja zurück;
2608 // dann prüfen ob bereits bezahlt wenn ja fragen ob Kopie erstellt werden soll;
2609 if( (boolean)Reha
.thisClass
.patpanel
.vecaktrez
.get(39).equals("0") ){
2610 JOptionPane
.showMessageDialog(null,"Zuzahlung nicht erforderlich!");
2613 if(DatFunk
.Unter18(DatFunk
.sHeute(), DatFunk
.sDatInDeutsch(Reha
.thisClass
.patpanel
.patDaten
.get(4)))){
2614 JOptionPane
.showMessageDialog(null,"Stand heute ist der Patient noch nicht Volljährig - Zuzahlung deshalb (bislang) noch nicht erforderlich");
2618 if( (boolean)Reha
.thisClass
.patpanel
.vecaktrez
.get(39).equals("1") ||
2619 (Double
.parseDouble((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(13)) > 0.00) ){
2620 String reznr
= (String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1);
2621 int frage
= JOptionPane
.showConfirmDialog(null,"<html>Zuzahlung für Rezept <b>" + reznr
+ "</b> bereits in bar geleistet!<br><br> Wollen Sie eine Kopie erstellen?</html>",
2622 "Wichtige Benutzeranfrage",JOptionPane
.YES_NO_OPTION
);
2623 if(frage
== JOptionPane
.NO_OPTION
){
2626 bereitsbezahlt
= true;
2628 // Lemmi Doku: Hier werden die Variablen für die Vorlage initialisiert bzw. zurückgesetzt
2629 SystemConfig
.hmAdrRDaten
.put("<Rhbpos>","----");
2630 SystemConfig
.hmAdrRDaten
.put("<Rhbpreis>", "0,00");
2631 SystemConfig
.hmAdrRDaten
.put("<Rhbproz>", "0,00");
2632 SystemConfig
.hmAdrRDaten
.put("<Rhbgesamt>", "0,00");
2633 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>","----");
2634 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>", "0,00");
2635 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", "0,00");
2636 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", "0,00");
2637 SystemConfig
.hmAdrRDaten
.put("<Rendbetrag>", "0,00" );
2638 SystemConfig
.hmAdrRDaten
.put("<Rwert>", "0,00" );
2639 /*int art = */RezTools
.testeRezGebArt(false,false,(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1),(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(34));
2640 //System.out.println(SystemConfig.hmAdrRDaten);
2641 new RezeptGebuehren(this,bereitsbezahlt
,false,pt
);
2643 public void setZuzahlImage(int imageno
){
2644 int row
= tabaktrez
.getSelectedRow();
2646 JOptionPane
.showMessageDialog(null,"Achtung kann Icon für korrekte Zuzahlung nicht setzen.\n"+
2647 "Bitte notieren Sie den Namen des Patienten und die Rezeptnummer und verständigen\n"+
2648 "Sie den Administrator");
2651 dtblm
.setValueAt(Reha
.thisClass
.patpanel
.imgzuzahl
[imageno
], row
, 1);
2652 tabaktrez
.repaint();
2654 private void doBarcode(){
2655 SystemConfig
.hmAdrRDaten
.put("<Rhbpos>","----");
2656 SystemConfig
.hmAdrRDaten
.put("<Rhbpreis>", "0,00");
2657 SystemConfig
.hmAdrRDaten
.put("<Rhbproz>", "0,00");
2658 SystemConfig
.hmAdrRDaten
.put("<Rhbgesamt>", "0,00");
2659 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>","----");
2660 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>", "0,00");
2661 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", "0,00");
2662 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", "0,00");
2663 SystemConfig
.hmAdrRDaten
.put("<Rendbetrag>", "0,00" );
2664 SystemConfig
.hmAdrRDaten
.put("<Rwert>", "0,00" );
2665 /*int art = */RezTools
.testeRezGebArt(true,false,(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1),(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(34));
2666 //String ik = "510884019";
2667 SystemConfig
.hmAdrRDaten
.put("<Bcik>",Reha
.aktIK
);
2668 SystemConfig
.hmAdrRDaten
.put("<Bcode>","*"+(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1)+"*");
2669 //SystemConfig.hmAdrRDaten.put("<Bcode>","*"+"KG500000"+"*");
2670 int iurl
= Integer
.valueOf((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(46));
2671 String url
= SystemConfig
.rezBarCodForm
.get((iurl
< 0 ?
0 : iurl
));
2672 SystemConfig
.hmAdrRDaten
.put("<Bzu>",StringTools
.fuelleMitZeichen(
2673 SystemConfig
.hmAdrRDaten
.get("<Rendbetrag>"), " ", true, 5));
2674 SystemConfig
.hmAdrRDaten
.put("<Bges>",StringTools
.fuelleMitZeichen(
2675 SystemConfig
.hmAdrRDaten
.get("<Rwert>"), " ", true, 6));
2676 SystemConfig
.hmAdrRDaten
.put("<Bnr>",SystemConfig
.hmAdrRDaten
.get("<Rnummer>"));
2677 SystemConfig
.hmAdrRDaten
.put("<Buser>", Reha
.aktUser
);
2678 SystemConfig
.hmAdrRDaten
.put("<Rpatid>", Reha
.thisClass
.patpanel
.vecaktrez
.get(0));
2679 //System.out.println("Es wird folgender Bacrode genommen "+url);
2680 OOTools
.starteBacrodeFormular(Reha
.proghome
+"vorlagen/"+Reha
.aktIK
+"/"+url
,SystemConfig
.rezBarcodeDrucker
);
2683 public String
rezUnterbrechung(boolean lneu
,String feldname
,int behandlung
){
2684 if(neuDlgOffen
){return "";}
2688 RezTest rezTest
= new RezTest();
2689 PinPanel pinPanel
= new PinPanel();
2690 pinPanel
.setName("RezeptTest");
2691 pinPanel
.getGruen().setVisible(false);
2692 rezTest
.setSize(200,200);
2693 rezTest
.setPreferredSize(new Dimension(250,200));
2694 rezTest
.getSmartTitledPanel().setPreferredSize(new Dimension (250,200));
2695 rezTest
.setPinPanel(pinPanel
);
2696 RezTestPanel testPan
= new RezTestPanel((dummyLabel
= new JLabel()));
2697 rezTest
.getSmartTitledPanel().setContentContainer(testPan
);
2698 rezTest
.getSmartTitledPanel().setTitle("Unterbrechung bei der "+behandlung
+". Behandlung");
2699 rezTest
.setName("RezeptTest");
2700 rezTest
.setModal(true);
2701 Point pt
= tabaktterm
.getLocationOnScreen();
2704 rezTest
.setLocation(pt
);
2706 rezTest
.setVisible(true);
2708 //System.out.println("Rez unterbrechung geschlossen - Ergebnis = "+dummyLabel.getText());
2709 ret
= String
.valueOf(dummyLabel
.getText());
2710 testPan
.dummylab
= null;
2713 neuDlgOffen
= false;
2715 }catch(Exception ex
){
2716 ex
.printStackTrace();
2722 // Lemmi 20110101: bCtrlPressed zugefügt. Kopieren des letzten Rezepts des selben Patienten bei Rezept-Neuanlage
2723 // public void neuanlageRezept( boolean lneu, String feldname ) {
2724 public void neuanlageRezept( boolean lneu
, String feldname
, String strModus
){
2726 if(Reha
.thisClass
.patpanel
.aid
< 0 || Reha
.thisClass
.patpanel
.kid
< 0){
2727 String meldung
= "Hausarzt und/oder Krankenkasse im Patientenstamm sind nicht verwertbar.\n"+
2728 "Die jeweils ungültigen Angaben sind -> kursiv <- dargestellt.\n\n"+
2729 "Bitte korrigieren Sie die entsprechenden Angaben";
2730 JOptionPane
.showMessageDialog(null, meldung
);
2734 JOptionPane
.showMessageDialog(null, "neuDlgOffen hat den wert true");
2739 RezNeuDlg neuRez
= new RezNeuDlg();
2740 PinPanel pinPanel
= new PinPanel();
2741 pinPanel
.setName("RezeptNeuanlage");
2742 pinPanel
.getGruen().setVisible(false);
2744 neuRez
.getSmartTitledPanel().setTitle("Rezept Neuanlage");
2746 neuRez
.setSize(500,800);
2747 neuRez
.setPreferredSize(new Dimension(490+Reha
.zugabex
,690+Reha
.zugabey
));
2748 neuRez
.getSmartTitledPanel().setPreferredSize(new Dimension (490,800)); //Original 630
2749 neuRez
.setPinPanel(pinPanel
);
2751 // vvv Lemmi 20110101: Kopieren des letzten Rezepts des selben Patienten bei Rezept-Neuanlage
2752 Vector
<String
> vecKopiervorlage
= new Vector
<String
>();
2753 if ( strModus
.equals("KopiereLetztes") ) {
2754 RezeptVorlage vorlage
= new RezeptVorlage(aktrbut
[0].getLocationOnScreen());
2755 if ( !vorlage
.bHasSelfDisposed
) { // wenn es nur eine Disziplin gibt, hat sich der Auswahl-Dialog bereits selbst disposed !
2756 vorlage
.setModal(true);
2758 vorlage
.setVisible(true);
2760 //String strKopierDiszi = vorlage.strSelectedDiszi;
2761 // Die Rezept-Kopiervorlage steht jetzt in vorlage.vecResult oder es wurde nichts gefunden !
2762 vecKopiervorlage
= vorlage
.vecResult
;
2764 if ( !vorlage
.bHasSelfDisposed
) { // wenn es nur eine Disziplin gibt, hat sich der Auswahl-Dialog bereits selbst disposed !
2769 if ( strModus
.equals("KopiereAngewaehltes") ) { // Vorschlag von J. Steinhilber integriert: Kopiere das angewählte Rezept
2770 String rezToCopy
= AktuelleRezepte
.getActiveRezNr();
2771 vecKopiervorlage
= ((Vector
<String
>)SqlInfo
.holeSatz( "verordn", " * ", "REZ_NR = '" +
2772 rezToCopy
+ "'", Arrays
.asList(new String
[] {}) ));
2775 if ( strModus
.equals("KopiereHistorienRezept") ) {
2776 String rezToCopy
= Historie
.getActiveRezNr();
2777 vecKopiervorlage
= ((Vector
<String
>)SqlInfo
.holeSatz( "lza", " * ", "REZ_NR = '" +
2778 rezToCopy
+ "'", Arrays
.asList(new String
[] {}) ));
2780 // ^^^ Lemmi 20110101: Kopieren des letzten Rezepts des selben Patienten bei Rezept-Neuanlage
2781 @SuppressWarnings("unchecked")
2782 RezNeuanlage rezNeuAn
= new RezNeuanlage((Vector
<String
>)vecKopiervorlage
.clone(),lneu
,feldname
);
2783 neuRez
.getSmartTitledPanel().setContentContainer( rezNeuAn
);
2784 //if ( rezNeuAn.strKopiervorlage.isEmpty() )
2785 if ( vecKopiervorlage
.size() < 1 )
2786 neuRez
.getSmartTitledPanel().setTitle("Rezept Neuanlage");
2787 else // Lemmi 20110101: Kopieren des letzten Rezepts des selben Patienten bei Rezept-Neuanlage
2788 neuRez
.getSmartTitledPanel().setTitle("Rezept Neuanlage als Kopie von <-- " + vecKopiervorlage
.get(1) );
2790 }else{ // Lemmi Doku: Hier wird ein existierendes Rezept mittels Doppelklick geöffnet:
2791 neuRez
.getSmartTitledPanel().setContentContainer(new RezNeuanlage(Reha
.thisClass
.patpanel
.vecaktrez
,lneu
,feldname
));
2792 neuRez
.getSmartTitledPanel().setTitle("editieren Rezept ---> "+Reha
.thisClass
.patpanel
.vecaktrez
.get(1));
2794 neuRez
.getSmartTitledPanel().getContentContainer().setName("RezeptNeuanlage");
2795 neuRez
.setName("RezeptNeuanlage");
2796 neuRez
.setModal(true);
2797 neuRez
.setLocationRelativeTo(null);
2799 neuRez
.setVisible(true);
2805 if(tabaktrez
.getRowCount()>0){
2807 RezeptDaten
.feddisch
= false;
2808 //System.out.println("rufe Rezeptnummer "+(String)tabaktrez.getValueAt(tabaktrez.getSelectedRow(), 7));
2809 aktualisiereVector((String
)tabaktrez
.getValueAt(tabaktrez
.getSelectedRow(), idInTable
));
2812 dtblm
.setValueAt(Reha
.thisClass
.patpanel
.imgzuzahl
[Integer
.parseInt((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(39))],
2813 tabaktrez
.getSelectedRow(),1);
2815 dtblm
.setValueAt(Reha
.thisClass
.patpanel
.vecaktrez
.get(44), tabaktrez
.getSelectedRow(), 7);
2816 tabaktrez
.validate();
2817 tabaktrez
.repaint();
2818 }catch(Exception ex
){
2819 JOptionPane
.showMessageDialog(null,"Fehler in der Darstellung eines abgespeicherten Rezeptes");
2820 ex
.printStackTrace();
2824 if(aktPanel
.equals("leerPanel")){
2825 holeRezepte(Reha
.thisClass
.patpanel
.patDaten
.get(29),"");
2828 }catch(Exception ex
){
2829 ex
.printStackTrace();
2830 JOptionPane
.showMessageDialog(null, "Fehler beim Öffnen des Rezeptfensters");
2832 ////System.out.println("Pat Neu/Andern ist disposed");
2833 neuDlgOffen
= false;
2836 @SuppressWarnings("unchecked")
2837 public Vector
<String
> getModelTermine() {
2838 return (Vector
<String
>)dtermm
.getDataVector().clone();
2840 private void doUebertrag(){
2841 int row
= tabaktrez
.getSelectedRow();
2844 int mod
= tabaktrez
.convertRowIndexToModel(row
);
2845 String rez_nr
= dtblm
.getValueAt(mod
, 0).toString().trim();
2846 SqlInfo
.transferRowToAnotherDB("verordn", "lza","rez_nr", rez_nr
, true, Arrays
.asList(new String
[] {"id"}));
2847 SqlInfo
.sqlAusfuehren("delete from verordn where rez_nr='"+rez_nr
+"'");
2848 Reha
.thisClass
.patpanel
.aktRezept
.holeRezepte(Reha
.thisClass
.patpanel
.patDaten
.get(29),"");
2849 final String xrez_nr
= String
.valueOf(rez_nr
);
2850 SwingUtilities
.invokeLater(new Runnable(){
2852 Reha
.thisClass
.patpanel
.historie
.holeRezepte(Reha
.thisClass
.patpanel
.patDaten
.get(29), "");
2853 SqlInfo
.sqlAusfuehren("delete from fertige where rez_nr='"+xrez_nr
+"'");
2854 RezTools
.loescheRezAusVolleTabelle(xrez_nr
);
2855 if(Reha
.thisClass
.abrechnungpanel
!= null){
2856 String
[] diszis
= {"Physio","Massage","Ergo","Logo","Podo"};
2857 String aktDisziplin
= diszis
[Reha
.thisClass
.abrechnungpanel
.cmbDiszi
.getSelectedIndex()];
2858 if(RezTools
.putRezNrGetDisziplin(xrez_nr
).equals(aktDisziplin
)){
2859 Reha
.thisClass
.abrechnungpanel
.einlesenErneuern();
2865 setzeKarteiLasche();
2866 }catch(Exception ex
){
2867 ex
.printStackTrace();
2868 JOptionPane
.showConfirmDialog(null, "Fehler in der Funktion AktuelleRezepte -> doUebertrag()");
2871 JOptionPane
.showMessageDialog(null, "Kein aktuelles Rezept für den Übertrag in die Historie ausgewählt!");
2875 private void fuelleTage(){
2876 int akt
= this.tabaktrez
.getSelectedRow();
2878 //JOptionPane.showMessageDialog(null, "Kein aktuelles Rezept für Übertrag in Clipboard ausgewählt");
2882 int tage
= this.dtermm
.getRowCount();
2885 for(int i
= 0; i
< tage
;i
++){
2886 stage
= stage
+(i
> 0 ?
", " : "")+ dtermm
.getValueAt(i
, 0).toString();
2888 SystemConfig
.hmAdrRDaten
.put("<Rtage>", String
.valueOf(stage
));
2890 private void doTageDrucken(){
2891 int akt
= this.tabaktrez
.getSelectedRow();
2893 JOptionPane
.showMessageDialog(null, "Kein aktuelles Rezept für Übertrag in Clipboard ausgewählt");
2896 String stage
= "Rezeptnummer: "+this.tabaktrez
.getValueAt(akt
,0).toString()+" - Rezeptdatum: "+this.tabaktrez
.getValueAt(akt
,2).toString()+"\n";
2897 int tage
= this.dtermm
.getRowCount();
2900 for(int i
= 0; i
< tage
;i
++){
2901 stage
= stage
+ Integer
.toString(i
+1)+"\t"+dtermm
.getValueAt(i
, 0).toString()+"\n";
2903 copyToClipboard(stage
);
2905 public static void copyToClipboard(String s
) {
2906 Toolkit
.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(s
), null);
2908 private void do301FallSteuerung(){
2909 if(!Rechte
.hatRecht(Rechte
.Sonstiges_Reha301
, true)){return;}
2910 int row
= tabaktrez
.getSelectedRow();
2911 if(row
< 0){JOptionPane
.showMessageDialog(null,"Kein Rezept für Fallsteuerung ausgewählt"); return;}
2912 //String aktrez = tabaktrez.getValueAt(row,0).toString().trim();
2913 //int rezepte = Integer.parseInt(SqlInfo.holeEinzelFeld("select count(*) from dta301 where rez_nr ='"+aktrez+"'"));
2916 String meldung = "<html>Diese Verordnung wurde vom Kostenträger <b>nicht elektronisch</b> übermittelt!<br>"+
2917 "Verwendung für die Fallsteuerung nach §301 ist deshalb <b>nicht möglich.</b><br></html>";
2918 JOptionPane.showMessageDialog(null,meldung);
2923 Reha
.thisClass
.progLoader
.Dta301Fenster(1, (String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1));
2924 // Hier der Aufruf der Fallsteuerungs .JAR
2927 // Lemmi 20101218: kopiert aus AbrechnungRezept.java und die Datenherkunfts-Variablen verändert bzw. angepasst.
2928 private void doRezeptgebuehrRechnung(Point location
){
2929 boolean buchen
= true;
2930 DecimalFormat dfx
= new DecimalFormat( "0.00" );
2932 // Vector<Vector<String>> testvec = SqlInfo.holeFelder("select reznr from rgaffaktura where reznr='"+aktRezNum.getText()+
2933 // "' AND rnr LIKE 'RGR-%' LIMIT 1");
2934 Vector
<Vector
<String
>> testvec
= SqlInfo
.holeFelder("select reznr from rgaffaktura where reznr='"+
2935 (String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1) + "' AND rnr LIKE 'RGR-%' LIMIT 1");
2937 if(testvec
.size() > 0){
2938 int anfrage
= JOptionPane
.showConfirmDialog(null, "Für dieses Rezept wurde bereits eine Rezeptgebührrechnung angelegt!"+
2939 "Wollen Sie eine Kopie erstellen?", "Achtung wichtige Benutzeranfrage", JOptionPane
.YES_NO_OPTION
);
2940 if(anfrage
!= JOptionPane
.YES_OPTION
){
2945 // vvv Prüfungen aus der Bar-Quittung auch hier !
2946 if( (boolean)Reha
.thisClass
.patpanel
.vecaktrez
.get(39).equals("0") ){
2947 JOptionPane
.showMessageDialog(null,"Zuzahlung nicht erforderlich!");
2950 if(DatFunk
.Unter18(DatFunk
.sHeute(), DatFunk
.sDatInDeutsch(Reha
.thisClass
.patpanel
.patDaten
.get(4)))){
2951 JOptionPane
.showMessageDialog(null,"Stand heute ist der Patient noch nicht Volljährig - Zuzahlung deshalb (bislang) noch nicht erforderlich");
2955 if( (boolean)Reha
.thisClass
.patpanel
.vecaktrez
.get(39).equals("1") ||
2956 (Double
.parseDouble((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(13)) > 0.00) ){
2957 JOptionPane
.showMessageDialog(null, "<html>Zuzahlung für Rezept <b>" + (String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1)
2958 + "</b> wurde bereits in bar geleistet.<br>"
2959 + "Eine Rezeptgebühren-Rechnung kann deshalb nicht mehr erstellt werden.</html>",
2960 "Rezeptgebühren-Rechnung nicht mehr möglich", JOptionPane
.WARNING_MESSAGE
, null);
2963 // ^^^ Prüfungen aus der Bar-Quittung auch hier !
2969 HashMap
<String
,String
> hmRezgeb
= new HashMap
<String
,String
>();
2972 String behandl
= "";
2973 String strZuzahlung
= "0.00";
2975 // Lemmi: Nutzung der Routine aus der RG-Barzahlung, um "geprüft" einige Varibalen vorzubelegen
2976 // Lemmi Doku: Hier werden die Variablen für die Vorlage initialisiert bzw. zurückgesetzt
2977 SystemConfig
.hmAdrRDaten
.put("<Rhbpos>","----");
2978 SystemConfig
.hmAdrRDaten
.put("<Rhbpreis>", "0,00");
2979 SystemConfig
.hmAdrRDaten
.put("<Rhbproz>", "0,00");
2980 SystemConfig
.hmAdrRDaten
.put("<Rhbgesamt>", "0,00");
2981 SystemConfig
.hmAdrRDaten
.put("<Rwegpos>","----");
2982 SystemConfig
.hmAdrRDaten
.put("<Rwegpreis>", "0,00");
2983 SystemConfig
.hmAdrRDaten
.put("<Rwegproz>", "0,00");
2984 SystemConfig
.hmAdrRDaten
.put("<Rweggesamt>", "0,00");
2985 SystemConfig
.hmAdrRDaten
.put("<Rendbetrag>", "0,00" );
2986 SystemConfig
.hmAdrRDaten
.put("<Rwert>", "0,00" );
2987 RezTools
.testeRezGebArt(false,false,(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1),(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(34));
2989 // for(int i = 0; i < vec_poskuerzel.size();i++){
2990 // behandl=behandl+vec_posanzahl.get(i)+"*"+vec_poskuerzel.get(i)+(i < (vec_poskuerzel.size()-1) ? "," : "" );
2991 // String mit den Anzahlen und HM-Kürzeln erzeugen
2992 for(i
= 0; i
< 4; i
++){
2993 if ( ( Reha
.thisClass
.patpanel
.vecaktrez
.get(65+i
) != null)
2994 && ((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(65+i
)).length() > 0 ) {
2995 behandl
+= ((behandl
.length() > 0) ?
", " : "") + (String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(3+i
) + " * " + (String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(65+i
);
2999 // Zuzahlung zusammenziehen
3000 Double dZuzahl
= 0.0;
3001 for(i
= 0; i
< 4; i
++){
3002 if ( Double
.parseDouble(SystemConfig
.hmAdrRDaten
.get("<Rproz"+(i
+1)+">").replaceAll(",", ".")) > 0.00 ) {
3003 dZuzahl
+= Double
.parseDouble(SystemConfig
.hmAdrRDaten
.get("<Rgesamt"+(i
+1)+">").replaceAll(",", "."));
3005 // dZuzahl += Double.parseDouble(SystemConfig.hmAdrRDaten.get("<Rproz"+(i+1)+">").replaceAll(",", ".")) *
3006 // Double.parseDouble(SystemConfig.hmAdrRDaten.get("<Ranzahl"+(i+1)+">").replaceAll(",", "."));
3009 dZuzahl
+= Double
.parseDouble(SystemConfig
.hmAdrRDaten
.get("<Rpauschale>").replaceAll(",", ".")); // 10 Euro dazu
3011 strZuzahlung
= (String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(13);
3012 strZuzahlung
= dfx
.format(dZuzahl
);
3013 strZuzahlung
= SystemConfig
.hmAdrRDaten
.get("<Rendbetrag>");
3015 /* String test1 = ""; // Mal die Rezeptdaten auflisten !
3016 int iMax = Reha.thisClass.patpanel.vecaktrez.size();
3017 for( i = 0; i < iMax; i++){
3018 test1 = test1 + i + " = " + (String)Reha.thisClass.patpanel.vecaktrez.get(i) + "\n";
3025 //anr=17,titel=18,nname=0,vname=1,strasse=3,plz=4,ort=5,abwadress=19
3026 //"anrede,titel,nachname,vorname,strasse,plz,ort"
3028 // String cmd = "select abwadress,id from pat5 where pat_intern='"+vec_rez.get(0).get(0)+"' LIMIT 1";
3029 String cmd
= "select abwadress,id from pat5 where pat_intern='"+(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(0)+"' LIMIT 1";
3030 Vector
<Vector
<String
>> adrvec
= SqlInfo
.holeFelder(cmd
);
3031 String
[] adressParams
= null;
3033 abrRez
= new AbrechnungRezept(null);
3034 if(adrvec
.get(0).get(0).equals("T")){
3035 adressParams
= abrRez
.holeAbweichendeAdresse(adrvec
.get(0).get(1));
3037 adressParams
= abrRez
.getAdressParams(adrvec
.get(0).get(1));
3039 // hmRezgeb.put("<rgreznum>",aktRezNum.getText());
3040 hmRezgeb
.put("<rgreznum>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(1));
3042 hmRezgeb
.put("<rgbehandlung>",behandl
);
3044 // hmRezgeb.put("<rgdatum>",DatFunk.sDatInDeutsch(vec_rez.get(0).get(2)));
3045 hmRezgeb
.put("<rgdatum>",DatFunk
.sDatInDeutsch((String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(2)));
3047 // hmRezgeb.put("<rgbetrag>",dfx.format(zuzahlungWert)); Lemmi xxx
3048 hmRezgeb
.put("<rgbetrag>",strZuzahlung
);
3050 hmRezgeb
.put("<rgpauschale>","5,00");
3051 hmRezgeb
.put("<rggesamt>","0,00");
3052 hmRezgeb
.put("<rganrede>",adressParams
[0]);
3053 hmRezgeb
.put("<rgname>",adressParams
[1]);
3054 hmRezgeb
.put("<rgstrasse>",adressParams
[2]);
3055 hmRezgeb
.put("<rgort>",adressParams
[3]);
3056 hmRezgeb
.put("<rgbanrede>",adressParams
[4]);
3058 // hmRezgeb.put("<rgpatintern>",vec_rez.get(0).get(0));
3059 hmRezgeb
.put("<rgpatintern>",(String
)Reha
.thisClass
.patpanel
.vecaktrez
.get(0));
3061 RezeptGebuehrRechnung rgeb
= new RezeptGebuehrRechnung(Reha
.thisFrame
,"Nachberechnung Rezeptgebühren",rueckgabe
,hmRezgeb
,buchen
);
3062 rgeb
.setSize(new Dimension(250,300));
3063 rgeb
.setLocation(location
.x
-50,location
.y
-50);
3065 rgeb
.setVisible(true);
3068 /**********************************************/
3070 class ToolsDlgAktuelleRezepte
{
3071 public ToolsDlgAktuelleRezepte(String command
,Point pt
){
3072 //boolean testcase = true;
3073 Map
<Object
, ImageIcon
> icons
= new HashMap
<Object
, ImageIcon
>();
3074 icons
.put("Rezeptgebühren kassieren",SystemConfig
.hmSysIcons
.get("rezeptgebuehr"));
3075 icons
.put("BarCode auf Rezept drucken",SystemConfig
.hmSysIcons
.get("barcode"));
3076 icons
.put("Ausfallrechnung drucken",SystemConfig
.hmSysIcons
.get("ausfallrechnung"));
3077 icons
.put("Rezept ab-/aufschließen",SystemConfig
.hmSysIcons
.get("statusset"));
3078 icons
.put("Privat-/BG-/Nachsorge-Rechnung erstellen",SystemConfig
.hmSysIcons
.get("privatrechnung"));
3079 icons
.put("Behandlungstage in Clipboard",SystemConfig
.hmSysIcons
.get("einzeltage"));
3080 icons
.put("Transfer in Historie",SystemConfig
.hmSysIcons
.get("redo"));
3081 // Lemmi 20101218: angehängt Rezeptgebühr-Rechnung aus dem Rezept heraus erzeugen
3082 icons
.put("Rezeptgebühr-Rechnung erstellen",SystemConfig
.hmSysIcons
.get("privatrechnung"));
3083 icons
.put("§301 Reha-Fallsteuerung",SystemConfig
.hmSysIcons
.get("abrdreieins"));
3085 // create a list with some test data
3086 JList list
= new JList( new Object
[] {"Rezeptgebühren kassieren", "BarCode auf Rezept drucken", "Ausfallrechnung drucken",
3087 "Rezept ab-/aufschließen", "Privat-/BG-/Nachsorge-Rechnung erstellen",
3088 "Behandlungstage in Clipboard", "Transfer in Historie",
3089 "Rezeptgebühr-Rechnung erstellen",
3090 "§301 Reha-Fallsteuerung" }); // Lemmi 20101218: eingefügt Rezeptgebühr-Rechnung aus dem Rezept heraus erzeugen
3091 list
.setCellRenderer(new IconListRenderer(icons
));
3092 Reha
.toolsDlgRueckgabe
= -1;
3093 ToolsDialog tDlg
= new ToolsDialog(Reha
.thisFrame
,"Werkzeuge: aktuelle Rezepte",list
);
3094 tDlg
.setPreferredSize(new Dimension(275, (255+28) + // Lemmi: Breite, Höhe des Werkzeug-Dialogs
3095 ((Boolean
)SystemConfig
.hmPatientenWerkzeugDlgIni
.get("ToolsDlgShowButton") ?
25 : 0) ));
3096 tDlg
.setLocation(pt
.x
-70,pt
.y
+30);
3098 tDlg
.setModal(true);
3099 tDlg
.activateListener();
3100 tDlg
.setVisible(true);
3103 Reha.thisClass.dbLabel.setText("RWert von Tool = "+Reha.toolsDlgRueckgabe);
3106 if(Reha
.toolsDlgRueckgabe
> -1){
3107 if(Reha
.toolsDlgRueckgabe
==0){
3109 if(!Rechte
.hatRecht(Rechte
.Rezept_gebuehren
, true)){return;}
3110 RezTools
.constructRawHMap();
3113 }else if(Reha
.toolsDlgRueckgabe
==1){
3115 if(!Rechte
.hatRecht(Rechte
.Rezept_gebuehren
, true)){return;}
3116 new SwingWorker
<Void
,Void
>(){
3118 protected Void
doInBackground() throws Exception
{
3125 }else if(Reha
.toolsDlgRueckgabe
==2){
3127 if(!Rechte
.hatRecht(Rechte
.Rezept_ausfallrechnung
, true)){return;}
3130 }else if(Reha
.toolsDlgRueckgabe
==3){
3132 rezeptAbschliessen();
3134 }else if(Reha
.toolsDlgRueckgabe
==4){
3136 if(!Rechte
.hatRecht(Rechte
.Rezept_privatrechnung
, true)){return;}
3139 new SwingWorker<Void,Void>(){
3141 protected Void doInBackground() throws Exception {
3142 RezTools.constructRawHMap();
3149 }catch(Exception ex
){
3150 JOptionPane
.showMessageDialog(null, ex
.getMessage());
3153 }else if(Reha
.toolsDlgRueckgabe
==5){
3157 }else if(Reha
.toolsDlgRueckgabe
==6){
3159 if(!Rechte
.hatRecht(Rechte
.Sonstiges_rezepttransfer
, true)){
3162 int anfrage
= JOptionPane
.showConfirmDialog(null, "Das ausgewählte Rezept wirklich in die Historie transferieren?", "Achtung wichtige Benutzeranfrage", JOptionPane
.YES_NO_OPTION
);
3163 if(anfrage
== JOptionPane
.YES_OPTION
){
3168 // Lemmi 20101218: neuer if Block: Rezeptgebühr-Rechnung aus dem Rezept heraus erzeugen
3169 else if(Reha
.toolsDlgRueckgabe
==7){
3171 if(!Rechte
.hatRecht(Rechte
.Rezept_gebuehren
, true)){return;}
3172 PointerInfo info
= MouseInfo
.getPointerInfo();
3173 Point location
= info
.getLocation();
3174 doRezeptgebuehrRechnung(location
);
3176 // abrRez = new AbrechnungRezept(null);
3177 // this.abrRez.setRechtsAufNull();
3179 // abrRez.doRezeptgebuehrRechnung(location);
3182 }else if(Reha
.toolsDlgRueckgabe
==8){
3183 do301FallSteuerung();
3188 ////System.out.println("Rückgabewert = "+tDlg.rueckgabe);
3194 class RezNeuDlg
extends RehaSmartDialog
implements RehaTPEventListener
,WindowListener
{
3198 private static final long serialVersionUID
= -7104716962577408414L;
3199 private RehaTPEventClass rtp
= null;
3201 super(null,"RezeptNeuanlage");
3202 this.setName("RezeptNeuanlage");
3203 //super.getPinPanel().setName("RezeptNeuanlage");
3204 rtp
= new RehaTPEventClass();
3205 rtp
.addRehaTPEventListener((RehaTPEventListener
) this);
3208 public void rehaTPEventOccurred(RehaTPEvent evt
) {
3209 // TODO Auto-generated method stub
3211 // Lemmi Doku: hier kommt der Event für den Abbruch des Rezept-Fensters mittels rotem Punkt!!!!!
3212 if(evt
.getDetails()[0] != null){
3213 if(evt
.getDetails()[0].equals(this.getName())){
3215 /* geht hier nicht, weil der Dialog PinPanel trotzdem alles zumacht !
3216 // Lemmi 20100102: Abbruch ohen Änderung-Speichern verhindern
3217 if ( ((RezNeuanlage)getSmartTitledPanel().getContentContainer()).HasChanged() &&
3218 ((RezNeuanlage)getSmartTitledPanel().getContentContainer()).askForCancelUsaved() == 1
3222 //System.out.println("In rezNeuDlg set Visible false***************");
3223 this.setVisible(false);
3225 rtp
.removeRehaTPEventListener((RehaTPEventListener
) this);
3227 ListenerTools
.removeListeners(this);
3230 //System.out.println("****************Rezept Neu/ändern -> Listener entfernt**************");
3233 //System.out.println("Details == null");
3235 }catch(NullPointerException ne
){
3236 ne
.printStackTrace();
3237 //System.out.println("In RezeptNeuanlage" +evt);
3238 }catch(Exception ex
){
3242 public void windowClosed(WindowEvent arg0
) {
3243 // TODO Auto-generated method stub
3245 this.setVisible(false);
3246 rtp
.removeRehaTPEventListener((RehaTPEventListener
) this);
3249 ListenerTools
.removeListeners(this);
3251 //System.out.println("****************Rezept Neu/ändern -> Listener entfernt (Closed)**********");
3258 /************************************/