package ch.elexis.archie.wzw;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import ch.elexis.core.data.interfaces.IVerrechenbar;
import ch.elexis.data.Fall;
import ch.elexis.data.Konsultation;
import ch.elexis.data.Mandant;
import ch.elexis.data.Patient;
import ch.elexis.data.Verrechnet;
public class AlleLeistungenRoh extends BaseStats {
static final String NAME = "Alle Leistungen roh";
static final String DESC = "Listet sämtliche Leistungen im gegebenen Zeitraum";
static final String[] HEADINGS = {
"Mandant", "Patient-ID", "Patient-Name", "Patient Geschlecht", "Patient Alter", "Datum",
"Gesetz", "Codesystem", "Code", "Text", "Anzahl", "Umsatz"
};
public AlleLeistungenRoh(){
super(NAME, DESC, HEADINGS);
}
List<Comparable<?>[]> lines = new ArrayList<Comparable<?>[]>(10000);
@Override
protected IStatus createContent(IProgressMonitor monitor){
List<Konsultation> conses = getConses(monitor);
int clicksPerRound = HUGE_NUMBER / conses.size();
for (Konsultation k : conses) {
if (!k.isDeleted()) {
Fall fall = k.getFall();
if (fall != null) {
Patient pat = fall.getPatient();
Mandant m = k.getMandant();
String md = m == null ? "?" : m.getLabel();
String g = fall.getAbrechnungsSystem();
if (pat != null) {
for (Verrechnet v : k.getLeistungen()) {
IVerrechenbar vv = v.getVerrechenbar();
if (vv != null) {
String[] line =
new String[] {
md, pat.getPatCode(), pat.getLabel(false),
pat.getGeschlecht(), pat.getAlter(), k.getDatum(),
g == null ? "?" : g, vv.getCodeSystemName(),
vv.getCode() == null ? "?" : vv.getCode(), vv.getText(),
Integer.toString(v.getZahl()),
v.getNettoPreis().getAmountAsString()
};
lines.add(line);
} else {
System.out.println(v.getLabel());
}
}
}
}
}
monitor.worked(clicksPerRound);
if (monitor.isCanceled()) {
return Status.CANCEL_STATUS;
}
}
// Und an Archie übermitteln
this.dataSet.setContent(lines);
return Status.OK_STATUS;
}
}