Giter VIP home page Giter VIP logo

openhospital-api's Introduction

Open Hospital API

Java CI with Maven

This is the API project of Open Hospital: it exposes a REST API of the business logic implemented in the openhospital-core project.

Summary

Table of contents generated with markdown-toc

How to build [WIP]

For the moment, to build this project you should

  1. fetch and build the core project

    git clone https://github.com/informatici/openhospital-core.git
    cd openhospital-core
    mvn clean install -DskipTests=true
    
  2. clone and build this project

    git clone https://github.com/informatici/openhospital-api
    cd openhospital-api
    mvn clean install -DskipTests=true
    
  3. prepare settings from each rsc/*.dist file

    rsc/application.properties <- set a SHA-256 jwt token
    rsc/database.properties
    rsc/log4j.properties
    rsc/...
    
  4. set target/rsc/database.properties

    DB can be created with `docker-compose up` from `openhospital-core` or using a dedicated MySQL server
    
  5. start openhospital-api (in target folder)

    # Windows
    java -cp "openhospital-api-0.1.0.jar;rsc/;static/" org.springframework.boot.loader.JarLauncher
    
    # Linux
    java -cp "openhospital-api-0.1.0.jar:rsc/:static/" org.springframework.boot.loader.JarLauncher
    
  6. call services

You can see Swagger Api Documentation at: http://localhost:8080/swagger-ui/

image

Using Swagger-UI

  1. use endpoint /auth/login to login and get the token

image image

  1. use the Authorize button at the top of the Swagger-UI, paste the token from step #1 and click Authorize

image

  1. close the dialog

image

  1. now all the endpoints are automatically secured and the token will be added to the request

image

Using Postman

  1. import postman_collection.json in your Postman installation

How to deploy backend in Docker environment

Make sure you have docker with docker-compose installed, then run the following commands:

  • copy dotenv file into .env and set variables as needed (the SHA-256 jwt token is needed)
  • run make
  • run docker compose up -d database (wait for some seconds the very first time to build the DB)
  • (optional - demo data after set the database container) run docker compose run --rm oh-database-init
  • run docker compose up backend

When done successfully, head over at http://localhost:[API_PORT]/swagger-ui/

You can change the deployment branch using an .env file.

How to generate openapi specs

Make sure to have API started without errors.

Run the Maven command and it will overwrite the openapi/oh.yaml

mvn springdoc-openapi:generate

To redirect the output to another file, use:

mvn springdoc-openapi:generate -Dspringdoc.outputFileName=my_revision.yaml

Cleaning

docker compose rm --stop --volumes --force
make clean

How to contribute

You can find the contribution guidelines in the Open Hospital wiki.
A list of open issues is available on Jira.

Community

You can reach out to the community of contributors by joining our Slack workspace or by subscribing to our mailing list.

Code style

This project uses a consistent code style and provides definitions for use in both IntelliJ and Eclipse IDEs.

IntelliJ IDEA instructions

For IntelliJ IDEA the process for importing the code style is:

  • Select Settings in the File menu
  • Select Editor
  • Select Code Style
  • Expand the menu item and select Java
  • Go to Scheme at the top, click on the setting button by the side of the drop-down list
  • Select Import Scheme
  • Select IntelliJ IDE code style XML
  • Navigate to the location of the file which relative to the project root is: .ide-settings/idea/OpenHospital-code-style-configuration.xml
  • Select OK
  • At this point the code style is stored as part of the IDE and is used for all projects opened in the editor. To restrict the settings to just this project again select the setting button by the side of the Scheme list and select Copy to Project.... If successful a notice appears in the window that reads: For current project.
Eclipse instructions

For Eclipse the process requires loading the formatting style and the import order separately.

  • Select Preferences in the Window menu
  • Select Java
  • Select Code Style and expand the menu
  • Select Formatter
  • Select the Import... button
  • Navigate to the location of the file which relative to the project root is: .ide-settings/eclipse/OpenHospital-Java-CodeStyle-Formatter.xml
  • Select Open
  • At this point the code style is stored and is applicable to all projects opened in the IDE. To restrict the settings just to this project select Configure Project Specific Settings... in the upper right. In the next dialog select the openhospital repository and select OK. In the next dialog select the Enable project specific settings checkbox. Finally select Apply and Close.
  • Back in the Code Style menu area, select Organize Imports
  • Select Import...
  • Navigate to the location of the file which relative to the project root is: .ide-settings/eclipse/OpenHospital.importorder
  • Select Open
  • As with the formatting styles the import order is applicable to all projects. In order to change it just for this project repeat the same steps as above for Configure Project Specific Settings...

openhospital-api's People

Contributors

andreafalco1991 avatar arnaudfonzam avatar averni avatar dbmalkovsky avatar dependabot-preview[bot] avatar dependabot[bot] avatar dnlebgwa avatar emecas avatar fstorz avatar gildasdongmo avatar goto-eof avatar martinezx21 avatar mwithi avatar npasquetto avatar pviotti avatar torrespro avatar tudor44 avatar verdoso avatar vir8wh47 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

openhospital-api's Issues

PatientDataForm 'city' field should be a 'select'

https://openhospital.atlassian.net/browse/OP-792

Use case analysis

When filling the for for registering a new patient, I can fill the field "city", but at the moment it's a free text field, and this produces inconsistencies in the database, where the same city can be spelled out with different names.
It would be useful if the field was driven by an autosuggestion that helps to fill it in a consistent way, but it should also let the user insert a new city which is not yet suggested.
Once a new city has been registered, it should also appear in the next suggestions, in order to maintain the database consistent.

Objections

It has been objected that this way, if I insert a new city with a wrong spelling, it stays there forever. This is right, but if the database is consistent, it will be more easy to fix it. We can also consider to add somewhere a new tool for managing cities, and update consequently all the records in the database.

Implementation

In order to make this feature more useful, it was suggested to move from a static datasource in the frontend code to a dynamic one, based on api.
It needs:

  • a new api (example: GET /customization/city-options)

PUT /laboratories/309: error 400

Payload:
{
"laboratoryDTO": {
"exam": {
"code": "01.01",
"description": "1.1 HB",
"procedure": 2,
"defaultResult": ">=12 (NORMAL)",
"examtype": {
"code": "HB",
"description": "1.Haematology"
},
"lock": 2
},
"date": "2022-01-13T06:19:00.000Z",
"note": "gggg",
"result": "angal.lab.multipleresults",
"material": "angal.lab.urine",
"patientCode": 5,
"patName": "James Acer",
"sex": "M",
"age": 35,
"examDate": "2022-01-13T06:19:00.000Z",
"inOutPatient": "R",
"code": 309
},
"laboratoryRowList": []
}

Response:
{
"status": "BAD_REQUEST",
"message": "Laboratory code mismatch!",
"debugMessage": "Laboratory code mismatch!",
"stackTrace": "org.isf.shared.exceptions.OHAPIException\n\tat org.isf.lab.rest.LaboratoryController.updateLaboratory(LaboratoryController.java:150)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)\n\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)\n\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)\n\tat org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:883)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:710)\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1689)\n\tat org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:225)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)\n\tat org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)\n\tat org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.isf.security.jwt.JWTFilter.doFilter(JWTFilter.java:38)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:121)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)\n\tat org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)\n\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)\n\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:89)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)\n\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)\n\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:524)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:319)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:253)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)\n\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)\n\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)\n\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)\n\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)\n\tat java.lang.Thread.run(Thread.java:748)\n",
"timestamp": {
"nano": 305000000,
"hour": 16,
"minute": 10,
"second": 36,
"year": 2022,
"month": "JANUARY",
"dayOfMonth": 26,
"dayOfWeek": "WEDNESDAY",
"dayOfYear": 26,
"monthValue": 1,
"chronology": {
"calendarType": "iso8601",
"id": "ISO"
}
}
}

PUT /laboratories/313 error 400

Payload:
{
"laboratoryDTO": {
"exam": {
"code": "01.02",
"description": "1.2 WBC Count",
"procedure": 1,
"defaultResult": "4000 - 7000 (NORMAL)",
"examtype": {
"code": "HB",
"description": "1.Haematology"
},
"lock": 1
},
"date": "2022-01-26T11:31:44.000Z",
"note": "asd",
"result": "angal.lab.multipleresults",
"material": "angal.lab.blood",
"patientCode": 5,
"patName": "James Acer",
"sex": "M",
"age": 35,
"examDate": "2022-01-26T11:31:44.000Z",
"inOutPatient": "R",
"code": 313
},
"laboratoryRowList": []
}

Response:
{"status":"BAD_REQUEST","message":"Laboratory code mismatch!","debugMessage":"Laboratory code mismatch!","stackTrace":"org.isf.shared.exceptions.OHAPIException\n\tat org.isf.lab.rest.LaboratoryController.updateLaboratory(LaboratoryController.java:150)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)\n\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)\n\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)\n\tat org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:883)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:710)\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1689)\n\tat org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:225)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)\n\tat org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)\n\tat org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.isf.security.jwt.JWTFilter.doFilter(JWTFilter.java:38)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:121)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)\n\tat org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)\n\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)\n\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:89)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)\n\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)\n\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:524)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:319)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:253)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)\n\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)\n\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)\n\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)\n\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)\n\tat java.lang.Thread.run(Thread.java:748)\n","timestamp":{"nano":726000000,"hour":11,"minute":58,"second":6,"year":2022,"month":"JANUARY","dayOfMonth":27,"dayOfWeek":"THURSDAY","dayOfYear":27,"monthValue":1,"chronology":{"calendarType":"iso8601","id":"ISO"}}}

POST /admissions: error 400

Payload:
{
"ward": {
"code": "C",
"description": "CHILDREN WARDS",
"telephone": "219",
"fax": "",
"email": "",
"beds": 35,
"nurs": 18,
"docs": 1,
"lock": 2,
"pharmacy": true,
"male": true,
"female": true
},
"transUnit": "",
"admDate": "2022-01-25T15:04:00.000Z",
"admType": {
"code": "A",
"description": "AMBULANCE"
},
"note": "",
"disDate": "",
"bedDays": 19018,
"cliDiaryCharge": "",
"imageryCharge": "",
"patient": {
"code": 5,
"firstName": "James",
"secondName": "Acer",
"name": "James Acer",
"birthDate": "1986-10-01T00:00:00.000Z",
"age": 35,
"agetype": "",
"sex": "M",
"address": "Via della Speranza, 23",
"city": "Angal",
"nextKin": null,
"telephone": "+123 4556511",
"note": "Complain: anamnesi/sintomi riferiti",
"mother_name": "Jennifer",
"mother": "\u0000",
"father_name": "Jack",
"father": "\u0000",
"bloodType": "A+",
"hasInsurance": "Y",
"parentTogether": "U",
"taxCode": "",
"lock": 1,
"blobPhoto": "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",
"hashCode": 0
},
"userID": "admin",
"abortDate": "2022-01-25T15:04:00.000Z",
"admitted": 1
}

Response: empty

POST /admissions error 400

Payload:
{
"ward": {
"code": "C",
"description": "CHILDREN WARDS",
"telephone": "219",
"fax": "",
"email": "",
"beds": 35,
"nurs": 18,
"docs": 1,
"lock": 2,
"pharmacy": true,
"male": true,
"female": true
},
"transUnit": "",
"admDate": "2022-01-27T10:48:00.000Z",
"note": "",
"disDate": "",
"bedDays": 19019,
"cliDiaryCharge": "",
"imageryCharge": "",
"patient": {
"code": 5,
"firstName": "James",
"secondName": "Acer",
"name": "James Acer",
"birthDate": "1986-10-01T00:00:00.000Z",
"age": 35,
"agetype": "",
"sex": "M",
"address": "Via della Speranza, 23",
"city": "Angal",
"nextKin": null,
"telephone": "+123 4556511",
"note": "Complain: anamnesi/sintomi riferiti",
"mother_name": "Jennifer",
"mother": "\u0000",
"father_name": "Jack",
"father": "\u0000",
"bloodType": "A+",
"hasInsurance": "Y",
"parentTogether": "U",
"taxCode": "",
"lock": 1,
"blobPhoto": "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",
"hashCode": 0
},
"userID": "admin",
"abortDate": "2022-01-27T10:48:00.000Z",
"admitted": 1
}

Response not available

PUT /patients/{code} error 400

Sometimes when we pass the profile picture throught the API we get an error on blob.
Error reported:

"status":"INTERNAL_SERVER_ERROR", "message":"angal.sql.theselecteditemisstillusedsomewhere", "debugMessage":"angal.sql.theselecteditemisstillusedsomewhere",

PUT /opds/{id}: error 500

Payload:
{
"date": "2022-01-26T10:39:34.000Z",
"complaint": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.\n\nWhy do we use it?\nIt is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).",
"disease": {
"code": 29,
"description": "AIDS",
"diseaseType": {
"code": "OC",
"description": "2.OTHER INFECTIOUS/COMMUNICABLE DISEASES"
},
"opdInclude": true,
"ipdInInclude": true,
"ipdOutInclude": true,
"lock": 0
},
"disease2": {
"code": 12,
"description": "Anaemia",
"diseaseType": {
"code": "NC",
"description": "4.NON-COMMUNICABLE DISEASES"
},
"opdInclude": true,
"ipdInInclude": true,
"ipdOutInclude": true,
"lock": 0
},
"disease3": null,
"note": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.\n\nWhy do we use it?\nIt is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).",
"patientCode": 5,
"age": 35,
"sex": "M",
"userID": "admin",
"visitDate": "2022-01-26T10:39:34.000Z"
}

Error:
{
"status": "INTERNAL_SERVER_ERROR",
"message": "angal.sql.thedatahasbeenupdatedbysomeoneelse",
"debugMessage": "angal.sql.thedatahasbeenupdatedbysomeoneelse",
"stackTrace": "org.isf.utils.exception.OHDataLockFailureException: org.springframework.orm.ObjectOptimisticLockingFailureException: Object of class [org.isf.opd.model.Opd] with identifier [660]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [org.isf.opd.model.Opd#660]\n\tat org.isf.utils.db.OHServiceExceptionTranslator.translateSqlExceptionToOHServiceException(OHServiceExceptionTranslator.java:38)\n\tat sun.reflect.GeneratedMethodAccessor409.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:629)\n\tat org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:618)\n\tat org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\n\tat org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)\n\tat org.isf.opd.service.OpdIoOperations$$EnhancerBySpringCGLIB$$f5bc3c92.updateOpd()\n\tat org.isf.opd.manager.OpdBrowserManager.updateOpd(OpdBrowserManager.java:176)\n\tat org.isf.opd.rest.OpdController.updateOpd(OpdController.java:160)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)\n\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)\n\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)\n\tat org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:883)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:710)\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1689)\n\tat org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:225)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)\n\tat org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)\n\tat org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.isf.security.jwt.JWTFilter.doFilter(JWTFilter.java:38)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:121)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)\n\tat org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)\n\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)\n\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:89)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)\n\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)\n\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:524)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:319)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:253)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)\n\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)\n\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)\n\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)\n\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: org.springframework.orm.ObjectOptimisticLockingFailureException: Object of class [org.isf.opd.model.Opd] with identifier [660]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [org.isf.opd.model.Opd#660]\n\tat org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:317)\n\tat org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:244)\n\tat org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:491)\n\tat org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59)\n\tat org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)\n\tat org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\n\tat org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:133)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\n\tat org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\n\tat org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)\n\tat com.sun.proxy.$Proxy181.save(Unknown Source)\n\tat org.isf.opd.service.OpdIoOperations.updateOpd(OpdIoOperations.java:158)\n\tat org.isf.opd.service.OpdIoOperations$$FastClassBySpringCGLIB$$8c8016d5.invoke()\n\tat org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)\n\tat org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)\n\tat org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)\n\tat org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)\n\tat org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\n\tat org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\n\tat org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:85)\n\tat org.isf.utils.db.OHServiceExceptionTranslator.translateSqlExceptionToOHServiceException(OHServiceExceptionTranslator.java:30)\n\t... 105 more\nCaused by: org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [org.isf.opd.model.Opd#660]\n\tat org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:322)\n\tat org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:170)\n\tat org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:69)\n\tat org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:840)\n\tat org.hibernate.internal.SessionImpl.merge(SessionImpl.java:822)\n\tat org.hibernate.internal.SessionImpl.merge(SessionImpl.java:827)\n\tat org.hibernate.jpa.spi.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:1161)\n\tat sun.reflect.GeneratedMethodAccessor796.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:347)\n\tat com.sun.proxy.$Proxy135.merge(Unknown Source)\n\tat sun.reflect.GeneratedMethodAccessor796.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:298)\n\tat com.sun.proxy.$Proxy135.merge(Unknown Source)\n\tat org.springframework.data.jpa.repository.support.SimpleJpaRepository.save(SimpleJpaRepository.java:509)\n\tat sun.reflect.GeneratedMethodAccessor731.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:503)\n\tat org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:488)\n\tat org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:460)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\n\tat org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:61)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\n\tat org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)\n\tat org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)\n\tat org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\n\tat org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)\n\t... 125 more\n",
"timestamp": {
"nano": 663000000,
"hour": 15,
"minute": 48,
"second": 16,
"year": 2022,
"month": "JANUARY",
"dayOfMonth": 26,
"dayOfWeek": "WEDNESDAY",
"dayOfYear": 26,
"monthValue": 1,
"chronology": {
"calendarType": "iso8601",
"id": "ISO"
}
}
}

Add new api POST /admissions/discharge?patientCode=XXX

call GET /admissions/current for current user

if returns 204: user has not been admitted

if patient is admitted (in-patient), it returns the admission entry

update ADM date dis

save usnig PUT /admissions

Ask for a new api which handle this logic: POST /admissions/discharge?patientCode=XXX

POST /opds error 400

Payload:
{
"date": "2022-01-27T10:42:00.000Z",
"complaint": "",
"disease": {
"code": 28,
"description": "Abortions",
"diseaseType": {
"code": "MP",
"description": "3.MATERNAL AND PERINATAL DISEASES"
},
"opdInclude": true,
"ipdInInclude": true,
"ipdOutInclude": true,
"lock": 0
},
"disease2": false,
"disease3": null,
"note": "",
"patientCode": 5,
"age": 35,
"sex": "M",
"userID": "admin",
"visitDate": "2022-01-27T10:42:00.000Z"
}

Response:
not available

Filling the disease2 field there are no errors.
I see that disease2 = false and disease3 = null. Maybe the api does not accept a boolean value?

DELETE /laboratories/314 error 400

Payload:
{
"laboratoryDTO": {
"exam": {
"code": "01.01",
"description": "1.1 HB",
"procedure": 2,
"defaultResult": ">=12 (NORMAL)",
"examtype": {
"code": "HB",
"description": "1.Haematology"
},
"lock": 2
},
"date": "2022-01-27T12:10:00.000Z",
"note": "",
"result": "4000 - 7000 (NORMAL)",
"material": "angal.lab.blood",
"patientCode": 5,
"patName": "James Acer",
"sex": "M",
"age": 35,
"examDate": "2022-01-27T12:10:00.000Z",
"inOutPatient": "R",
"code": 314
},
"laboratoryRowList": []
}

Response:
{"status":"BAD_REQUEST","message":"Laboratory code mismatch!","debugMessage":"Laboratory code mismatch!","stackTrace":"org.isf.shared.exceptions.OHAPIException\n\tat org.isf.lab.rest.LaboratoryController.updateLaboratory(LaboratoryController.java:150)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)\n\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)\n\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)\n\tat org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:883)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:710)\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1689)\n\tat org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:225)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)\n\tat org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)\n\tat org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.isf.security.jwt.JWTFilter.doFilter(JWTFilter.java:38)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:121)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)\n\tat org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)\n\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)\n\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:89)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)\n\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)\n\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)\n\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:524)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:319)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:253)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)\n\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)\n\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)\n\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)\n\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)\n\tat java.lang.Thread.run(Thread.java:748)\n","timestamp":{"nano":669000000,"hour":12,"minute":13,"second":47,"year":2022,"month":"JANUARY","dayOfMonth":27,"dayOfWeek":"THURSDAY","dayOfYear":27,"monthValue":1,"chronology":{"calendarType":"iso8601","id":"ISO"}}}

OpdDTO: Split Note field

We should update the OpdDTO in order to split the note field into those fields:

Reasons for entry;
Anamnesis;
Allergies;
Current therapies;
Prescriptions.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.