From 2c2251cfbd6097ff8fe8da437f5a3ca45ae2c180 Mon Sep 17 00:00:00 2001 From: "dipak.thapa" Date: Mon, 13 Jan 2025 20:48:27 +0545 Subject: [PATCH 1/4] Changes tag to lafia --- api/pom.xml | 2 +- integration-tests/pom.xml | 2 +- omod/pom.xml | 2 +- pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 4d93450..6c094c3 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -3,7 +3,7 @@ org.openmrs.module queue - 2.5.0-SNAPSHOT + 2.5.0-lafia queue-api diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml index dddf936..3959a92 100644 --- a/integration-tests/pom.xml +++ b/integration-tests/pom.xml @@ -3,7 +3,7 @@ org.openmrs.module queue - 2.5.0-SNAPSHOT + 2.5.0-lafia queue-integration-tests diff --git a/omod/pom.xml b/omod/pom.xml index 60dbfb9..c00894d 100644 --- a/omod/pom.xml +++ b/omod/pom.xml @@ -3,7 +3,7 @@ org.openmrs.module queue - 2.5.0-SNAPSHOT + 2.5.0-lafia queue-omod diff --git a/pom.xml b/pom.xml index 655c8a1..a5dee58 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ org.openmrs.module queue - 2.5.0-SNAPSHOT + 2.5.0-lafia pom Queue Patient Queues From 93de3159c87e2d7756898188c269ce2b76be5d9d Mon Sep 17 00:00:00 2001 From: "dipak.thapa" Date: Tue, 19 Aug 2025 13:02:01 +0545 Subject: [PATCH 2/4] Changes to postgres --- api/src/main/java/org/openmrs/module/queue/model/Queue.java | 2 +- .../main/java/org/openmrs/module/queue/model/QueueEntry.java | 2 +- api/src/main/java/org/openmrs/module/queue/model/QueueRoom.java | 2 +- .../java/org/openmrs/module/queue/model/RoomProviderMap.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/api/src/main/java/org/openmrs/module/queue/model/Queue.java b/api/src/main/java/org/openmrs/module/queue/model/Queue.java index 6dcc063..32f98de 100644 --- a/api/src/main/java/org/openmrs/module/queue/model/Queue.java +++ b/api/src/main/java/org/openmrs/module/queue/model/Queue.java @@ -45,7 +45,7 @@ public class Queue extends BaseChangeableOpenmrsMetadata { private static final long serialVersionUID = 1L; @Id - @GeneratedValue(strategy = GenerationType.AUTO) + @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "queue_id") private Integer queueId; diff --git a/api/src/main/java/org/openmrs/module/queue/model/QueueEntry.java b/api/src/main/java/org/openmrs/module/queue/model/QueueEntry.java index a2ab33b..64a8264 100644 --- a/api/src/main/java/org/openmrs/module/queue/model/QueueEntry.java +++ b/api/src/main/java/org/openmrs/module/queue/model/QueueEntry.java @@ -45,7 +45,7 @@ public class QueueEntry extends BaseChangeableOpenmrsData { private static final long serialVersionUID = 1L; @Id - @GeneratedValue(strategy = GenerationType.AUTO) + @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "queue_entry_id") private Integer queueEntryId; diff --git a/api/src/main/java/org/openmrs/module/queue/model/QueueRoom.java b/api/src/main/java/org/openmrs/module/queue/model/QueueRoom.java index 8a837de..95bd2de 100644 --- a/api/src/main/java/org/openmrs/module/queue/model/QueueRoom.java +++ b/api/src/main/java/org/openmrs/module/queue/model/QueueRoom.java @@ -35,7 +35,7 @@ public class QueueRoom extends BaseChangeableOpenmrsMetadata { private static final long serialVersionUID = 1L; @Id - @GeneratedValue(strategy = GenerationType.AUTO) + @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "queue_room_id") private Integer queueRoom; diff --git a/api/src/main/java/org/openmrs/module/queue/model/RoomProviderMap.java b/api/src/main/java/org/openmrs/module/queue/model/RoomProviderMap.java index f6f65c1..7978267 100644 --- a/api/src/main/java/org/openmrs/module/queue/model/RoomProviderMap.java +++ b/api/src/main/java/org/openmrs/module/queue/model/RoomProviderMap.java @@ -36,7 +36,7 @@ public class RoomProviderMap extends BaseOpenmrsData { private static final long serialVersionUID = 1L; @Id - @GeneratedValue(strategy = GenerationType.AUTO) + @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "room_provider_map_id") private Integer roomProviderMapId; From 030573d401879f5bbcd879a8e9004322484294fd Mon Sep 17 00:00:00 2001 From: curtiscrentsil <199057520+currtisseeer@users.noreply.github.com> Date: Tue, 19 Aug 2025 09:55:57 +0100 Subject: [PATCH 3/4] Update Legacy1xRestController.java --- .../queue/web/Legacy1xRestController.java | 38 +++++++++++++++++-- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/omod/src/main/java/org/openmrs/module/queue/web/Legacy1xRestController.java b/omod/src/main/java/org/openmrs/module/queue/web/Legacy1xRestController.java index ca26b45..76fae9e 100644 --- a/omod/src/main/java/org/openmrs/module/queue/web/Legacy1xRestController.java +++ b/omod/src/main/java/org/openmrs/module/queue/web/Legacy1xRestController.java @@ -137,13 +137,31 @@ public Object postVisitQueueEntry(HttpServletRequest request, HttpServletRespons SimpleObject queueEntry = new SimpleObject(); Map postedQueueEntry = post.get("queueEntry"); for (String key : postedQueueEntry.keySet()) { - queueEntry.add(key, postedQueueEntry.get(key)); + Object value = postedQueueEntry.get(key); + // Handle complex objects by extracting UUID if present + value = extractUuidFromComplexObject(value); + queueEntry.add(key, value); } queueEntry.add("visit", post.get("visit")); Object created = queueEntryResource.create(queueEntry, requestContext); return RestUtil.created(response, created); } + /** + * Extracts UUID from complex objects that have a uuid field + * This handles cases where the frontend sends complex objects like: + * {"uuid": "some-uuid", "display": "some-display"} instead of just "some-uuid" + */ + private Object extractUuidFromComplexObject(Object value) { + if (value instanceof Map) { + Map map = (Map) value; + if (map.containsKey("uuid")) { + return map.get("uuid"); + } + } + return value; + } + @RequestMapping(value = "/rest/" + RestConstants.VERSION_1 + "/queueroom", method = GET) @ResponseBody public Object getQueueRooms(HttpServletRequest request, HttpServletResponse response) { @@ -163,7 +181,14 @@ public Object getRoomProviderMaps(HttpServletRequest request, HttpServletRespons public Object postRoomProviderMap(HttpServletRequest request, HttpServletResponse response, @RequestBody SimpleObject post) { RequestContext requestContext = RestUtil.getRequestContext(request, response); - Object created = roomProviderMapResource.create(post, requestContext); + // Handle complex objects by extracting UUID if present + SimpleObject processedPost = new SimpleObject(); + for (String key : post.keySet()) { + Object value = post.get(key); + value = extractUuidFromComplexObject(value); + processedPost.add(key, value); + } + Object created = roomProviderMapResource.create(processedPost, requestContext); return RestUtil.created(response, created); } @@ -175,7 +200,14 @@ public Object updateRoomProviderMap(@PathVariable("uuid") String uuid, @RequestB if (post.get("deleted") != null && "false".equals(post.get("deleted")) && post.size() == 1) { return RestUtil.updated(response, roomProviderMapResource.undelete(uuid, context)); } - return RestUtil.updated(response, roomProviderMapResource.update(uuid, post, context)); + // Handle complex objects by extracting UUID if present + SimpleObject processedPost = new SimpleObject(); + for (String key : post.keySet()) { + Object value = post.get(key); + value = extractUuidFromComplexObject(value); + processedPost.add(key, value); + } + return RestUtil.updated(response, roomProviderMapResource.update(uuid, processedPost, context)); } @RequestMapping(value = "/rest/" + RestConstants.VERSION_1 + "/queue-entry-metrics", method = { GET, POST }) From 5f94da34ee93c471d293a5759543f7df22cdf331 Mon Sep 17 00:00:00 2001 From: curtiscrentsil <56942550+curtiscrentsil@users.noreply.github.com> Date: Fri, 21 Nov 2025 10:46:09 +0100 Subject: [PATCH 4/4] Service Queue 400 error fixed --- api/pom.xml | 7 +++- omod/pom.xml | 7 +++- .../queue/web/Legacy1xRestController.java | 28 +++++++++---- .../web/resources/QueueEntryResource.java | 42 +++++++++++++++++++ pom.xml | 13 +++++- 5 files changed, 84 insertions(+), 13 deletions(-) diff --git a/api/pom.xml b/api/pom.xml index 3b817b1..1bc7117 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -3,7 +3,7 @@ org.openmrs.module queue - 2.7.0-lafia + 2.7.2-lafia queue-api @@ -16,6 +16,11 @@ org.openmrs.api openmrs-api + + org.projectlombok + lombok + provided + diff --git a/omod/pom.xml b/omod/pom.xml index ef3badd..142b2f8 100644 --- a/omod/pom.xml +++ b/omod/pom.xml @@ -3,7 +3,7 @@ org.openmrs.module queue - 2.7.0-lafia + 2.7.2-lafia queue-omod @@ -17,6 +17,11 @@ queue-api ${project.parent.version} + + org.projectlombok + lombok + provided + org.openmrs.web openmrs-web diff --git a/omod/src/main/java/org/openmrs/module/queue/web/Legacy1xRestController.java b/omod/src/main/java/org/openmrs/module/queue/web/Legacy1xRestController.java index 76fae9e..baf9b02 100644 --- a/omod/src/main/java/org/openmrs/module/queue/web/Legacy1xRestController.java +++ b/omod/src/main/java/org/openmrs/module/queue/web/Legacy1xRestController.java @@ -136,21 +136,31 @@ public Object postVisitQueueEntry(HttpServletRequest request, HttpServletRespons RequestContext requestContext = RestUtil.getRequestContext(request, response); SimpleObject queueEntry = new SimpleObject(); Map postedQueueEntry = post.get("queueEntry"); - for (String key : postedQueueEntry.keySet()) { - Object value = postedQueueEntry.get(key); - // Handle complex objects by extracting UUID if present - value = extractUuidFromComplexObject(value); - queueEntry.add(key, value); + if (postedQueueEntry != null) { + for (String key : postedQueueEntry.keySet()) { + Object value = postedQueueEntry.get(key); + // Handle complex objects by extracting UUID if present + Object extractedValue = extractUuidFromComplexObject(value); + queueEntry.add(key, extractedValue); + log.debug("Extracted {}: {} -> {}", key, value, extractedValue); + } + } else { + log.warn("postedQueueEntry is null in postVisitQueueEntry"); + } + // Extract UUID from visit object if it's a complex object + Object visit = extractUuidFromComplexObject(post.get("visit")); + if (visit != null) { + queueEntry.add("visit", visit); } - queueEntry.add("visit", post.get("visit")); + log.debug("Final queueEntry SimpleObject: {}", queueEntry); Object created = queueEntryResource.create(queueEntry, requestContext); return RestUtil.created(response, created); } /** - * Extracts UUID from complex objects that have a uuid field - * This handles cases where the frontend sends complex objects like: - * {"uuid": "some-uuid", "display": "some-display"} instead of just "some-uuid" + * Extracts UUID from complex objects that have a uuid field This handles cases where the frontend + * sends complex objects like: {"uuid": "some-uuid", "display": "some-display"} instead of just + * "some-uuid" */ private Object extractUuidFromComplexObject(Object value) { if (value instanceof Map) { diff --git a/omod/src/main/java/org/openmrs/module/queue/web/resources/QueueEntryResource.java b/omod/src/main/java/org/openmrs/module/queue/web/resources/QueueEntryResource.java index 8f63592..d600e66 100644 --- a/omod/src/main/java/org/openmrs/module/queue/web/resources/QueueEntryResource.java +++ b/omod/src/main/java/org/openmrs/module/queue/web/resources/QueueEntryResource.java @@ -25,6 +25,7 @@ import io.swagger.models.properties.StringProperty; import lombok.Setter; import lombok.extern.slf4j.Slf4j; +import org.openmrs.Concept; import org.openmrs.PersonName; import org.openmrs.api.context.Context; import org.openmrs.module.queue.api.QueueServicesWrapper; @@ -94,6 +95,47 @@ public QueueEntry save(QueueEntry queueEntry) { return getServices().getQueueEntryService().saveQueueEntry(queueEntry); } + @Override + public void setProperty(Object instance, String propertyName, Object propertyValue) throws ResponseException { + QueueEntry queueEntry = (QueueEntry) instance; + // Manually handle status and priority conversion from UUID strings to Concept objects + if ("status".equals(propertyName) && propertyValue instanceof String) { + String statusUuid = (String) propertyValue; + Concept status = null; + try { + status = getServices().getConcept(statusUuid); + } + catch (IllegalArgumentException e) { + log.warn("Status concept not found: {}, attempting to use default 'In Service' UUID", statusUuid); + // Fallback to "In Service" UUID if the provided UUID doesn't exist + String inServiceUuid = "ca7494ae-437f-4fd0-8aae-b88b9a2ba47d"; + try { + status = getServices().getConcept(inServiceUuid); + log.info("Using default 'In Service' status concept: {}", inServiceUuid); + } + catch (IllegalArgumentException fallbackException) { + throw new ObjectNotFoundException("Status concept not found: " + statusUuid + + " and fallback 'In Service' concept also not found: " + inServiceUuid); + } + } + if (status != null) { + queueEntry.setStatus(status); + } + } else if ("priority".equals(propertyName) && propertyValue instanceof String) { + String priorityUuid = (String) propertyValue; + try { + Concept priority = getServices().getConcept(priorityUuid); + queueEntry.setPriority(priority); + } + catch (IllegalArgumentException e) { + throw new ObjectNotFoundException("Priority concept not found: " + priorityUuid); + } + } else { + // For all other properties, use the default behavior + super.setProperty(instance, propertyName, propertyValue); + } + } + @Override public void purge(QueueEntry queueEntry, RequestContext requestContext) throws ResponseException { getServices().getQueueEntryService().purgeQueueEntry(queueEntry); diff --git a/pom.xml b/pom.xml index 8c1161f..0da640b 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ org.openmrs.module queue - 2.7.0-lafia + 2.7.2-lafia pom Queue Patient Queues @@ -206,6 +206,15 @@ org.apache.maven.plugins maven-compiler-plugin 3.8.1 + + + + org.projectlombok + lombok + ${lombokVersion} + + + org.apache.maven.plugins @@ -347,7 +356,7 @@ 1.8 UTF-8 UTF-8 - 1.18.20 + 1.18.34 2.0.9 2.32.0 2.3.4