/*******************************************************************************
* Copyright (c) 2010, G. Weirich and Elexis
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* G. Weirich - initial implementation
*
*******************************************************************************/
package ch.elexis.impfplan.model;
import ch.elexis.data.Patient;
import ch.elexis.data.PersistentObject;
import ch.rgw.tools.TimeTool;
public class Vaccination extends PersistentObject {
public static final String OBSERVATIONS = "observations"; //$NON-NLS-1$
public static final String DATE = "date"; //$NON-NLS-1$
public static final String VACCINATION_TYPE = "vaccinationType"; //$NON-NLS-1$
public static final String PATIENT_ID = "patientID"; //$NON-NLS-1$
private static final String TABLENAME = "CH_ELEXIS_IMPFPLAN_VACCINATIONS"; //$NON-NLS-1$
private static final String VERSION = "0.1.0"; //$NON-NLS-1$
private static final String createDB = "CREATE TABLE " + TABLENAME + " (" + //$NON-NLS-1$ //$NON-NLS-2$
"ID VARCHAR(25) primary key, deleted CHAR(1) default '0', lastupdate bigint," + //$NON-NLS-1$
"patientID VARCHAR(25), vaccinationType VARCHAR(25), date CHAR(8), observations TEXT);" + //$NON-NLS-1$
"CREATE INDEX " + TABLENAME + "_IDX1 on " + TABLENAME + " (patientID);" + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"INSERT INTO " + TABLENAME + "(ID,observations) VALUES('VERSION','" + VERSION + "');"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
static {
addMapping(TABLENAME, PATIENT_ID, VACCINATION_TYPE, DATE, OBSERVATIONS);
// getConnection().exec("DROP TABLE "+TABLENAME);
Vaccination ver = load("VERSION"); //$NON-NLS-1$
if (!ver.exists()) {
createOrModifyTable(createDB);
}
}
public Vaccination(VaccinationType vt, Patient pat, TimeTool date, boolean bUnexact){
create(null);
String dat = date.toString(TimeTool.DATE_COMPACT);
if (bUnexact) {
dat = dat.substring(0, 4) + "0000"; //$NON-NLS-1$
}
set(new String[] {
VACCINATION_TYPE, PATIENT_ID, DATE
}, vt.getId(), pat.getId(), dat);
}
public Vaccination(VaccinationType vt, Patient pat){
this(vt, pat, new TimeTool(), false);
}
@Override
public String getLabel(){
Patient pat = Patient.load(get(PATIENT_ID));
VaccinationType type = VaccinationType.load(get(VACCINATION_TYPE));
return new StringBuilder().append(pat.getLabel())
.append(" : ").append(type.getLabel()).toString(); //$NON-NLS-1$
}
@Override
protected String getTableName(){
return TABLENAME;
}
public VaccinationType getVaccinationType(){
VaccinationType vt = VaccinationType.load(get(VACCINATION_TYPE));
if (vt.exists()) {
return vt;
}
return null;
}
public String getDateAsString(){
String dat = get(Vaccination.DATE);
if (dat.endsWith("0000")) { //$NON-NLS-1$
return "( ~" + dat.substring(0, 4) + ")"; //$NON-NLS-1$ //$NON-NLS-2$
} else {
return getDate().toString(TimeTool.DATE_GER);
}
}
public String getRawDateString(){
String dat = get(Vaccination.DATE);
if (dat.endsWith("0000")) { //$NON-NLS-1$
return dat;
} else {
return getDate().toString(TimeTool.DATE_COMPACT);
}
}
public TimeTool getDate(){
String dRaw = get(DATE);
if (dRaw.endsWith("0000")) { //$NON-NLS-1$
dRaw = dRaw.substring(0, 4) + "0101"; //$NON-NLS-1$
}
return new TimeTool(dRaw);
}
public void setDate(TimeTool date, boolean bIsUnexact){
String val = date.toString(TimeTool.DATE_COMPACT);
if (bIsUnexact) {
val = val.substring(0, 4) + "0000"; //$NON-NLS-1$
}
set(DATE, val);
}
public String getPatientId(){
return checkNull(get(PATIENT_ID));
}
public static Vaccination load(String id){
return new Vaccination(id);
}
protected Vaccination(String id){
super(id);
}
protected Vaccination(){}
}