package ch.elexis.data.importer; import static org.junit.Assert.assertEquals; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import junit.framework.Assert; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Status; import org.junit.Test; import ch.elexis.data.TarmedLeistung; import ch.rgw.tools.JdbcLink; import ch.rgw.tools.TimeTool; public class TarmedReferenceDataImporterTest { private String codeGutachtenKatA = "00.2310"; private String codeAerztlGutachten = "00.07"; private String codeTapingKat1 = "01.0110"; private String codeBesuchErste5Min = "00.0060"; private String codeEchokardiografie = "17.0210"; private String codeEchokardiografieIncompatible = "17.0230"; private String codeEchokardiografieExpired1 = "17.0280"; private String codeEchokardiografieExpired2 = "17.0290"; @Test public void performImportTest() throws FileNotFoundException, SQLException{ File tarmedFile = new File(System.getProperty("user.dir") + File.separator + "rsc" + File.separator + "tarmed.mdb"); InputStream tarmedInStream = new FileInputStream(tarmedFile); TarmedReferenceDataImporter importer = new TarmedReferenceDataImporter(); importer.suppressRestartDialog(); Status retStatus = (Status) importer.performImport(new NullProgressMonitor(), tarmedInStream, null); assertEquals(IStatus.OK, retStatus.getCode()); JdbcLink cacheDb = new JdbcLink("org.h2.Driver", "jdbc:h2:mem:tarmed_import", "hsql"); cacheDb.connect("", ""); ResultSet res = cacheDb.getStatement().query( String.format("SELECT * FROM %sLEISTUNG", "TARMED_IMPORT_")); List<String> codes = new ArrayList<String>(); while (res != null && res.next()) { String code = res.getString("LNR"); codes.add(code); String knrCode = res.getString("KNR"); codes.add(knrCode); } Assert.assertTrue(codes.contains(codeAerztlGutachten)); Assert.assertTrue(codes.contains(codeGutachtenKatA)); Assert.assertTrue(codes.contains(codeTapingKat1)); Assert.assertTrue(codes.contains(codeBesuchErste5Min)); } @Test public void performImportAndCheckExclusionsTest() throws FileNotFoundException, SQLException{ File tarmedFile = new File(System.getProperty("user.dir") + File.separator + "rsc" + File.separator + "tarmed.mdb"); InputStream tarmedInStream = new FileInputStream(tarmedFile); TarmedReferenceDataImporter importer = new TarmedReferenceDataImporter(); importer.suppressRestartDialog(); Status retStatus = (Status) importer.performImport(new NullProgressMonitor(), tarmedInStream, null); assertEquals(IStatus.OK, retStatus.getCode()); JdbcLink cacheDb = new JdbcLink("org.h2.Driver", "jdbc:h2:mem:tarmed_import", "hsql"); cacheDb.connect("", ""); TarmedLeistung echoKardiografie = TarmedLeistung.load(codeEchokardiografie); Assert.assertEquals(codeEchokardiografie, echoKardiografie.getCode()); TimeTool time = new TimeTool("31.12.2000"); String exclusions = echoKardiografie.getExclusion(time); Assert.assertEquals("", exclusions); time.set("01.01.2006"); exclusions = echoKardiografie.getExclusion(time); Assert.assertNotNull(exclusions); Assert.assertTrue(exclusions.contains(codeEchokardiografieIncompatible)); Assert.assertTrue(exclusions.contains(codeEchokardiografieExpired1)); Assert.assertTrue(exclusions.contains(codeEchokardiografieExpired2)); String validExclusion = echoKardiografie.getExclusion(); Assert.assertEquals(codeEchokardiografieIncompatible, validExclusion); } }