This is the API project of Open Hospital: it exposes a REST API of the business logic implemented in the openhospital-core project.
- How to build [WIP]
- How to build a war file
- How to deploy backend in docker environment
- How to generate openapi specs
- Cleaning
- How to contribute
- Community
- Code style
Table of contents generated with markdown-toc
For the moment, to build this project you should
-
fetch and build the core project
git clone https://github.com/informatici/openhospital-core.git cd openhospital-core mvn clean install -DskipTests=true
-
clone and build this project
git clone https://github.com/informatici/openhospital-api cd openhospital-api mvn clean install -DskipTests=true
-
prepare settings from each rsc/*.dist file
rsc/application.properties <- set a SHA-256 jwt token rsc/database.properties rsc/log4j2-spring.properties rsc/...
-
set target/rsc/database.properties
DB can be created with `docker-compose up` from `openhospital-core` or using a dedicated MySQL server
-
start openhospital-api (in
target
folder)# Windows java -cp "openhospital-api-0.1.0.jar;rsc/;static/" org.springframework.boot.loader.launch.JarLauncher # Linux java -cp "openhospital-api-0.1.0.jar:rsc/:static/" org.springframework.boot.loader.launch.JarLauncher
-
call services
- URL base: http://localhost:8080
- URL login: http://localhost:8080/auth/login
- URL patients: http://localhost:8080/patients
- URL swagger: http://localhost:8080/swagger-ui/index.html
You can see Swagger API Documentation at: http://localhost:8080/swagger-ui/index.html
-
enable LAN networking
# set in application.properties ... server.address=0.0.0.0 # or the machine server IP ...
- use endpoint /auth/login to login and get the token
- use the Authorize button at the top of the Swagger-UI, paste the token from step #1 and click Authorize
- close the dialog
- now all the endpoints are automatically secured and the token will be added to the request
- import postman_collection.json in your Postman installation
- Prepare settings from each
rsc/*.dist
file
### Note:
### server.address, server.port, server.servlet.context-path and server.tomcat.accesslog.* will be ignored
### jwt.token.secret <- set a SHA-256 jwt token
### api.host <- set to openhospital-api-0.1.0 (<artifactId>-<version>) or any <appname> that will match <appname>.war
rsc/application.properties
### note: if the DB is on the host, use 'host.docker.internal' as hostname
rsc/database.properties
### note: if the DB is on the host, use 'host.docker.internal' as DBSERVER
rsc/log4j2-spring.properties
### as required in [Admin Doc](https://github.com/informatici/openhospital-doc/blob/develop/doc_admin/AdminManual.adoc#settings-properties)
rsc/settings.properties
- Build war file
### OH-core must have been built and available in .m2 (Maven) repo
./mvnw clean install -DskipTests=true -P war
- (Optional) rename war to the desired
<appname>.war
:
mv /target/openhospital-api-0.1.0.war <appname>.war
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, English only) 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/index.html
You can change the deployment branch using the .env file.
NOTE:
- API should be already available from LAN at http://your-server-ip:[API_PORT]
- Swagger will be available at http://[API_HOST]:[API_PORT]/swagger-ui/index.html
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
docker compose rm --stop --volumes --force
make clean
make clean-all # remove deps/ folder
You can find the contribution guidelines in the Open Hospital wiki.
A list of open issues is available on Jira.
You can reach out to the community of contributors by joining our Slack workspace or by subscribing to our mailing list.
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...