Skip to content

Commit bb8f95f

Browse files
Adrian ClayMartinWheelerMT
andauthored
Refactoring DiaryPlanStatementMapper (#914)
* Make Optional<String> return types non-optional These private methods always return a String, which caused some brief confusion while reading the code. By being clearer that the methods do always return a String object we will hopefully help a future soul not fall into the same trap. * Refactor ProcedureRequest mapping methods to clariy intent Separate out method which maps all ProcedureRequests, and the behaviour which is specific to Diary Entries * Fix issue with method names after rebasing through GitHub --------- Co-authored-by: MartinWheelerMT <[email protected]>
1 parent a4c09d7 commit bb8f95f

File tree

3 files changed

+25
-21
lines changed

3 files changed

+25
-21
lines changed

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

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -50,21 +50,25 @@ public class DiaryPlanStatementMapper {
5050
private final CodeableConceptCdMapper codeableConceptCdMapper;
5151
private final ParticipantMapper participantMapper;
5252

53-
public String mapDiaryProcedureRequestToPlanStatement(ProcedureRequest procedureRequest, Boolean isNested) {
54-
if (procedureRequest.getIntent() != ProcedureRequest.ProcedureRequestIntent.PLAN) {
55-
return null;
53+
public String mapProcedureRequestToPlanStatement(ProcedureRequest procedureRequest, Boolean isNested) {
54+
if (procedureRequest.getIntent() == ProcedureRequest.ProcedureRequestIntent.PLAN) {
55+
return mapDiaryEntryToPlanStatement(procedureRequest, isNested);
5656
}
5757

58+
return null;
59+
}
60+
61+
private String mapDiaryEntryToPlanStatement(ProcedureRequest procedureRequest, Boolean isNested) {
5862
var idMapper = messageContext.getIdMapper();
5963
var availabilityTime = buildAvailabilityTime(procedureRequest);
6064
PlanStatementMapperParametersBuilder builder = PlanStatementMapperParameters.builder()
6165
.isNested(isNested)
6266
.id(idMapper.getOrNew(ResourceType.ProcedureRequest, procedureRequest.getIdElement()))
63-
.availabilityTime(availabilityTime);
67+
.availabilityTime(availabilityTime)
68+
.effectiveTime(buildEffectiveTime(procedureRequest))
69+
.text(buildText(procedureRequest))
70+
.code(buildCode(procedureRequest));
6471

65-
buildEffectiveTime(procedureRequest).ifPresent(builder::effectiveTime);
66-
buildText(procedureRequest).ifPresent(builder::text);
67-
builder.code(buildCode(procedureRequest));
6872
buildParticipant(procedureRequest).ifPresent(builder::participant);
6973

7074
return TemplateUtils.fillTemplate(PLAN_STATEMENT_TEMPLATE, builder.build());
@@ -80,7 +84,7 @@ private String buildAvailabilityTime(ProcedureRequest procedureRequest) {
8084
);
8185
}
8286

83-
private Optional<String> buildEffectiveTime(ProcedureRequest procedureRequest) {
87+
private String buildEffectiveTime(ProcedureRequest procedureRequest) {
8488
DateTimeType date = null;
8589
if (procedureRequest.hasOccurrenceDateTimeType()) {
8690
date = procedureRequest.getOccurrenceDateTimeType();
@@ -89,11 +93,11 @@ private Optional<String> buildEffectiveTime(ProcedureRequest procedureRequest) {
8993
date = occurrencePeriod.hasEnd() ? occurrencePeriod.getEndElement() : occurrencePeriod.getStartElement();
9094
}
9195

92-
return Optional.of(formatEffectiveDate(date));
96+
return formatEffectiveDate(date);
9397
}
9498

95-
private Optional<String> buildText(ProcedureRequest procedureRequest) {
96-
return Optional.of(Stream.of(
99+
private String buildText(ProcedureRequest procedureRequest) {
100+
return Stream.of(
97101
getSupportingInformation(procedureRequest),
98102
getEarliestRecallDate(procedureRequest),
99103
getRequester(procedureRequest),
@@ -102,7 +106,7 @@ private Optional<String> buildText(ProcedureRequest procedureRequest) {
102106
)
103107
.filter(Optional::isPresent)
104108
.map(Optional::get)
105-
.collect(Collectors.joining(StringUtils.SPACE)));
109+
.collect(Collectors.joining(StringUtils.SPACE));
106110
}
107111

108112
private String buildCode(ProcedureRequest procedureRequest) {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ private Optional<String> mapObservation(Resource resource) {
294294

295295
private Optional<String> mapProcedureRequest(Resource resource) {
296296
return Optional.ofNullable(
297-
diaryPlanStatementMapper.mapDiaryProcedureRequestToPlanStatement((ProcedureRequest) resource, IS_NESTED)
297+
diaryPlanStatementMapper.mapProcedureRequestToPlanStatement((ProcedureRequest) resource, IS_NESTED)
298298
);
299299
}
300300

service/src/test/java/uk/nhs/adaptors/gp2gp/ehr/mapper/DiaryPlanStatementMapperTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public void When_MappingProcedureRequestIsNested_Expect_ResourceMappedWithIsNest
9393
String inputJson = ResourceTestFileUtils.getFileContent(INPUT_PROCEDURE_REQUEST_WITH_ALL_DATA);
9494
ProcedureRequest inputProcedureRequest = new FhirParseService().parseResource(inputJson, ProcedureRequest.class);
9595

96-
var mappedXml = diaryPlanStatementMapper.mapDiaryProcedureRequestToPlanStatement(inputProcedureRequest, true);
96+
var mappedXml = diaryPlanStatementMapper.mapProcedureRequestToPlanStatement(inputProcedureRequest, true);
9797
assertThat(mappedXml).contains(expectedXml);
9898
}
9999

@@ -102,7 +102,7 @@ public void When_MappingProcedureRequestThatIsNotPlan_Expect_ResourceNotMapped()
102102
String inputJson = ResourceTestFileUtils.getFileContent(INPUT_PROCEDURE_REQUEST_IS_NOT_PLAN);
103103
ProcedureRequest inputProcedureRequest = new FhirParseService().parseResource(inputJson, ProcedureRequest.class);
104104

105-
var mappedXml = diaryPlanStatementMapper.mapDiaryProcedureRequestToPlanStatement(inputProcedureRequest, true);
105+
var mappedXml = diaryPlanStatementMapper.mapProcedureRequestToPlanStatement(inputProcedureRequest, true);
106106
assertThat(mappedXml).isNull();
107107
}
108108

@@ -112,7 +112,7 @@ public void When_MappingProcedureRequestWithoutRequiredAuthoredOn_Expect_MapperE
112112
ProcedureRequest inputProcedureRequest = new FhirParseService().parseResource(inputJson, ProcedureRequest.class);
113113

114114
assertThrows(EhrMapperException.class, ()
115-
-> diaryPlanStatementMapper.mapDiaryProcedureRequestToPlanStatement(inputProcedureRequest, true));
115+
-> diaryPlanStatementMapper.mapProcedureRequestToPlanStatement(inputProcedureRequest, true));
116116
}
117117

118118
@Test
@@ -150,7 +150,7 @@ public void When_MappingWithOccurrenceWithStartAndEnd_Expect_TextContainsEarlies
150150
</component>""";
151151

152152
final var procedureRequest = new FhirParseService().parseResource(inputJson, ProcedureRequest.class);
153-
var actualXml = diaryPlanStatementMapper.mapDiaryProcedureRequestToPlanStatement(procedureRequest, false);
153+
var actualXml = diaryPlanStatementMapper.mapProcedureRequestToPlanStatement(procedureRequest, false);
154154

155155
assertThat(actualXml).isEqualTo(expectedXml);
156156
}
@@ -186,7 +186,7 @@ public void When_MappingWithOccurrenceWithOnlyStart_Expect_TextDoesNotContainEar
186186
</component>""";
187187

188188
final var procedureRequest = new FhirParseService().parseResource(inputJson, ProcedureRequest.class);
189-
var actualXml = diaryPlanStatementMapper.mapDiaryProcedureRequestToPlanStatement(procedureRequest, false);
189+
var actualXml = diaryPlanStatementMapper.mapProcedureRequestToPlanStatement(procedureRequest, false);
190190

191191
assertThat(actualXml).isEqualTo(expectedXml);
192192
}
@@ -227,7 +227,7 @@ public void When_MappingWithDeviceReferenceWhereDeviceHasManufacturer_Expect_Tex
227227
</component>""";
228228

229229
final var procedureRequest = new FhirParseService().parseResource(inputJson, ProcedureRequest.class);
230-
var actualXml = diaryPlanStatementMapper.mapDiaryProcedureRequestToPlanStatement(procedureRequest, false);
230+
var actualXml = diaryPlanStatementMapper.mapProcedureRequestToPlanStatement(procedureRequest, false);
231231

232232
assertThat(actualXml).isEqualTo(expectedXml);
233233
}
@@ -268,7 +268,7 @@ public void When_MappingWithDeviceReferenceWhereDeviceHasNoManufacturer_Expect_T
268268
</component>""";
269269

270270
final var procedureRequest = new FhirParseService().parseResource(inputJson, ProcedureRequest.class);
271-
var actualXml = diaryPlanStatementMapper.mapDiaryProcedureRequestToPlanStatement(procedureRequest, false);
271+
var actualXml = diaryPlanStatementMapper.mapProcedureRequestToPlanStatement(procedureRequest, false);
272272

273273
assertThat(actualXml).isEqualTo(expectedXml);
274274
}
@@ -281,7 +281,7 @@ public void When_MappingProcedureRequest_Expect_ResourceMapped(String inputJsonP
281281
String inputJson = ResourceTestFileUtils.getFileContent(inputJsonPath);
282282
ProcedureRequest inputProcedureRequest = new FhirParseService().parseResource(inputJson, ProcedureRequest.class);
283283

284-
var mappedXml = diaryPlanStatementMapper.mapDiaryProcedureRequestToPlanStatement(inputProcedureRequest, false);
284+
var mappedXml = diaryPlanStatementMapper.mapProcedureRequestToPlanStatement(inputProcedureRequest, false);
285285
assertThat(mappedXml).contains(expectedXml);
286286
}
287287

0 commit comments

Comments
 (0)