@Override public Patient resolvePatient(String firstname, String lastname, String birthDate) { // resolve with full data Patient pat = KontaktMatcher.findPatient( lastname, firstname, birthDate, "", "", "", "", "", CreateMode.FAIL); // try to resolve with only the beginning of the name if (pat == null) { String shortLastname = lastname; String shortFirstname = firstname; if (lastname.length() > 3) { shortLastname = lastname.substring(0, 3); } if (firstname.length() > 3) { shortFirstname = firstname.substring(0, 3); } pat = KontaktMatcher.findPatient( shortLastname, shortFirstname, birthDate, "", "", "", "", "", CreateMode.FAIL); } // user decides if (pat == null) { convertTool.set(birthDate); String birthStr = convertTool.toString(TimeTool.DATE_GER); pat = (Patient) KontaktSelektor.showInSync( Patient.class, Messages.HL7_SelectPatient, Messages.HL7_WhoIs + lastname + " " + firstname + " ," + birthStr + "?"); } return pat; }
/** Der Konstruktor liest eine ESR-Zeile ein und konstruiert daraus den Datensatz. */ public ESRRecord(final String file, final String codeline) { super.create(null); Mandant m; Rechnung rn = null; String mandantID; REJECT rejectCode; String[] vals = new String[11]; vals[0] = new TimeTool().toString(TimeTool.DATE_COMPACT); vals[10] = file; rejectCode = REJECT.OK; // Code/Modus. MODE mode = MODE.Unbekannt; String smd = codeline.substring(0, 3); if (smd.equals("002")) { // $NON-NLS-1$ mode = MODE.Gutschrift_edv; } else if (smd.equals("012")) { // $NON-NLS-1$ mode = MODE.Gutschrift_Schalter; } else if (smd.equals("005")) { // $NON-NLS-1$ mode = MODE.Storno_edv; } else if (smd.equals("015")) { // $NON-NLS-1$ mode = MODE.Storno_Schalter; } else if (smd.equals("008")) { // $NON-NLS-1$ mode = MODE.Korrektur_edv; } else if (smd.equals("018")) { // $NON-NLS-1$ mode = MODE.Korrektur_Schalter; } else if (smd.equals("999")) { // $NON-NLS-1$ mode = MODE.Summenrecord; } vals[5] = Integer.toString(mode.ordinal()); // Daten parsen. Der ESR-Record liefert 6-stellige Daten, wir wollen 8-stellige String prefix = vals[0].substring(0, 2); // TODO Das funktioniert nur bis ins Jahr 2099 :-) TimeTool dat = new TimeTool(prefix + codeline.substring(59, 65)); vals[1] = dat.toString(TimeTool.DATE_GER); dat.set(prefix + codeline.substring(65, 71)); vals[2] = dat.toString(TimeTool.DATE_GER); dat.set(prefix + codeline.substring(71, 77)); vals[3] = (dat.toString(TimeTool.DATE_GER)); if (mode.equals(MODE.Summenrecord)) { // Betrag (führende Nullen entfernen) vals[4] = Integer.toString(Integer.parseInt(codeline.substring(39, 51).trim())); // Totalbetrag // 12-stellig } else { vals[4] = Integer.toString(Integer.parseInt(codeline.substring(39, 49).trim())); // Zeilenbetrag // 10-stellig String esrline = codeline.substring(12, 39); // Von der RechnungsNummer führende Nullen wegbringen int rnnr = Integer.parseInt(esrline.substring(POSITION_RN_NR, 26)); Query<Rechnung> qbe_r = new Query<Rechnung>(Rechnung.class); String rnid = qbe_r.findSingle("RnNummer", "=", Integer.toString(rnnr)); // $NON-NLS-1$ //$NON-NLS-2$ if (rnid == null) { rejectCode = REJECT.RN_NUMMER; vals[6] = ""; // $NON-NLS-1$ mandantID = ""; // $NON-NLS-1$ } else { vals[6] = rnid; rn = Rechnung.load(rnid); if (rn == null) { rejectCode = REJECT.RN_NUMMER; vals[6] = ""; // $NON-NLS-1$ mandantID = ""; // $NON-NLS-1$ } else { m = rn.getMandant(); if (m == null) { rejectCode = REJECT.MANDANT; vals[6] = ""; // $NON-NLS-1$ mandantID = ""; // $NON-NLS-1$ } else { mandantID = m.getId(); } } } String PatNr = esrline.substring(POSITION_PAT_NR, POSITION_RN_NR); long patnr = Long.parseLong(PatNr); // führende Nullen wegbringen String PatID = new Query<Patient>(Patient.class) .findSingle("PatientNr", "=", Long.toString(patnr)); // $NON-NLS-1$ //$NON-NLS-2$ if (PatID == null) { if (rejectCode == REJECT.OK) { rejectCode = REJECT.PAT_NUMMER; } vals[7] = ""; // $NON-NLS-1$ } else if ((rn != null) && (!rn.getFall().getPatient().getId().equals(PatID))) { if (rejectCode == REJECT.OK) { rejectCode = REJECT.PAT_FALSCH; } vals[7] = ""; // $NON-NLS-1$ } else { vals[7] = PatID; } vals[8] = mandantID; } vals[9] = Integer.toString(rejectCode.ordinal()); set( new String[] { "Datum", "Eingelesen", "Verarbeitet", "Gutgeschrieben", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ "BetragInRp", CODE, RECHNUNGS_ID, PATIENT_ID, MANDANT_ID, FLD_REJECT_CODE, "File" }, vals); //$NON-NLS-1$ //$NON-NLS-2$ }
public static Date getDate(String elexisDate) { timeTool.set(elexisDate); return timeTool.getTime(); }