Skip to content
This repository was archived by the owner on Oct 6, 2025. It is now read-only.

Commit 725f013

Browse files
committed
implemented suggestions provided by @hhund
1 parent eadce42 commit 725f013

12 files changed

Lines changed: 74 additions & 13 deletions

File tree

codex-process-data-transfer/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<parent>
99
<groupId>de.netzwerk-universitaetsmedizin.codex</groupId>
1010
<artifactId>codex-processes-ap1</artifactId>
11-
<version>1.0.0.1-SNAPSHOT</version>
11+
<version>1.1.0.0-SNAPSHOT</version>
1212
</parent>
1313

1414
<properties>

codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/ConstantsDataTransfer.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ public interface ConstantsDataTransfer
9191
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_BAD_PATIENT_REFERENCE = "bad-patient-reference";
9292
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_FTTP_NOT_REACHABLE = "fttp-not-reachable";
9393
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_NO_DIC_PSEUDONYM_FOR_BLOOMFILTER = "no-dic-pseudonym-for-bloomfilter";
94+
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_NO_DIC_PSEUDONYM_FOR_LOCAL_PSEUDONYM = "no-dic-pseudonym-for-local-pseudonym";
9495
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_VALIDATION_FAILED = "validation-failed";
9596
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_ECRYPTION_OF_DATA_FOR_CRR_FAILED = "ecryption-of-data-for-crr-failed";
9697
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_UNABLE_TO_STORE_ECRYPTED_DATA = "unable-to-store-ecrypted-data";

codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/DataTransferProcessPluginDefinition.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
public class DataTransferProcessPluginDefinition implements ProcessPluginDefinition
1919
{
20-
public static final String VERSION = "1.0.0.1";
20+
public static final String VERSION = "1.1.0.0";
2121
public static final LocalDate DATE = LocalDate.of(2024, 3, 18);
2222

2323
@Override

codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/ReadData.java

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,30 +26,52 @@
2626
import org.camunda.bpm.engine.delegate.BpmnError;
2727
import org.camunda.bpm.engine.delegate.DelegateExecution;
2828
import org.hl7.fhir.instance.model.api.IBaseResource;
29-
import org.hl7.fhir.r4.model.*;
29+
import org.hl7.fhir.r4.model.Bundle;
3030
import org.hl7.fhir.r4.model.Bundle.BundleEntryComponent;
3131
import org.hl7.fhir.r4.model.Bundle.BundleType;
3232
import org.hl7.fhir.r4.model.Bundle.HTTPVerb;
33+
import org.hl7.fhir.r4.model.CanonicalType;
34+
import org.hl7.fhir.r4.model.Condition;
3335
import org.hl7.fhir.r4.model.Condition.ConditionEvidenceComponent;
3436
import org.hl7.fhir.r4.model.Condition.ConditionStageComponent;
37+
import org.hl7.fhir.r4.model.Consent;
3538
import org.hl7.fhir.r4.model.Consent.ConsentVerificationComponent;
3639
import org.hl7.fhir.r4.model.Consent.provisionActorComponent;
3740
import org.hl7.fhir.r4.model.Consent.provisionComponent;
3841
import org.hl7.fhir.r4.model.Consent.provisionDataComponent;
42+
import org.hl7.fhir.r4.model.DateTimeType;
43+
import org.hl7.fhir.r4.model.DiagnosticReport;
3944
import org.hl7.fhir.r4.model.DiagnosticReport.DiagnosticReportMediaComponent;
45+
import org.hl7.fhir.r4.model.DomainResource;
46+
import org.hl7.fhir.r4.model.Encounter;
4047
import org.hl7.fhir.r4.model.Encounter.DiagnosisComponent;
4148
import org.hl7.fhir.r4.model.Encounter.EncounterHospitalizationComponent;
4249
import org.hl7.fhir.r4.model.Encounter.EncounterLocationComponent;
4350
import org.hl7.fhir.r4.model.Encounter.EncounterParticipantComponent;
51+
import org.hl7.fhir.r4.model.IdType;
52+
import org.hl7.fhir.r4.model.Identifier;
53+
import org.hl7.fhir.r4.model.Immunization;
4454
import org.hl7.fhir.r4.model.Immunization.ImmunizationPerformerComponent;
4555
import org.hl7.fhir.r4.model.Immunization.ImmunizationProtocolAppliedComponent;
4656
import org.hl7.fhir.r4.model.Immunization.ImmunizationReactionComponent;
57+
import org.hl7.fhir.r4.model.InstantType;
58+
import org.hl7.fhir.r4.model.Medication;
4759
import org.hl7.fhir.r4.model.Medication.MedicationIngredientComponent;
60+
import org.hl7.fhir.r4.model.MedicationAdministration;
4861
import org.hl7.fhir.r4.model.MedicationAdministration.MedicationAdministrationPerformerComponent;
62+
import org.hl7.fhir.r4.model.MedicationStatement;
63+
import org.hl7.fhir.r4.model.Meta;
64+
import org.hl7.fhir.r4.model.Observation;
65+
import org.hl7.fhir.r4.model.Patient;
4966
import org.hl7.fhir.r4.model.Patient.ContactComponent;
5067
import org.hl7.fhir.r4.model.Patient.PatientLinkComponent;
68+
import org.hl7.fhir.r4.model.Procedure;
5169
import org.hl7.fhir.r4.model.Procedure.ProcedureFocalDeviceComponent;
5270
import org.hl7.fhir.r4.model.Procedure.ProcedurePerformerComponent;
71+
import org.hl7.fhir.r4.model.Reference;
72+
import org.hl7.fhir.r4.model.Resource;
73+
import org.hl7.fhir.r4.model.Specimen;
74+
import org.hl7.fhir.r4.model.Task;
5375
import org.slf4j.Logger;
5476
import org.slf4j.LoggerFactory;
5577

@@ -778,7 +800,10 @@ else if (resource instanceof Specimen s)
778800
throw new RuntimeException("Resource of type " + resource.getResourceType().name() + " not supported");
779801
}
780802

