mirror of
https://github.com/pcvolkmer/mv64e-onkostar-data.git
synced 2025-07-03 02:52:54 +00:00
feat: add util method to create patient reference
This commit is contained in:
@ -12,6 +12,8 @@ import java.util.List;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static dev.pcvolkmer.onco.datamapper.mapper.MapperUtils.getPatientReference;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mapper class to load and map diagnosis data from database table 'dk_dnpm_kpa'
|
* Mapper class to load and map diagnosis data from database table 'dk_dnpm_kpa'
|
||||||
*
|
*
|
||||||
@ -50,7 +52,7 @@ public class KpaDiagnosisDataMapper implements DataMapper<MtbDiagnosis> {
|
|||||||
var builder = MtbDiagnosis.builder();
|
var builder = MtbDiagnosis.builder();
|
||||||
builder
|
builder
|
||||||
.id(data.getString("id"))
|
.id(data.getString("id"))
|
||||||
.patient(Reference.builder().id(data.getString("patient_id")).build())
|
.patient(getPatientReference(data.getString("patient_id")))
|
||||||
.code(
|
.code(
|
||||||
Coding.builder()
|
Coding.builder()
|
||||||
.code(data.getString("icd10"))
|
.code(data.getString("icd10"))
|
||||||
|
@ -3,7 +3,6 @@ package dev.pcvolkmer.onco.datamapper.mapper;
|
|||||||
import dev.pcvolkmer.mv64e.mtb.EcogCoding;
|
import dev.pcvolkmer.mv64e.mtb.EcogCoding;
|
||||||
import dev.pcvolkmer.mv64e.mtb.EcogCodingCode;
|
import dev.pcvolkmer.mv64e.mtb.EcogCodingCode;
|
||||||
import dev.pcvolkmer.mv64e.mtb.PerformanceStatus;
|
import dev.pcvolkmer.mv64e.mtb.PerformanceStatus;
|
||||||
import dev.pcvolkmer.mv64e.mtb.Reference;
|
|
||||||
import dev.pcvolkmer.onco.datamapper.ResultSet;
|
import dev.pcvolkmer.onco.datamapper.ResultSet;
|
||||||
import dev.pcvolkmer.onco.datamapper.datacatalogues.EcogCatalogue;
|
import dev.pcvolkmer.onco.datamapper.datacatalogues.EcogCatalogue;
|
||||||
|
|
||||||
@ -13,6 +12,8 @@ import java.util.Comparator;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static dev.pcvolkmer.onco.datamapper.mapper.MapperUtils.getPatientReference;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mapper class to load and map prozedur data from database table 'dk_dnpm_uf_ecog'
|
* Mapper class to load and map prozedur data from database table 'dk_dnpm_uf_ecog'
|
||||||
*
|
*
|
||||||
@ -51,13 +52,7 @@ public class KpaEcogDataMapper extends AbstractSubformDataMapper<PerformanceStat
|
|||||||
var builder = PerformanceStatus.builder();
|
var builder = PerformanceStatus.builder();
|
||||||
builder
|
builder
|
||||||
.id(resultSet.getProcedureId().toString())
|
.id(resultSet.getProcedureId().toString())
|
||||||
.patient(
|
.patient(getPatientReference(resultSet.getString("patient_id")))
|
||||||
Reference.builder()
|
|
||||||
.id(resultSet.getString("patient_id"))
|
|
||||||
// Use "Patient" since Onkostar only provides patient data
|
|
||||||
.type("Patient")
|
|
||||||
.build()
|
|
||||||
)
|
|
||||||
.effectiveDate(resultSet.getDate("datum"))
|
.effectiveDate(resultSet.getDate("datum"))
|
||||||
.value(getEcogCoding(resultSet.getString("ecog")))
|
.value(getEcogCoding(resultSet.getString("ecog")))
|
||||||
;
|
;
|
||||||
|
@ -7,6 +7,8 @@ import dev.pcvolkmer.onco.datamapper.PropertyCatalogue;
|
|||||||
import dev.pcvolkmer.onco.datamapper.ResultSet;
|
import dev.pcvolkmer.onco.datamapper.ResultSet;
|
||||||
import dev.pcvolkmer.onco.datamapper.datacatalogues.ProzedurCatalogue;
|
import dev.pcvolkmer.onco.datamapper.datacatalogues.ProzedurCatalogue;
|
||||||
|
|
||||||
|
import static dev.pcvolkmer.onco.datamapper.mapper.MapperUtils.getPatientReference;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mapper class to load and map prozedur data from database table 'dk_dnpm_uf_prozedur'
|
* Mapper class to load and map prozedur data from database table 'dk_dnpm_uf_prozedur'
|
||||||
*
|
*
|
||||||
@ -42,7 +44,7 @@ public class KpaProzedurDataMapper extends AbstractKpaTherapieverlaufDataMapper<
|
|||||||
var builder = OncoProcedure.builder();
|
var builder = OncoProcedure.builder();
|
||||||
builder
|
builder
|
||||||
.id(resultSet.getString("id"))
|
.id(resultSet.getString("id"))
|
||||||
.patient(Reference.builder().id(resultSet.getString("patient_id")).build())
|
.patient(getPatientReference(resultSet.getString("patient_id")))
|
||||||
.basedOn(Reference.builder().id(diseases.get(0).getDiseaseId().toString()).build())
|
.basedOn(Reference.builder().id(diseases.get(0).getDiseaseId().toString()).build())
|
||||||
.recordedOn(resultSet.getDate("erfassungsdatum"))
|
.recordedOn(resultSet.getDate("erfassungsdatum"))
|
||||||
.therapyLine(resultSet.getLong("therapielinie"))
|
.therapyLine(resultSet.getLong("therapielinie"))
|
||||||
|
@ -7,6 +7,8 @@ import dev.pcvolkmer.onco.datamapper.PropertyCatalogue;
|
|||||||
import dev.pcvolkmer.onco.datamapper.ResultSet;
|
import dev.pcvolkmer.onco.datamapper.ResultSet;
|
||||||
import dev.pcvolkmer.onco.datamapper.datacatalogues.TherapielinieCatalogue;
|
import dev.pcvolkmer.onco.datamapper.datacatalogues.TherapielinieCatalogue;
|
||||||
|
|
||||||
|
import static dev.pcvolkmer.onco.datamapper.mapper.MapperUtils.getPatientReference;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mapper class to load and map prozedur data from database table 'dk_dnpm_therapielinie'
|
* Mapper class to load and map prozedur data from database table 'dk_dnpm_therapielinie'
|
||||||
*
|
*
|
||||||
@ -42,7 +44,7 @@ public class KpaTherapielinieDataMapper extends AbstractKpaTherapieverlaufDataMa
|
|||||||
var builder = MtbSystemicTherapy.builder();
|
var builder = MtbSystemicTherapy.builder();
|
||||||
builder
|
builder
|
||||||
.id(resultSet.getString("id"))
|
.id(resultSet.getString("id"))
|
||||||
.patient(Reference.builder().id(resultSet.getString("patient_id")).build())
|
.patient(getPatientReference(resultSet.getString("patient_id")))
|
||||||
.basedOn(Reference.builder().id(diseases.get(0).getDiseaseId().toString()).build())
|
.basedOn(Reference.builder().id(diseases.get(0).getDiseaseId().toString()).build())
|
||||||
.recordedOn(resultSet.getDate("erfassungsdatum"))
|
.recordedOn(resultSet.getDate("erfassungsdatum"))
|
||||||
.therapyLine(resultSet.getLong("therapielinie"))
|
.therapyLine(resultSet.getLong("therapielinie"))
|
||||||
|
@ -0,0 +1,30 @@
|
|||||||
|
package dev.pcvolkmer.onco.datamapper.mapper;
|
||||||
|
|
||||||
|
import dev.pcvolkmer.mv64e.mtb.Reference;
|
||||||
|
import dev.pcvolkmer.onco.datamapper.exceptions.DataAccessException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utility methods to be used in mappers
|
||||||
|
*/
|
||||||
|
public class MapperUtils {
|
||||||
|
|
||||||
|
private MapperUtils() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Patient Reference based on default column name 'patient_id'
|
||||||
|
*
|
||||||
|
* @return The patient reference
|
||||||
|
*/
|
||||||
|
public static Reference getPatientReference(String patientId) {
|
||||||
|
if (patientId == null) {
|
||||||
|
throw new DataAccessException("No patient id found");
|
||||||
|
}
|
||||||
|
return Reference.builder()
|
||||||
|
.id(patientId)
|
||||||
|
// Use "Patient" since Onkostar only provides patient data
|
||||||
|
.type("Patient")
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
package dev.pcvolkmer.onco.datamapper.mapper;
|
package dev.pcvolkmer.onco.datamapper.mapper;
|
||||||
|
|
||||||
import dev.pcvolkmer.mv64e.mtb.MtbDiagnosis;
|
import dev.pcvolkmer.mv64e.mtb.MtbDiagnosis;
|
||||||
|
import dev.pcvolkmer.mv64e.mtb.Reference;
|
||||||
import dev.pcvolkmer.onco.datamapper.PropertyCatalogue;
|
import dev.pcvolkmer.onco.datamapper.PropertyCatalogue;
|
||||||
import dev.pcvolkmer.onco.datamapper.ResultSet;
|
import dev.pcvolkmer.onco.datamapper.ResultSet;
|
||||||
import dev.pcvolkmer.onco.datamapper.datacatalogues.KpaCatalogue;
|
import dev.pcvolkmer.onco.datamapper.datacatalogues.KpaCatalogue;
|
||||||
@ -67,13 +68,16 @@ class KpaDiagnosisDataMapperTest {
|
|||||||
var actual = this.dataMapper.getById(1);
|
var actual = this.dataMapper.getById(1);
|
||||||
assertThat(actual).isInstanceOf(MtbDiagnosis.class);
|
assertThat(actual).isInstanceOf(MtbDiagnosis.class);
|
||||||
assertThat(actual.getId()).isEqualTo("1");
|
assertThat(actual.getId()).isEqualTo("1");
|
||||||
|
assertThat(actual.getPatient())
|
||||||
|
.isEqualTo(Reference.builder().id("42").type("Patient").build());
|
||||||
assertThat(actual.getCode().getCode()).isEqualTo("F79.9");
|
assertThat(actual.getCode().getCode()).isEqualTo("F79.9");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Map<String, Object> testData() {
|
private static Map<String, Object> testData() {
|
||||||
return Map.of(
|
return Map.of(
|
||||||
"id", "1",
|
"id", "1",
|
||||||
"icd10", "F79.9"
|
"icd10", "F79.9",
|
||||||
|
"patient_id", "42"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,6 @@ class KpaProzedurDataMapperTest {
|
|||||||
@Test
|
@Test
|
||||||
void shouldMapResultSet(@Mock ResultSet resultSet) {
|
void shouldMapResultSet(@Mock ResultSet resultSet) {
|
||||||
var testData = Map.of(
|
var testData = Map.of(
|
||||||
"erkrankung.id", "1",
|
|
||||||
"id", "1",
|
"id", "1",
|
||||||
"beginn", new java.sql.Date(Date.from(Instant.parse("2000-01-01T12:00:00Z")).getTime()),
|
"beginn", new java.sql.Date(Date.from(Instant.parse("2000-01-01T12:00:00Z")).getTime()),
|
||||||
"ende", new java.sql.Date(Date.from(Instant.parse("2024-06-19T12:00:00Z")).getTime()),
|
"ende", new java.sql.Date(Date.from(Instant.parse("2024-06-19T12:00:00Z")).getTime()),
|
||||||
@ -51,7 +50,8 @@ class KpaProzedurDataMapperTest {
|
|||||||
"status", "stopped",
|
"status", "stopped",
|
||||||
"statusgrund", "patient-death",
|
"statusgrund", "patient-death",
|
||||||
"therapielinie", 1L,
|
"therapielinie", 1L,
|
||||||
"typ", "surgery"
|
"typ", "surgery",
|
||||||
|
"patient_id", "42"
|
||||||
);
|
);
|
||||||
|
|
||||||
doAnswer(invocationOnMock -> {
|
doAnswer(invocationOnMock -> {
|
||||||
@ -99,6 +99,8 @@ class KpaProzedurDataMapperTest {
|
|||||||
var actual = actualList.get(0);
|
var actual = actualList.get(0);
|
||||||
assertThat(actual).isInstanceOf(OncoProcedure.class);
|
assertThat(actual).isInstanceOf(OncoProcedure.class);
|
||||||
assertThat(actual.getId()).isEqualTo("1");
|
assertThat(actual.getId()).isEqualTo("1");
|
||||||
|
assertThat(actual.getPatient())
|
||||||
|
.isEqualTo(Reference.builder().id("42").type("Patient").build());
|
||||||
assertThat(actual.getPeriod()).isEqualTo(
|
assertThat(actual.getPeriod()).isEqualTo(
|
||||||
PeriodDate.builder()
|
PeriodDate.builder()
|
||||||
.start(Date.from(Instant.parse("2000-01-01T12:00:00Z")))
|
.start(Date.from(Instant.parse("2000-01-01T12:00:00Z")))
|
||||||
|
@ -42,7 +42,6 @@ class KpaTherapielinieDataMapperTest {
|
|||||||
@Test
|
@Test
|
||||||
void shouldMapResultSet(@Mock ResultSet resultSet) {
|
void shouldMapResultSet(@Mock ResultSet resultSet) {
|
||||||
var testData = Map.of(
|
var testData = Map.of(
|
||||||
"erkrankung.id", "1",
|
|
||||||
"id", "1",
|
"id", "1",
|
||||||
"beginn", new java.sql.Date(Date.from(Instant.parse("2000-01-01T12:00:00Z")).getTime()),
|
"beginn", new java.sql.Date(Date.from(Instant.parse("2000-01-01T12:00:00Z")).getTime()),
|
||||||
"ende", new java.sql.Date(Date.from(Instant.parse("2024-06-19T12:00:00Z")).getTime()),
|
"ende", new java.sql.Date(Date.from(Instant.parse("2024-06-19T12:00:00Z")).getTime()),
|
||||||
@ -50,7 +49,8 @@ class KpaTherapielinieDataMapperTest {
|
|||||||
"intention", "S",
|
"intention", "S",
|
||||||
"status", "stopped",
|
"status", "stopped",
|
||||||
"statusgrund", "patient-death",
|
"statusgrund", "patient-death",
|
||||||
"therapielinie", 1L
|
"therapielinie", 1L,
|
||||||
|
"patient_id", "42"
|
||||||
);
|
);
|
||||||
|
|
||||||
doAnswer(invocationOnMock -> {
|
doAnswer(invocationOnMock -> {
|
||||||
@ -99,6 +99,8 @@ class KpaTherapielinieDataMapperTest {
|
|||||||
.isInstanceOf(MtbSystemicTherapy.class);
|
.isInstanceOf(MtbSystemicTherapy.class);
|
||||||
assertThat(actual.getId())
|
assertThat(actual.getId())
|
||||||
.isEqualTo("1");
|
.isEqualTo("1");
|
||||||
|
assertThat(actual.getPatient())
|
||||||
|
.isEqualTo(Reference.builder().id("42").type("Patient").build());
|
||||||
assertThat(actual.getPeriod())
|
assertThat(actual.getPeriod())
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
PeriodDate.builder()
|
PeriodDate.builder()
|
||||||
|
Reference in New Issue
Block a user