summaryrefslogtreecommitdiff
path: root/src/main/java/ATCCodes/AtcCodesPlugin.java
diff options
context:
space:
mode:
authorPaul-Christian Volkmer2023-03-10 09:24:12 +0100
committerPaul-Christian Volkmer2023-03-10 09:28:52 +0100
commit4b121482f1a8323ea23858e8118934be5d9aa54c (patch)
treeaee5e630082ae7a1f81fccdc0ebdaeefc950689c /src/main/java/ATCCodes/AtcCodesPlugin.java
parent9d66c42460dda63a6380ba0f30004fcd92a4f5c4 (diff)
Issue #5: Vorschlag für den Aufbau des Projekts
* Maven-Projekt direkt im Hauptverzeichnis * Anpassung der Maven-POM-Datei - nicht benötigte Abhängigkeiten entfernt * Gitignore-Datei angelegt
Diffstat (limited to 'src/main/java/ATCCodes/AtcCodesPlugin.java')
-rw-r--r--src/main/java/ATCCodes/AtcCodesPlugin.java110
1 files changed, 110 insertions, 0 deletions
diff --git a/src/main/java/ATCCodes/AtcCodesPlugin.java b/src/main/java/ATCCodes/AtcCodesPlugin.java
new file mode 100644
index 0000000..d0077ae
--- /dev/null
+++ b/src/main/java/ATCCodes/AtcCodesPlugin.java
@@ -0,0 +1,110 @@
+package ATCCodes;
+
+import de.itc.onkostar.api.Disease;
+import de.itc.onkostar.api.Procedure;
+import de.itc.onkostar.api.analysis.AnalyzerRequirement;
+import de.itc.onkostar.api.analysis.IProcedureAnalyzer;
+import de.itc.onkostar.api.analysis.OnkostarPluginType;
+import ATCCodes.services.AgentCodeService;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * Plugin implementation
+ * Provides methods exposed to Onkostar
+ *
+ * @author Paul-Christian Volkmer
+ * @since 0.1.0
+ */
+@Component
+public class AtcCodesPlugin implements IProcedureAnalyzer {
+
+ private final List<AgentCodeService> agentCodeServices;
+
+ public AtcCodesPlugin(List<AgentCodeService> agentCodeServices) {
+ this.agentCodeServices = agentCodeServices;
+ }
+
+ @Override
+ public OnkostarPluginType getType() {
+ return OnkostarPluginType.BACKEND_SERVICE;
+ }
+
+ @Override
+ public String getVersion() {
+ return "0.4.0";
+ }
+
+ @Override
+ public String getName() {
+ return "ATC-Codes und Substanzen";
+ }
+
+ @Override
+ public String getDescription() {
+ return "ATC-Codes und Substanzen";
+ }
+
+ @Override
+ public boolean isSynchronous() {
+ return false;
+ }
+
+ @Override
+ public AnalyzerRequirement getRequirement() {
+ return AnalyzerRequirement.PROCEDURE;
+ }
+
+ @Override
+ public boolean isRelevantForDeletedProcedure() {
+ return false;
+ }
+
+ @Override
+ public boolean isRelevantForAnalyzer(final Procedure procedure, final Disease disease) {
+ return false;
+ }
+
+ @Override
+ public void analyze(final Procedure procedure, final Disease disease) {
+ // Nothing to do - should never be called
+ }
+
+ /**
+ * Return list with ATC codes and agents.
+ * Usage in script:
+ *
+ * <pre>
+ * executePluginMethod(
+ * 'AtcCodesPlugin',
+ * 'query',
+ * { q: '', size: 10 },
+ * function (result) {console.log(result);},
+ * false
+ * );
+ * </pre>
+ *
+ * @param input The data Map
+ * @return The result list filtered by input
+ */
+ public List<AgentCode> query(final Map<String, Object> input) {
+ String query = "";
+ if (null != input.get("q")) {
+ query = input.get("q").toString();
+ }
+
+ int size = Integer.parseInt(input.get("size").toString());
+ if (size == 0) {
+ size = 10;
+ }
+ var result = new ArrayList<AgentCode>();
+ for (var agentCodeService : this.agentCodeServices) {
+ result.addAll(agentCodeService.findAgentCodes(query, size));
+ }
+ return result.stream().distinct().sorted().collect(Collectors.toList());
+ }
+} \ No newline at end of file