781-
((DomainResource) resource).getContained().forEach(r -> setSubjectOrIdentifier(r, pseudonym));
803+
if (resource instanceof DomainResource d)
804+
d.getContained().forEach(r -> setSubjectOrIdentifier(r, pseudonym));
805+
else
806+
throw new RuntimeException("Resource of type " + resource.getResourceType().name() + " not supported");
782807

783808
return resource;
784809
}

codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/ResolvePsn.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
package de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.service.send;
22

3-
import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.*;
3+
import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.BPMN_EXECUTION_VARIABLE_PATIENT_REFERENCE;
4+
import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_NO_DIC_PSEUDONYM_FOR_BLOOMFILTER;
5+
import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_NO_DIC_PSEUDONYM_FOR_LOCAL_PSEUDONYM;
6+
import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_PATIENT_NOT_FOUND;
7+
import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.IDENTIFIER_NUM_CODEX_DIC_PSEUDONYM_TYPE_CODE;
8+
import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.IDENTIFIER_NUM_CODEX_DIC_PSEUDONYM_TYPE_SYSTEM;
9+
import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.NAMING_SYSTEM_NUM_CODEX_BLOOM_FILTER;
10+
import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.NAMING_SYSTEM_NUM_CODEX_DIC_PSEUDONYM;
11+
import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.RFC_4122_SYSTEM;
412

513
import java.util.Objects;
614
import java.util.Optional;
@@ -152,7 +160,7 @@ private String resolveLocalPseudonym(String localPseudonym)
152160
{
153161
return fttpClientFactory.getFttpClient().getDicPseudonymForLocalPseudonym(localPseudonym)
154162
.orElseThrow(() -> new BpmnError(
155-
CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_NO_DIC_PSEUDONYM_FOR_BLOOMFILTER,
163+
CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_NO_DIC_PSEUDONYM_FOR_LOCAL_PSEUDONYM,
156164
"Unable to get DIC pseudonym for given localPseudonym"));
157165
}
158166

codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValidationPackage.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ private Consumer<ValidationPackageEntry> doParseResources(FhirContext context, L
165165
{
166166
String resourceString = new String(entry.getContent(), StandardCharsets.UTF_8);
167167
// fix profiles because their text contains invalid html
168+
// Issue: https://github.com/medizininformatik-initiative/kerndatensatzmodul-mikrobiologie/issues/18
168169
resourceString = resourceString.replaceAll("<h2>[\\s\\w\\[\\]]*</tt>", "");
169170
IBaseResource resource = context.newJsonParser().parseResource(resourceString);
170171

codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/value_set/KdsMikrobiologieBugFixer.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,14 @@
66

77
import ca.uhn.fhir.context.FhirContext;
88

9+
/**
10+
* Replace a few ValueSets from MII KDS Mikrobiologie module. This ValueSetModifier currently resolves the following
11+
* issues: *
12+
* <a href="https://github.com/medizininformatik-initiative/kerndatensatzmodul-mikrobiologie/issues/15">#15</a> *
13+
* <a href="https://github.com/medizininformatik-initiative/kerndatensatzmodul-mikrobiologie/issues/16">#16</a>
14+
*/
915
public class KdsMikrobiologieBugFixer implements ValueSetModifier
1016
{
11-
1217
private final Map<String, String> fixedValueSets = Map.of(
1318
"https://www.medizininformatik-initiative.de/fhir/modul-mikrobio/ValueSet/mii-vs-mikrobio-empfindlichkeit-phenotyp-loinc",
1419
"mii-vs-mikrobio-empfindlichkeit-phenotyp-loinc.json",
@@ -20,7 +25,6 @@ public class KdsMikrobiologieBugFixer implements ValueSetModifier
2025
@Override
2126
public ValueSet modifyPreExpansion(ValueSet vs)
2227
{
23-
2428
if (vs.getUrl() != null && vs.getVersion() != null && vs.getVersion().equals("2024.0.0"))
2529
{
2630
String fileName = fixedValueSets.get(vs.getUrl());

codex-process-data-transfer/src/main/resources/fhir/CodeSystem/data-transfer-error.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,11 @@
8181
<display value="No DIC Pseudonym For Bloomfilter" />
8282
<definition value="The fTTP did not return a DIC pseudonym for the given Bloomfilter" />
8383
</concept>
84+
<concept>
85+
<code value="no-dic-pseudonym-for-local-pseudonym" />
86+
<display value="No DIC Pseudonym For local pseudonym" />
87+
<definition value="The fTTP did not return a DIC pseudonym for the given local pseudonym" />
88+
</concept>
8489
<concept>
8590
<code value="no-crr-pseudonym-for-dic-pseudonym" />
8691
<display value="No CRR Pseudonym For DIC pseudonym" />

codex-process-data-transfer/src/test/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/client/fhir/AbstractFhirClientTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.client.fhir;
22

33
import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.NAMING_SYSTEM_NUM_CODEX_DIC_PSEUDONYM;
4-
import static org.junit.Assert.*;
4+
import static org.junit.Assert.assertEquals;
5+
import static org.junit.Assert.assertNotNull;
6+
import static org.junit.Assert.assertTrue;
57
import static org.mockito.Mockito.CALLS_REAL_METHODS;
68
import static org.mockito.Mockito.when;
79

codex-process-data-transfer/src/test/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValidateDataLearningTest.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,15 @@
1414
import java.security.cert.Certificate;
1515
import java.security.cert.CertificateException;
1616
import java.security.cert.X509Certificate;
17-
import java.util.*;
17+
import java.util.Arrays;
18+
import java.util.Comparator;
19+
import java.util.EnumSet;
20+
import java.util.HashSet;
21+
import java.util.List;
22+
import java.util.Map;
23+
import java.util.Properties;
24+
import java.util.Set;
25+
import java.util.UUID;
1826
import java.util.function.Consumer;
1927
import java.util.function.Function;
2028
import java.util.stream.Collectors;
@@ -23,10 +31,17 @@
2331
import org.hl7.fhir.common.hapi.validation.support.CommonCodeSystemsTerminologyService;
2432
import org.hl7.fhir.common.hapi.validation.support.InMemoryTerminologyServerValidationSupport;
2533
import org.hl7.fhir.common.hapi.validation.support.ValidationSupportChain;
26-
import org.hl7.fhir.r4.model.*;
34+
import org.hl7.fhir.r4.model.Bundle;
2735
import org.hl7.fhir.r4.model.Bundle.BundleEntryComponent;
36+
import org.hl7.fhir.r4.model.CanonicalType;
37+
import org.hl7.fhir.r4.model.ElementDefinition;
2838
import org.hl7.fhir.r4.model.ElementDefinition.TypeRefComponent;
2939
import org.hl7.fhir.r4.model.Enumerations.BindingStrength;
40+
import org.hl7.fhir.r4.model.OperationOutcome;
41+
import org.hl7.fhir.r4.model.Resource;
42+
import org.hl7.fhir.r4.model.StringType;
43+
import org.hl7.fhir.r4.model.StructureDefinition;
44+
import org.hl7.fhir.r4.model.ValueSet;
3045
import org.hl7.fhir.r4.model.ValueSet.ValueSetComposeComponent;
3146
import org.hl7.fhir.r4.model.ValueSet.ValueSetExpansionComponent;
3247
import org.hl7.fhir.utilities.validation.ValidationMessage.IssueSeverity;

0 commit comments

Comments
 (0)