Skip to content

Commit ddfc7a0

Browse files
committed
refactoring and test fix
1 parent 03fb99e commit ddfc7a0

File tree

1 file changed

+36
-21
lines changed

1 file changed

+36
-21
lines changed

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

Lines changed: 36 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import lombok.RequiredArgsConstructor;
2727
import lombok.extern.slf4j.Slf4j;
2828
import uk.nhs.adaptors.gp2gp.common.service.RandomIdGeneratorService;
29+
import uk.nhs.adaptors.gp2gp.ehr.exception.EhrMapperException;
2930
import uk.nhs.adaptors.gp2gp.ehr.mapper.parameters.EncounterTemplateParameters;
3031
import uk.nhs.adaptors.gp2gp.ehr.mapper.parameters.EncounterTemplateParameters.EncounterTemplateParametersBuilder;
3132
import uk.nhs.adaptors.gp2gp.ehr.utils.BloodPressureValidator;
@@ -34,6 +35,8 @@
3435
import uk.nhs.adaptors.gp2gp.ehr.utils.TemplateUtils;
3536
import uk.nhs.adaptors.gp2gp.ehr.utils.XpathExtractor;
3637

38+
import javax.swing.text.html.Option;
39+
3740
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
3841
@Component
3942
@Slf4j
@@ -73,30 +76,13 @@ public class NonConsultationResourceMapper {
7376
);
7477

7578
public List<String> mapRemainingResourcesToEhrCompositions(Bundle bundle) {
76-
var mappedResources = bundle.getEntry()
77-
.stream()
79+
80+
81+
var mappedResources = bundle.getEntry().stream()
7882
.map(Bundle.BundleEntryComponent::getResource)
7983
.filter(this::isMappableNonConsultationResource)
8084
.sorted(this::compareProcessingOrder)
81-
.filter(resource -> {
82-
if (hasIdBeenMapped(resource) || isIgnoredResource(resource)) {
83-
return false;
84-
}
85-
86-
if (resource instanceof MedicationRequest medicationRequest) {
87-
88-
if (!medicationRequest.hasBasedOn() || medicationRequest.getBasedOn().isEmpty()) {
89-
return true;
90-
}
91-
92-
String referenceId = medicationRequest.getBasedOn().getFirst().getReference();
93-
//String medRequestId = reference.replaceFirst("MedicationRequest/", "");
94-
var referencedResource = messageContext.getInputBundleHolder().getResource(new IdType(referenceId));
95-
return referencedResource.isEmpty() || !hasIdBeenMapped(referencedResource.get());
96-
}
97-
return true;
98-
})
99-
//.filter(resource -> !hasIdBeenMapped(resource) && !isIgnoredResource(resource))
85+
.filter(this::shouldMapResource)
10086
.map(this::mapResourceToEhrComposition)
10187
.flatMap(Optional::stream)
10288
.collect(Collectors.toList());
@@ -120,6 +106,35 @@ public List<String> mapRemainingResourcesToEhrCompositions(Bundle bundle) {
120106
return mappedResources;
121107
}
122108

109+
private boolean shouldMapResource(Resource resource) {
110+
if (hasIdBeenMapped(resource) || isIgnoredResource(resource)) {
111+
return false;
112+
}
113+
if (resource instanceof MedicationRequest medicationRequest) {
114+
return shouldMapMedicationRequest(medicationRequest);
115+
}
116+
return true;
117+
}
118+
119+
private boolean shouldMapMedicationRequest(MedicationRequest medicationRequest) {
120+
if (!medicationRequest.hasBasedOn() || medicationRequest.getBasedOn().isEmpty()) {
121+
return true;
122+
}
123+
124+
String referenceId = medicationRequest.getBasedOn().getFirst().getReference();
125+
126+
try {
127+
Optional<Resource> referencedResource =
128+
messageContext.getInputBundleHolder().getResource(new IdType(referenceId));
129+
130+
return referencedResource.isEmpty() || !hasIdBeenMapped(referencedResource.get());
131+
132+
} catch (EhrMapperException e) {
133+
LOGGER.info("MedicationRequest {} cannot be mapped", referenceId);
134+
return true;
135+
}
136+
}
137+
123138
private Resource replaceId(Resource resource) {
124139
resource.setIdElement(new IdType(resource.getResourceType().name(), randomIdGeneratorService.createNewId()));
125140
return resource;

0 commit comments

Comments
 (0)