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

Commit 753356c

Browse files
authored
Merge pull request #20 from num-codex/dev/fhir-server
add overview of reverse proxy architecture
2 parents 5f6cbd9 + ebfec4e commit 753356c

File tree

3 files changed

+159
-0
lines changed

3 files changed

+159
-0
lines changed

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ This is the target architecture for the NUM-Knoten v2 containing also the possib
1616

1717
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.
1818

19+
### NUM-Knoten reverse proxy and port mappings
20+
21+
![NUM-Knoten v2 NGINX](img/num-codex-ap6-nk-v2-final-nginx.png)
22+
23+
This is an overview of the reverse proxy architecture and the respective local port mappings for the NUM-Knoten v2
24+
1925
## Deployment on Single Host
2026

2127
### System requirements
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
<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">
2+
<diagram id="MG7fdo5zGahb10Hoo4-Q" name="Page-1">
3+
<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">
4+
<root>
5+
<mxCell id="0"/>
6+
<mxCell id="1" parent="0"/>
7+
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-31" value="" style="group;fontSize=12;" parent="1" vertex="1" connectable="0">
8+
<mxGeometry x="50" y="60" width="990" height="410" as="geometry"/>
9+
</mxCell>
10+
<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">
11+
<mxGeometry x="20" width="970" height="390" as="geometry"/>
12+
</mxCell>
13+
<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">
14+
<mxGeometry x="485" y="68" width="90" height="80" as="geometry"/>
15+
</mxCell>
16+
<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">
17+
<mxGeometry x="200" y="65" width="90" height="80" as="geometry"/>
18+
</mxCell>
19+
<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">
20+
<mxGeometry x="605" y="69" width="90" height="80" as="geometry"/>
21+
</mxCell>
22+
<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">
23+
<mxGeometry x="340" y="65" width="90" height="80" as="geometry"/>
24+
</mxCell>
25+
<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">
26+
<mxGeometry x="55" y="65" width="90" height="80" as="geometry"/>
27+
</mxCell>
28+
<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">
29+
<mxGeometry x="870" y="68" width="90" height="80" as="geometry"/>
30+
</mxCell>
31+
<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">
32+
<mxGeometry width="50" height="50" relative="1" as="geometry">
33+
<mxPoint x="725" y="99.12" as="sourcePoint"/>
34+
<mxPoint x="765" y="99.00235294117658" as="targetPoint"/>
35+
</mxGeometry>
36+
</mxCell>
37+
<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">
38+
<mxGeometry x="360" y="300" width="250" height="70" as="geometry"/>
39+
</mxCell>
40+
<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">
41+
<mxGeometry x="730" y="69" width="90" height="80" as="geometry"/>
42+
</mxCell>
43+
<mxCell id="Vwow8PAGsQpxMxs0d7Oy-58" value="" style="endArrow=classic;html=1;" parent="Vwow8PAGsQpxMxs0d7Oy-31" edge="1">
44+
<mxGeometry width="50" height="50" relative="1" as="geometry">
45+
<mxPoint x="290" y="105" as="sourcePoint"/>
46+
<mxPoint x="340" y="105" as="targetPoint"/>
47+
</mxGeometry>
48+
</mxCell>
49+
<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">
50+
<mxGeometry width="50" height="50" relative="1" as="geometry">
51+
<mxPoint x="300" y="115" as="sourcePoint"/>
52+
<mxPoint x="490" y="70" as="targetPoint"/>
53+
<Array as="points">
54+
<mxPoint x="400" y="20"/>
55+
<mxPoint x="480" y="30"/>
56+
</Array>
57+
</mxGeometry>
58+
</mxCell>
59+
<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">
60+
<mxGeometry width="50" height="50" relative="1" as="geometry">
61+
<mxPoint x="300" y="85" as="sourcePoint"/>
62+
<mxPoint x="500" y="80" as="targetPoint"/>
63+
<Array as="points">
64+
<mxPoint x="400" y="10"/>
65+
<mxPoint x="570" y="20"/>
66+
</Array>
67+
</mxGeometry>
68+
</mxCell>
69+
<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">
70+
<mxGeometry width="50" height="50" relative="1" as="geometry">
71+
<mxPoint x="300" y="85" as="sourcePoint"/>
72+
<mxPoint x="500" y="80" as="targetPoint"/>
73+
<Array as="points"/>
74+
</mxGeometry>
75+
</mxCell>
76+
<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">
77+
<mxGeometry width="50" height="50" relative="1" as="geometry">
78+
<mxPoint x="705" y="119" as="sourcePoint"/>
79+
<mxPoint x="740" y="119" as="targetPoint"/>
80+
</mxGeometry>
81+
</mxCell>
82+
<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">
83+
<mxGeometry width="50" height="50" relative="1" as="geometry">
84+
<mxPoint x="170" y="290.03999999999996" as="sourcePoint"/>
85+
<mxPoint x="225" y="290" as="targetPoint"/>
86+
<Array as="points"/>
87+
</mxGeometry>
88+
</mxCell>
89+
<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">
90+
<mxGeometry width="50" height="50" relative="1" as="geometry">
91+
<mxPoint x="370" y="310" as="sourcePoint"/>
92+
<mxPoint x="260" y="155" as="targetPoint"/>
93+
<Array as="points"/>
94+
</mxGeometry>
95+
</mxCell>
96+
<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">
97+
<mxGeometry width="50" height="50" relative="1" as="geometry">
98+
<mxPoint x="490" y="310" as="sourcePoint"/>
99+
<mxPoint x="400" y="155" as="targetPoint"/>
100+
<Array as="points"/>
101+
</mxGeometry>
102+
</mxCell>
103+
<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">
104+
<mxGeometry width="50" height="50" relative="1" as="geometry">
105+
<mxPoint x="514" y="309.03999999999996" as="sourcePoint"/>
106+
<mxPoint x="545" y="158" as="targetPoint"/>
107+
<Array as="points"/>
108+
</mxGeometry>
109+
</mxCell>
110+
<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">
111+
<mxGeometry x="240" y="241" width="90" height="20" as="geometry"/>
112+
</mxCell>
113+
<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">
114+
<mxGeometry x="346" y="241" width="90" height="20" as="geometry"/>
115+
</mxCell>
116+
<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">
117+
<mxGeometry x="475" y="241" width="40" height="20" as="geometry"/>
118+
</mxCell>
119+
<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">
120+
<mxGeometry x="600" y="241" width="40" height="20" as="geometry"/>
121+
</mxCell>
122+
<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">
123+
<mxGeometry x="200" y="45" width="90" height="20" as="geometry"/>
124+
</mxCell>
125+
<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">
126+
<mxGeometry x="340" y="45" width="90" height="20" as="geometry"/>
127+
</mxCell>
128+
<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">
129+
<mxGeometry x="485" y="49" width="90" height="20" as="geometry"/>
130+
</mxCell>
131+
<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">
132+
<mxGeometry x="620" y="49" width="90" height="20" as="geometry"/>
133+
</mxCell>
134+
<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">
135+
<mxGeometry x="730" y="48" width="90" height="20" as="geometry"/>
136+
</mxCell>
137+
<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">
138+
<mxGeometry x="870" y="48" width="90" height="20" as="geometry"/>
139+
</mxCell>
140+
<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">
141+
<mxGeometry width="50" height="50" relative="1" as="geometry">
142+
<mxPoint x="540" y="480" as="sourcePoint"/>
143+
<mxPoint x="531" y="460" as="targetPoint"/>
144+
<Array as="points"/>
145+
</mxGeometry>
146+
</mxCell>
147+
<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">
148+
<mxGeometry x="480" y="480" width="130" height="20" as="geometry"/>
149+
</mxCell>
150+
</root>
151+
</mxGraphModel>
152+
</diagram>
153+
</mxfile>
69.7 KB
Loading

0 commit comments

Comments
 (0)