Skip to content

Commit d1b1c11

Browse files
* Added additional tests for mapCodableConceptToCdForBloodPressure
* Refactor `findOriginalText`method to accept functional parameter so that different ways of retrieving the description display extension can be used.
1 parent d96112e commit d1b1c11

File tree

2 files changed

+322
-133
lines changed

2 files changed

+322
-133
lines changed

service/src/main/java/uk/nhs/adaptors/gp2gp/ehr/mapper/CodeableConceptCdMapper.java

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.List;
55
import java.util.Optional;
66
import java.util.function.BiFunction;
7+
import java.util.function.Function;
78

89
import org.apache.commons.lang3.StringUtils;
910
import org.hl7.fhir.dstu3.model.AllergyIntolerance;
@@ -152,7 +153,7 @@ public String mapCodeableConceptToCdForBloodPressure(CodeableConcept codeableCon
152153
var mainCode = getSnomedCodeCoding(codeableConcept);
153154

154155
builder.nullFlavor(mainCode.isEmpty());
155-
var originalText = findOriginalText(codeableConcept, mainCode);
156+
var originalText = findOriginalTextUsingNestedDisplayExtension(codeableConcept, mainCode);
156157
originalText.ifPresent(builder::mainOriginalText);
157158

158159
if (mainCode.isPresent()) {
@@ -324,15 +325,19 @@ private List<Coding> getNonSnomedCodeCodings(CodeableConcept codeableConcept) {
324325
return nonSnomedCodeCodings;
325326
}
326327

327-
private Optional<String> findOriginalText(CodeableConcept codeableConcept, Optional<Coding> coding) {
328+
private Optional<String> findOriginalText(
329+
CodeableConcept codeableConcept,
330+
Optional<Coding> coding,
331+
Function<Coding, List<Extension>> function) {
332+
328333
if (coding.isPresent()) {
329334
if (codeableConcept.hasText()) {
330335
return Optional.ofNullable(codeableConcept.getText());
331336
} else {
332337
if (coding.get().hasDisplay()) {
333338
return getCodingDisplayName(coding.get());
334339
} else {
335-
var extension = retrieveDescriptionExtension(coding.get());
340+
var extension = function.apply(coding.get());
336341
return extension.stream()
337342
.filter(displayExtension -> DESCRIPTION_DISPLAY.equals(displayExtension.getUrl()))
338343
.map(extension1 -> extension1.getValue().toString())
@@ -344,6 +349,24 @@ private Optional<String> findOriginalText(CodeableConcept codeableConcept, Optio
344349
}
345350
}
346351

352+
private Optional<String> findOriginalText(CodeableConcept codeableConcept, Optional<Coding> coding) {
353+
return findOriginalText(
354+
codeableConcept,
355+
coding,
356+
codingParameter -> retrieveDescriptionExtension(codingParameter).stream().toList()
357+
);
358+
}
359+
360+
private Optional<String> findOriginalTextUsingNestedDisplayExtension(CodeableConcept codeableConcept, Optional<Coding> coding) {
361+
return findOriginalText(
362+
codeableConcept,
363+
coding,
364+
codingParameter -> retrieveDescriptionExtension(codingParameter)
365+
.map(Extension::getExtension)
366+
.orElseGet(Collections::emptyList)
367+
);
368+
}
369+
347370
private Optional<String> findOriginalTextForAllergy(
348371
CodeableConcept codeableConcept,
349372
Optional<Coding> coding,

0 commit comments

Comments
 (0)