package at.medevit.elexis.loinc.model; import java.util.List; import ch.elexis.data.PersistentObject; import ch.rgw.tools.JdbcLink; import ch.rgw.tools.VersionInfo; public class LoincCode extends PersistentObject implements ch.elexis.core.model.ICodeElement { public static final String TABLENAME = "at_medevit_elexis_loinc"; //$NON-NLS-1$ public static final String VERSION = "1.0.0"; //$NON-NLS-1$ public static final String VERSIONTOPID = "TOP2000VERSION"; //$NON-NLS-1$ public static final String VERSIONID = "VERSION"; //$NON-NLS-1$ public static final String FLD_CODE = "code"; //$NON-NLS-1$ public static final String FLD_LONGNAME = "longname"; //$NON-NLS-1$ public static final String FLD_SHORTNAME = "shortname"; //$NON-NLS-1$ public static final String FLD_CLASS = "class"; //$NON-NLS-1$ public static final String FLD_UNIT = "unit"; //$NON-NLS-1$ // @formatter:off static final String create = "CREATE TABLE " + TABLENAME + " (" + //$NON-NLS-1$ "ID VARCHAR(25) primary key, " + //$NON-NLS-1$ "lastupdate BIGINT," + "deleted CHAR(1) default '0'," + //$NON-NLS-1$ "code VARCHAR(128)," + //$NON-NLS-1$ "longname TEXT," + //$NON-NLS-1$ "shortname VARCHAR(255)," + //$NON-NLS-1$ "class VARCHAR(128)," + //$NON-NLS-1$ "unit VARCHAR(128)" + //$NON-NLS-1$ ");" + //$NON-NLS-1$ "CREATE INDEX loinc1 ON " + TABLENAME + " (" + FLD_CODE + ");" + //$NON-NLS-1$ "INSERT INTO " + TABLENAME + " (ID," + FLD_CODE + ") VALUES (" + JdbcLink.wrap(VERSIONID) + "," + JdbcLink.wrap(VERSION) + ");" + //$NON-NLS-1$ "INSERT INTO " + TABLENAME + " (ID," + FLD_CODE + ") VALUES (" + JdbcLink.wrap(VERSIONTOPID) + "," + JdbcLink.wrap("0.0.0") + ");"; //$NON-NLS-1$ // @formatter:on static { addMapping(TABLENAME, FLD_CODE, FLD_LONGNAME, FLD_SHORTNAME, FLD_CLASS, FLD_UNIT); if (!tableExists(TABLENAME)) { createOrModifyTable(create); } else { LoincCode version = load(VERSIONID); VersionInfo vi = new VersionInfo(version.get(FLD_CODE)); if (vi.isOlder(VERSION)) { // we should update eg. with createOrModifyTable(update.sql); // And then set the new version version.set(FLD_CODE, VERSION); } } } public LoincCode(String id){ super(id); } public LoincCode(String code, String longname, String shortname, String clazz, String unit){ create(null); set(FLD_CODE, code); set(FLD_LONGNAME, longname); set(FLD_SHORTNAME, shortname); set(FLD_CLASS, clazz); set(FLD_UNIT, unit); } public LoincCode(){ // TODO Auto-generated constructor stub } public static LoincCode load(final String id){ return new LoincCode(id); } @Override public String getLabel(){ String[] vals = get(true, FLD_CODE, FLD_LONGNAME); if (vals[1].trim().length() > 0) return vals[0] + " - " + vals[1].trim(); else return vals[0]; } @Override protected String getTableName(){ return TABLENAME; } public String getCodeSystemName(){ return "LOINC"; } public String getCodeSystemCode(){ return "999"; } public String getCode(){ return get(FLD_CODE); } public String getText(){ return get(FLD_LONGNAME); } public static VersionInfo getTop2000Verion(){ LoincCode top2000version = load(VERSIONTOPID); return new VersionInfo(top2000version.get(FLD_CODE)); } public static void setTop2000Version(String version){ LoincCode top2000version = load(VERSIONTOPID); top2000version.set(LoincCode.FLD_CODE, version); } public List<Object> getActions(Object context){ // TODO Auto-generated method stub return null; } }