{"id":28140966,"url":"https://github.com/nroduit/viewer-hub","last_synced_at":"2026-02-25T08:35:28.173Z","repository":{"id":272908389,"uuid":"914368931","full_name":"nroduit/viewer-hub","owner":"nroduit","description":"This is a server component with an administration interface for managing preferences, plugins and versions of Weasis with DICOM archives","archived":false,"fork":false,"pushed_at":"2025-02-27T06:18:32.000Z","size":4643,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-27T08:35:25.497Z","etag":null,"topics":["dicom-viewer","pacs","pacs-connector","vna","weasis"],"latest_commit_sha":null,"homepage":"https://weasis.org/en/viewer-hub","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nroduit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-09T13:13:23.000Z","updated_at":"2025-02-27T06:18:36.000Z","dependencies_parsed_at":"2025-02-07T16:26:01.026Z","dependency_job_id":"cb29af06-de94-40ef-8fe9-bc77829781db","html_url":"https://github.com/nroduit/viewer-hub","commit_stats":null,"previous_names":["nroduit/viewer-hub"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nroduit%2Fviewer-hub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nroduit%2Fviewer-hub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nroduit%2Fviewer-hub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nroduit%2Fviewer-hub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nroduit","download_url":"https://codeload.github.com/nroduit/viewer-hub/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254198433,"owners_count":22030966,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dicom-viewer","pacs","pacs-connector","vna","weasis"],"created_at":"2025-05-14T18:12:52.758Z","updated_at":"2026-02-25T08:35:28.168Z","avatar_url":"https://github.com/nroduit.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿\n# ViewerHub\nViewerHub allows to manage various viewers on a IT Infrastructure. \n\n## Architecture\n![high_level_architecture.svg](src/main/resources/documentation/high_level_architecture.svg)\n\nNote: Currently in our example Weasis is still using the authentication filled in the manifest to retrieve data from the pacs.\n\n## Documentation\nhttps://weasis.org/en/viewer-hub/index.html\n\n## Main functionalities\n- Launch of multiple viewers (Weasis, OHIF, 3D Slicer, MicroDicom) with several launch endpoints, including IHE IID Profile-compatible launch\n- Viewer selection rules based on a combination of list of modalities and archive\n- Creation and association of user or machine groups\n- Creation of an xml file (manifest) containing the studies, series and instances to be downloaded. This file will then be transmitted to Weasis to load the images into the viewer.\n- Manifest storage in a redis cache\n- Storage of resources required by the different versions of Weasis on Minio/S3\n- Creation of versions of Weasis launched only for certain groups\n- Live changes of Weasis properties \n- Versions management of i18n translations used by Weasis\n- Compatibility management between versions of Weasis installed on clients and versions of resources uploaded in Viewer-Hub (storage on Minio S3 + cache)\n- Pacs connectors management\n- Retrieve OAuth2 tokens on IDP to enable Weasis to authenticate on dcm4chee pacs\n- Cryptography of launch urls\n- Retrieve in Nexus the stored package versions of Weasis\n\n## Launch the different containers in local\n\nIf you want to launch all the containers:\n- Via the terminal, go to the folder \"docker\": cd docker\n\n- Launch via the following docker command:\n```\ndocker compose -p imaging_hub -f docker-compose.yml -f docker-compose.local.yml up -d\n```\n\n- Or launch via this command script:\n\n```bash\n  ./scripts/start.sh local\n```\n\n## Minio\n\nThe service \"create-bucket\" in docker-compose.local.yml will launch the creation of a bucket and an access key for ViewerHub.\n\nIt is also possible to create the bucket/access key manually:\n\n- Access to the Minio console:\n```  \nhttp://localhost:9090\n```\nwith\n\n```\nUser: viewer-hub\nPassword: viewer-hub\n```\n\n- Once logged, go to Administrator -\u003e Buckets and fill the bucket name with \"viewer-hub-bucket\", then create the bucket.\n- Then go to User -\u003e Access Keys and create the access key \"access-key\" with the secret key \"secret-key\"\n\n## Keycloak\n\nIn order to access to the keycloak console: \n```\nhttp://localhost:8085\n```\nwith\n```\nUser: admin\nPassword: admin\n```\n\nWhen launching Keycloak with the docker-compose file keycloak.yml in the docker folder, a configuration \nis directly imported in the keycloak container. This configuration will create: \n- a realm \"viewer-hub\"\n- a client \"viewer-hub\" in order for the manager to connect with the authorization grant type \"authorization_code\"\n- a user \"viewer-hub-user\" which will have a role \"admin\" associated in order to access to the different \"secured\" views of the application\n\n\n## Dcm4chee \n\nIn order to access to the pacs dcm4chee:\n```\nhttp://localhost:8080/dcm4chee-arc/ui2/en/study/study\n```\n\nAs an example, you can import the file \"dicom-example\" located in the folders \"docker\" -\u003e \"dicom-examples\" by using the dcm4chee interface.\n(\"More functions\" -\u003e \"Upload DICOM Object\" -\u003e \"Select the STOW-RS server\": \"DCM4CHEE\")\n\n## Nexus\n\n- Nexus console accessible at this address: http://localhost:8086/\n\n## Orthanc\n\nIn order to access to the pacs orthanc:\n```\nhttp://localhost:8042\n```\n\nUse the following credentials:\n- User: `orthanc-user`\n- Password: `password`\n\nAs an example, you can import the file \"dicom-example\" located in the folders \"docker -\u003e dicom-examples\" by using the orthanc interface.\n(\"Upload\" -\u003e \"Select files to upload\" and then \"Start the upload\")\n\n## Run configuration\n\n- Configure the run configuration and add in VM options the following properties:\n```\n  -Duser.timezone=UTC\n  -DENVIRONMENT=local\n  -DEUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE=http://localhost:8761/eureka\n  -DREGION=local\n  -DDATACENTER=local\n  -Dserver.port=8081\n  -Dmanagement.server.port=19001\n  -DBACKEND_URI=http://localhost:8081\n  -DDB_HOST=localhost\n  -DDB_PORT=45101\n  -DDB_NAME=viewer-hub\n  -DDB_USER=viewer-hub\n  -DDB_PASSWORD=viewer-hub\n  -DCONFIGSERVER_URI=http://localhost:8888\n  -DS3_ACCESS_KEY=access-key\n  -DS3_SECRET_KEY=secret-key\n  -DS3_ENDPOINT=http://localhost:9080\n  -DS3_BUCKET_NAME=viewer-hub-bucket\n  -DBACKEND_URI=http://localhost:8081\n```\n- Then clean/install + run...\n\n## Viewer Hub\n\nIn order to access to viewer-hub: \n```\nhttp://localhost:8081\n```\nwith\n\n```\nUser: viewer-hub-user\nPassword: password\n```\n\n## Eureka\n\nOnce ViewerHub launched, it is possible to see the registration of the service at this address:\n```\nhttp://localhost:8761\n```\n\n## Viewer-Hub Gateway\n\nViewerHub gateway is used to handle different type of authentication in order for viewers to get authentified when requesting data from the pacs.\n\nViewerHub Gateway handles basic authentication and oAuth2 (client credential and authorization code flow).\n\nIn order to run Viewer-hub gateway for the viewers Ohif, 3D Slicer, Microdicom: https://github.com/nroduit/viewer-hub-gateway\n\n## Local Testing\n\nIf there is an issue with the cors when testing and launching below urls in local, open Chrome without cors: in cmd =\u003e \"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe\" --user-data-dir=\"C:\\chrome-dev-data\" --disable-web-security\n\n## Launch Weasis\n\nSpring profile \"connectors-dicom-no-gtw\":\n\nDcm4chee:\n```\nhttp://localhost:8081/display?viewer=WEASIS\u0026studyUID=1.3.12.2.1107.5.1.4.54023.30000004093013443132800000021\u0026archive=dcm4chee-local\n```\n\nOrthanc:\n```\nhttp://localhost:8081/display?viewer=WEASIS\u0026studyUID=1.3.12.2.1107.5.1.4.54023.30000004093013443132800000021\u0026archive=orthanc-local\n```\n\nSpring profile \"connectors-dicom-gtw\":\n\nDcm4chee:\n```\nhttp://localhost:8081/display/auth?viewer=WEASIS\u0026studyUID=1.3.12.2.1107.5.1.4.54023.30000004093013443132800000021\u0026archive=dcm4chee-local\n```\n\nOrthanc:\n```\nhttp://localhost:8081/display/auth?viewer=WEASIS\u0026studyUID=1.3.12.2.1107.5.1.4.54023.30000004093013443132800000021\u0026archive=orthanc-local\n```\n\n## Launch Ohif\n\nSpring profile \"connectors-dicom-no-gtw\":\n\nDcm4chee \n```\nhttp://localhost:8081/display?viewer=OHIF\u0026studyUID=1.3.12.2.1107.5.1.4.54023.30000004093013443132800000021\u0026archive=dcm4chee-local\n```\n\nOrthanc \n```\nhttp://localhost:8081/display?viewer=OHIF\u0026studyUID=1.3.12.2.1107.5.1.4.54023.30000004093013443132800000021\u0026archive=orthanc-local\n```\n\nSpring profile \"connectors-dicom-gtw\" or \"connectors-dicomweb-gtw\":\n\nDcm4chee\n```\nhttp://localhost:8081/display/auth?viewer=OHIF\u0026studyUID=1.3.12.2.1107.5.1.4.54023.30000004093013443132800000021\u0026archive=dcm4chee-local\n```\n\nOrthanc\n```\nhttp://localhost:8081/display/auth?viewer=OHIF\u0026studyUID=1.3.12.2.1107.5.1.4.54023.30000004093013443132800000021\u0026archive=orthanc-local\n```\n\n## Launch 3D Slicer\n\nYou need to install 3D Slicer in your machine to use it.\n\nSpring profile \"connectors-dicom-gtw\" or \"connectors-dicomweb-gtw\":\n\nDcm4chee\n```\nhttp://localhost:8081/display/auth?viewer=SLICER\u0026studyUID=1.3.12.2.1107.5.1.4.54023.30000004093013443132800000021\u0026archive=dcm4chee-local\n```\n\nOrthanc\n```\nhttp://localhost:8081/display/auth?viewer=SLICER\u0026studyUID=1.3.12.2.1107.5.1.4.54023.30000004093013443132800000021\u0026archive=orthanc-local\n```\n\n## Launch Micro Dicom\n\nYou need to install Micro Dicom in your machine to use it.\nYou also need to add the MICRODICOM AET to the Dcm4chee pacs and to configure the Dicom server corresponding to the Dcm4chee pacs in MicroDicom (localhost:11112, aet DCM4CHEE)\n\nSpring profile \"connectors-dicom-no-gtw\":\n\nDcm4chee\n```\nhttp://localhost:8081/display?viewer=MICRODICOM\u0026studyUID=1.3.12.2.1107.5.1.4.54023.30000004093013443132800000021\u0026archive=dcm4chee-local\n```\n\nOrthanc\n```\nhttp://localhost:8081/display?viewer=MICRODICOM\u0026studyUID=1.3.12.2.1107.5.1.4.54023.30000004093013443132800000021\u0026archive=orthanc-local\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnroduit%2Fviewer-hub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnroduit%2Fviewer-hub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnroduit%2Fviewer-hub/lists"}