1
0
mirror of https://github.com/pcvolkmer/onkostar-plugin-dnpm.git synced 2025-07-02 01:02:55 +00:00

Issue #9: Entspricht der Code aus OS dem ATC-Schema, verwende Substanz als ATCCode

This commit is contained in:
2023-03-14 11:45:59 +01:00
parent dfd0bcead4
commit e10c7fba2d
3 changed files with 48 additions and 2 deletions

View File

@ -48,4 +48,15 @@ public class AtcCode implements AgentCode {
public int hashCode() {
return Objects.hash(code.toLowerCase(), name.toLowerCase());
}
/**
* Prüft auf gültiges ATCCode-Schema ab Ebene 2
* @param code Der zu prüfende Code
* @return Gibt <code>true</code> zurück, wenn der angegebene Code dem ATCCode-Schema entspricht
*/
public static boolean isAtcCode(String code) {
return null != code
&& ! code.isBlank()
&& code.matches("[ABCDGHJLMNPRSV][0-2][1-9]([A-Z]([A-Z]([0-9]{2})?)?)?");
}
}

View File

@ -1,6 +1,7 @@
package ATCCodes.services;
import ATCCodes.AgentCode;
import ATCCodes.AtcCode;
import ATCCodes.UnregisteredCode;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
@ -47,8 +48,14 @@ public class OnkostarAgentCodeService implements AgentCodeService {
return jdbcTemplate.query(
sql,
new Object[]{query + "%", "%" + query + "%", "%" + query + "%"},
(resultSet, i) ->
new UnregisteredCode(resultSet.getString("code"), resultSet.getString("shortdesc"))
(resultSet, i) -> {
var code = resultSet.getString("code");
var shortdesc = resultSet.getString("shortdesc");
if (AtcCode.isAtcCode(code)) {
return new AtcCode(code, shortdesc);
}
return new UnregisteredCode(code, shortdesc);
}
);
}
}

View File

@ -0,0 +1,28 @@
package ATCCodes;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class AtcCodeTest {
@Test
void testShouldDetectAtcCodeScheme() {
assertTrue(AtcCode.isAtcCode("L01"));
assertTrue(AtcCode.isAtcCode("L01A"));
assertTrue(AtcCode.isAtcCode("L01AA"));
assertTrue(AtcCode.isAtcCode("L01AA01"));
}
@Test
void testShouldDetectInvalidAtcCodeScheme() {
assertFalse(AtcCode.isAtcCode(null));
assertFalse(AtcCode.isAtcCode(" "));
assertFalse(AtcCode.isAtcCode("irgendwas"));
assertFalse(AtcCode.isAtcCode("L00AA"));
assertFalse(AtcCode.isAtcCode("Z01AA"));
assertFalse(AtcCode.isAtcCode("L01AA0"));
}
}