package ch.elexis.connect.afinion.packages; import java.util.ArrayList; import java.util.Calendar; import ch.elexis.core.importer.div.importers.TransientLabResult; import ch.elexis.core.ui.importer.div.importers.DefaultLabImportUiHandler; import ch.elexis.core.ui.importer.div.importers.LabImportUtil; import ch.elexis.data.Patient; /** * Diese Klasse ist Platzhalter für eine Patient Record * * @author immi * */ public class Record { private HeaderPart header; private SubRecordPart[] parts = new SubRecordPart[4]; private boolean isValid = false; private boolean isOutOfRange = false; public Record(final byte[] bytes){ parse(bytes); } /** * Header, Subparts werden geparst Footer interessiert nicht * * @param bytes */ private void parse(byte[] bytes){ header = new HeaderPart(bytes); int pos = header.length(); for (int i = 0; i < 4; i++) { parts[i] = new SubRecordPart(bytes, pos); if (parts[i].isValid()) { isValid = true; } if (parts[i].isOutOfRange()) { isOutOfRange = true; } pos += parts[i].length(); } } public String getId(){ return this.header.getId(); } public int getRecordNum(){ return this.header.getRecordNum(); } public Calendar getCalendar(){ return this.header.getCalendar(); } public int getRunNr(){ return this.header.getRunNr(); } public boolean isValid(){ return this.isValid; } public boolean isOutOfRange(){ return this.isOutOfRange; } public String getText(){ String text = ""; for (int i = 0; i < parts.length; i++) { if (parts[i].isValid()) { if (text.length() > 0) { text += ", "; } text += parts[i].getKuerzel() + " " + parts[i].getResultStr() + " " + parts[i].getUnit(); } } return text; } /** * Schreibt die Werte in die Datenbank * * @param patient * @throws PackageException */ public void write(Patient patient) throws PackageException{ ArrayList<TransientLabResult> results = new ArrayList<TransientLabResult>(); for (int i = 0; i < parts.length; i++) { if (parts[i].isValid()) { Value val = Value.getValue(parts[i].getKuerzel(), parts[i].getUnit()); results.add(val.fetchValue(patient, parts[i].getResultStr(), "", this.header.getDate())); } } new LabImportUtil().importLabResults(results, new DefaultLabImportUiHandler()); } public String toString(){ String str = header.toString() + "\n"; for (int i = 0; i < parts.length; i++) { str += "S-Record " + i + ";"; str += parts[i].toString() + "\n"; } return str; } }