44import java .util .List ;
55import java .util .Optional ;
66import java .util .function .BiFunction ;
7+ import java .util .function .Function ;
78
89import org .apache .commons .lang3 .StringUtils ;
910import 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