/******************************************************************************* * Copyright (c) 2009-2011, G. Weirich, medshare 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.data; import java.util.List; import ch.elexis.core.data.interfaces.IOptifier; import ch.elexis.core.ui.optifier.NoObligationOptifier; import ch.rgw.tools.TimeTool; /** * Implementation of the swiss physiotherapy-tariff * * @author gerry * */ public class PhysioLeistung extends VerrechenbarAdapter { public static final String FLD_BIS = "bis"; public static final String FLD_VON = "von"; public static final String FLD_TP = "TP"; private static final String VALUE_VERSION = "VERSION"; public static final String FLD_TITEL = "Titel"; public static final String FLD_ZIFFER = "Ziffer"; public static final String VERSION = "0.0.1"; private static final String TABLENAME = "CH_ELEXIS_ARZTTARIFE_CH_PHYSIO"; private static final String XIDDOMAIN = "www.xid.ch/id/physiotarif"; public static final String CODESYSTEMNAME = "Physiotherapie"; private static IOptifier noObligationOptifier = new NoObligationOptifier(); private static final String createDB = "CREATE TABLE " + TABLENAME + " (" + "ID VARCHAR(25) primary key," + "lastupdate BIGINT," + "deleted CHAR(1) default '0'," + "validFrom CHAR(8)," + "validUntil CHAR(8)," + "TP CHAR(8)," + "ziffer VARCHAR(6)," + "titel VARCHAR(255)," + "description TEXT);" + "CREATE INDEX cheacp on " + TABLENAME + " (ziffer);"; static { addMapping(TABLENAME, "von=S:D:validFrom", "bis=S:D:validUntil", FLD_ZIFFER, FLD_TITEL, "text=description", FLD_TP); Xid.localRegisterXIDDomainIfNotExists(XIDDOMAIN, "Physiotarif", Xid.ASSIGNMENT_LOCAL); PhysioLeistung pv = PhysioLeistung.load(VALUE_VERSION); if (!pv.exists()) { createOrModifyTable(createDB); pv.create(VALUE_VERSION); pv.set(FLD_ZIFFER, VERSION); } } public PhysioLeistung(String code, String text, String tp, String validFrom, String validUntil){ create(null); set(new String[] { FLD_ZIFFER, FLD_TITEL, FLD_TP, FLD_VON, FLD_BIS }, code, text, tp, TimeTool.BEGINNING_OF_UNIX_EPOCH, TimeTool.END_OF_UNIX_EPOCH); } @Override protected String getTableName(){ return TABLENAME; } public String[] getDisplayedFields(){ return new String[] { FLD_ZIFFER, FLD_TITEL }; } public double getFactor(TimeTool date, Fall fall){ return getVKMultiplikator(date, fall); } public int getTP(TimeTool date, Fall fall){ return checkZero(get(FLD_TP)); } public static PhysioLeistung load(String id){ return new PhysioLeistung(id); } protected PhysioLeistung(String id){ super(id); } protected PhysioLeistung(){} public String getXidDomain(){ return XIDDOMAIN; } @Override public String getCodeSystemCode(){ return "311"; } @Override public String getLabel(){ String[] vals = get(true, FLD_ZIFFER, FLD_TITEL); return new StringBuilder().append(vals[0]).append(" ").append(vals[1]).toString(); } @Override public String getText(){ return get(FLD_TITEL); } @Override public String getCode(){ return get(FLD_ZIFFER); } @Override public String getCodeSystemName(){ return CODESYSTEMNAME; } @Override public boolean isDragOK(){ return true; } @Override public IOptifier getOptifier(){ return noObligationOptifier; } @Override public List<Object> getActions(Object context){ // TODO Auto-generated method stub return null; } @Override public int getCacheTime(){ return DBConnection.CACHE_TIME_MAX; } }