Skip to content

Commit

Permalink
chore: added dummy mapper classes and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
chgl committed Oct 23, 2024
1 parent 99f80ab commit e75cdb2
Show file tree
Hide file tree
Showing 7 changed files with 165 additions and 7 deletions.
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"dependencies": {
"hl7.fhir.r4.core": "4.0.1",
"de.dktk.oncology": "1.6.0",
"de.medizininformatikinitiative.kerndatensatz.person": "2024.0.0"
"de.medizininformatikinitiative.kerndatensatz.person": "2024.0.0",
"de.medizininformatikinitiative.kerndatensatz.onkologie": "2024.0.0-beta-2"
},
"fhirVersions": [
"4.0.1"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,25 @@
package org.miracum.streams.ume.obdstofhir.mapper.mii;

import de.basisdatensatz.obds.v3.DiagnoseTyp;
import org.hl7.fhir.r4.model.*;
import org.miracum.streams.ume.obdstofhir.FhirProperties;
import org.miracum.streams.ume.obdstofhir.mapper.ObdsToFhirMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Service;

@Configuration
public class ObdsConditionMapper extends ObdsToFhirMapper {
@Service
public class ConditionMapper extends ObdsToFhirMapper {

private static final Logger LOG = LoggerFactory.getLogger(ObdsConditionMapper.class);
private static final Logger LOG = LoggerFactory.getLogger(ConditionMapper.class);

@Autowired
public ObdsConditionMapper(FhirProperties fhirProperties) {
public ConditionMapper(FhirProperties fhirProperties) {
super(fhirProperties);
}

public Condition map(/* DiagnoseType diagnose, */ Reference patient) {
public Condition map(DiagnoseTyp diagnose, Reference patient) {

Check notice

Code scanning / CodeQL

Useless parameter Note

The parameter 'diagnose' is never used.
var condition = new Condition();
condition.setSubject(patient);
condition.getMeta().addProfile(fhirProperties.getProfiles().getMiiPrOnkoDiagnosePrimaertumor());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package org.miracum.streams.ume.obdstofhir.mapper.mii;

import de.basisdatensatz.obds.v3.OBDS;
import de.basisdatensatz.obds.v3.PatientenStammdatenMelderTyp;
import java.util.List;
import org.hl7.fhir.r4.model.*;
import org.miracum.streams.ume.obdstofhir.FhirProperties;
import org.miracum.streams.ume.obdstofhir.mapper.ObdsToFhirMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class PatientMapper extends ObdsToFhirMapper {

private static final Logger LOG = LoggerFactory.getLogger(PatientMapper.class);

@Autowired
public PatientMapper(FhirProperties fhirProperties) {
super(fhirProperties);
}

public Patient map(
PatientenStammdatenMelderTyp stammdaten,

Check notice

Code scanning / CodeQL

Useless parameter Note

The parameter 'stammdaten' is never used.
List<OBDS.MengePatient.Patient.MengeMeldung.Meldung> meldungen) {

Check notice

Code scanning / CodeQL

Useless parameter Note

The parameter 'meldungen' is never used.
var patient = new Patient();
patient.getMeta().addProfile(fhirProperties.getProfiles().getMiiPatientPseudonymisiert());
return patient;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package org.miracum.streams.ume.obdstofhir.mapper.mii;

import static org.assertj.core.api.Assertions.assertThat;

import ca.uhn.fhir.context.FhirContext;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.module.jakarta.xmlbind.JakartaXmlBindAnnotationModule;
import de.basisdatensatz.obds.v3.OBDS;
import java.io.IOException;
import org.approvaltests.Approvals;
import org.approvaltests.core.Options;
import org.hl7.fhir.r4.model.Reference;
import org.junit.jupiter.api.Test;
import org.miracum.streams.ume.obdstofhir.FhirProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest(classes = {FhirProperties.class})
@EnableConfigurationProperties
class ConditionMapperTest {
private final ConditionMapper sut;

@Autowired
ConditionMapperTest(FhirProperties fhirProps) {
sut = new ConditionMapper(fhirProps);
}

@Test
void map_withGivenObds_shouldCreateValidConditionResource() throws IOException {
// TODO: refactor to use a data provider for parameterized tests
final var resource = this.getClass().getClassLoader().getResource("obds3/test1.xml");
assertThat(resource).isNotNull();

final var xmlMapper =
XmlMapper.builder()
.defaultUseWrapper(false)
.addModule(new JakartaXmlBindAnnotationModule())
.addModule(new Jdk8Module())
.build();

final var obds = xmlMapper.readValue(resource.openStream(), OBDS.class);

var obdsPatient = obds.getMengePatient().getPatient().getFirst();

final var condition =
sut.map(
obdsPatient.getMengeMeldung().getMeldung().getFirst().getDiagnose(),
new Reference("Patient/1"));

var fhirParser = FhirContext.forR4().newJsonParser().setPrettyPrint(true);
var fhirJson = fhirParser.encodeResourceToString(condition);
Approvals.verify(fhirJson, new Options().forFile().withExtension(".fhir.json"));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package org.miracum.streams.ume.obdstofhir.mapper.mii;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.*;

import ca.uhn.fhir.context.FhirContext;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.module.jakarta.xmlbind.JakartaXmlBindAnnotationModule;
import de.basisdatensatz.obds.v3.OBDS;
import java.io.IOException;
import org.approvaltests.Approvals;
import org.approvaltests.core.Options;
import org.junit.jupiter.api.Test;
import org.miracum.streams.ume.obdstofhir.FhirProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest(classes = {FhirProperties.class})
@EnableConfigurationProperties
class PatientMapperTest {
private final PatientMapper sut;

@Autowired
PatientMapperTest(FhirProperties fhirProps) {
sut = new PatientMapper(fhirProps);
}

@Test
void map_withGivenObds_shouldCreateValidPatientResource() throws IOException {
// TODO: refactor to use a data provider for parameterized tests
final var resource = this.getClass().getClassLoader().getResource("obds3/test1.xml");
assertThat(resource).isNotNull();

final var xmlMapper =
XmlMapper.builder()
.defaultUseWrapper(false)
.addModule(new JakartaXmlBindAnnotationModule())
.addModule(new Jdk8Module())
.build();

final var obds = xmlMapper.readValue(resource.openStream(), OBDS.class);

var obdsPatient = obds.getMengePatient().getPatient().getFirst();

final var patient =
sut.map(obdsPatient.getPatientenStammdaten(), obdsPatient.getMengeMeldung().getMeldung());

var fhirParser = FhirContext.forR4().newJsonParser().setPrettyPrint(true);
var fhirJson = fhirParser.encodeResourceToString(patient);
Approvals.verify(fhirJson, new Options().forFile().withExtension(".fhir.json"));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"resourceType": "Condition",
"meta": {
"profile": [ "https://www.medizininformatik-initiative.de/fhir/ext/modul-onko/StructureDefinition/mii-pr-onko-diagnose-primaertumor" ]
},
"subject": {
"reference": "Patient/1"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"resourceType": "Patient",
"meta": {
"profile": [ "https://www.medizininformatik-initiative.de/fhir/core/modul-person/StructureDefinition/PatientPseudonymisiert" ]
}
}

0 comments on commit e75cdb2

Please sign in to comment.