# Build an online consultancy PACS server?

**URL:** https://discourse.orthanc-server.org/t/build-an-online-consultancy-pacs-server/5406
**Category:** General
**Created:** [December 8, 2024, 10:19pm UTC](https://discourse.orthanc-server.org/t/build-an-online-consultancy-pacs-server/5406 "2024-12-08T22:19:18Z")
**Posts on this page:** 12
**Page:** 1

<div class="post-metadata">

### Author: ![oshouip](https://discourse.orthanc-server.org/user_avatar/discourse.orthanc-server.org/oshouip/32/2280_2.png) [@oshouip](https://discourse.orthanc-server.org/u/oshouip)
#### Post date: [December 8, 2024, 10:19pm UTC](https://discourse.orthanc-server.org/t/build-an-online-consultancy-pacs-server/5406/1 "2024-12-08T22:19:18Z")

</div>

Hi every one  
I am trying to build a small community between my and my fellow cardiologists to share opnion regarding cases.  
SO I have my own VPS with Ubuntu and orthanc up and ruining!  
I have two main issues:  
first:  
I cannot connect different modalities as all of these modalities (ECHO machines) are on local netwrok how to setup their IP to be visible to an online Orthanc version? is there is any work around?

second:  
Is there is any pluging or online webviewer that support play and pause to see the vedio runing of either ECHO or cath files?

Thanks in advance

---

<div class="post-metadata">

### Author: ![bcrickboom](https://discourse.orthanc-server.org/letter_avatar_proxy/v4/letter/b/e274bd/32.png) [@bcrickboom](https://discourse.orthanc-server.org/u/bcrickboom)
#### Post date: [December 9, 2024, 8:15am UTC](https://discourse.orthanc-server.org/t/build-an-online-consultancy-pacs-server/5406/2 "2024-12-09T08:15:03Z")

</div>

Hello,

For the public server, you can get some inspiration here:

> **[orthanc-auth-service/minimal-setup/keycloak at main ·...](https://github.com/orthanc-team/orthanc-auth-service/tree/main/minimal-setup/keycloak)**
>
> Web service to run next to orthanc to handle sharing of studies - orthanc-team/orthanc-auth-service

For the local modalities, you probably should set up some local Orthanc to act as proxies between the local DICOM components (not secure) and the cloud server.  
So that would be something like:

DICOM modality —DICOM—\> local Orthanc —DICOMweb—\> cloud Orthanc

I hope this helps,

---

<div class="post-metadata">

### Author: ![oshouip](https://discourse.orthanc-server.org/user_avatar/discourse.orthanc-server.org/oshouip/32/2280_2.png) [@oshouip](https://discourse.orthanc-server.org/u/oshouip)
#### Post date: [December 10, 2024, 4:52am UTC](https://discourse.orthanc-server.org/t/build-an-online-consultancy-pacs-server/5406/3 "2024-12-10T04:52:35Z")

</div>

Thank you very much for your response, and sorry for my weak technical background such a cardiologist here! 😀  
How to adjust local Orthanc to act as proxies?  
If there is any tutorial?

---

<div class="post-metadata">

### Author: ![bcrickboom](https://discourse.orthanc-server.org/letter_avatar_proxy/v4/letter/b/e274bd/32.png) [@bcrickboom](https://discourse.orthanc-server.org/u/bcrickboom)
#### Post date: [December 10, 2024, 8:22am UTC](https://discourse.orthanc-server.org/t/build-an-online-consultancy-pacs-server/5406/4 "2024-12-10T08:22:44Z")

</div>

Hello,

Here is the tool to use:

> <https://github.com/orthanc-team/python-orthanc-tools/blob/main/orthanc_tools/orthanc_forwarder.py>

The details regarding the right way to deploy depends on the context…

---

<div class="post-metadata">

### Author: ![benjamin.golinvaux](https://discourse.orthanc-server.org/user_avatar/discourse.orthanc-server.org/benjamin.golinvaux/32/1508_2.png) [@benjamin.golinvaux](https://discourse.orthanc-server.org/u/benjamin.golinvaux)
#### Post date: [December 10, 2024, 1:44pm UTC](https://discourse.orthanc-server.org/t/build-an-online-consultancy-pacs-server/5406/5 "2024-12-10T13:44:58Z")

</div>

Hello,

The general solution would involve, in your case:

- your Orthanc running locally in your premises
  - If you do not have one, you will to setup a local Orthanc that will receive the DICOM from your local modalities. It can be installed on a Windows PC, or you can use a VM, a Docker container

- the remote Orthanc in the cloud
- A third part, that is a Python script that is also running locally, on the same network (ideally, same machine) as your local Orthanc
  - This script will watch the local Orthanc and every time a new instance is stored, it will be forwarded, through DICOMWeb, to the cloud Orthanc.

This script should be rather simple to write : it’s a call to the function that Benoît highlighted above, where you need to supply it with the information required to:

- read from the local Orthanc (IP address, user/password, HTTP port)
- write to the cloud Orhanc (same: IP+port and credentials) using TLS (https)

It should be as simple as to launch these few lines of Python and let the script run· (@bcrickboom please correct me if I am talking nonsense)

Once you have validated that it works, you should package this script properly, for instance in a container , so that it runs all the time, can restart automatically if it fails / in case of reboot, etc.

It’s more of a configuration task than a coding task, but there are a few moving parts. If you want to give it a go, we can try to help!

---

<div class="post-metadata">

### Author: ![oshouip](https://discourse.orthanc-server.org/user_avatar/discourse.orthanc-server.org/oshouip/32/2280_2.png) [@oshouip](https://discourse.orthanc-server.org/u/oshouip)
#### Post date: [December 11, 2024, 5:32am UTC](https://discourse.orthanc-server.org/t/build-an-online-consultancy-pacs-server/5406/6 "2024-12-11T05:32:57Z")

</div>

I would really appreciate your help  
Tell me how we can proceed?  
My situation now is three local sites with Orthanc on windows  
and one cloud VPs on Hostiger with ubuntu and Orthanc installed

---

<div class="post-metadata">

### Author: ![benjamin.golinvaux](https://discourse.orthanc-server.org/user_avatar/discourse.orthanc-server.org/benjamin.golinvaux/32/1508_2.png) [@benjamin.golinvaux](https://discourse.orthanc-server.org/u/benjamin.golinvaux)
#### Post date: [December 11, 2024, 7:32am UTC](https://discourse.orthanc-server.org/t/build-an-online-consultancy-pacs-server/5406/7 "2024-12-11T07:32:14Z")

</div>

Hello

I have written a Python script that will perform the forwarding from two source Orhancs to a remote DICOMweb Orthanc, as well as the installation procedure. It should work on any OS, but the script and installation instructions have been tested on Windows.

> **[GitHub - bgolinvaux/orthanc-forwarder-poc: This example demonstrates how to use the...](https://github.com/bgolinvaux/orthanc-forwarder-poc)**
>
> This example demonstrates how to use the \`OrthancForwarder\` class from the \`python-orthanc-tools\` package (from Orthanc Team)

Please let us know if you have questions.

HTH

---

<div class="post-metadata">

### Author: ![benjamin.golinvaux](https://discourse.orthanc-server.org/user_avatar/discourse.orthanc-server.org/benjamin.golinvaux/32/1508_2.png) [@benjamin.golinvaux](https://discourse.orthanc-server.org/u/benjamin.golinvaux)
#### Post date: [December 11, 2024, 8:22am UTC](https://discourse.orthanc-server.org/t/build-an-online-consultancy-pacs-server/5406/8 "2024-12-11T08:22:52Z")

</div>

You will also obviously have to adapt the script to deal with three source servers instead of two! Modifying the `SOURCE_CONFIGS` list should be enough.

---

<div class="post-metadata">

### Author: ![oshouip](https://discourse.orthanc-server.org/user_avatar/discourse.orthanc-server.org/oshouip/32/2280_2.png) [@oshouip](https://discourse.orthanc-server.org/u/oshouip)
#### Post date: [December 20, 2024, 11:09pm UTC](https://discourse.orthanc-server.org/t/build-an-online-consultancy-pacs-server/5406/9 "2024-12-20T23:09:44Z")

</div>

> [@benjamin.golinvaux](#):
>
> will perform the forwarding from two source Orhancs to a remote DICOMweb Orthanc, as well as the installation procedure. It should work on any OS, but the script and installation instructions have been tes

Thank you very much for your help.  
I am trying to simplifiy this for me as I am not technical!  
Can I have a local orthanc server on my sites and any dicom viewer ex Radiant, then to connect radiant to the cloud Orthanc.  
And doctor choose the study he wants to share through the DICOM viewer then upload it to the cloud Orthanc?

My main concern is that the local sites have no static IP address. How can I solve this?  
Hoe to connect to cloud Orthanc from local site with no static IP?!

---

<div class="post-metadata">

### Author: ![oshouip](https://discourse.orthanc-server.org/user_avatar/discourse.orthanc-server.org/oshouip/32/2280_2.png) [@oshouip](https://discourse.orthanc-server.org/u/oshouip)
#### Post date: [December 27, 2024, 5:21pm UTC](https://discourse.orthanc-server.org/t/build-an-online-consultancy-pacs-server/5406/10 "2024-12-27T17:21:37Z")

</div>

Any tutorial to setup a client with no static IP?

---

<div class="post-metadata">

### Author: ![oshouip](https://discourse.orthanc-server.org/user_avatar/discourse.orthanc-server.org/oshouip/32/2280_2.png) [@oshouip](https://discourse.orthanc-server.org/u/oshouip)
#### Post date: [December 27, 2024, 5:53pm UTC](https://discourse.orthanc-server.org/t/build-an-online-consultancy-pacs-server/5406/11 "2024-12-27T17:53:44Z")

</div>

> [@benjamin.golinvaux](#):
>
> oud Orhanc (same: IP+port and credentials) u

I think, if connected my local DICOM viewer to the cloud Orthanc may help to select the required study to be uploaded and not upload all studies

---

<div class="post-metadata">

### Author: ![benjamin.golinvaux](https://discourse.orthanc-server.org/user_avatar/discourse.orthanc-server.org/benjamin.golinvaux/32/1508_2.png) [@benjamin.golinvaux](https://discourse.orthanc-server.org/u/benjamin.golinvaux)
#### Post date: [January 3, 2025, 5:58am UTC](https://discourse.orthanc-server.org/t/build-an-online-consultancy-pacs-server/5406/12 "2025-01-03T05:58:58Z")

</div>

Hello oshouip

Did you manage to solve your connection issues? If not, can you please recap?

If you use DICOMWeb (or C-Get), your local viewer or Orthancs do not need to have a static IP and/or be reachable from the cloud. You can simply configure the local Orthanc (or RadiAnt) to use the cloud Orthanc URL. See [the DICOMWeb plugin documentation](https://orthanc.uclouvain.be/book/plugins/dicomweb.html) for the Orthanc side.

HTH
