1 package patientenFenster
;
3 import hauptFenster
.Reha
;
5 import java
.awt
.AlphaComposite
;
6 import java
.awt
.BorderLayout
;
8 import java
.awt
.Dimension
;
10 import java
.awt
.Graphics
;
11 import java
.awt
.Graphics2D
;
12 import java
.awt
.Image
;
13 import java
.awt
.Point
;
14 import java
.awt
.event
.ActionEvent
;
15 import java
.awt
.event
.ActionListener
;
16 import java
.awt
.event
.FocusEvent
;
17 import java
.awt
.event
.FocusListener
;
18 import java
.awt
.event
.KeyAdapter
;
19 import java
.awt
.event
.KeyEvent
;
20 import java
.awt
.event
.KeyListener
;
21 import java
.awt
.event
.MouseAdapter
;
22 import java
.awt
.event
.MouseEvent
;
23 import java
.awt
.image
.BufferedImage
;
24 import java
.io
.ByteArrayInputStream
;
25 import java
.io
.ByteArrayOutputStream
;
26 import java
.io
.IOException
;
27 import java
.io
.Serializable
;
28 import java
.sql
.ResultSet
;
29 import java
.sql
.SQLException
;
30 import java
.sql
.Statement
;
31 import java
.util
.Arrays
;
32 import java
.util
.List
;
33 import java
.util
.Vector
;
35 import javax
.imageio
.ImageIO
;
36 import javax
.swing
.BorderFactory
;
37 import javax
.swing
.ImageIcon
;
38 import javax
.swing
.JButton
;
39 import javax
.swing
.JComponent
;
40 import javax
.swing
.JLabel
;
41 import javax
.swing
.JOptionPane
;
42 import javax
.swing
.JScrollPane
;
43 import javax
.swing
.JTabbedPane
;
44 import javax
.swing
.SwingUtilities
;
45 import javax
.swing
.UIManager
;
46 import javax
.swing
.table
.DefaultTableModel
;
48 import jxTableTools
.TableTool
;
49 import krankenKasse
.KassenFormulare
;
50 import kvKarte
.KVKWrapper
;
51 import oOorgTools
.OOTools
;
53 import org
.jdesktop
.swingworker
.SwingWorker
;
54 import org
.jdesktop
.swingx
.JXDialog
;
55 import org
.jdesktop
.swingx
.JXPanel
;
56 import org
.jdesktop
.swingx
.JXTable
;
58 import rechteTools
.Rechte
;
59 import sqlTools
.ExUndHop
;
60 import sqlTools
.SqlInfo
;
61 import stammDatenTools
.ArztTools
;
62 import stammDatenTools
.ZuzahlTools
;
63 import sun
.awt
.image
.ImageFormatException
;
64 import systemEinstellungen
.INIFile
;
65 import systemEinstellungen
.SystemConfig
;
66 import systemTools
.JCompTools
;
67 import systemTools
.JRtaCheckBox
;
68 import systemTools
.JRtaComboBox
;
69 import systemTools
.JRtaTextField
;
70 import systemTools
.ListenerTools
;
71 import systemTools
.StringTools
;
72 import terminKalender
.DatFunk
;
74 import com
.jgoodies
.forms
.builder
.PanelBuilder
;
75 import com
.jgoodies
.forms
.layout
.CellConstraints
;
76 import com
.jgoodies
.forms
.layout
.FormLayout
;
77 import com
.jgoodies
.looks
.windows
.WindowsTabbedPaneUI
;
78 import com
.mysql
.jdbc
.PreparedStatement
;
79 import com
.sun
.image
.codec
.jpeg
.JPEGCodec
;
80 import com
.sun
.image
.codec
.jpeg
.JPEGImageEncoder
;
82 import events
.PatStammEvent
;
83 import events
.PatStammEventClass
;
84 import events
.RehaTPEvent
;
85 import events
.RehaTPEventClass
;
86 import events
.RehaTPEventListener
;
88 public class PatNeuanlage
extends JXPanel
implements RehaTPEventListener
,Serializable
,ActionListener
, KeyListener
,FocusListener
{
93 private static final long serialVersionUID
= -5089258058628709139L;
98 //private JXPanel Tab1 = null;
99 public JRtaTextField
[] jtf
= {null,null,null,null,null,
100 null,null,null,null,null,
101 null,null,null,null,null,
102 null,null,null,null,null,
103 null,null,null,null,null,
104 null,null,null,null,null,
105 null,null,null,null,null,
106 null,null}; //,null,null, null};
107 JRtaCheckBox
[]jcheck
={null,null,null,null,null,
108 null,null,null,null,null,
112 JXTable doclist
= null;
113 MyDocTableModel docmod
= null;
114 JButton knopf0
= null;
115 JButton knopf1
= null;
116 JButton knopf3
= null;
117 JButton knopf4
= null;
118 JButton knopf5
= null;
123 JRtaComboBox cbanrede
= null;
125 //Lemmi 20110103: Merken der Originalwerte der eingelesenen Textfelder, Combo- und Check-Boxen
126 Vector
<Object
> originale
= new Vector
<Object
>();
128 String kassenid
= "";
129 String befreitdatum
= "";
130 String befreitbeginn
= "";
131 JLabel lblbild
= null;
132 boolean freizumstart
= false;
133 boolean freibeimspeichern
= false;
134 public FocusListener flis
;
135 public boolean feldergefuellt
= false;
141 JScrollPane jscr
= null;
142 public List
<String
>xfelder
= Arrays
.asList( new String
[] {"anrede" ,"n_name","v_name","strasse","plz","ort","geboren","telefonp",
143 "telefong","telefonm","emaila","kasse","kv_nummer","v_nummer","kv_status",
144 "bef_dat","artz","arzt_num","therapeut","abwanrede","abwtitel","abn_name",
145 "abwv_name","abwstrasse","abwort","akutdat","termine1","termine2","kilometer",
146 "heimbewohn","jahrfrei","bef_ab"});
147 public List
<String
> checks
= Arrays
.asList( new String
[] {"abwadress","akutpat" ,"merk1","merk2","merk3","merk4",
148 "merk5","merk6","heimbewohn","nobefr","u18no"});
149 //Achtung bei Feldgr��en �ber > 65 immer 2 abziehen wg. memofelder die nicht eingelesen werden
150 //0 1 2 3 4 5 6 7 8 9 10 1112 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
151 int[] fedits
= {0 , 1 , 2 , 3 , 4, 5, 6,11, 7, 8, 9,10,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36 };
152 int[] ffelder
= {0 , 1 , 2 , 3 ,21,23,24, 4,18,19,20,50,13,14,16,15,31,25,26,56, 6, 7, 8, 9,10,11,12,46,34,36,37,48,40,65,66,67,41};
153 int[] fchecks
= {0 , 1 , 2 , 3 , 4 , 5 ,6 , 7 , 8, 9};
154 int[] ffelder2
= {5 ,33 ,62 ,61 , 60 ,59 ,58, 57, 44,68};
155 Vector
<String
> patDaten
= null;
158 AlphaComposite xac1
= null;
159 AlphaComposite xac2
= null;
160 String feldname
= "";
161 String globPat_intern
= "";
162 public static String arztbisher
= "";
163 public static String kassebisher
= "";
164 boolean inNeu
= false;
165 Vector
<String
> titel
= new Vector
<String
>() ;
166 Vector
<String
> formular
= new Vector
<String
>();
169 private RehaTPEventClass rtp
= null;
171 boolean editvoll
= false;
172 private JRtaTextField formularid
= new JRtaTextField("NIX",false);
174 private KVKWrapper kvw
;
176 boolean startMitBild
= false;
177 boolean updateBild
= false;
179 public PatNeuanlage(Vector
<String
> vec
,boolean neu
,String sfeldname
){
180 setBorder(BorderFactory
.createEmptyBorder(10, 0, 10, 0));
181 new SwingWorker
<Void
,Void
>(){
183 protected Void
doInBackground() throws Exception
{
184 setBackgroundPainter(Reha
.thisClass
.compoundPainter
.get("PatNeuanlage"));
188 this.setDoubleBuffered(true);
192 editvoll
= Rechte
.hatRecht(Rechte
.Patient_anlegen
, false);
194 editvoll
= Rechte
.hatRecht(Rechte
.Patient_editvoll
, false);
196 this.feldname
= sfeldname
;
197 this.setBackground(Color
.WHITE
);
198 this.setLayout(new BorderLayout());
199 this.font
= new Font("Tahome",Font
.BOLD
,11);
200 this.setBorder(BorderFactory
.createEmptyBorder(0, 10, 0, 10));
202 add(getButtonPanel(),BorderLayout
.SOUTH
);
204 UIManager
.put("TabbedPane.tabsOpaque", Boolean
.FALSE
);
205 UIManager
.put("TabbedPane.contentOpaque", Boolean
.FALSE
);
207 JTabbedPane patTab
= new JTabbedPane();
209 patTab
.setUI(new WindowsTabbedPaneUI());
210 }catch(Exception ex
){
211 // Kein KarstenLentsch LAF
213 //TabbedPaneUI tpUi = patTab.getUI();
215 patTab
.setOpaque(false);
219 patTab
.addTab("1 - Stammdaten", Tab1());
220 patTab
.addTab("2 - Zusätze", Tab2());
221 patTab
.addTab("3 - Sonstiges", Tab3());
222 patTab
.setMnemonicAt(0, (int) '1');
223 patTab
.setMnemonicAt(1, (int) '2');
224 patTab
.setMnemonicAt(2, (int) '3');
227 new SwingWorker
<Void
,Void
>(){
229 protected Void
doInBackground() throws Exception
{
230 for(int i
= 0; i
< jtf
.length
;i
++){
232 jtf
[i
].setEnabled(false);
235 for(int i
= 0; i
< jcheck
.length
;i
++){
236 if(jcheck
[i
] != null){
237 jcheck
[i
].setEnabled(false);
240 doclist
.setEnabled(false);
241 pic0
.setEnabled(false);
242 pic1
.setEnabled(false);
243 pic2
.setEnabled(false);
244 knopf0
.setEnabled(false);
245 knopf1
.setEnabled(false);
246 knopf3
.setEnabled(false);
247 cbanrede
.setEnabled(false);
248 jcheck
[1].setEnabled(true);
249 jtf
[7].setEnabled(true);
250 jtf
[8].setEnabled(true);
251 jtf
[9].setEnabled(true);
252 jtf
[10].setEnabled(true);
253 jtf
[19].setEnabled(true);
254 jtf
[27].setEnabled(true);
255 jtf
[28].setEnabled(true);
256 jtf
[29].setEnabled(true);
257 jtf
[30].setEnabled(true);
265 add(patTab
,BorderLayout
.CENTER
);
267 hgicon
= Reha
.rehaBackImg
;
268 icx
= hgicon
.getIconWidth()/2;
269 icy
= hgicon
.getIconHeight()/2;
270 xac1
= AlphaComposite
.getInstance(AlphaComposite
.SRC_OVER
,0.07f
);
271 xac2
= AlphaComposite
.getInstance(AlphaComposite
.SRC_OVER
,1.0f
);
273 rtp
= new RehaTPEventClass();
274 rtp
.addRehaTPEventListener((RehaTPEventListener
) this);
275 this.addKeyListener(this);
277 //****************Checken ob Preisgruppen bedient werden****************
279 // nur für den ersten Focus setzen
280 flis
= new FocusListener(){
283 public void focusGained(FocusEvent arg0
) {
284 // TODO Auto-generated method stub
286 if( ((JComponent
)arg0
.getSource()).getName().equals("PatientenNeuanlage") ){
287 if(inNeu
|| feldname
.equals("")){
290 if(Reha
.thisClass
.patpanel
.kid
< 0 && feldname
.equals("KASSE")){
292 //jtf[12].setText("?"+jtf[12].getText());
295 if(Reha
.thisClass
.patpanel
.aid
< 0 && feldname
.equals("ARZT")){
297 //jtf[17].setText("?"+jtf[17].getText());
300 geheAufFeld(feldname
);
302 removeFocusListener(this);
304 }catch(java
.lang
.NullPointerException ex
){
309 public void focusLost(FocusEvent arg0
) {
310 // TODO Auto-generated method stub
314 this.addFocusListener(flis
);
316 new SwingWorker
<Void
,Void
>(){
319 protected Void
doInBackground() throws Exception
{
320 for(int i
= 0; i
< ffelder
.length
;i
++ ){
321 jtf
[ffelder
[i
]].addFocusListener(flis
);
323 for(int i
= 0; i
< ffelder2
.length
;i
++ ){
324 jcheck
[ffelder2
[i
]].addFocusListener(flis
);
335 if(!feldname
.equals("")){
336 geheAufFeld(feldname
);
341 jtf
[12].setText("?");
342 jtf
[17].setText("?");
344 SwingUtilities
.invokeLater(new Runnable(){
346 if(SystemConfig
.sReaderAktiv
.equals("1")){
347 kvw
= new KVKWrapper(SystemConfig
.sReaderName
);
352 UIManager
.put("TabbedPane.tabsOpaque", Boolean
.TRUE
);
353 UIManager
.put("TabbedPane.contentOpaque", Boolean
.TRUE
);
358 // Lemmi 20110103: Merken der Originalwerte der eingelesenen Textfelder
359 // SaveChangeStatus();
364 public void geheAufFeld(String feld
){
365 ////System.out.println("Focus setzen auf "+feld);
366 final String xfeld
= feld
;
367 new SwingWorker
<Void
,Void
>(){
370 protected Void
doInBackground() throws Exception
{
371 // TODO Auto-generated method stub
372 for(int i
= 0; i
< jtf
.length
;i
++){
373 if(jtf
[i
].getName() != null){
374 if( jtf
[i
].getName().trim().toUpperCase().equals(xfeld
)){
375 if(! jtf
[i
].hasFocus()){
376 jtf
[i
].setCaretPosition(0);
377 jtf
[i
].requestFocusInWindow();
388 SwingUtilities.invokeLater(new Runnable(){
395 public void paintComponent( Graphics g
) {
396 super.paintComponent( g
);
397 Graphics2D g2d
= (Graphics2D
)g
;
400 g2d
.setComposite(this.xac1
);
401 g2d
.drawImage(hgicon
.getImage(), (getWidth()/2)-icx
, (getHeight()/2)-icy
,null);
402 g2d
.setComposite(this.xac2
);
406 public void setzeFocus(){
407 SwingUtilities
.invokeLater(new Runnable(){
409 if(! cbanrede
.hasFocus()){
410 cbanrede
.requestFocusInWindow();
415 public PatNeuanlage
getInstance(){
419 private void fuelleFelder(){
420 //final String xfeld = this.feldname;
422 new SwingWorker
<Void
,Void
>(){
425 protected Void
doInBackground() throws Exception
{
427 List
<String
> nichtlesen
= Arrays
.asList(new String
[] {"anamnese","pat_text"});
428 Vector
<?
> felder
= SqlInfo
.holeSatz("pat5", "*", "pat_intern='"+Reha
.thisClass
.patpanel
.aktPatID
+"'",nichtlesen
);
429 int gros
= felder
.size();
430 int anzahlf
= fedits
.length
;
431 int anzahlc
= fchecks
.length
;
434 for(int i
= 0; i
< anzahlf
;i
++){
435 name
= jtf
[fedits
[i
]].getName().trim();
436 if(name
.contains("geboren") ||
437 name
.contains("akutdat") ||
438 name
.contains("akutbis") ||
439 name
.contains("bef_dat") ||
440 name
.contains("bef_ab") ||
441 name
.contains("er_dat")){
442 String datum
= String
.valueOf((String
)felder
.get(ffelder
[i
]));
443 if(datum
.trim().length() > 0){
444 ////System.out.println("Datum w�re gewesen->"+datum+" L�nge->"+datum.trim().length());
445 jtf
[fedits
[i
]].setText(DatFunk
.sDatInDeutsch(datum
) );
448 jtf
[fedits
[i
]].setText((String
) felder
.get(ffelder
[i
]) );
453 for(int i
= 0; i
< anzahlc
;i
++){
454 jcheck
[i
].setSelected( (felder
.get(ffelder2
[i
]).equals("F")||felder
.get(ffelder2
[i
]).equals("") ?
false : true) );
456 cbanrede
.setSelectedItem(jtf
[0].getText());
459 if(!feldname.equals("")){
460 geheAufFeld(feldname);
462 arztbisher
= jtf
[17].getText();
463 kassebisher
= jtf
[12].getText();
464 kassenid
= Reha
.thisClass
.patpanel
.patDaten
.get(68);
465 befreitdatum
= DatFunk
.sDatInDeutsch(Reha
.thisClass
.patpanel
.patDaten
.get(31));
466 freizumstart
= (Reha
.thisClass
.patpanel
.patDaten
.get(30).equals("T") ?
true : false);
467 if(!jtf
[35].getText().trim().equals("")){
468 jcheck
[10].setEnabled(true);
471 //System.out.println("Gehe auf Feld 1 -> "+getInstance().feldname);
472 if(! "".equals(getInstance().feldname
)){
473 SwingUtilities
.invokeLater(new Runnable(){
475 //System.out.println("Gehe auf Feld 2 -> "+getInstance().feldname);
476 feldergefuellt
= true;
477 geheAufFeld(getInstance().feldname
);
488 private void schreibeInDb(){
489 if( jtf
[2].getText().trim().equals("") || jtf
[3].getText().trim().equals("")
490 || jtf
[4].getText().trim().equals("") || jtf
[5].getText().trim().equals("")
491 || jtf
[6].getText().trim().equals("") || jtf
[12].getText().trim().equals("")
492 || jtf
[11].getText().trim().equals(". .") || jtf
[17].getText().trim().equals("") ){
493 JOptionPane
.showMessageDialog(null, "Die Daten des Patienten wurden unvollständig eingegeben!\n\nSpeichern ist nicht möglich.\n");
494 cbanrede
.requestFocus();
497 //int gros = felder.size();
498 int anzahlf
= fedits
.length
;
499 int anzahlc
= fchecks
.length
;
504 StringBuffer buf
= new StringBuffer();
506 buf
.append("insert into pat5 set ");
508 buf
.append("update pat5 set ");
511 for(int i
= 1; i
< anzahlf
;i
++){
512 name
= jtf
[fedits
[i
]].getName().trim();
513 if(name
.contains("geboren") ||
514 name
.contains("akutdat") ||
515 name
.contains("akutbis") ||
516 name
.contains("bef_dat") ||
517 name
.contains("bef_ab") ||
518 name
.contains("er_dat")){
519 if(jtf
[fedits
[i
]].getText().trim().equals(". .")){
520 buf
.append(name
+"=NULL, ");
521 if(name
.equals("bef_dat")){ //Wenn befreit bis testen ob er wert gr��er als heute
522 buf
.append("befreit ='F', ");
523 freibeimspeichern
= false;
524 //System.out.println("Patient ist -> nicht <- befreit!");
528 buf
.append(name
+"='"+DatFunk
.sDatInSQL(jtf
[fedits
[i
]].getText())+"', ");
529 if(name
.equals("bef_dat")){ //Wenn befreit bis testen ob er wert gr��er als heute
530 if( DatFunk
.DatumsWert(jtf
[fedits
[i
]].getText()) >= DatFunk
.DatumsWert(DatFunk
.sHeute()) ){
531 buf
.append("befreit ='T', ");
532 freibeimspeichern
= true;
533 //System.out.println("Patient ist befreit!");
535 buf
.append("befreit ='F', ");
536 freibeimspeichern
= false;
539 }catch(java
.lang
.ArrayIndexOutOfBoundsException ex
){
540 buf
.append(name
+"='"+"*****Problem"+jtf
[fedits
[i
]].getText()+"', ");
545 buf
.append(name
+"='"+StringTools
.Escaped(jtf
[fedits
[i
]].getText())+"', ");
548 buf
.append("anrede='"+((String
)cbanrede
.getSelectedItem()).trim()+"'");
549 for(int i
= 0; i
< anzahlc
;i
++){
550 name
= jcheck
[i
].getName();
551 buf
.append(", "+name
+"='"+(jcheck
[i
].isSelected() ?
"T' " : "F' " ));
555 globPat_intern
= Reha
.thisClass
.patpanel
.aktPatID
;
556 buf
.append(" where pat_intern='"+globPat_intern
+"' LIMIT 1");
557 spatintern
= Reha
.thisClass
.patpanel
.aktPatID
;
558 // Wenn Kasse veränderr wurde....
559 if(!jtf
[34].getText().trim().equals(kassenid
)){
560 JOptionPane
.showMessageDialog(null, "Achtung - Sie haben dem Patient eine neue Kasse zugewiesen.\n"+
561 "Eventuell ändert sich dadurch der Zuzahlungsstatus vorhandener Rezepte. Bitte prüfen!!!");
563 @SuppressWarnings("unused")
565 boolean doof
= false;
566 if(! (freizumstart
== freibeimspeichern
)){
567 if ( ((zzregel
= ZuzahlTools
.getZuzahlRegel(jtf
[34].getText().trim())) <= 0) ){
568 //System.out.println("Zuzahlregel = "+zzregel+" Kassen-ID = "+jtf[34].getText().trim());
569 //if ( ((zzregel = ZuzahlTools.getZuzahlRegel(jtf[34].getText().trim())) <= 0) && freibeimspeichern){
570 JOptionPane
.showMessageDialog(null,"Sie haben einen Kostenträger gwählt der keine Zuzahlung verlangt und\n"+
571 "jetzt wollen Sie im Feld Zuzahlungsbefreiung rummurksen???????\n\nNa ja.....");
575 // hier wäre es optimal eine ZuzahlToolsFunktion zu haben.....
576 int anzahl
= SqlInfo
.zaehleSaetze("verordn", "pat_intern='"+Reha
.thisClass
.patpanel
.aktPatID
+"' AND REZ_GEB='0.00'");
578 String meldung
= "Dieser Patient hat -> "+anzahl
+" laufende Rezepte <- ohne Abschluss\n"+
579 "Soll der veränderte Befreiungsstatus auf alle noch nicht(!) bezahlten Rezepte übertragen werden?";
580 int frage
= JOptionPane
.showConfirmDialog(null,meldung
,"Achtung wichtige Benuterzanfrage",JOptionPane
.YES_NO_OPTION
);
581 if(frage
== JOptionPane
.NO_OPTION
){
582 JOptionPane
.showMessageDialog(null,"Dann eben nicht!\nVergessen Sie aber nicht den Befreiungsstatus der Rezepte von Hand zu ändern");
583 }else if(frage
== JOptionPane
.YES_OPTION
){
584 String pat_intern
= Reha
.thisClass
.patpanel
.aktPatID
;
585 String geboren
= DatFunk
.sDatInDeutsch(Reha
.thisClass
.patpanel
.patDaten
.get(4));
586 String befreit
= (freibeimspeichern ?
"T" : "F");
587 @SuppressWarnings("unused")
588 String datum
= (freibeimspeichern ?
"" : jtf
[16].getText().trim());
589 ZuzahlTools
.zzStatusEdit(pat_intern
, geboren
, "", befreit
, jtf
[34].getText().trim());
593 ////System.out.println("Doof = true and zzregel = "+zzregel);
598 // Angelegt von aufgenommen werden
599 //int neuid = SqlInfo.holeId("pat5", "n_name");
600 patintern
= SqlInfo
.erzeugeNummer("pat"); //neuid+Reha.thisClass.patiddiff;
602 JOptionPane
.showMessageDialog(null,"Fehler beim Bezug einer neuen Patientennummer\nNeustart des Programmes vermutlich erforderlich");
605 globPat_intern
= Integer
.toString(patintern
); //Integer.valueOf(patintern).toString();
606 buf
.append(",anl_datum='"+DatFunk
.sDatInSQL(DatFunk
.sHeute())+"' ");
607 buf
.append(",pat_intern='"+globPat_intern
+"'"); // where id='"+Integer.valueOf(neuid).toString()+"'");
608 spatintern
= Integer
.toString(patintern
);
610 SqlInfo
.sqlAusfuehren(buf
.toString());
611 //new ExUndHop().setzeStatement(buf.toString());
613 new SwingWorker
<Void
,Void
>(){
615 protected Void
doInBackground() throws Exception
{
616 speichernPatBild( ( ((inNeu
) || (!startMitBild
)) ?
true : false ),(ImageIcon
)lblbild
.getIcon(),globPat_intern
);
624 ((JXDialog
)this.getParent().getParent().getParent().getParent().getParent()).setVisible(false);
625 //final PatNeuanlage xthis = this;
628 if(Reha
.thisClass
.patpanel
.aktRezept
.tabaktrez
.getRowCount()>0){
629 int row
= Reha
.thisClass
.patpanel
.aktRezept
.tabaktrez
.getSelectedRow();
631 rez_num
= Reha
.thisClass
.patpanel
.aktRezept
.tabaktrez
.getValueAt(row
,0).toString().trim();
634 final String xpatintern
= spatintern
;
635 final String xrez
= rez_num
;
638 Reha
.thisClass
.patpanel
.getLogic().arztListeSpeichernVector((Vector
<?
>)docmod
.getDataVector().clone(), inNeu
, String
.valueOf(globPat_intern
));
639 // new ArztListeSpeichern((Vector)docmod.getDataVector().clone(),inNeu,globPat_intern);
640 //System.out.println("Es wirde die ArztListe gespeichert.....");
642 ((JXDialog
)getInstance().getParent().getParent().getParent().getParent().getParent()).dispose();
643 String s1
= "#PATSUCHEN";
644 String s2
= xpatintern
;
645 PatStammEvent pEvt
= new PatStammEvent(getInstance());
646 pEvt
.setPatStammEvent("PatSuchen");
647 pEvt
.setDetails(s1
,s2
,xrez
);
648 PatStammEventClass
.firePatStammEvent(pEvt
);
656 private JXPanel
getButtonPanel(){
657 JXPanel but
= new JXPanel(new BorderLayout());
658 //but.add(new JLabel("Hier ist Raum f�r Buttons"));
659 but
.setOpaque(false);
660 but
.setDoubleBuffered(true);
662 knopf3
= new JButton("Chipkarte");
663 knopf3
.setPreferredSize(new Dimension(70, 20));
664 knopf3
.addActionListener(this);
665 knopf3
.setActionCommand("einlesen");
666 knopf3
.setName("einlesen");
667 knopf3
.addKeyListener(this);
668 knopf3
.setMnemonic(KeyEvent
.VK_C
);
669 //if(SystemConfig.sReaderAktiv.equals("0")){
670 knopf3
.setEnabled(false);
673 knopf4
= new JButton("speichern");
674 knopf4
.setPreferredSize(new Dimension(70, 20));
675 knopf4
.addActionListener(this);
676 knopf4
.setActionCommand("speichern");
677 knopf4
.setName("speichern");
678 knopf4
.addKeyListener(this);
679 knopf4
.setMnemonic(KeyEvent
.VK_S
);
681 knopf5
= new JButton("abbrechen");
682 knopf5
.setPreferredSize(new Dimension(70, 20));
683 knopf5
.addActionListener(this);
684 knopf5
.setActionCommand("abbrechen");
685 knopf5
.setName("abbrechen");
686 knopf5
.addKeyListener(this);
687 knopf5
.setMnemonic(KeyEvent
.VK_A
);
689 // 1. 2. 3. 4. 5. 6. 7
690 FormLayout lay
= new FormLayout("fill:0:grow(0.50), 60dlu,15dlu, 60dlu, 15dlu,60dlu,fill:0:grow(0.50) ",
693 PanelBuilder builder
= new PanelBuilder(lay
);
694 builder
.setDefaultDialogBorder();
695 builder
.getPanel().setOpaque(false);
697 CellConstraints cc
= new CellConstraints();
698 builder
.add(knopf3
, cc
.xy(2,2));
699 builder
.add(knopf4
, cc
.xy(4,2));
700 builder
.add(knopf5
, cc
.xy(6,2));
702 but
.add(builder
.getPanel(),BorderLayout
.CENTER
);
706 private JXPanel
Tab1(){
707 JXPanel tab1
= new JXPanel(new BorderLayout());
708 tab1
.setBorder(BorderFactory
.createEmptyBorder(5, 0, 0, 0));
709 tab1
.setOpaque(false);
710 tab1
.setDoubleBuffered(true);
711 tab1
.add(getDatenPanel12(),BorderLayout
.EAST
);
712 tab1
.add(getDatenPanel11(),BorderLayout
.WEST
);
717 private JXPanel
Tab2(){
718 JXPanel tab2
= new JXPanel(new BorderLayout());
719 tab2
.setBorder(BorderFactory
.createEmptyBorder(5, 0, 0, 0));
720 tab2
.setOpaque(false);
721 tab2
.setDoubleBuffered(true);
722 tab2
.add(getDatenPanel22(),BorderLayout
.EAST
);
723 tab2
.add(getDatenPanel21(),BorderLayout
.WEST
);
729 private JXPanel
Tab3(){
730 JXPanel tab3
= new JXPanel(new BorderLayout());
731 tab3
.setBorder(BorderFactory
.createEmptyBorder(5, 0, 0, 0));
732 tab3
.setOpaque(false);
733 tab3
.setDoubleBuffered(true);
734 tab3
.add(getDatenPanel32(),BorderLayout
.EAST
);
735 tab3
.add(getDatenPanel31(),BorderLayout
.WEST
);
740 private JXPanel
getDatenPanel12(){
742 JXPanel pat12
= new JXPanel(new BorderLayout());
743 //but.setBorder(null);
744 pat12
.setBorder(BorderFactory
.createEmptyBorder(5, 0, 0, 0));
745 pat12
.setOpaque(false);
746 pat12
.setDoubleBuffered(true);
750 jtf
[12] = new JRtaTextField("GROSS", true);
751 jtf
[12].setName("kasse");
752 jtf
[12].addKeyListener(new KeyAdapter(){
753 public void keyPressed(KeyEvent arg0
) {
754 ////System.out.println("code = "+arg0.getKeyCode());
755 ////System.out.println("char = "+arg0.getKeyChar());
756 if(arg0
.getKeyChar()=='?'){
757 String suchkrit
= jtf
[12].getText().replaceAll("\\?", "");
758 kassenAuswahl(new String
[] {suchkrit
,jtf
[34].getText().trim(),jtf
[34].getText()});
762 jtf
[12].addFocusListener(this);
764 jtf
[13] = new JRtaTextField("ZAHLEN", true);
765 jtf
[13].setName("kv_nummer");
767 jtf
[14] = new JRtaTextField("ZAHLEN", true);
768 jtf
[14].setName("v_nummer");
770 jtf
[15] = new JRtaTextField("ZAHLEN", true);
771 jtf
[15].setName("kv_status");
773 jtf
[16] = new JRtaTextField("DATUM", true);
774 jtf
[16].setName("bef_dat"); //aus Kostentr�gerdatei/Karte einlesen?
775 jtf
[16].setFont(font
);
776 jtf
[16].setForeground(Color
.RED
);
778 jtf
[36] = new JRtaTextField("DATUM", true);
779 jtf
[36].setName("bef_ab");
780 jtf
[36].setFont(font
);
781 jtf
[36].setForeground(Color
.RED
);
784 jtf
[17] = new JRtaTextField("GROSS", true);
785 jtf
[17].setName("arzt");
786 jtf
[17].addKeyListener(new KeyAdapter(){
787 public void keyPressed(KeyEvent arg0
) {
788 if(arg0
.getKeyChar()=='?'){
790 String
[] suchkrit
= {jtf
[17].getText().replaceAll("\\?", ""),jtf
[33].getText()};
791 arztAuswahl(suchkrit
);
796 jtf
[17].addFocusListener(this);
798 jtf
[18] = new JRtaTextField("ZAHLEN", true);
799 jtf
[18].setName("arzt_num");
801 jtf
[19] = new JRtaTextField("GROSS", true);
802 jtf
[19].setName("therapeut");
808 jtf
[33] = new JRtaTextField("ZAHLEN", true);
809 jtf
[33].setName("arztid");
811 jtf
[34] = new JRtaTextField("ZAHLEN", true);
812 jtf
[34].setName("kassenid");
816 FormLayout lay12
= new FormLayout("right:max(80dlu;p), 4dlu, 60dlu,right:max(60dlu;p), 4dlu, 60dlu",
817 //1. 2. 3. 4. 5. 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
818 "p, 10dlu, p, 2dlu, p, 2dlu, p, 2dlu, p, 2dlu, p, 2dlu, p, 2dlu, p, 2dlu, p, 2dlu, p, 2dlu, p, 82dlu, p, 20dlu, p, 2dlu, p, 2dlu, p, 2dlu, p");
820 PanelBuilder builder12
= new PanelBuilder(lay12
);
821 builder12
.setDefaultDialogBorder();
822 builder12
.getPanel().setOpaque(false);
823 CellConstraints cc12
= new CellConstraints();
824 builder12
.getPanel().setDoubleBuffered(true);
826 builder12
.addSeparator("Krankenversicherung", cc12
.xyw(1, 1, 6));
827 kassenLab
= new JLabel("Kasse *)");
828 kassenLab
.setIcon(SystemConfig
.hmSysIcons
.get("kleinehilfe"));
829 kassenLab
.setHorizontalTextPosition(JLabel
.LEFT
);
831 kassenLab
.addMouseListener(new MouseAdapter(){
832 public void mousePressed(MouseEvent ev
){
834 SwingUtilities
.invokeLater(new Runnable(){
836 String suchkrit
= jtf
[12].getText().replace("?", "");
837 kassenAuswahl(new String
[] {suchkrit
,jtf
[34].getText().trim(),jtf
[34].getText()});
843 builder12
.add(kassenLab
, cc12
.xy(1, 3));
844 builder12
.add(jtf
[12], cc12
.xyw(3, 3, 4));
845 builder12
.addLabel("Kassen-IK", cc12
.xy(1,5));
846 builder12
.add(jtf
[13], cc12
.xyw(3, 5, 4));
847 builder12
.addLabel("Vers-Nr.", cc12
.xy(1,7));
848 builder12
.add(jtf
[14], cc12
.xyw(3, 7, 4));
849 builder12
.addLabel("Status", cc12
.xy(1, 9));
850 builder12
.add(jtf
[15], cc12
.xy(3,9));
851 builder12
.addLabel("Befreit von", cc12
.xy(1, 11));
852 builder12
.add(jtf
[36], cc12
.xy(3, 11));
853 builder12
.addLabel("bis ", cc12
.xy(4,11));
854 builder12
.add(jtf
[16], cc12
.xy(6, 11));
856 builder12
.addSeparator("Arzt / Therapeut", cc12
.xyw(1, 23, 6));
857 arztLab
= new JLabel("Hausarzt *)");
858 arztLab
.setIcon(SystemConfig
.hmSysIcons
.get("kleinehilfe"));
859 arztLab
.setHorizontalTextPosition(JLabel
.LEFT
);
860 arztLab
.addMouseListener(new MouseAdapter(){
861 public void mousePressed(MouseEvent ev
){
863 SwingUtilities
.invokeLater(new Runnable(){
865 String
[] suchkrit
= {jtf
[17].getText().replace("?", ""),jtf
[33].getText()};
866 arztAuswahl(suchkrit
);
872 builder12
.add(arztLab
, cc12
.xy(1, 25));
873 builder12
.add(jtf
[17], cc12
.xyw(3, 25, 4));
874 builder12
.addLabel("ArztNummer (LANR)", cc12
.xy(1, 27));
875 builder12
.add(jtf
[18], cc12
.xyw(3,27,4));
876 builder12
.addLabel("Betreuer/Therapeut", cc12
.xy(1, 29));
877 builder12
.add(jtf
[19], cc12
.xyw(3,29,4));
879 JScrollPane jscrzusatz
= JCompTools
.getTransparentScrollPane(builder12
.getPanel());
880 jscrzusatz
.getVerticalScrollBar().setUnitIncrement(15);
881 jscrzusatz
.getViewport().setOpaque(false);
882 jscrzusatz
.setBorder(null);
883 jscrzusatz
.setViewportBorder(null);
884 jscrzusatz
.validate();
885 jscrzusatz
.addKeyListener(this);
886 pat12
.add(jscrzusatz
,BorderLayout
.CENTER
);
891 private void finalise(){
892 for(int i
= 0; i
< jtf
.length
; i
++){
894 ListenerTools
.removeListeners(jtf
[i
]);
899 for(int i
= 0; i
< jcheck
.length
; i
++){
900 if(jcheck
[i
]!= null){
901 ListenerTools
.removeListeners(jcheck
[i
]);
905 ListenerTools
.removeListeners(knopf0
);
906 ListenerTools
.removeListeners(knopf1
);
907 ListenerTools
.removeListeners(knopf3
);
908 ListenerTools
.removeListeners(knopf4
);
909 ListenerTools
.removeListeners(knopf5
);
915 rtp
.removeRehaTPEventListener((RehaTPEventListener
) this);
921 private JXPanel
getDatenPanel21(){
922 JXPanel pat21
= new JXPanel(new BorderLayout());
923 //but.setBorder(null);
924 pat21
.setBorder(BorderFactory
.createEmptyBorder(5, 0, 0, 0));
925 pat21
.setOpaque(false);
926 pat21
.setDoubleBuffered(true);
929 jtf
[20] = new JRtaTextField("GROSS", true);
930 jtf
[20].setName("abwanrede");
932 jtf
[21] = new JRtaTextField("GROSS", true);
933 jtf
[21].setName("abwtitel");
935 jtf
[22] = new JRtaTextField("GROSS", true);
936 jtf
[22].setName("abwn_name");
938 jtf
[23] = new JRtaTextField("GROSS", true);
939 jtf
[23].setName("abwv_name");
941 jtf
[24] = new JRtaTextField("GROSS", true);
942 jtf
[24].setName("abwstrasse");
944 jtf
[25] = new JRtaTextField("GROSS", true);
945 jtf
[25].setName("abwplz");
947 jtf
[26] = new JRtaTextField("GROSS", true);
948 jtf
[26].setName("abwort");
950 jtf
[31] = new JRtaTextField("ZAHLEN", true);
951 jtf
[31].setName("kilometer");
953 jtf
[32] = new JRtaTextField("DATUM", true);
954 jtf
[32].setName("er_dat");
956 jtf
[35] = new JRtaTextField("ZAHLEN", true);
957 jtf
[35].setName("jahrfrei");
958 jtf
[35].setEnabled(false);
960 jcheck
[0] = new JRtaCheckBox();
961 jcheck
[0].setOpaque(false);
962 jcheck
[0].setName("abwadress");
964 jcheck
[8] = new JRtaCheckBox();
965 jcheck
[8].setOpaque(false);
966 jcheck
[8].setName("heimbewohn");
968 jcheck
[10] = new JRtaCheckBox();
969 jcheck
[10].setOpaque(false);
970 jcheck
[10].setName("vorjahrfrei");
971 jcheck
[10].setActionCommand("vorjahrfrei");
972 //jcheck[10].setEnabled(false);
973 jcheck
[10].addActionListener(this);
975 jcheck
[9] = new JRtaCheckBox();
976 jcheck
[9].setOpaque(false);
977 jcheck
[9].setName("u18ignore");
978 jcheck
[9].setActionCommand("u18ignore");
979 jcheck
[9].setEnabled(false);
980 jcheck
[9].addActionListener(this);
983 FormLayout lay21
= new FormLayout("right:max(80dlu;p), 4dlu, 60dlu,right:max(60dlu;p), 4dlu, 60dlu",
984 //1. 2. 3. 4. 5. 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
985 "p, 10dlu, p, 2dlu, p, 2dlu, p, 2dlu, p, 2dlu, p, 10dlu, p, 10dlu, p, 2dlu, p, 2dlu, p, 2dlu, p, 2dlu, p, 2dlu, p");
987 PanelBuilder builder21
= new PanelBuilder(lay21
);
988 builder21
.setDefaultDialogBorder();
989 builder21
.getPanel().setOpaque(false);
990 CellConstraints cc21
= new CellConstraints();
991 builder21
.getPanel().setDoubleBuffered(true);
993 builder21
.addSeparator("Zusätze", cc21
.xyw(1, 1, 6));
994 builder21
.addLabel("Kilometer bei HB", cc21
.xy(1, 3));
995 builder21
.add(jtf
[31], cc21
.xy(3, 3));
996 builder21
.addLabel("Heimbewohner", cc21
.xy(1,5));
997 builder21
.add(jcheck
[8], cc21
.xy(3, 5));
998 builder21
.addLabel("befreit im Vorjahr", cc21
.xy(1,7));
999 builder21
.add(jtf
[35],cc21
.xy(3,7));
1000 builder21
.addLabel("löschen?", cc21
.xy(4,7));
1001 builder21
.add(jcheck
[10],cc21
.xy(6, 7));
1002 builder21
.addLabel("U18-Regel ignorieren?",cc21
.xy(1,9));
1003 builder21
.add(jcheck
[9],cc21
.xy(3, 9));
1004 builder21
.addLabel("Vertrag unterz. am", cc21
.xy(1, 11));
1005 builder21
.add(jtf
[32], cc21
.xy(3, 11));
1007 builder21
.addSeparator("abweichender Rechnungsempfänger/Versicherter", cc21
.xyw(1, 13, 6));
1008 builder21
.addLabel("verwenden", cc21
.xy(1,15));
1009 builder21
.add(jcheck
[0], cc21
.xy(3,15));
1010 builder21
.addLabel("Anrede", cc21
.xy(1, 17));
1011 builder21
.add(jtf
[20], cc21
.xy(3, 17));
1012 builder21
.addLabel("Titel", cc21
.xy(4, 17));
1013 builder21
.add(jtf
[21], cc21
.xy(6, 17));
1014 builder21
.addLabel("Nachname", cc21
.xy(1, 19));
1015 builder21
.add(jtf
[22], cc21
.xyw(3, 19, 4));
1016 builder21
.addLabel("Vorname", cc21
.xy(1, 21));
1017 builder21
.add(jtf
[23], cc21
.xyw(3,21,4));
1018 builder21
.addLabel("Strasse, Nr.", cc21
.xy(1, 23));
1019 builder21
.add(jtf
[24], cc21
.xyw(3, 23, 4));
1020 builder21
.addLabel("PLZ, Ort", cc21
.xy(1, 25));
1021 builder21
.add(jtf
[25], cc21
.xy(3, 25));
1022 builder21
.add(jtf
[26], cc21
.xyw(4, 25, 3));
1026 JScrollPane jscrzusatz
= JCompTools
.getTransparentScrollPane(builder21
.getPanel());
1027 jscrzusatz
.getVerticalScrollBar().setUnitIncrement(15);
1028 jscrzusatz
.getViewport().setOpaque(false);
1029 jscrzusatz
.setBorder(null);
1030 jscrzusatz
.setViewportBorder(null);
1031 jscrzusatz
.validate();
1032 jscrzusatz
.addKeyListener(this);
1033 pat21
.add(jscrzusatz
,BorderLayout
.CENTER
);
1038 private JXPanel
getDatenPanel22(){
1039 JXPanel pat22
= new JXPanel(new BorderLayout());
1040 //but.setBorder(null);
1041 pat22
.setBorder(BorderFactory
.createEmptyBorder(5, 0, 0, 0));
1042 pat22
.setOpaque(false);
1043 pat22
.setDoubleBuffered(true);
1045 jcheck
[2] = new JRtaCheckBox(SystemConfig
.vPatMerker
.get(0));
1046 jcheck
[2].setOpaque(false);
1047 jcheck
[2].setName("merk1");
1049 jcheck
[3] = new JRtaCheckBox(SystemConfig
.vPatMerker
.get(1));
1050 jcheck
[3].setOpaque(false);
1051 jcheck
[3].setName("merk2");
1053 jcheck
[4] = new JRtaCheckBox(SystemConfig
.vPatMerker
.get(2));
1054 jcheck
[4].setOpaque(false);
1055 jcheck
[4].setName("merk3");
1057 jcheck
[5] = new JRtaCheckBox(SystemConfig
.vPatMerker
.get(3));
1058 jcheck
[5].setOpaque(false);
1059 jcheck
[5].setName("merk4");
1061 jcheck
[6] = new JRtaCheckBox(SystemConfig
.vPatMerker
.get(4));
1062 jcheck
[6].setOpaque(false);
1063 jcheck
[6].setName("merk5");
1065 jcheck
[7] = new JRtaCheckBox(SystemConfig
.vPatMerker
.get(5));
1066 jcheck
[7].setOpaque(false);
1067 jcheck
[7].setName("merk6");
1069 //die Labeltexte merk2 bis merk7 aus Datenbank/SysINI einlesen?
1070 docmod
= new MyDocTableModel();
1071 docmod
.setColumnIdentifiers(new String
[] {"LANR","Nachname","Strasse","Ort","BSNR",""});
1072 doclist
= new JXTable(docmod
);
1073 doclist
.getColumn(5).setMinWidth(0);
1074 doclist
.getColumn(5).setMaxWidth(0);
1075 doclist
.addMouseListener(new MouseAdapter(){
1076 public void mouseClicked(MouseEvent arg0
) {
1078 if(arg0
.getClickCount()==2 && arg0
.getButton()==1){
1079 final Point pt
= arg0
.getLocationOnScreen();
1080 new SwingWorker
<Void
,Void
>(){
1082 protected Void
doInBackground() throws Exception
{
1084 arztInListeDoppelKlick(pt
);
1085 }catch(Exception ex
){
1086 ex
.printStackTrace();
1096 new SwingWorker
<Void
,Void
>(){
1098 protected Void
doInBackground() throws Exception
{
1103 JScrollPane docscr
= JCompTools
.getTransparentScrollPane(doclist
);
1106 knopf0
= new JButton("entfernen");
1107 knopf0
.setPreferredSize(new Dimension(70, 20));
1108 knopf0
.addActionListener(this);
1109 knopf0
.setName("entfernen");
1110 knopf0
.setActionCommand("deldoc");
1111 knopf0
.addKeyListener(this);
1112 knopf1
= new JButton("hinzu");
1113 knopf1
.setPreferredSize(new Dimension(70, 20));
1114 knopf1
.addActionListener(this);
1115 knopf1
.setName("hinzu");
1116 knopf1
.setActionCommand("adddoc");
1117 knopf1
.addKeyListener(this);
1120 FormLayout lay22
= new FormLayout("right:max(80dlu;p), 4dlu, 60dlu,right:max(60dlu;p), 4dlu, 60dlu",
1121 //1. 2. 3. 4. 5. 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
1122 "p, 10dlu, p, 2dlu, p, 2dlu, p, 42dlu, p, 11dlu, 90dlu, 5dlu, p");
1124 PanelBuilder builder22
= new PanelBuilder(lay22
);
1125 builder22
.setDefaultDialogBorder();
1126 builder22
.getPanel().setOpaque(false);
1127 CellConstraints cc22
= new CellConstraints();
1128 builder22
.getPanel().setDoubleBuffered(true);
1130 builder22
.addSeparator("individuelle Merkmale", cc22
.xyw(1, 1, 6));
1132 builder22
.add(jcheck
[2], cc22
.xy(3, 3));
1133 builder22
.add(jcheck
[3], cc22
.xy(6, 3));
1134 builder22
.add(jcheck
[4], cc22
.xy(3, 5));
1135 builder22
.add(jcheck
[5], cc22
.xy(6, 5));
1136 builder22
.add(jcheck
[6], cc22
.xy(3, 7));
1137 builder22
.add(jcheck
[7], cc22
.xy(6,7));
1139 builder22
.addSeparator("Ärzteliste des Patienten", cc22
.xyw(1,9,6));
1140 builder22
.add(docscr
, cc22
.xyw(1, 11, 6));
1141 builder22
.addLabel("Arzt aufnehmen", cc22
.xy(1,13));
1142 builder22
.add(knopf1
, cc22
.xy(3,13));
1143 builder22
.addLabel("Arzt entfernen", cc22
.xy(4,13));
1144 builder22
.add(knopf0
, cc22
.xy(6,13));
1148 JScrollPane jscrzusatz
= JCompTools
.getTransparentScrollPane(builder22
.getPanel());
1149 jscrzusatz
.getVerticalScrollBar().setUnitIncrement(15);
1150 jscrzusatz
.getViewport().setOpaque(false);
1151 jscrzusatz
.setBorder(null);
1152 jscrzusatz
.setViewportBorder(null);
1153 jscrzusatz
.validate();
1154 jscrzusatz
.addKeyListener(this);
1155 pat22
.add(jscrzusatz
,BorderLayout
.CENTER
);
1159 public void setNewPic(ImageIcon img
){
1160 lblbild
.setText("");
1161 lblbild
.setIcon(img
);
1165 private JXPanel
getDatenPanel31(){
1166 JXPanel pat31
= new JXPanel(new BorderLayout());
1167 //but.setBorder(null);
1168 pat31
.setBorder(BorderFactory
.createEmptyBorder(5, 0, 0, 0));
1169 pat31
.setOpaque(false);
1170 pat31
.setDoubleBuffered(true);
1173 pic0
= new JButton("verwerfen");
1174 pic0
.setPreferredSize(new Dimension(70, 20));
1175 pic0
.addActionListener(this);
1176 pic0
.setActionCommand("delpic");
1177 pic0
.addKeyListener(this);
1178 pic1
= new JButton("Aufnahme");
1179 pic1
.setPreferredSize(new Dimension(70, 20));
1180 pic1
.addActionListener(this);
1181 pic1
.setActionCommand("addpic");
1182 pic1
.addKeyListener(this);
1183 pic2
= new JButton("Bilddatei");
1184 pic2
.setPreferredSize(new Dimension(70, 20));
1185 pic2
.addActionListener(this);
1186 pic2
.setActionCommand("addjpg");
1187 pic2
.addKeyListener(this);
1190 FormLayout lay31
= new FormLayout("right:max(80dlu;p), 4dlu, 175px,right:max(60dlu;p), 4dlu, 60dlu",
1191 //1. 2. 3. 4. 5. 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
1192 "p, 10dlu, 220px, 2dlu, p");
1194 PanelBuilder builder31
= new PanelBuilder(lay31
);
1195 builder31
.setDefaultDialogBorder();
1196 builder31
.getPanel().setOpaque(false);
1197 CellConstraints cc31
= new CellConstraints();
1198 builder31
.getPanel().setDoubleBuffered(true);
1200 builder31
.addSeparator("Patientenfoto", cc31
.xyw(1, 1, 6));
1201 lblbild
= new JLabel();
1202 builder31
.add(lblbild
, cc31
.xy(3, 3));
1203 builder31
.addLabel("Bild aufnehmen", cc31
.xy(1,5));
1205 JXPanel pan
= new JXPanel();
1206 pan
.setOpaque(false);
1207 FormLayout lay2
= new FormLayout("fill:0:grow(0.5),2px,fill:0:grow(0.5)","p");
1208 pan
.setLayout(lay2
);
1209 CellConstraints cc2
= new CellConstraints();
1210 pan
.add(pic1
, cc2
.xy(1,1,CellConstraints
.FILL
,CellConstraints
.DEFAULT
));
1211 pan
.add(pic2
, cc2
.xy(3,1,CellConstraints
.FILL
,CellConstraints
.DEFAULT
));
1212 builder31
.add(pan
, cc31
.xy(3,5));
1214 //builder31.add(pic1, cc31.xy(3,5));
1215 builder31
.addLabel("Bild verwerfen", cc31
.xy(4,5));
1216 builder31
.add(pic0
, cc31
.xy(6,5));
1217 new SwingWorker
<Void
,Void
>(){
1219 protected Void
doInBackground() throws Exception
{
1222 BufferedImage img
= holePatBild(Reha
.thisClass
.patpanel
.aktPatID
);
1224 lblbild
.setText("Kein Bild des Patienten vorhanden");
1226 lblbild
.setText("");
1227 lblbild
.setIcon(new ImageIcon(img
));
1228 startMitBild
= true;
1231 lblbild
.setText("Kein Bild des Patienten vorhanden");
1232 lblbild
.setIcon(null);
1234 }catch(Exception ex
){
1235 ex
.printStackTrace();
1243 JScrollPane jscrzusatz
= JCompTools
.getTransparentScrollPane(builder31
.getPanel());
1244 jscrzusatz
.getVerticalScrollBar().setUnitIncrement(15);
1245 jscrzusatz
.getViewport().setOpaque(false);
1246 jscrzusatz
.setBorder(null);
1247 jscrzusatz
.setViewportBorder(null);
1248 jscrzusatz
.validate();
1249 jscrzusatz
.addKeyListener(this);
1250 pat31
.add(jscrzusatz
,BorderLayout
.CENTER
);
1255 @SuppressWarnings("unused")
1256 private ImageIcon
getPatBild(){
1260 private JXPanel
getDatenPanel32(){
1261 JXPanel pat32
= new JXPanel(new BorderLayout());
1262 //but.setBorder(null);
1263 pat32
.setBorder(BorderFactory
.createEmptyBorder(5, 0, 0, 0));
1264 pat32
.setOpaque(false);
1265 pat32
.setDoubleBuffered(true);
1271 FormLayout lay32
= new FormLayout("right:max(80dlu;p), 4dlu, 60dlu,right:max(60dlu;p), 4dlu, 60dlu",
1272 //1. 2. 3. 4. 5. 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
1273 "p, 10dlu, 160dlu, 2dlu, p");
1275 PanelBuilder builder32
= new PanelBuilder(lay32
);
1276 builder32
.setDefaultDialogBorder();
1277 builder32
.getPanel().setOpaque(false);
1278 CellConstraints cc32
= new CellConstraints();
1279 builder32
.getPanel().setDoubleBuffered(true);
1281 builder32
.addLabel("Space for future Extensions", cc32
.xyw(1,3, 6));
1283 JScrollPane jscrzusatz
= JCompTools
.getTransparentScrollPane(builder32
.getPanel());
1284 jscrzusatz
.getVerticalScrollBar().setUnitIncrement(15);
1285 jscrzusatz
.getViewport().setOpaque(false);
1286 jscrzusatz
.setBorder(null);
1287 jscrzusatz
.setViewportBorder(null);
1288 jscrzusatz
.validate();
1289 jscrzusatz
.addKeyListener(this);
1290 pat32
.add(jscrzusatz
,BorderLayout
.CENTER
);
1295 private JXPanel
getDatenPanel11(){
1296 JXPanel pat11
= new JXPanel(new BorderLayout());
1297 //but.setBorder(null);
1298 pat11
.setBorder(BorderFactory
.createEmptyBorder(5, 0, 0, 0));
1299 pat11
.setOpaque(false);
1300 pat11
.setDoubleBuffered(true);
1302 cbanrede
= new JRtaComboBox(new String
[] {"HERR","FRAU"});
1303 cbanrede
.addKeyListener(this);
1304 jtf
[0] = new JRtaTextField("GROSS", true);
1305 jtf
[0].setName("anrede");
1307 jtf
[1] = new JRtaTextField("GROSS", true);
1308 jtf
[1].setName("titel");
1310 jtf
[2] = new JRtaTextField("GROSS", true);
1311 jtf
[2].setName("n_name");
1312 jtf
[2].setFont(font
);
1313 jtf
[2].setForeground(Color
.RED
);
1315 jtf
[3] = new JRtaTextField("GROSS", true);
1316 jtf
[3].setName("v_name");
1317 jtf
[3].setFont(font
);
1318 jtf
[3].setForeground(Color
.RED
);
1320 jtf
[4] = new JRtaTextField("GROSS", true);
1321 jtf
[4].setName("strasse");
1323 jtf
[5] = new JRtaTextField("ZAHLEN", true);
1324 jtf
[5].setName("plz");
1326 jtf
[6] = new JRtaTextField("GROSS", true);
1327 jtf
[6].setName("ort");
1329 jtf
[7] = new JRtaTextField("GROSS", true);
1330 jtf
[7].setName("telefonp");
1332 jtf
[8] = new JRtaTextField("GROSS", true);
1333 jtf
[8].setName("telefong");
1335 jtf
[9] = new JRtaTextField("GROSS", true);
1336 jtf
[9].setName("telefonm");
1338 jtf
[10] = new JRtaTextField("", true);
1339 jtf
[10].setName("emaila");
1341 jtf
[11] = new JRtaTextField("DATUM", true);
1342 jtf
[11].setName("geboren");
1343 jtf
[11].setFont(font
);
1344 jtf
[11].setForeground(Color
.RED
);
1346 jtf
[27] = new JRtaTextField("DATUM", true);
1347 jtf
[27].setName("akutbis");
1349 jtf
[28] = new JRtaTextField("DATUM", true);
1350 jtf
[28].setName("akutdat");
1352 jtf
[29] = new JRtaTextField("GROSS", true);
1353 jtf
[29].setName("termine1");
1355 jtf
[30] = new JRtaTextField("GROSS", true);
1356 jtf
[30].setName("termine2");
1358 jcheck
[1] = new JRtaCheckBox();
1359 jcheck
[1].setOpaque(false);
1360 jcheck
[1].setName("akutpat");
1364 // 1. 2. 3. 4. 5. 6.
1365 FormLayout lay11
= new FormLayout("right:max(80dlu;p), 4dlu, 60dlu,right:max(60dlu;p), 4dlu, 60dlu",
1366 //1. 2. 3. 4. 5. 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
1367 "p, 10dlu, p, 2dlu, p, 2dlu, p, 2dlu, p, 2dlu, p, 2dlu, p, 2dlu, p, 2dlu, p, 2dlu, p, 2dlu, p, 10dlu, p, 10dlu, p, 2dlu, p, 2dlu, p, 2dlu, p");
1368 PanelBuilder builder
= new PanelBuilder(lay11
);
1369 builder
.setDefaultDialogBorder();
1370 builder
.getPanel().setOpaque(false);
1371 CellConstraints cc11
= new CellConstraints();
1372 builder
.getPanel().setDoubleBuffered(true);
1374 builder
.addSeparator("Personendaten",cc11
.xyw(1,1,6));
1375 builder
.addLabel("Anrede", cc11
.xy(1,3));
1376 builder
.add(cbanrede
, cc11
.xy(3,3));
1377 //builder.add(jtf[0], cc11.xy(3,1));
1378 builder
.addLabel("Titel", cc11
.xy(4,3));
1379 builder
.add(jtf
[1], cc11
.xy(6,3));
1380 builder
.addLabel("Nachname *)", cc11
.xy(1,5));
1381 builder
.add(jtf
[2], cc11
.xyw(3, 5, 4));
1382 builder
.addLabel("Vorname *)", cc11
.xy(1,7));
1383 builder
.add(jtf
[3], cc11
.xyw(3, 7, 4));
1384 builder
.addLabel("Strasse, Nr. *)", cc11
.xy(1,9));
1385 builder
.add(jtf
[4], cc11
.xyw(3, 9, 4));
1386 builder
.addLabel("PLZ, Ort *)", cc11
.xy(1,11));
1387 builder
.add(jtf
[5], cc11
.xy(3, 11));
1388 builder
.add(jtf
[6], cc11
.xyw(4, 11, 3));
1389 builder
.addLabel("Geburtstag *)", cc11
.xy(1,13));
1390 builder
.add(jtf
[11], cc11
.xy(3, 13));
1391 builder
.addLabel("Telefon priv.", cc11
.xy(1, 15));
1392 builder
.add(jtf
[7], cc11
.xyw(3, 15, 4));
1393 builder
.addLabel("Telefon gesch.", cc11
.xy(1, 17));
1394 builder
.add(jtf
[8], cc11
.xyw(3, 17, 4));
1395 builder
.addLabel("Mobil", cc11
.xy(1, 19));
1396 builder
.add(jtf
[9], cc11
.xyw(3, 19, 4));
1397 builder
.addLabel("Email", cc11
.xy(1, 21));
1398 builder
.add(jtf
[10], cc11
.xyw(3, 21, 4));
1402 builder
.addSeparator("Plandaten", cc11
.xyw(1, 23, 6));
1404 builder
.addLabel("Akutpatient", cc11
.xy(1,25));
1405 builder
.add(jcheck
[1], cc11
.xy(3,25));
1407 builder
.addLabel("akut von", cc11
.xy(1,27));
1408 builder
.add(jtf
[28], cc11
.xy(3, 27));
1409 builder
.addLabel("akut bis", cc11
.xy(4,27));
1410 builder
.add(jtf
[27], cc11
.xy(6, 27));
1412 builder
.addLabel("mögliche Termine 1", cc11
.xy(1, 29));
1413 builder
.add(jtf
[29], cc11
.xyw(3, 29, 4));
1414 builder
.addLabel("mögliche Termine 2", cc11
.xy(1, 31));
1415 builder
.add(jtf
[30], cc11
.xyw(3, 31, 4));
1419 builder
.getPanel().addKeyListener(this);
1420 builder
.getPanel().addFocusListener(this);
1421 builder
.getPanel().validate();
1422 JScrollPane xjscr
= JCompTools
.getTransparentScrollPane(builder
.getPanel());
1423 //jscr = new JScrollPane();
1424 //jscr.setOpaque(false);
1425 //jscr.getViewport().setOpaque(false);
1426 //jscr.setBorder(null);
1427 //jscr.setViewportBorder(null);
1428 xjscr
.getVerticalScrollBar().setUnitIncrement(15);
1429 //jscr.setViewportView(builder.getPanel());
1432 xjscr
.addKeyListener(this);
1434 pat11
.add(xjscr
,BorderLayout
.CENTER
);
1439 public static String
getArztBisher(){
1442 public static String
getKasseBisher(){
1445 private void doArztListe(){
1449 //System.out.println("in doArztListe");
1450 String aerzte
= Reha
.thisClass
.patpanel
.patDaten
.get(63);
1451 String
[] einzelarzt
= null;
1452 String
[] arztdaten
= null;
1453 Vector
<?
> arztvec
= null;
1454 if(!aerzte
.trim().equals("")){
1455 einzelarzt
= aerzte
.split("\n");
1456 //System.out.println("Anzahl Ärzte = "+einzelarzt.length);
1457 for(int i
= 0; i
< einzelarzt
.length
;i
++){
1458 arztdaten
= einzelarzt
[i
].split("@");
1459 //docmod.setColumnIdentifiers(new String[] {"LANR","Nachname","Strasse","Ort","BSNR",""});
1460 arztvec
= SqlInfo
.holeFelder("select arztnum,nachname,strasse,ort,bsnr,id from arzt where id='"+arztdaten
[1]+"' LIMIT 1" );
1461 if(arztvec
.size() > 0){
1462 docmod
.addRow((Vector
<?
>)arztvec
.get(0));
1465 if(docmod
.getRowCount()>0){
1466 doclist
.setRowSelectionInterval(0, 0);
1470 public void enableReaderButton(){
1471 if(SystemConfig
.sReaderAktiv
.equals("0")){
1474 knopf3
.setEnabled(true);
1477 public void disableReaderButton(){
1478 if(SystemConfig
.sReaderAktiv
.equals("0")){
1481 knopf3
.setEnabled(false);
1484 private void einlesen(){
1486 if(SystemConfig
.sReaderAktiv
.equals("0")){
1489 if(!Reha
.thisClass
.ocKVK
.isCardReady
){
1490 JOptionPane
.showMessageDialog(null,"Chipkarten-Lesegerät ist nicht bereit");
1493 if(SystemConfig
.hmKVKDaten
.isEmpty()){
1494 JOptionPane
.showMessageDialog(null,"Daten der Chipkarte konnten nicht gelesen werden");
1497 ////System.out.println("Aufruf der KVK");
1498 KVKWrapper kvw
= new KVKWrapper(SystemConfig
.sReaderName
);
1499 int ret
= kvw
.KVK_Einlesen();
1501 KVKRohDaten kvkr
= new KVKRohDaten(this);
1502 kvkr
.setModal(true);
1503 kvkr
.setLocationRelativeTo(this);
1504 kvkr
.setVisible(true);
1507 //cbanrede.requestFocus();
1509 String fehlertext
= "Fehler beim einlesen der Versichertenkarte.\nBitte erneut einlesen\n\n";
1510 //"Fehler-Code: "+SystemConfig.hmKVKDaten.get("Fehlercode")+"\n"+
1511 //"Fehler-Text: "+SystemConfig.hmKVKDaten.get("Fehlertext")+"\n";
1512 JOptionPane
.showMessageDialog(null,fehlertext
);
1516 public void actionPerformed(ActionEvent arg0
) {
1517 // TODO Auto-generated method stub
1518 String com
= arg0
.getActionCommand();
1519 if(com
.equals("einlesen")){
1520 if(SystemConfig
.sReaderAktiv
.equals("0")){
1524 }else if(com
.equals("speichern")){
1526 }else if(com
.equals("abbrechen")){
1527 // Lemmi 20110103: Verhinderung von Datenverlust bei unbeabsichtigtem Zumachen des geänderten Patientent-Dialoges
1528 // if ( HasChanged() && askForCancelUsaved() == 1 )
1531 ((JXDialog
)this.getParent().getParent().getParent().getParent().getParent()).dispose();
1532 }else if(com
.equals("adddoc")){
1533 arztInListeAuswahl();
1534 }else if(com
.equals("deldoc")){
1536 if( (row
= doclist
.getSelectedRow()) < 0){
1539 TableTool
.loescheRow(doclist
, row
);
1542 }else if(com
.equals("u18ignore")){
1544 }else if(com
.equals("vorjahrfrei")){
1545 //System.out.println("in checkBox Vorjahrfrei");
1546 if(jcheck
[10].isSelected()){
1547 jtf
[35].setText("");
1549 jtf
[35].setText(SystemConfig
.vorJahr
);
1551 }else if(com
.equals("delpic")){
1552 if( lblbild
.getIcon()!=null && !inNeu
){
1553 int frage
= JOptionPane
.showConfirmDialog(null,"Wollen Sie das Patientenfoto wirklich löschen?","Wichtige Benutzeranfrage",JOptionPane
.YES_NO_OPTION
);
1554 if(frage
==JOptionPane
.YES_OPTION
){
1555 SqlInfo
.sqlAusfuehren("delete from patbild where pat_intern = '"+
1556 Reha
.thisClass
.patpanel
.aktPatID
+"' LIMIT 1");
1561 lblbild
.setIcon(null);
1562 lblbild
.setText("Kein Bild des Patienten vorhanden");
1563 startMitBild
= false;
1566 }else if(com
.equals("addpic")){
1567 if(SystemConfig
.sWebCamActive
.equals("0")){
1568 JOptionPane
.showMessageDialog(null,"WebCam entweder nicht aktiviert (System-Initialisierung)\noder nicht angeschlossen!");
1571 PatientenFoto foto
= new PatientenFoto(null,"patBild",this);
1572 foto
.setModal(true);
1573 foto
.setLocationRelativeTo(null);
1575 foto
.setVisible(true);
1579 }else if(com
.equals("addjpg")){
1580 JOptionPane
.showMessageDialog(null,"Aufnahme von fertigen Bilddateien (noch) nicht implementiert");
1586 public void keyPressed(KeyEvent arg0
) {
1587 // TODO Auto-generated method stub
1588 ////System.out.println("Neuanlage Pressed "+arg0.getKeyCode());
1589 if(arg0
.getKeyCode()== 10 || arg0
.getKeyCode()==0){
1592 if(((JComponent
)arg0
.getSource()).getName().equals("einlesen")){
1596 if(((JComponent
)arg0
.getSource()).getName().equals("speichern")){
1600 if(((JComponent
)arg0
.getSource()).getName().equals("abbrechen")){
1602 // Lemmi 20110103: Verhinderung von Datenverlust bei unbeabsichtigtem Zumachen des geänderten Patientent-Dialoges
1603 // if ( HasChanged() && askForCancelUsaved() == 1 )
1606 ((JXDialog
)this.getParent().getParent().getParent().getParent().getParent()).setVisible(false);
1608 ((JXDialog
)this.getParent().getParent().getParent().getParent().getParent()).dispose();
1611 }catch(Exception ex
){
1616 if(arg0
.getKeyCode()==27){
1618 // Lemmi 20110103: Verhinderung von Datenverlust bei unbeabsichtigtem Zumachen des geänderten Patientent-Dialoges
1619 // if ( HasChanged() && askForCancelUsaved() == 1 )
1622 ((JXDialog
)this.getParent().getParent().getParent().getParent().getParent()).setVisible(false);
1624 ((JXDialog
)this.getParent().getParent().getParent().getParent().getParent()).dispose();
1629 public void keyReleased(KeyEvent arg0
) {
1630 // TODO Auto-generated method stub
1631 ////System.out.println("Neuanlage Released "+arg0);
1632 if(arg0
.getKeyCode()== 10 || arg0
.getKeyCode()==0)
1636 public void keyTyped(KeyEvent arg0
) {
1637 // TODO Auto-generated method stub
1638 ////System.out.println("Neuanlage Typed "+arg0);
1639 if(arg0
.getKeyCode()== 10 || arg0
.getKeyCode()==0)
1644 public void focusGained(FocusEvent arg0
) {
1645 // TODO Auto-generated method stub
1647 Rectangle rec1 =((JComponent)arg0.getSource()).getBounds();
1648 Rectangle rec2 = jscr.getViewport().getViewRect();
1649 JViewport vp = jscr.getViewport();
1650 Rectangle rec3 = vp.getVisibleRect();
1651 if((rec1.y+((JComponent)arg0.getSource()).getHeight()) > (rec2.y+rec2.height)){
1652 vp.setViewPosition(new Point(rec1.x,(rec2.y+rec2.height)-rec1.height));
1654 if(rec1.y < (rec2.y)){
1655 vp.setViewPosition(new Point(rec1.x,rec1.y));
1661 if( ((JComponent
)arg0
.getSource()).getName() != null){
1662 if(((JComponent
)arg0
.getSource()).getName().equals("arzt")){
1663 if(testObDialog(jtf
[17].getText())){
1664 //System.out.println("Arzt-Dialog erforderlich");
1665 String
[] suchenach
= null;
1666 if(jtf
[17].getText().trim().length() > 1){
1667 suchenach
= new String
[] {jtf
[17].getText().trim().substring(1),jtf
[33].getText().trim()};
1669 suchenach
= new String
[] {"",""};
1671 arztAuswahl(suchenach
);
1673 }else if(((JComponent
)arg0
.getSource()).getName().equals("kasse")){
1674 if(testObDialog(jtf
[12].getText())){
1675 //System.out.println("Kassen-Dialog erforderlich");
1676 String
[] suchenach
= null;
1677 if(jtf
[12].getText().trim().length() > 1){
1678 suchenach
= new String
[] {jtf
[12].getText().trim().substring(1),jtf
[34].getText().trim()};
1680 suchenach
= new String
[] {"",""};
1682 kassenAuswahl(suchenach
);
1689 public void focusLost(FocusEvent arg0
) {
1690 if( ((JComponent
)arg0
.getSource()).getName() != null){
1691 //System.out.println(((JComponent)arg0.getSource()).getName());
1694 // TODO Auto-generated method stub
1696 private void arztAuswahl(String
[] suchenach
){
1697 jtf
[19].requestFocus();
1698 ArztAuswahl awahl
= new ArztAuswahl(null,"ArztAuswahl",suchenach
,new JRtaTextField
[] {jtf
[17],jtf
[18],jtf
[33]},jtf
[17].getText().trim());
1699 awahl
.setModal(true);
1700 awahl
.setLocationRelativeTo(this);
1701 awahl
.setVisible(true);
1704 new SwingWorker
<Void
,Void
>(){
1706 protected Void
doInBackground() throws Exception
{
1708 //System.out.println("Beginne ArztOrganisation mit Arzt ID ="+jtf[33].getText());
1709 aerzteOrganisieren(jtf
[33].getText(),inNeu
,docmod
,doclist
,true);
1710 }catch(Exception ex
){
1711 ex
.printStackTrace();
1717 SwingUtilities
.invokeLater(new Runnable(){
1719 jtf
[19].requestFocus();
1722 if(jtf
[17].getText().indexOf("?") >= 0){
1723 String text
= jtf
[17].getText().replace("?","");
1724 jtf
[17].setText(text
);
1730 private void kassenAuswahl(String
[] suchenach
){
1731 jtf
[14].requestFocus();
1732 KassenAuswahl kwahl
= new KassenAuswahl(null,"KassenAuswahl",suchenach
,new JRtaTextField
[] {jtf
[12],jtf
[13],jtf
[34]},jtf
[12].getText().trim());
1733 kwahl
.setModal(true);
1734 kwahl
.setLocationRelativeTo(this);
1735 kwahl
.setVisible(true);
1738 SwingUtilities
.invokeLater(new Runnable(){
1740 jtf
[14].requestFocus();
1743 if(jtf
[12].getText().indexOf("?") >= 0){
1744 String text
= jtf
[12].getText().replace("?","");
1745 jtf
[12].setText(text
);
1749 private void arztInListeAuswahl(){
1750 JRtaTextField
[] tfaliste
= {new JRtaTextField("nix",false),new JRtaTextField("nix",false),new JRtaTextField("nix",false)};
1751 ArztAuswahl awahl
= new ArztAuswahl(null,"ArztAuswahl",new String
[] {"",""} ,tfaliste
,"");
1752 awahl
.setModal(true);
1753 awahl
.setLocationRelativeTo(this);
1754 awahl
.setVisible(true);
1757 final JRtaTextField xtf
= tfaliste
[2];
1758 if(!xtf
.getText().equals("")){
1759 new SwingWorker
<Void
,Void
>(){
1761 protected Void
doInBackground() throws Exception
{
1763 //System.out.println("Beginne ArztOrganisation mit Arzt ID ="+xtf.getText());
1764 aerzteOrganisieren(xtf
.getText(),inNeu
,docmod
,doclist
,false);
1765 }catch(Exception ex
){
1766 ex
.printStackTrace();
1774 private void arztInListeDoppelKlick(Point klick
){
1775 int row
= doclist
.getSelectedRow();
1777 formulareAuswerten(klick
);
1778 //ProgLoader.ArztFenster(0,(String)doclist.getValueAt(row,5) );
1782 public void holeFormulare(){
1783 new SwingWorker
<Void
,Void
>(){
1785 protected Void
doInBackground() throws Exception
{
1787 INIFile inif
= new INIFile(Reha
.proghome
+"ini/"+Reha
.aktIK
+"/arzt.ini");
1788 int forms
= inif
.getIntegerProperty("Formulare", "ArztFormulareAnzahl");
1789 for(int i
= 1; i
<= forms
; i
++){
1790 titel
.add(inif
.getStringProperty("Formulare","AFormularText"+i
));
1791 formular
.add(inif
.getStringProperty("Formulare","AFormularName"+i
));
1793 }catch(Exception ex
){
1794 ex
.printStackTrace();
1803 public void formulareAuswerten(Point klick
){
1804 int row
= doclist
.getSelectedRow();
1806 String sid
= Integer
.toString(Integer
.parseInt((String
) doclist
.getValueAt(row
, 5)));
1808 KassenFormulare kf
= new KassenFormulare(null,titel
,formularid
);
1810 kf
.setLocation(pt
.x
-100,pt
.y
+25);
1812 kf
.setVisible(true);
1813 iformular
= Integer
.valueOf(formularid
.getText());
1815 final String xid
= sid
;
1817 new SwingWorker
<Void
,Void
>(){
1820 protected Void
doInBackground() throws Exception
{
1821 ArztTools
.constructArztHMap(xid
);
1822 OOTools
.starteStandardFormular(Reha
.proghome
+"vorlagen/"+Reha
.aktIK
+"/"+formular
.get(iformular
),null);
1829 //System.out.println("Es wurde Formular "+iformular+" gew�hlt");
1832 String mes
= "Wenn man eine Kasse anschreiben möchte, empfiehlt es sich\n"+
1833 "vorher die Kasse auszuwählen die man anschreiben möchte!!!\n\n"+
1834 "Aber trösten Sie sich, unser Herrgott hat ein Herz für eine ganz spezielle Randgruppe.\n"+
1835 "Sie dürfen also hoffen....\n\n";
1836 JOptionPane
.showMessageDialog(null, mes
);
1841 public void aerzteOrganisieren(String aid
,boolean neu
,MyDocTableModel mod
,JXTable tbl
,boolean bloednachfragen
){
1843 // wenn neu dann Tabelle mit nur einem arzt
1844 // *******************/
1845 // wenn nicht neu und nicht in bisherigem aerzt.feld
1846 // nachfragen ob neu aufgenommen werden soll
1847 // wenn ja aufnehmen und in dbAbspeichern
1848 // wenn nicht zur�ck
1851 if(! inTableEnthalten(aid
,mod
)){
1852 //System.out.println("Neuanlage Pat. Arzt wird in Liste übernommen");
1854 arztInTableAufnehmen(aid
,mod
);
1857 //System.out.println("Neuanlage Pat. Arzt bereits in der Liste enthalten");
1859 }else{ // in Patient �ndern
1860 if(! inTableEnthalten(aid
,mod
)){
1861 //System.out.println("Ändern Pat. Arzt wird in Liste übernommen");
1862 if(bloednachfragen
){
1863 int frage
= JOptionPane
.showConfirmDialog(null,"Den gewählten Arzt in die Arztliste dieses Patienten aufnehmen?","Wichtige Benutzeranfrage",JOptionPane
.YES_NO_OPTION
);
1864 if(frage
== JOptionPane
.YES_OPTION
){
1865 arztInTableAufnehmen(aid
,mod
);
1869 arztInTableAufnehmen(aid
,mod
);
1873 //System.out.println("Ändern Pat. Arzt bereits in der Liste enthalten");
1876 }else{ // funktion wurde �ber Rezept aufgerufen
1880 private void arztInTableAufnehmen(String aid
,MyDocTableModel mod
){
1881 Vector
<Vector
<String
>> vecx
;
1883 vecx
= SqlInfo
.holeFelder("select arztnum,nachname,strasse,ort,bsnr,id from arzt where id='"+aid
+"' LIMIT 1" );
1884 if(vecx
.size() > 0){
1885 mod
.addRow((Vector
<String
>)vecx
.get(0));
1891 private boolean inTableEnthalten(String aid
,MyDocTableModel mod
){
1892 boolean bret
= false;
1893 for(int i
= 0; i
<mod
.getRowCount();i
++){
1894 if( ((String
)mod
.getValueAt(i
, 5)).equals(aid
)){
1902 private boolean testObDialog(String string
){
1906 if(string
.trim().length() == 0){
1909 if(string
.substring(0,1).
1916 private void speichernPatBild(boolean neu
,ImageIcon ico
,String pat_intern
){
1917 Statement stmt
= null;;
1918 ResultSet rs
= null;
1919 PreparedStatement ps
= null;
1920 //boolean ret = false;
1923 //piTool.app.conn.setAutoCommit(true);
1925 //stmt = (Statement) Reha.thisClass.conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
1926 // ResultSet.CONCUR_UPDATABLE );
1928 String select
= "Insert into patbild set bild = ? , pat_intern = ?, vorschau = ?";
1929 ps
= (PreparedStatement
) Reha
.thisClass
.conn
.prepareStatement(select
);
1930 ps
.setBytes(1, bufferedImageToByteArray( (BufferedImage
) ico
.getImage()));
1931 ps
.setString(2, pat_intern
);
1932 BufferedImage buf
= new BufferedImage(35,40,BufferedImage
.TYPE_INT_RGB
);
1933 Graphics2D g
= buf
.createGraphics();
1934 g
.drawImage(ico
.getImage().getScaledInstance(35, 44, Image
.SCALE_SMOOTH
), null, null);
1936 ps
.setBytes(3, bufferedImageToByteArray( (BufferedImage
) buf
));
1940 String select
= "Update patbild set bild = ? , vorschau = ? where pat_intern = ?";
1941 ps
= (PreparedStatement
) Reha
.thisClass
.conn
.prepareStatement(select
);
1942 ps
.setBytes(1, bufferedImageToByteArray( (BufferedImage
) ico
.getImage()));
1943 BufferedImage buf
= new BufferedImage(35,44,BufferedImage
.TYPE_INT_RGB
);
1944 Graphics2D g
= buf
.createGraphics();
1945 g
.drawImage(ico
.getImage().getScaledInstance(35, 44, Image
.SCALE_SMOOTH
), null, null);
1947 ps
.setBytes(2, bufferedImageToByteArray( (BufferedImage
) buf
));
1948 ps
.setString(3, pat_intern
);
1953 } catch (SQLException e
) {
1954 e
.printStackTrace();
1955 } catch (IOException e
) {
1956 e
.printStackTrace();
1957 } catch (ImageFormatException e
) {
1958 e
.printStackTrace();
1959 } catch (Exception e
) {
1960 e
.printStackTrace();
1966 } catch (SQLException sqlEx
) { // ignore }
1973 } catch (SQLException sqlEx
) { // ignore }
1980 } catch (SQLException sqlEx
) { // ignore }
1986 private static byte[] bufferedImageToByteArray(BufferedImage img
) throws ImageFormatException
, IOException
{
1988 ByteArrayOutputStream os
= new ByteArrayOutputStream();
1989 JPEGImageEncoder encoder
= JPEGCodec
.createJPEGEncoder(os
);
1990 encoder
.encode(img
);
1991 return os
.toByteArray();
1996 public static BufferedImage
holePatBild(String pat_intern
){
1997 Statement stmt
= null;;
1998 ResultSet rs
= null;
2002 stmt
= (Statement
) Reha
.thisClass
.conn
.createStatement(ResultSet
.TYPE_SCROLL_SENSITIVE
,
2003 ResultSet
.CONCUR_UPDATABLE
);
2004 String test
= "select bild from patbild where pat_intern ='"+pat_intern
+"'";
2005 rs
= (ResultSet
) stmt
.executeQuery(test
);
2007 bild
= ImageIO
.read( new ByteArrayInputStream(rs
.getBytes("bild")) );
2009 } catch (SQLException e
) {
2010 e
.printStackTrace();
2011 } catch (IOException e
) {
2012 e
.printStackTrace();
2019 } catch (SQLException sqlEx
) { // ignore }
2026 } catch (SQLException sqlEx
) { // ignore }
2031 return (BufferedImage
) bild
;
2036 class MyDocTableModel
extends DefaultTableModel
{
2040 private static final long serialVersionUID
= 1L;
2042 public Class
<?
> getColumnClass(int columnIndex
) {
2044 return String
.class;}
2046 return String
.class;
2049 public boolean isCellEditable(int row
, int col
) {
2055 public void aufraeumen(){
2056 for(int i
= 0; i
< jtf
.length
;i
++ ){
2057 jtf
[i
].listenerLoeschen();
2058 ListenerTools
.removeListeners(jtf
[i
]);
2060 for(int i
= 0; i
< jcheck
.length
;i
++ ){
2061 ListenerTools
.removeListeners(jcheck
[i
]);
2067 rtp
.removeRehaTPEventListener((RehaTPEventListener
) this);
2071 public void rehaTPEventOccurred(RehaTPEvent evt
) {
2073 if(evt
.getDetails()[0] != null){
2074 if(evt
.getDetails()[0].equals(this.getName())){
2075 ((JXDialog
)this.getParent().getParent().getParent().getParent().getParent()).setVisible(false);
2077 ((JXDialog
)this.getParent().getParent().getParent().getParent().getParent()).dispose();
2078 ////System.out.println("****************Patient Neu/ändern -> Listener entfernt**************");
2081 }catch(NullPointerException ne
){
2082 //System.out.println("In PatNeuanlage" +evt);
2087 /* Lemmi ToDo: Den intransparente Handhabung mit jtf[0] und Anrede prüfen !!!
2088 // Lemmi 20110103: Merken der Originalwerte der eingelesenen Textfelder
2089 // ACHTUNG: Die Reihenfolge der Abfragen muß in SaveChangeStatus() und HasChanged() exakt identisch sein !
2090 private void SaveChangeStatus(){
2092 originale.clear(); // vorherige Merkung wegwerfen
2094 // Alle Text-Eingabefelder
2095 for ( i = 0; i < jtf.length; i++ ) {
2096 //String strText = jtf[i].getText();
2097 originale.add( jtf[i].getText() );
2100 // Einzelne Text-Felder
2101 // originale.add( jta.getText() );
2104 originale.add( (Integer)cbanrede.getSelectedIndex() );
2107 for ( i = 0; i < jcheck.length; i++ ) {
2108 originale.add( (Boolean)(jcheck[i].isSelected() ) ); //
2112 // Lemmi 20110103: prüft, ob sich Einträge geändert haben
2113 // ACHTUNG: Die Reihenfolge der Abfragen muß in SaveChangeStatus() und HasChanged() exakt identisch sein !
2114 public Boolean HasChanged() {
2117 // Alle Text-Eingabefelder
2118 for ( i = 0; i < jtf.length; i++) {
2119 String strTex1 = ">" + jtf[i].getText() + "< >" + originale.get(idx++) + "<";
2120 if(! jtf[i].getText().equals( originale.get(idx++) ) )
2124 // Einzelne Textfelder
2125 // if(! jta.getText().equals( originale.get(idx++) ) )
2129 if( cbanrede.getSelectedIndex() != (Integer)originale.get(idx++) ) // Art d. Verordn. etc.
2133 for ( i = 0; i < jcheck.length; i++) { // CheckBoxen
2134 if( jcheck[i].isSelected() != (Boolean)originale.get(idx++) ) // Begründung außer der Regel vorhanden ? .....
2141 // Lemmi 20110103: Stndard-Abfrage nach Prüfung, ob sich Einträge geändert haben
2142 // fragt nach, ob wirklich ungesichert abgebrochen werden soll !
2143 public int askForCancelUsaved(){
2144 String[] strOptions = {"ja", "nein"}; // Defaultwert euf "nein" gesetzt !
2145 return JOptionPane.showOptionDialog(null, "Es wurden Patienten-Anngaben geändert!\nWollen sie die Änderung(en) wirklich verwerfen?",
2146 "Angaben wurden geändert",
2147 JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null,
2148 strOptions, strOptions[1] );
2154 class ArztListeSpeichern
{
2155 public ArztListeSpeichern(Vector
<Vector
<String
>> vec
,boolean neu
,String xpatintern
){
2156 if(vec
.size() <= 0){
2159 String cmd
= "update pat5 set aerzte = '";
2161 for(int i
= 0;i
< vec
.size();i
++){
2162 aliste
= aliste
+"@"+((String
)((Vector
<String
>)vec
.get(i
)).get(5))+"@\n";
2164 SqlInfo
.aktualisiereSaetze("pat5", "aerzte='"+aliste
+"'", "pat_intern='"+xpatintern
+"'");
2165 new ExUndHop().setzeStatement(cmd
);
2166 Reha
.thisClass
.patpanel
.patDaten
.set(63,aliste
);
2167 //System.out.println(cmd);