How do I update Order

I am trying to Update an Existing Drug Order using Rest API. URL:/openmrs/ws/rest/v1/order/uuid

I am sending this JSON: { “type”: “drugorder”, “uuid”: “9d7b2c66-2371-44c8-9418-e1dc64c0b7b6”, “display”: “(NEW) Ciprofloxacin 2 MG/ML Injectable Solution: 1.0 Tablet Oral Once daily 1 Months”, “dateActivated”: 1496087283000, “urgency”: “ROUTINE”, “orderNumber”: “ORD-8”, “patient”: { “uuid”: “b42a8f14-b7d1-4d70-843d-dd28499f89b6”, “display”: “10001V - Saifullah Yusuf”, “identifiers”: [] }, “orderType”: { “uuid”: “131168f4-15f5-102d-96e4-000c29c2a5d7” }, “concept”: { “uuid”: “73450AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”, “display”: “CIPROFLOXACIN HYDROCHLORIDE” }, “encounter”: { “uuid”: “91b818b9-2843-4f4b-95d8-2138566a4b96”, “display”: “Drug Order 29/05/2017” }, “orderer”: { “uuid”: “9565ef33-bd0d-4b11-b5d6-c984fed4f478” }, “careSetting”: { “uuid”: “6f0c9a92-6f24-11e3-af88-005056821db0” }, “type”: “drugorder”, “action”: “NEW”, “dose”: 2.0, “asNeeded”: false, “quantity”: 1.0, “doseUnits”: { “uuid”: “1513AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”, “display”: “Tablet” }, “frequency”: { “uuid”: “0f7aec0b-332c-4aab-81c6-9f49dbbf4e97”, “display”: “Once daily” }, “quantityUnits”: { “uuid”: “162395AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”, “display”: “Bag” }, “numRefills”: 1, “dosingInstructions”: “”, “duration”: 1, “durationUnits”: { “uuid”: “1074AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”, “display”: “Months” }, “route”: { “uuid”: “160240AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”, “display”: “Oral” }, “brandName”: “”, “dispenseAsWritten”: false, “drug”: { “uuid”: “1530AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF” } }

Error I am receiving:

{“error”:{“message”:“The Resource Does not Support the Requested Operation [null]”,“code”:“org.openmrs.module.webservices.rest.web.v1_0.resource.openmrs1_10.OrderResource1_10:155”,“detail”:“org.openmrs.module.webservices.rest.web.response.ResourceDoesNotSupportOperationException\r\n\tat org.openmrs.module.webservices.rest.web.v1_0.resource.openmrs1_10.OrderResource1_10.getUpdatableProperties(OrderResource1_10.java:155)\r\n\tat org.openmrs.module.webservices.rest.web.v1_0.resource.openmrs1_10.DrugOrderSubclassHandler1_10.getUpdatableProperties(DrugOrderSubclassHandler1_10.java:149)\r\n\tat org.openmrs.module.webservices.rest.web.resource.impl.DelegatingCrudResource.update(DelegatingCrudResource.java:133)\r\n\tat org.openmrs.module.webservices.rest.web.v1_0.controller.MainResourceController.update(MainResourceController.java:127)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)\r\n\tat java.lang.reflect.Method.invoke(Unknown Source)\r\n\tat org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:177)\r\n\tat org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446)\r\n\tat org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:434)\r\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)\r\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)\r\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)\r\n\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868)\r\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:661)\r\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)\r\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:742)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.openmrs.module.web.filter.ForcePasswordChangeFilter.doFilter(ForcePasswordChangeFilter.java:60)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.openmrs.module.web.filter.ModuleFilterChain.doFilter(ModuleFilterChain.java:72)\r\n\tat org.openmrs.web.filter.GZIPFilter.doFilterInternal(GZIPFilter.java:64)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n\tat org.openmrs.module.web.filter.ModuleFilterChain.doFilter(ModuleFilterChain.java:70)\r\n\tat org.openmrs.module.webservices.rest.web.filter.AuthorizationFilter.doFilter(AuthorizationFilter.java:104)\r\n\tat org.openmrs.module.web.filter.ModuleFilterChain.doFilter(ModuleFilterChain.java:70)\r\n\tat org.springframework.web.filter.ShallowEtagHeaderFilter.doFilterInternal(ShallowEtagHeaderFilter.java:82)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n\tat org.openmrs.module.web.filter.ModuleFilterChain.doFilter(ModuleFilterChain.java:70)\r\n\tat org.openmrs.module.owa.filter.OwaFilter.doFilter(OwaFilter.java:64)\r\n\tat org.openmrs.module.web.filter.ModuleFilterChain.doFilter(ModuleFilterChain.java:70)\r\n\tat org.openmrs.module.web.filter.ModuleFilter.doFilter(ModuleFilter.java:54)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.openmrs.web.filter.OpenmrsFilter.doFilterInternal(OpenmrsFilter.java:108)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:150)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.openmrs.web.filter.StartupFilter.doFilter(StartupFilter.java:105)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.openmrs.web.filter.StartupFilter.doFilter(StartupFilter.java:105)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.openmrs.web.filter.StartupFilter.doFilter(StartupFilter.java:105)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)\r\n\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)\r\n\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:475)\r\n\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)\r\n\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)\r\n\tat org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)\r\n\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)\r\n\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)\r\n\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:498)\r\n\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)\r\n\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:796)\r\n\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1368)\r\n\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\r\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)\r\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)\r\n\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\r\n\tat java.lang.Thread.run(Unknown Source)\r\n”}}

Is this of any help? Having the ability to edit drug orders

1 Like

@jaks80, I believe what you may need to do is create a new order with action=REVISE and previousOrder=uuid-of-the-original-order.

1 Like

Thanks a lot. Works fine. What happens when an order is revised. Does it void previous drugorder. If so which field is being set as void. (How do I know this order is void when I load all drugorder type encounter)

@jaks80 to see the precise behavior you might need to look at the underlying Java code at https://github.com/openmrs/openmrs-core/blob/2.1.0/api/src/main/java/org/openmrs/api/impl/OrderServiceImpl.java#L128

Or this wiki page might help a bit: https://wiki.openmrs.org/display/docs/Order+Entry+API#OrderEntryAPI-ReviseAnOrder

The general idea is that revising an order stops it (does not void it) and the new order has action=REVISE and previousOrder points back to the order which was revised.