Skip to content

Commit c307023

Browse files
Merge branch 'main' into niad-3137-refactor
2 parents ccb5f61 + 3d8d462 commit c307023

9 files changed

Lines changed: 412 additions & 172 deletions

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ private boolean isSuppressedMedicationRequest(Reference reference) {
250250
return messageContext.getInputBundleHolder()
251251
.getResource(reference.getReferenceElement())
252252
.map(MedicationRequest.class::cast)
253-
.map(MedicationRequestUtils::isMedicationRequestSuppressed)
253+
.map(MedicationRequestUtils::isStoppedMedicationOrder)
254254
.orElse(false);
255255
}
256256

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
@@ -265,7 +265,7 @@ private Optional<String> mapImmunization(Resource resource) {
265265
private Optional<String> mapMedicationRequest(Resource resource) {
266266
return Optional.of(resource)
267267
.map(MedicationRequest.class::cast)
268-
.filter(not(MedicationRequestUtils::isMedicationRequestSuppressed))
268+
.filter(not(MedicationRequestUtils::isStoppedMedicationOrder))
269269
.map(medicationStatementMapper::mapMedicationRequestToMedicationStatement);
270270
}
271271

service/src/main/java/uk/nhs/adaptors/gp2gp/ehr/utils/MedicationRequestUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import org.hl7.fhir.dstu3.model.ResourceType;
66

77
public class MedicationRequestUtils {
8-
public static boolean isMedicationRequestSuppressed(MedicationRequest medicationRequest) {
8+
public static boolean isStoppedMedicationOrder(MedicationRequest medicationRequest) {
99
return medicationRequest.hasStatus() && medicationRequest.hasIntent()
1010
&& medicationRequest.getStatus().equals(MedicationRequest.MedicationRequestStatus.STOPPED)
1111
&& medicationRequest.getIntent().equals(MedicationRequest.MedicationRequestIntent.ORDER);

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

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -452,12 +452,16 @@ void When_MapResourceToComponent_With_UnsupportedResource_Expect_PlaceholderComm
452452
}
453453

454454
@Test
455-
void When_MappingTopic_With_SuppressedMedicationRequest_Expect_MedicationRequestNotIncludedInOutput() {
455+
456+
void When_MappingTopic_With_StoppedMedicationRequest_Expect_MedicationStatementNotIncludedInOutput() {
457+
// GP2GP Currently has no mechanism to transfer the concept that a Medication has been "stopped"
458+
// Until there is some way to convey this, it makes more sense to not send the misleading medication.
456459
var expectedXml = ResourceTestFileUtils.getFileContent(
457-
TEST_DIRECTORY + "expected-components-20-medication-request-suppressed.xml"
460+
TEST_DIRECTORY + "expected-components-20-medication-statement-not-included.xml"
458461
);
459462
var bundle = initializeMessageContext(
460-
TEST_DIRECTORY + "input-bundle-20-medication-request-suppressed.json"
463+
TEST_DIRECTORY + "input-bundle-20-medication-request-stopped-order.json"
464+
461465
);
462466
var encounter = extractEncounter(bundle);
463467

service/src/test/java/uk/nhs/adaptors/gp2gp/ehr/utils/MedicationRequestUtilsTest.java

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package uk.nhs.adaptors.gp2gp.ehr.utils;
22

3+
import static org.assertj.core.api.Assertions.assertThat;
34
import static org.junit.jupiter.api.Assertions.assertFalse;
45
import static org.junit.jupiter.api.Assertions.assertTrue;
56

@@ -17,31 +18,34 @@ public class MedicationRequestUtilsTest {
1718
private final FhirParseService fhirParseService = new FhirParseService();
1819

1920
private static final String FILES_ROOT = "/ehr/utils/";
20-
private static final String JSON_SUPPRESSED_MEDICATION_REQUEST = FILES_ROOT
21-
+ "medication-request-suppressed.json";
22-
private static final String JSON_NOT_SUPPRESSED_MEDICATION_REQUEST = FILES_ROOT
23-
+ "medication-request-not-suppressed.json";
2421
private static final String JSON_CONDITION_WITH_MEDICATION_REQUEST_REF = FILES_ROOT
2522
+ "condition_with_medication_request_reference.json";
2623

27-
@SneakyThrows
2824
@Test
29-
public void When_MedicationRequestIsSuppressed_Expect_True() {
30-
var jsonInput = ResourceTestFileUtils.getFileContent(JSON_SUPPRESSED_MEDICATION_REQUEST);
31-
var medicationRequest = fhirParseService.parseResource(jsonInput, MedicationRequest.class);
32-
boolean isSuppressed = MedicationRequestUtils.isMedicationRequestSuppressed(medicationRequest);
25+
public void When_MedicationRequestHasStatusOfStoppedAndIntentOfOrder_Expect_isStoppedMedicationOrder() {
26+
var medicationRequest = new MedicationRequest();
27+
medicationRequest.setStatus(MedicationRequest.MedicationRequestStatus.STOPPED);
28+
medicationRequest.setIntent(MedicationRequest.MedicationRequestIntent.ORDER);
3329

34-
assertTrue(isSuppressed);
30+
assertThat(MedicationRequestUtils.isStoppedMedicationOrder(medicationRequest)).isTrue();
31+
}
32+
33+
@Test
34+
public void When_MedicationRequestHasStatusOfActiveAndIntentOfOrder_Expect_isNotStoppedMedicationOrder() {
35+
var medicationRequest = new MedicationRequest();
36+
medicationRequest.setStatus(MedicationRequest.MedicationRequestStatus.ACTIVE);
37+
medicationRequest.setIntent(MedicationRequest.MedicationRequestIntent.ORDER);
38+
39+
assertThat(MedicationRequestUtils.isStoppedMedicationOrder(medicationRequest)).isFalse();
3540
}
3641

37-
@SneakyThrows
3842
@Test
39-
public void When_MedicationRequestIsNotSuppressed_Expect_False() {
40-
var jsonInput = ResourceTestFileUtils.getFileContent(JSON_NOT_SUPPRESSED_MEDICATION_REQUEST);
41-
var medicationRequest = fhirParseService.parseResource(jsonInput, MedicationRequest.class);
42-
boolean isSuppressed = MedicationRequestUtils.isMedicationRequestSuppressed(medicationRequest);
43+
public void When_MedicationRequestHasStatusOfStoppedAndIntentOfPlan_Expect_isNotStoppedMedicationOrder() {
44+
var medicationRequest = new MedicationRequest();
45+
medicationRequest.setStatus(MedicationRequest.MedicationRequestStatus.ACTIVE);
46+
medicationRequest.setIntent(MedicationRequest.MedicationRequestIntent.PLAN);
4347

44-
assertFalse(isSuppressed);
48+
assertThat(MedicationRequestUtils.isStoppedMedicationOrder(medicationRequest)).isFalse();
4549
}
4650

4751
@SneakyThrows
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<component typeCode="COMP">
2+
<CompoundStatement classCode="TOPIC" moodCode="EVN">
3+
<id root="394559384658936" />
4+
<statusCode code="COMPLETE" />
5+
<effectiveTime>
6+
<low value="20100113152000" />
7+
<high value="20100113162000" />
8+
</effectiveTime>
9+
<availabilityTime value="20100113152000" />
10+
<component typeCode="COMP" contextConductionInd="true">
11+
<CompoundStatement classCode="CATEGORY" moodCode="EVN">
12+
<id root="394559384658936" />
13+
<code nullFlavor="UNK">
14+
<originalText>Mocked code</originalText>
15+
</code>
16+
<statusCode code="COMPLETE" />
17+
<effectiveTime>
18+
<low value="20100113152000" />
19+
<high value="20100113162000" />
20+
</effectiveTime>
21+
<availabilityTime value="20100714163232" />
22+
<component typeCode="COMP">
23+
<PlanStatement classCode="OBS" moodCode="INT">
24+
<id root="394559384658936" />
25+
<code nullFlavor="UNK">
26+
<originalText>Mocked code</originalText>
27+
</code>
28+
<statusCode code="COMPLETE" />
29+
<effectiveTime>
30+
<center nullFlavor="UNK" />
31+
</effectiveTime>
32+
<availabilityTime value="20100113152950" />
33+
</PlanStatement>
34+
</component>
35+
</CompoundStatement>
36+
</component>
37+
</CompoundStatement>
38+
</component>

0 commit comments

Comments
 (0)