diff --git a/core/src/main/java/uk/ac/ucl/rits/inform/datasinks/emapstar/controllers/PendingAdtController.java b/core/src/main/java/uk/ac/ucl/rits/inform/datasinks/emapstar/controllers/PendingAdtController.java index 93a10569c..2600fbf50 100644 --- a/core/src/main/java/uk/ac/ucl/rits/inform/datasinks/emapstar/controllers/PendingAdtController.java +++ b/core/src/main/java/uk/ac/ucl/rits/inform/datasinks/emapstar/controllers/PendingAdtController.java @@ -75,6 +75,7 @@ public void processMsg(HospitalVisit visit, PendingTransfer msg, Instant validFr RowState plannedState = getOrCreate( allFromRequest, visit, plannedLocation, msg.getPendingEventType().toString(), msg.getEventOccurredDateTime(), validFrom, storedFrom ); + addHospitalService(msg, plannedState); PlannedMovement plannedMovement = plannedState.getEntity(); // If we receive a cancelled message before the original request then add it in if (plannedMovement.getEventDatetime() == null) { @@ -159,6 +160,16 @@ private void deletePlannedMovement(PlannedMovement plannedMovement, Instant dele plannedMovementAuditRepo.save(plannedMovement.createAuditEntity(deletionTime, storedUntil)); plannedMovementRepo.delete(plannedMovement); } + + /** + * Add hospital service. + * @param msg PendingTransfer + * @param movementState movement wrapped in state class + */ + private void addHospitalService(final PendingTransfer msg, RowState movementState) { + PlannedMovement movement = movementState.getEntity(); + movementState.assignInterchangeValue(msg.getHospitalService(), movement.getHospitalService(), movement::setHospitalService); + } } /** diff --git a/core/src/test/java/uk/ac/ucl/rits/inform/datasinks/emapstar/adt/TestPendingAdt.java b/core/src/test/java/uk/ac/ucl/rits/inform/datasinks/emapstar/adt/TestPendingAdt.java index a6cf8b730..670084652 100644 --- a/core/src/test/java/uk/ac/ucl/rits/inform/datasinks/emapstar/adt/TestPendingAdt.java +++ b/core/src/test/java/uk/ac/ucl/rits/inform/datasinks/emapstar/adt/TestPendingAdt.java @@ -96,6 +96,7 @@ void testPendingCreatesPlannedMovement() throws Exception { assertEquals(EVENT_TIME, plannedMovement.getEventDatetime()); assertEquals(PendingType.TRANSFER.toString(), plannedMovement.getEventType()); assertNull(plannedMovement.getCancelledDatetime()); + assertEquals("Head and Neck - OMFS", plannedMovement.getHospitalService()); } /** diff --git a/emap-interchange/src/main/java/uk/ac/ucl/rits/inform/interchange/adt/CancelPendingTransfer.java b/emap-interchange/src/main/java/uk/ac/ucl/rits/inform/interchange/adt/CancelPendingTransfer.java index a97233a08..48a5cd1b2 100644 --- a/emap-interchange/src/main/java/uk/ac/ucl/rits/inform/interchange/adt/CancelPendingTransfer.java +++ b/emap-interchange/src/main/java/uk/ac/ucl/rits/inform/interchange/adt/CancelPendingTransfer.java @@ -21,6 +21,7 @@ public class CancelPendingTransfer extends AdtMessage implements PendingEvent, AdtCancellation { private PendingType pendingEventType = PendingType.TRANSFER; private InterchangeValue pendingDestination = InterchangeValue.unknown(); + private InterchangeValue hospitalService = InterchangeValue.unknown(); private Instant cancelledDateTime; diff --git a/emap-interchange/src/main/java/uk/ac/ucl/rits/inform/interchange/adt/PendingEvent.java b/emap-interchange/src/main/java/uk/ac/ucl/rits/inform/interchange/adt/PendingEvent.java index cbba963a3..de7ff4805 100644 --- a/emap-interchange/src/main/java/uk/ac/ucl/rits/inform/interchange/adt/PendingEvent.java +++ b/emap-interchange/src/main/java/uk/ac/ucl/rits/inform/interchange/adt/PendingEvent.java @@ -21,4 +21,16 @@ public interface PendingEvent { * @param location Concatenated location string */ void setPendingDestination(InterchangeValue location); + + + /** + * @return Hospital service from PV1-10. + */ + InterchangeValue getHospitalService(); + + /** + * @param hospitalService + */ + void setHospitalService(InterchangeValue hospitalService); + } diff --git a/emap-interchange/src/main/java/uk/ac/ucl/rits/inform/interchange/adt/PendingTransfer.java b/emap-interchange/src/main/java/uk/ac/ucl/rits/inform/interchange/adt/PendingTransfer.java index 5d71d4e67..3400c1456 100644 --- a/emap-interchange/src/main/java/uk/ac/ucl/rits/inform/interchange/adt/PendingTransfer.java +++ b/emap-interchange/src/main/java/uk/ac/ucl/rits/inform/interchange/adt/PendingTransfer.java @@ -19,6 +19,7 @@ public class PendingTransfer extends AdtMessage implements PendingEvent { private PendingType pendingEventType = PendingType.TRANSFER; private InterchangeValue pendingDestination = InterchangeValue.unknown(); + private InterchangeValue hospitalService = InterchangeValue.unknown(); @Override public void processMessage(EmapOperationMessageProcessor processor) throws EmapOperationMessageProcessingException { diff --git a/emap-interchange/src/test/resources/AdtMessages/pending/A15.yaml b/emap-interchange/src/test/resources/AdtMessages/pending/A15.yaml index fbc75ddc5..56d0cc178 100644 --- a/emap-interchange/src/test/resources/AdtMessages/pending/A15.yaml +++ b/emap-interchange/src/test/resources/AdtMessages/pending/A15.yaml @@ -54,4 +54,7 @@ modeOfArrival: "@class": "uk.ac.ucl.rits.inform.interchange.InterchangeValue" status: "SAVE" value: "Walk-in" - +hospitalService: + "@class": "uk.ac.ucl.rits.inform.interchange.InterchangeValue" + status: "SAVE" + value: "Head and Neck - OMFS" diff --git a/emap-star/emap-star/src/main/java/uk/ac/ucl/rits/inform/informdb/movement/PlannedMovement.java b/emap-star/emap-star/src/main/java/uk/ac/ucl/rits/inform/informdb/movement/PlannedMovement.java index ba5e3a147..6ab3a91d0 100644 --- a/emap-star/emap-star/src/main/java/uk/ac/ucl/rits/inform/informdb/movement/PlannedMovement.java +++ b/emap-star/emap-star/src/main/java/uk/ac/ucl/rits/inform/informdb/movement/PlannedMovement.java @@ -84,6 +84,13 @@ public class PlannedMovement extends TemporalCore