Skip to content
This repository has been archived by the owner on Jul 7, 2021. It is now read-only.

Commit

Permalink
Merge pull request #20 from num-codex/dev/fhir-server
Browse files Browse the repository at this point in the history
add overview of reverse proxy architecture
  • Loading branch information
makampf committed Feb 16, 2021
2 parents 5f6cbd9 + ebfec4e commit 753356c
Show file tree
Hide file tree
Showing 3 changed files with 159 additions and 0 deletions.
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ This is the target architecture for the NUM-Knoten v2 containing also the possib

Note: The FHIR-GW also provides interfaces for Apache Kafka and for filling a FHIR server with all resources in parallel (shown with dotted lines). Though, the default and official supported way is shown with solid lines.

### NUM-Knoten reverse proxy and port mappings

![NUM-Knoten v2 NGINX](img/num-codex-ap6-nk-v2-final-nginx.png)

This is an overview of the reverse proxy architecture and the respective local port mappings for the NUM-Knoten v2

## Deployment on Single Host

### System requirements
Expand Down
153 changes: 153 additions & 0 deletions img/num-codex-ap6-nk-v2-final-nginx.drawio
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
<mxfile host="65bd71144e" modified="2021-02-16T10:54:09.632Z" agent="5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Code/1.53.2 Chrome/87.0.4280.141 Electron/11.2.1 Safari/537.36" etag="Os0C6FjkmoWGTFAtk_18" version="14.2.4" type="embed">
<diagram id="MG7fdo5zGahb10Hoo4-Q" name="Page-1">
<mxGraphModel dx="1682" dy="739" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="600" pageHeight="300" background="#FFFFFF" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-31" value="" style="group;fontSize=12;" parent="1" vertex="1" connectable="0">
<mxGeometry x="50" y="60" width="990" height="410" as="geometry"/>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-32" value="&lt;span style=&quot;font-size: 14px&quot;&gt;Server (Virtual Machine)&lt;/span&gt;" style="whiteSpace=wrap;html=1;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;" parent="Vwow8PAGsQpxMxs0d7Oy-31" vertex="1">
<mxGeometry x="20" width="970" height="390" as="geometry"/>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-47" value="FHIR-Server (Blaze/HAPI)" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;align=center;size=10;" parent="Vwow8PAGsQpxMxs0d7Oy-31" vertex="1">
<mxGeometry x="485" y="68" width="90" height="80" as="geometry"/>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-49" value="FHIR&lt;br&gt;Gateway" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;align=center;size=10;" parent="Vwow8PAGsQpxMxs0d7Oy-31" vertex="1">
<mxGeometry x="200" y="65" width="90" height="80" as="geometry"/>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-50" value="FHIR-DB&lt;br&gt;(PostgreSQL)" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;align=center;" parent="Vwow8PAGsQpxMxs0d7Oy-31" vertex="1">
<mxGeometry x="605" y="69" width="90" height="80" as="geometry"/>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-51" value="gPAS" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;align=center;size=10;" parent="Vwow8PAGsQpxMxs0d7Oy-31" vertex="1">
<mxGeometry x="340" y="65" width="90" height="80" as="geometry"/>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-52" value="odm-to-fhir" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;align=center;size=10;" parent="Vwow8PAGsQpxMxs0d7Oy-31" vertex="1">
<mxGeometry x="55" y="65" width="90" height="80" as="geometry"/>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-53" value="i2b2" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;align=center;size=10;" parent="Vwow8PAGsQpxMxs0d7Oy-31" vertex="1">
<mxGeometry x="870" y="68" width="90" height="80" as="geometry"/>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-54" value="" style="endArrow=classic;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;exitPerimeter=0;" parent="Vwow8PAGsQpxMxs0d7Oy-31" source="Vwow8PAGsQpxMxs0d7Oy-50" target="Vwow8PAGsQpxMxs0d7Oy-57" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="725" y="99.12" as="sourcePoint"/>
<mxPoint x="765" y="99.00235294117658" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-55" value="NGINX - Reverse-Proxy" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;align=center;size=10;" parent="Vwow8PAGsQpxMxs0d7Oy-31" vertex="1">
<mxGeometry x="360" y="300" width="250" height="70" as="geometry"/>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-57" value="i2b2-DB (PostgreSQL)" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;align=center;" parent="Vwow8PAGsQpxMxs0d7Oy-31" vertex="1">
<mxGeometry x="730" y="69" width="90" height="80" as="geometry"/>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-58" value="" style="endArrow=classic;html=1;" parent="Vwow8PAGsQpxMxs0d7Oy-31" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="290" y="105" as="sourcePoint"/>
<mxPoint x="340" y="105" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-59" value="" style="endArrow=classic;html=1;exitX=0;exitY=0;exitDx=90;exitDy=10;exitPerimeter=0;curved=1;" parent="Vwow8PAGsQpxMxs0d7Oy-31" source="Vwow8PAGsQpxMxs0d7Oy-49" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="115" as="sourcePoint"/>
<mxPoint x="490" y="70" as="targetPoint"/>
<Array as="points">
<mxPoint x="400" y="20"/>
<mxPoint x="480" y="30"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-60" value="" style="endArrow=classic;html=1;exitX=0;exitY=0;exitDx=85;exitDy=5;exitPerimeter=0;entryX=0.145;entryY=0;entryDx=0;entryDy=4.35;entryPerimeter=0;curved=1;" parent="Vwow8PAGsQpxMxs0d7Oy-31" source="Vwow8PAGsQpxMxs0d7Oy-49" target="Vwow8PAGsQpxMxs0d7Oy-50" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="85" as="sourcePoint"/>
<mxPoint x="500" y="80" as="targetPoint"/>
<Array as="points">
<mxPoint x="400" y="10"/>
<mxPoint x="570" y="20"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-61" value="" style="endArrow=classic;html=1;exitX=1;exitY=0.438;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0;entryDx=0;entryDy=35;entryPerimeter=0;" parent="Vwow8PAGsQpxMxs0d7Oy-31" source="Vwow8PAGsQpxMxs0d7Oy-52" target="Vwow8PAGsQpxMxs0d7Oy-49" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="85" as="sourcePoint"/>
<mxPoint x="500" y="80" as="targetPoint"/>
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-62" value="" style="endArrow=classic;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;" parent="Vwow8PAGsQpxMxs0d7Oy-31" source="Vwow8PAGsQpxMxs0d7Oy-57" target="Vwow8PAGsQpxMxs0d7Oy-53" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="705" y="119" as="sourcePoint"/>
<mxPoint x="740" y="119" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-63" value="" style="endArrow=classic;html=1;exitX=0;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0;entryDx=50;entryDy=80;entryPerimeter=0;" parent="Vwow8PAGsQpxMxs0d7Oy-31" source="Vwow8PAGsQpxMxs0d7Oy-55" target="Vwow8PAGsQpxMxs0d7Oy-49" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="170" y="290.03999999999996" as="sourcePoint"/>
<mxPoint x="225" y="290" as="targetPoint"/>
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-65" value="" style="endArrow=classic;html=1;exitX=0.312;exitY=-0.037;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0;entryDx=50;entryDy=80;entryPerimeter=0;" parent="Vwow8PAGsQpxMxs0d7Oy-31" source="Vwow8PAGsQpxMxs0d7Oy-55" target="Vwow8PAGsQpxMxs0d7Oy-51" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="370" y="310" as="sourcePoint"/>
<mxPoint x="260" y="155" as="targetPoint"/>
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-66" value="" style="endArrow=classic;html=1;exitX=0.576;exitY=-0.012;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0;entryDx=50;entryDy=80;entryPerimeter=0;" parent="Vwow8PAGsQpxMxs0d7Oy-31" source="Vwow8PAGsQpxMxs0d7Oy-55" target="Vwow8PAGsQpxMxs0d7Oy-47" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="490" y="310" as="sourcePoint"/>
<mxPoint x="400" y="155" as="targetPoint"/>
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-67" value="" style="endArrow=classic;html=1;exitX=0.804;exitY=-0.012;exitDx=0;exitDy=0;exitPerimeter=0;" parent="Vwow8PAGsQpxMxs0d7Oy-31" source="Vwow8PAGsQpxMxs0d7Oy-55" target="Vwow8PAGsQpxMxs0d7Oy-53" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="514" y="309.03999999999996" as="sourcePoint"/>
<mxPoint x="545" y="158" as="targetPoint"/>
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-68" value="/fhir-gw/fhir" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="Vwow8PAGsQpxMxs0d7Oy-31" vertex="1">
<mxGeometry x="240" y="241" width="90" height="20" as="geometry"/>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-69" value="/gpas-web" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="Vwow8PAGsQpxMxs0d7Oy-31" vertex="1">
<mxGeometry x="346" y="241" width="90" height="20" as="geometry"/>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-70" value="/fhir" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="Vwow8PAGsQpxMxs0d7Oy-31" vertex="1">
<mxGeometry x="475" y="241" width="40" height="20" as="geometry"/>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-71" value="/i2b2" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="Vwow8PAGsQpxMxs0d7Oy-31" vertex="1">
<mxGeometry x="600" y="241" width="40" height="20" as="geometry"/>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-78" value=":18080" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="Vwow8PAGsQpxMxs0d7Oy-31" vertex="1">
<mxGeometry x="200" y="45" width="90" height="20" as="geometry"/>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-79" value=":18081" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="Vwow8PAGsQpxMxs0d7Oy-31" vertex="1">
<mxGeometry x="340" y="45" width="90" height="20" as="geometry"/>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-80" value=":8081" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="Vwow8PAGsQpxMxs0d7Oy-31" vertex="1">
<mxGeometry x="485" y="49" width="90" height="20" as="geometry"/>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-82" value=":15432" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="Vwow8PAGsQpxMxs0d7Oy-31" vertex="1">
<mxGeometry x="620" y="49" width="90" height="20" as="geometry"/>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-83" value=":25432" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="Vwow8PAGsQpxMxs0d7Oy-31" vertex="1">
<mxGeometry x="730" y="48" width="90" height="20" as="geometry"/>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-84" value=":80" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="Vwow8PAGsQpxMxs0d7Oy-31" vertex="1">
<mxGeometry x="870" y="48" width="90" height="20" as="geometry"/>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-73" value="" style="endArrow=classic;html=1;entryX=0;entryY=0;entryDx=130;entryDy=70;entryPerimeter=0;" parent="1" target="Vwow8PAGsQpxMxs0d7Oy-55" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="540" y="480" as="sourcePoint"/>
<mxPoint x="531" y="460" as="targetPoint"/>
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-74" value="Incoming Requests&lt;br&gt;https://&amp;lt;domain-or-ip&amp;gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="480" y="480" width="130" height="20" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
Binary file added img/num-codex-ap6-nk-v2-final-nginx.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 753356c

Please sign in to comment.