package ch.elexis.core.findings.fhir.po.model; import java.time.LocalDateTime; import java.util.List; import java.util.Optional; import ch.elexis.core.findings.ICoding; import ch.elexis.core.findings.IEncounter; import ch.elexis.core.findings.IProcedureRequest; import ch.elexis.data.PersistentObject; import ch.rgw.tools.VersionInfo; public class ProcedureRequest extends AbstractFhirPersistentObject implements IProcedureRequest { protected static final String TABLENAME = "CH_ELEXIS_CORE_FINDINGS_PROCEDUREREQUEST"; protected static final String VERSION = "1.0.0"; public static final String FLD_PATIENTID = "patientid"; //$NON-NLS-1$ public static final String FLD_ENCOUNTERID = "encounterid"; //$NON-NLS-1$ public static final String FLD_CONTENT = "content"; //$NON-NLS-1$ //@formatter:off protected static final String createDB = "CREATE TABLE " + TABLENAME + "(" + "ID VARCHAR(25) PRIMARY KEY," + "lastupdate BIGINT," + "deleted CHAR(1) default '0'," + "patientid VARCHAR(80)," + "encounterid VARCHAR(80)," + "content TEXT" + ");" + "CREATE INDEX CH_ELEXIS_CORE_FINDINGS_PROCEDUREREQUEST_IDX1 ON " + TABLENAME + " (patientid);" + "CREATE INDEX CH_ELEXIS_CORE_FINDINGS_PROCEDUREREQUEST_IDX2 ON " + TABLENAME + " (encounterid);" + "INSERT INTO " + TABLENAME + " (ID, " + FLD_PATIENTID + ") VALUES ('VERSION','" + VERSION + "');"; //@formatter:on static { addMapping(TABLENAME, FLD_PATIENTID, FLD_ENCOUNTERID, FLD_CONTENT); ProcedureRequest version = load("VERSION"); if (version.state() < PersistentObject.DELETED) { createOrModifyTable(createDB); } else { VersionInfo vi = new VersionInfo(version.get(FLD_PATIENTID)); if (vi.isOlder(VERSION)) { // we should update eg. with createOrModifyTable(update.sql); // And then set the new version version.set(FLD_PATIENTID, VERSION); } } } public static ProcedureRequest load(final String id){ return new ProcedureRequest(id); } protected ProcedureRequest(final String id){ super(id); } public ProcedureRequest(){} @Override public String getLabel(){ // TODO Auto-generated method stub return null; } @Override protected String getTableName(){ return TABLENAME; } @Override public Optional<IEncounter> getEncounter(){ return getEncounter(FLD_ENCOUNTERID); } @Override public void setEncounter(IEncounter encounter){ setEncounter(encounter, FLD_ENCOUNTERID); } @Override public String getPatientId(){ return get(FLD_PATIENTID); } @Override public void setPatientId(String patientId){ set(FLD_PATIENTID, patientId); } @Override public List<ICoding> getCoding(){ // TODO Auto-generated method stub return null; } @Override public void setCoding(List<ICoding> coding){ // TODO Auto-generated method stub } @Override public Optional<LocalDateTime> getScheduledTime(){ // TODO Auto-generated method stub return null; } @Override public void setScheduledTime(LocalDateTime time){ // TODO Auto-generated method stub } }