From 37314fca05468a3bfa8d4c3d23584586463a97fa Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Mon, 7 Sep 2026 15:15:19 +0200 Subject: feat!: only add level 4/5 ATC codes (#295) ATC codes like `L`, `L01`, `L01E` are not imported any more and cannot be used as ATC code from database. These codes (from database) will be treated as unregistered code instead.--- .../atc/services/OnkostarAgentCodeService.java | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'src/main/java/dev/dnpm/oshelper/atc/services/OnkostarAgentCodeService.java') diff --git a/src/main/java/dev/dnpm/oshelper/atc/services/OnkostarAgentCodeService.java b/src/main/java/dev/dnpm/oshelper/atc/services/OnkostarAgentCodeService.java index 0dfb1e6..90528aa 100644 --- a/src/main/java/dev/dnpm/oshelper/atc/services/OnkostarAgentCodeService.java +++ b/src/main/java/dev/dnpm/oshelper/atc/services/OnkostarAgentCodeService.java @@ -23,6 +23,7 @@ import dev.dnpm.oshelper.atc.AgentCode; import dev.dnpm.oshelper.atc.AtcCode; import dev.dnpm.oshelper.atc.UnregisteredCode; import java.util.List; +import java.util.Optional; import javax.sql.DataSource; import org.springframework.jdbc.core.JdbcTemplate; @@ -75,4 +76,40 @@ public class OnkostarAgentCodeService implements AgentCodeService { return new UnregisteredCode(code, shortdesc, synonyms); }); } + + /** + * Queries source for agents with code matching code string. + * + * @param code The code string + * @return An optional agent code if found + */ + @Override + public Optional getAgentCode(final String code) { + var sql = + "SELECT code, shortdesc, synonyms\n" + + " FROM property_catalogue\n" + + " JOIN property_catalogue_version ON (property_catalogue_version.datacatalog_id = property_catalogue.id)\n" + + " JOIN property_catalogue_version_entry p ON (p.property_version_id = property_catalogue_version.id)\n" + + " WHERE name = 'OS.Substanzen'\n" + + " AND LOWER(code) = ?"; + + final var result = + jdbcTemplate.query( + sql, + new Object[] {code}, + (resultSet, i) -> { + var c = resultSet.getString("code"); + var shortdesc = resultSet.getString("shortdesc"); + var synonyms = resultSet.getString("synonyms"); + if (AtcCode.isAtcCode(c)) { + return new AtcCode(c, shortdesc); + } + return new UnregisteredCode(c, shortdesc, synonyms); + }); + + if (result.size() == 1) { + return Optional.of(result.get(0)); + } + return Optional.empty(); + } } -- cgit v1.2.3