mirror of
https://github.com/pcvolkmer/mv64e-onkostar-data.git
synced 2025-07-03 02:52:54 +00:00
106 lines
3.8 KiB
Java
106 lines
3.8 KiB
Java
package dev.pcvolkmer.onco.datamapper.mapper;
|
|
|
|
import dev.pcvolkmer.mv64e.mtb.*;
|
|
import dev.pcvolkmer.onco.datamapper.ResultSet;
|
|
import dev.pcvolkmer.onco.datamapper.datacatalogues.KpaCatalogue;
|
|
|
|
/**
|
|
* Mapper class to load and map patient data from database table 'dk_dnpm_kpa'
|
|
*
|
|
* @author Paul-Christian Volkmer
|
|
* @since 0.1
|
|
*/
|
|
public class KpaPatientDataMapper implements DataMapper<Patient> {
|
|
|
|
private final KpaCatalogue kpaCatalogue;
|
|
|
|
public KpaPatientDataMapper(final KpaCatalogue kpaCatalogue) {
|
|
this.kpaCatalogue = kpaCatalogue;
|
|
}
|
|
|
|
/**
|
|
* Loads and maps a patient using the kpa procedures database id
|
|
*
|
|
* @param id The database id of the procedure data set
|
|
* @return The loaded Patient data
|
|
*/
|
|
@Override
|
|
public Patient getById(int id) {
|
|
var kpaData = kpaCatalogue.getById(id);
|
|
|
|
var builder = Patient.builder();
|
|
builder
|
|
.id(kpaData.getString("patient_id"))
|
|
.gender(getGenderCoding(kpaData))
|
|
.birthDate(mapDate(kpaData.getDate("geburtsdatum")))
|
|
.dateOfDeath(mapDate(kpaData.getDate("todesdatum")))
|
|
.healthInsurance(getHealthInsurance(kpaData))
|
|
;
|
|
return builder.build();
|
|
}
|
|
|
|
private GenderCoding getGenderCoding(ResultSet data) {
|
|
var genderCodingBuilder = GenderCoding.builder();
|
|
String geschlecht = data.getString("geschlecht");
|
|
switch (geschlecht) {
|
|
case "m":
|
|
genderCodingBuilder.code(GenderCodingCode.MALE);
|
|
break;
|
|
case "w":
|
|
genderCodingBuilder.code(GenderCodingCode.FEMALE);
|
|
break;
|
|
case "d":
|
|
case "x":
|
|
genderCodingBuilder.code(GenderCodingCode.OTHER);
|
|
break;
|
|
default:
|
|
genderCodingBuilder.code(GenderCodingCode.UNKNOWN);
|
|
}
|
|
return genderCodingBuilder.build();
|
|
}
|
|
|
|
private HealthInsurance getHealthInsurance(ResultSet data) {
|
|
var healthInsuranceCodingBuilder = HealthInsuranceCoding.builder();
|
|
String healthInsuranceType = data.getString("artderkrankenkasse");
|
|
if (healthInsuranceType == null) {
|
|
healthInsuranceCodingBuilder.code(HealthInsuranceCodingCode.UNK).build();
|
|
return HealthInsurance.builder().type(healthInsuranceCodingBuilder.build()).build();
|
|
}
|
|
|
|
switch (healthInsuranceType) {
|
|
case "GKV":
|
|
healthInsuranceCodingBuilder.code(HealthInsuranceCodingCode.GKV).build();
|
|
break;
|
|
case "PKV":
|
|
healthInsuranceCodingBuilder.code(HealthInsuranceCodingCode.PKV).build();
|
|
break;
|
|
case "BG":
|
|
healthInsuranceCodingBuilder.code(HealthInsuranceCodingCode.BG).build();
|
|
break;
|
|
case "SEL":
|
|
healthInsuranceCodingBuilder.code(HealthInsuranceCodingCode.SEL).build();
|
|
break;
|
|
case "SOZ":
|
|
healthInsuranceCodingBuilder.code(HealthInsuranceCodingCode.SOZ).build();
|
|
break;
|
|
case "GPV":
|
|
healthInsuranceCodingBuilder.code(HealthInsuranceCodingCode.GPV).build();
|
|
break;
|
|
case "PPV":
|
|
healthInsuranceCodingBuilder.code(HealthInsuranceCodingCode.PPV).build();
|
|
break;
|
|
case "BEI":
|
|
healthInsuranceCodingBuilder.code(HealthInsuranceCodingCode.BEI).build();
|
|
break;
|
|
case "SKT":
|
|
healthInsuranceCodingBuilder.code(HealthInsuranceCodingCode.SKT).build();
|
|
break;
|
|
default:
|
|
healthInsuranceCodingBuilder.code(HealthInsuranceCodingCode.UNK).build();
|
|
}
|
|
|
|
return HealthInsurance.builder().type(healthInsuranceCodingBuilder.build()).build();
|
|
}
|
|
|
|
}
|