Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<parent>
<groupId>org.openmrs.module</groupId>
<artifactId>queue</artifactId>
<version>3.0.0-SNAPSHOT</version>
<version>2.7.2-lafia</version>
</parent>

<artifactId>queue-api</artifactId>
Expand All @@ -16,6 +16,11 @@
<groupId>org.openmrs.api</groupId>
<artifactId>openmrs-api</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>

<!--Test dependencies-->
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
2 changes: 1 addition & 1 deletion integration-tests/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<parent>
<groupId>org.openmrs.module</groupId>
<artifactId>queue</artifactId>
<version>3.0.0-SNAPSHOT</version>
<version>2.7.0-lafia</version>
</parent>

<artifactId>queue-integration-tests</artifactId>
Expand Down
7 changes: 6 additions & 1 deletion omod/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<parent>
<groupId>org.openmrs.module</groupId>
<artifactId>queue</artifactId>
<version>3.0.0-SNAPSHOT</version>
<version>2.7.2-lafia</version>
</parent>

<artifactId>queue-omod</artifactId>
Expand All @@ -17,6 +17,11 @@
<artifactId>queue-api</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.openmrs.web</groupId>
<artifactId>openmrs-web</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,14 +136,42 @@ public Object postVisitQueueEntry(HttpServletRequest request, HttpServletRespons
RequestContext requestContext = RestUtil.getRequestContext(request, response);
SimpleObject queueEntry = new SimpleObject();
Map<String, Object> postedQueueEntry = post.get("queueEntry");
for (String key : postedQueueEntry.keySet()) {
queueEntry.add(key, postedQueueEntry.get(key));
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"
*/
private Object extractUuidFromComplexObject(Object value) {
if (value instanceof Map) {
Map<String, Object> map = (Map<String, Object>) 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) {
Expand All @@ -163,7 +191,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);
}

Expand All @@ -175,7 +210,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 })
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand Down
22 changes: 15 additions & 7 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

<groupId>org.openmrs.module</groupId>
<artifactId>queue</artifactId>
<version>3.0.0-SNAPSHOT</version>
<version>2.7.2-lafia</version>
<packaging>pom</packaging>
<name>Queue</name>
<description>Patient Queues</description>
Expand Down Expand Up @@ -188,6 +188,15 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombokVersion}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
Expand Down Expand Up @@ -329,11 +338,10 @@
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.build.outputEncoding>UTF-8</project.build.outputEncoding>
<lombokVersion>1.18.38</lombokVersion>
<webservicesRestVersion>3.0.0-SNAPSHOT</webservicesRestVersion>
<byteBuddyVersion>1.17.7</byteBuddyVersion>
<mockitoInlineVersion>4.8.0</mockitoInlineVersion>
<openmrsPlatformVersion>2.7.4</openmrsPlatformVersion>
<openmrsPlatformToolsVersion>2.7.4</openmrsPlatformToolsVersion>
<lombokVersion>1.18.34</lombokVersion>
<powerMockitoVersion>2.0.9</powerMockitoVersion>
<webservicesRestVersion>2.32.0</webservicesRestVersion>
<openmrsPlatformVersion>2.3.4</openmrsPlatformVersion>
<openmrsPlatformToolsVersion>2.4.0</openmrsPlatformToolsVersion>
</properties>
</project>