package com.hilotec.elexis.kgview; import static com.hilotec.elexis.kgview.text.KGTextTemplateRequirement.TT_ARCHIV_KG; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.part.ViewPart; import ch.elexis.core.ui.text.ITextPlugin; import ch.elexis.core.ui.text.TextContainer; import ch.elexis.data.Anwender; import ch.elexis.data.Brief; import ch.elexis.data.Konsultation; import ch.elexis.data.Kontakt; import ch.elexis.data.Patient; import ch.rgw.tools.StringTool; import com.hilotec.elexis.kgview.data.KonsData; public class ArchivKGPrintView extends ViewPart { public static final String ID = "com.hilotec.elexis.kgview.ArvchivKGPrintView"; Brief brief; TextContainer text; @Override public void createPartControl(Composite parent){ text = new TextContainer(getViewSite()); text.getPlugin().createContainer(parent, new ITextPlugin.ICallback() { @Override public void save(){} @Override public boolean saveAs(){ return false; } }); } @Override public void setFocus(){} /** * Konsultation in Dokument einfuegen * * TODO: Code-duplikation mit ArchivKG, sollte zusammengelegt werden. */ private Object processKonsultation(Konsultation k, ITextPlugin tp, Object pos){ KonsData kd = KonsData.load(k); int typ = kd.getKonsTyp(); String styp; if (typ == KonsData.KONSTYP_TELEFON) { styp = "Telefon"; } else if (typ == KonsData.KONSTYP_HAUSBESUCH) { styp = "Hausbesuch"; } else { styp = "Konsultation"; } tp.setStyle(SWT.BOLD); pos = tp.insertText(pos, styp, SWT.LEFT); pos = tp.insertText(pos, " " + k.getDatum() + " " + kd.getKonsBeginn(), SWT.LEFT); tp.setStyle(SWT.NORMAL); if (k.getFall() != null) { pos = tp.insertText(pos, " " + k.getFall().getAbrechnungsSystem(), SWT.LEFT); } String sAutor = ""; Anwender autor = kd.getAutor(); if (autor != null) { sAutor = autor.getKuerzel(); if (StringTool.isNothing(sAutor)) sAutor = autor.getLabel(); } pos = tp.insertText(pos, " (" + sAutor + ")\n", SWT.LEFT); pos = addParagraph("Jetziges Leiden", kd.getJetzigesLeiden(), kd.getJetzigesLeidenICPC(), tp, pos); pos = addParagraph("Status", kd.getLokalstatus(), tp, pos); pos = addParagraph("Röntgen", kd.getRoentgen(), tp, pos); pos = addParagraph("EKG", kd.getEKG(), tp, pos); pos = addParagraph("Diagnose", kd.getDiagnose(), kd.getDiagnoseICPC(), tp, pos); pos = addParagraph("Therapie", kd.getTherapie(), tp, pos); pos = addParagraph("Verlauf", kd.getVerlauf(), tp, pos); pos = addParagraph("Procedere", kd.getProzedere(), kd.getProzedereICPC(), tp, pos); pos = tp.insertText(pos, "\n", 0); return pos; } private Object addParagraph(String titel, String text, ITextPlugin tp, Object pos){ return addParagraph(titel, text, null, tp, pos); } private Object addParagraph(String titel, String text, String icpc, ITextPlugin tp, Object pos){ if ((text == null || text.isEmpty()) && (icpc == null || icpc.isEmpty())) return pos; tp.setStyle(SWT.BOLD); pos = tp.insertText(pos, titel, SWT.LEFT); tp.setStyle(SWT.NORMAL); pos = tp.insertText(pos, "\n", SWT.LEFT); if (icpc != null && !icpc.isEmpty()) pos = tp.insertText(pos, "ICPC: " + icpc.replace(",", ", ") + "\n", SWT.LEFT); pos = tp.insertText(pos, text + "\n\n", SWT.LEFT); return pos; } public void doPrint(Konsultation kons, Kontakt adressat, boolean reversed){ brief = text.createFromTemplateName(kons, TT_ARCHIV_KG, Brief.UNKNOWN, adressat, "Archiv-KG"); ITextPlugin tp = text.getPlugin(); Patient pat = kons.getFall().getPatient(); Object pos = tp.insertText("[ArchivKG]", "", SWT.LEFT); ; for (Konsultation k : ArchivKG.getKonsultationen(pat, reversed)) { pos = processKonsultation(k, tp, pos); } brief.save(tp.storeToByteArray(), tp.getMimeType()); tp.print(null, null, true); } }