docs(thesis): add presentation #6

Merged
jlobbes merged 2 commits from submission into master 2023-09-12 17:12:48 +01:00
8 changed files with 313 additions and 212 deletions
Showing only changes of commit bb7e0c0e20 - Show all commits

View File

@ -1292,3 +1292,12 @@ The {MEWS} in association with a call-out algorithm is a useful and appropriate
date = {2005-02}, date = {2005-02},
langid = {english}, langid = {english},
} }
@online{noauthor_withings_nodate,
title = {Withings {API} Reference},
url = {https://developer.withings.com/api-reference},
titleaddon = {Withings {API} Reference},
urldate = {2023-09-11},
langid = {english},
file = {Snapshot:/home/ulinja/Zotero/storage/CG2II4SI/api-reference.html:text/html},
}

View File

@ -1,22 +1,22 @@
<mxfile host="app.diagrams.net" modified="2023-08-20T22:49:49.811Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36" etag="PkJOclFEVI5TEfIjMddY" version="21.6.8" type="device"> <mxfile host="app.diagrams.net" modified="2023-09-11T14:10:39.106Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36" etag="MSmBx3_fIc_8iHbTZl8x" version="21.7.4" type="device">
<diagram id="f6zhRbDmt8kIpFGfOheX" name="Page-1"> <diagram id="f6zhRbDmt8kIpFGfOheX" name="Page-1">
<mxGraphModel dx="1412" dy="742" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> <mxGraphModel dx="1661" dy="804" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root> <root>
<mxCell id="0" /> <mxCell id="0" />
<mxCell id="1" parent="0" /> <mxCell id="1" parent="0" />
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-14" value="medwings" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;fontStyle=1;container=0;" parent="1" vertex="1"> <mxCell id="V-qh-Gk3nv3sh-DeGmF5-14" value="medwings" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;fontStyle=1;container=0;fillColor=#F5F5F5;fontColor=#1A2236;strokeColor=#151B2B;" parent="1" vertex="1">
<mxGeometry x="134" y="250" width="570" height="330" as="geometry" /> <mxGeometry x="134" y="250" width="570" height="330" as="geometry" />
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-12" value="" style="group" parent="1" vertex="1" connectable="0"> <mxCell id="V-qh-Gk3nv3sh-DeGmF5-12" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="94" y="620" width="280" height="250" as="geometry" /> <mxGeometry x="94" y="620" width="280" height="250" as="geometry" />
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-1" value="authentication" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;fontStyle=1" parent="V-qh-Gk3nv3sh-DeGmF5-12" vertex="1"> <mxCell id="V-qh-Gk3nv3sh-DeGmF5-1" value="authentication" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;fontStyle=1;fillColor=#F5F5F5;fontColor=#1A2236;strokeColor=#151B2B;" parent="V-qh-Gk3nv3sh-DeGmF5-12" vertex="1">
<mxGeometry x="40" y="-10" width="240" height="250" as="geometry" /> <mxGeometry x="40" y="-10" width="240" height="250" as="geometry" />
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-2" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;User&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;&lt;u&gt;id&lt;i style=&quot;&quot;&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;br&gt;&lt;/u&gt;password&lt;i&gt;&amp;nbsp;: String&lt;/i&gt;&lt;br&gt;last_login&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;br&gt;is_superuser&lt;i&gt;&amp;nbsp;: Boolean&lt;/i&gt;&lt;br&gt;username&lt;i&gt;&amp;nbsp;: String&lt;/i&gt;&lt;br&gt;first_name&lt;i&gt;&amp;nbsp;: String&lt;/i&gt;&lt;br&gt;last_name : &lt;i&gt;String&lt;/i&gt;&lt;br&gt;email&lt;i&gt;&amp;nbsp;: String&lt;/i&gt;&lt;br&gt;is_staff&lt;i&gt;&amp;nbsp;: Boolean&lt;/i&gt;&lt;br&gt;is_active&lt;i&gt;&amp;nbsp;: Boolean&lt;/i&gt;&lt;br&gt;date_joined&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;" parent="V-qh-Gk3nv3sh-DeGmF5-12" vertex="1"> <mxCell id="V-qh-Gk3nv3sh-DeGmF5-2" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;User&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;&lt;u&gt;id&lt;i style=&quot;&quot;&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;br&gt;&lt;/u&gt;password&lt;i&gt;&amp;nbsp;: String&lt;/i&gt;&lt;br&gt;last_login&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;br&gt;is_superuser&lt;i&gt;&amp;nbsp;: Boolean&lt;/i&gt;&lt;br&gt;username&lt;i&gt;&amp;nbsp;: String&lt;/i&gt;&lt;br&gt;first_name&lt;i&gt;&amp;nbsp;: String&lt;/i&gt;&lt;br&gt;last_name : &lt;i&gt;String&lt;/i&gt;&lt;br&gt;email&lt;i&gt;&amp;nbsp;: String&lt;/i&gt;&lt;br&gt;is_staff&lt;i&gt;&amp;nbsp;: Boolean&lt;/i&gt;&lt;br&gt;is_active&lt;i&gt;&amp;nbsp;: Boolean&lt;/i&gt;&lt;br&gt;date_joined&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;rounded=1;fillColor=#FFDBDB;strokeColor=#B85C5C;arcSize=6;" parent="V-qh-Gk3nv3sh-DeGmF5-12" vertex="1">
<mxGeometry x="69.99565217391304" y="20" width="194.7826086956522" height="200" as="geometry" /> <mxGeometry x="69.99565217391304" y="20" width="194.7826086956522" height="200" as="geometry" />
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-26" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToMany;startArrow=ERmandOne;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=1.003;exitY=0.323;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="V-qh-Gk3nv3sh-DeGmF5-2" target="V-qh-Gk3nv3sh-DeGmF5-16" edge="1"> <mxCell id="V-qh-Gk3nv3sh-DeGmF5-26" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToMany;startArrow=ERmandOne;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=1.003;exitY=0.323;exitDx=0;exitDy=0;exitPerimeter=0;strokeColor=#B3BAB5;endFill=0;strokeWidth=2;" parent="1" source="V-qh-Gk3nv3sh-DeGmF5-2" target="V-qh-Gk3nv3sh-DeGmF5-16" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry"> <mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="-96" y="590" as="sourcePoint" /> <mxPoint x="-96" y="590" as="sourcePoint" />
<mxPoint x="4" y="490" as="targetPoint" /> <mxPoint x="4" y="490" as="targetPoint" />
@ -28,31 +28,7 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-27" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToMany;startArrow=ERmandOne;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0.997;exitY=0.398;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="V-qh-Gk3nv3sh-DeGmF5-2" target="V-qh-Gk3nv3sh-DeGmF5-17" edge="1"> <mxCell id="V-qh-Gk3nv3sh-DeGmF5-29" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToMany;startArrow=ERmandOne;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=-0.002;exitY=0.33;exitDx=0;exitDy=0;exitPerimeter=0;strokeColor=#B3BAB5;endFill=0;strokeWidth=2;" parent="1" source="V-qh-Gk3nv3sh-DeGmF5-2" target="V-qh-Gk3nv3sh-DeGmF5-20" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="-86" y="600" as="sourcePoint" />
<mxPoint x="14" y="500" as="targetPoint" />
<Array as="points">
<mxPoint x="414" y="720" />
<mxPoint x="414" y="620" />
<mxPoint x="734" y="620" />
<mxPoint x="734" y="320" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-28" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToMany;startArrow=ERmandOne;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.25;exitDx=0;exitDy=0;" parent="1" source="V-qh-Gk3nv3sh-DeGmF5-2" target="V-qh-Gk3nv3sh-DeGmF5-19" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="-76" y="610" as="sourcePoint" />
<mxPoint x="24" y="510" as="targetPoint" />
<Array as="points">
<mxPoint x="394" y="690" />
<mxPoint x="394" y="600" />
<mxPoint x="714" y="600" />
<mxPoint x="714" y="520" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-29" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToMany;startArrow=ERmandOne;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=-0.002;exitY=0.33;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="V-qh-Gk3nv3sh-DeGmF5-2" target="V-qh-Gk3nv3sh-DeGmF5-20" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry"> <mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="-66" y="620" as="sourcePoint" /> <mxPoint x="-66" y="620" as="sourcePoint" />
<mxPoint x="34" y="520" as="targetPoint" /> <mxPoint x="34" y="520" as="targetPoint" />
@ -62,7 +38,31 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-30" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERmandOne;rounded=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;endFill=0;" parent="1" source="V-qh-Gk3nv3sh-DeGmF5-2" target="V-qh-Gk3nv3sh-DeGmF5-15" edge="1"> <mxCell id="V-qh-Gk3nv3sh-DeGmF5-27" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToMany;startArrow=ERmandOne;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0.997;exitY=0.398;exitDx=0;exitDy=0;exitPerimeter=0;strokeColor=#B3BAB5;endFill=0;strokeWidth=2;" parent="1" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="359.00391304347835" y="719.6" as="sourcePoint" />
<mxPoint x="679.7299999999999" y="320" as="targetPoint" />
<Array as="points">
<mxPoint x="414.81" y="720" />
<mxPoint x="414.81" y="620" />
<mxPoint x="734.81" y="620" />
<mxPoint x="734.81" y="320" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-28" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToMany;startArrow=ERmandOne;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.25;exitDx=0;exitDy=0;strokeColor=#B3BAB5;endFill=0;strokeWidth=2;" parent="1" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="358.9982608695653" y="691" as="sourcePoint" />
<mxPoint x="679.13" y="521" as="targetPoint" />
<Array as="points">
<mxPoint x="394.22" y="691" />
<mxPoint x="394.22" y="601" />
<mxPoint x="714.22" y="601" />
<mxPoint x="714.22" y="521" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-30" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERmandOne;rounded=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;endFill=0;strokeColor=#B3BAB5;strokeWidth=2;" parent="1" source="V-qh-Gk3nv3sh-DeGmF5-2" target="V-qh-Gk3nv3sh-DeGmF5-15" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry"> <mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="-56" y="630" as="sourcePoint" /> <mxPoint x="-56" y="630" as="sourcePoint" />
<mxPoint x="134" y="530" as="targetPoint" /> <mxPoint x="134" y="530" as="targetPoint" />
@ -73,56 +73,46 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-32" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToMany;startArrow=ERmandOne;rounded=0;exitX=0;exitY=0.4;exitDx=0;exitDy=0;exitPerimeter=0;endFill=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="V-qh-Gk3nv3sh-DeGmF5-2" target="V-qh-Gk3nv3sh-DeGmF5-21" edge="1"> <mxCell id="b34YlEaqVGowunhmw_iH-3" value="gotify" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;fontStyle=1;fillColor=#F5F5F5;fontColor=#1A2236;strokeColor=#151B2B;" parent="1" vertex="1">
<mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="-66" y="620" as="sourcePoint" />
<mxPoint x="124" y="355" as="targetPoint" />
<Array as="points">
<mxPoint x="130" y="720" />
<mxPoint x="130" y="320" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="b34YlEaqVGowunhmw_iH-3" value="gotify" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="134" y="880" width="276" height="110" as="geometry" /> <mxGeometry x="134" y="880" width="276" height="110" as="geometry" />
</mxCell> </mxCell>
<mxCell id="b34YlEaqVGowunhmw_iH-5" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;GotifyApplication&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;id&lt;i&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;br&gt;token&lt;i&gt; : String&lt;/i&gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;" parent="1" vertex="1"> <mxCell id="b34YlEaqVGowunhmw_iH-5" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;GotifyApplication&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;id&lt;i&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;br&gt;token&lt;i&gt; : String&lt;/i&gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;rounded=1;fillColor=#FDFFE0;strokeColor=#969623;arcSize=6;" parent="1" vertex="1">
<mxGeometry x="280" y="905" width="110" height="70" as="geometry" /> <mxGeometry x="280" y="905" width="110" height="70" as="geometry" />
</mxCell> </mxCell>
<mxCell id="b34YlEaqVGowunhmw_iH-9" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;GotifyUser&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;id&lt;i&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;" parent="1" vertex="1"> <mxCell id="b34YlEaqVGowunhmw_iH-9" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;GotifyUser&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;id&lt;i&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;rounded=1;fillColor=#FDFFE0;strokeColor=#969623;arcSize=6;" parent="1" vertex="1">
<mxGeometry x="167" y="915" width="74" height="50" as="geometry" /> <mxGeometry x="167" y="915" width="74" height="50" as="geometry" />
</mxCell> </mxCell>
<mxCell id="b34YlEaqVGowunhmw_iH-10" value="" style="fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERmandOne;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" parent="1" source="b34YlEaqVGowunhmw_iH-9" target="b34YlEaqVGowunhmw_iH-5" edge="1"> <mxCell id="b34YlEaqVGowunhmw_iH-10" value="" style="fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERmandOne;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;strokeColor=#B3BAB5;strokeWidth=2;" parent="1" source="b34YlEaqVGowunhmw_iH-9" target="b34YlEaqVGowunhmw_iH-5" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry"> <mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="440.2782608695652" y="1735" as="sourcePoint" /> <mxPoint x="440.2782608695652" y="1735" as="sourcePoint" />
<mxPoint x="621" y="1690" as="targetPoint" /> <mxPoint x="621" y="1690" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-4" value="withings" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;fontStyle=1" parent="1" vertex="1"> <mxCell id="V-qh-Gk3nv3sh-DeGmF5-4" value="withings" style="shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;fontStyle=1;fillColor=#F5F5F5;fontColor=#1A2236;strokeColor=#151B2B;" parent="1" vertex="1">
<mxGeometry x="424" y="640" width="310" height="230" as="geometry" /> <mxGeometry x="424" y="640" width="310" height="230" as="geometry" />
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-5" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;ApiAccount&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;userid&lt;i&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;br&gt;last_update&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;" parent="1" vertex="1"> <mxCell id="V-qh-Gk3nv3sh-DeGmF5-5" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;ApiAccount&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;userid&lt;i&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;br&gt;last_update&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;rounded=1;fillColor=#DEFFE3;strokeColor=#87CCA2;arcSize=6;" parent="1" vertex="1">
<mxGeometry x="520" y="787" width="140.5" height="63" as="geometry" /> <mxGeometry x="520" y="787" width="140.5" height="63" as="geometry" />
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-6" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;RefreshToken&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;value&lt;i&gt;&amp;nbsp;: String&lt;/i&gt;&lt;br&gt;expires&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;" parent="1" vertex="1"> <mxCell id="V-qh-Gk3nv3sh-DeGmF5-6" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;RefreshToken&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;value&lt;i&gt;&amp;nbsp;: String&lt;/i&gt;&lt;br&gt;expires&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;rounded=1;fillColor=#DEFFE3;strokeColor=#87CCA2;arcSize=6;" parent="1" vertex="1">
<mxGeometry x="457" y="680" width="120" height="70" as="geometry" /> <mxGeometry x="457" y="680" width="120" height="70" as="geometry" />
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-7" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;AccessToken&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;value&lt;i&gt;&amp;nbsp;: String&lt;/i&gt;&lt;br&gt;expires&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;" parent="1" vertex="1"> <mxCell id="V-qh-Gk3nv3sh-DeGmF5-7" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;AccessToken&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;value&lt;i&gt;&amp;nbsp;: String&lt;/i&gt;&lt;br&gt;expires&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;rounded=1;fillColor=#DEFFE3;strokeColor=#87CCA2;arcSize=6;" parent="1" vertex="1">
<mxGeometry x="597" y="680" width="120" height="70" as="geometry" /> <mxGeometry x="597" y="680" width="120" height="70" as="geometry" />
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-9" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERmandOne;rounded=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="V-qh-Gk3nv3sh-DeGmF5-6" target="V-qh-Gk3nv3sh-DeGmF5-5" edge="1"> <mxCell id="V-qh-Gk3nv3sh-DeGmF5-9" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERmandOne;rounded=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeColor=#B3BAB5;strokeWidth=2;" parent="1" source="V-qh-Gk3nv3sh-DeGmF5-6" target="V-qh-Gk3nv3sh-DeGmF5-5" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry"> <mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="387" y="740" as="sourcePoint" /> <mxPoint x="387" y="740" as="sourcePoint" />
<mxPoint x="527" y="870" as="targetPoint" /> <mxPoint x="527" y="870" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-10" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERmandOne;rounded=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" parent="1" source="V-qh-Gk3nv3sh-DeGmF5-7" target="V-qh-Gk3nv3sh-DeGmF5-5" edge="1"> <mxCell id="V-qh-Gk3nv3sh-DeGmF5-10" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERmandOne;rounded=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;strokeColor=#B3BAB5;strokeWidth=2;" parent="1" source="V-qh-Gk3nv3sh-DeGmF5-7" target="V-qh-Gk3nv3sh-DeGmF5-5" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry"> <mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="787" y="730" as="sourcePoint" /> <mxPoint x="787" y="730" as="sourcePoint" />
<mxPoint x="767" y="770" as="targetPoint" /> <mxPoint x="767" y="770" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="b34YlEaqVGowunhmw_iH-11" value="" style="fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERmandOne;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" parent="1" source="V-qh-Gk3nv3sh-DeGmF5-2" target="b34YlEaqVGowunhmw_iH-9" edge="1"> <mxCell id="b34YlEaqVGowunhmw_iH-11" value="" style="fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERmandOne;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;strokeColor=#B3BAB5;strokeWidth=2;" parent="1" source="V-qh-Gk3nv3sh-DeGmF5-2" target="b34YlEaqVGowunhmw_iH-9" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry"> <mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="304" y="950" as="sourcePoint" /> <mxPoint x="304" y="950" as="sourcePoint" />
<mxPoint x="360" y="950" as="targetPoint" /> <mxPoint x="360" y="950" as="targetPoint" />
@ -132,7 +122,7 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-8" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERmandOne;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.75;exitDx=0;exitDy=0;" parent="1" source="V-qh-Gk3nv3sh-DeGmF5-2" target="V-qh-Gk3nv3sh-DeGmF5-5" edge="1"> <mxCell id="V-qh-Gk3nv3sh-DeGmF5-8" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERmandOne;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.75;exitDx=0;exitDy=0;strokeColor=#B3BAB5;strokeWidth=2;" parent="1" source="V-qh-Gk3nv3sh-DeGmF5-2" target="V-qh-Gk3nv3sh-DeGmF5-5" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry"> <mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="404" y="790" as="sourcePoint" /> <mxPoint x="404" y="790" as="sourcePoint" />
<mxPoint x="524" y="330" as="targetPoint" /> <mxPoint x="524" y="330" as="targetPoint" />
@ -143,58 +133,58 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-15" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;Profile&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;sex&lt;i&gt;&amp;nbsp;: Enum&lt;/i&gt;&lt;br&gt;date_of_birth&lt;i&gt;&amp;nbsp;: Date&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;container=0;" parent="1" vertex="1"> <mxCell id="V-qh-Gk3nv3sh-DeGmF5-15" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;Profile&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;sex&lt;i&gt;&amp;nbsp;: Enum&lt;/i&gt;&lt;br&gt;date_of_birth&lt;i&gt;&amp;nbsp;: Date&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;container=0;rounded=1;fillColor=#E6EAFF;strokeColor=#74A8D6;arcSize=6;" parent="1" vertex="1">
<mxGeometry x="163.99" y="480" width="124.21" height="80" as="geometry" /> <mxGeometry x="163.99" y="480" width="124.21" height="80" as="geometry" />
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-16" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;HeartRateRecord&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;&lt;u&gt;id&lt;i&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;/u&gt;&lt;br&gt;recorded&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;br&gt;value_bpm&lt;i&gt; : Integer&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;container=0;" parent="1" vertex="1"> <mxCell id="V-qh-Gk3nv3sh-DeGmF5-16" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;HeartRateRecord&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;&lt;u&gt;id&lt;i&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;/u&gt;&lt;br&gt;recorded&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;br&gt;value_bpm&lt;i&gt; : Integer&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;container=0;rounded=1;fillColor=#E6EAFF;strokeColor=#74A8D6;arcSize=6;" parent="1" vertex="1">
<mxGeometry x="544.36" y="370" width="134.56" height="100" as="geometry" /> <mxGeometry x="544.36" y="370" width="134.56" height="100" as="geometry" />
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-17" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;BodyTempRecord&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;&lt;u&gt;id&lt;i&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;/u&gt;&lt;br&gt;recorded&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;br&gt;value_celcius&lt;i&gt; : Decimal&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;container=0;" parent="1" vertex="1"> <mxCell id="V-qh-Gk3nv3sh-DeGmF5-17" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;BodyTempRecord&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;&lt;u&gt;id&lt;i&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;/u&gt;&lt;br&gt;recorded&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;br&gt;value_celcius&lt;i&gt; : Decimal&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;container=0;rounded=1;fillColor=#E6EAFF;strokeColor=#74A8D6;arcSize=6;" parent="1" vertex="1">
<mxGeometry x="534.01" y="280" width="144.91" height="80" as="geometry" /> <mxGeometry x="534.01" y="280" width="144.91" height="80" as="geometry" />
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-19" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;Spo2LevelRecord&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;&lt;u&gt;id&lt;i&gt; : Integer&lt;/i&gt;&lt;/u&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;recorded&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;br&gt;value_percent&lt;i&gt; : Integer&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;container=0;" parent="1" vertex="1"> <mxCell id="V-qh-Gk3nv3sh-DeGmF5-19" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;Spo2LevelRecord&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;&lt;u&gt;id&lt;i&gt; : Integer&lt;/i&gt;&lt;/u&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;recorded&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;br&gt;value_percent&lt;i&gt; : Integer&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;container=0;rounded=1;fillColor=#E6EAFF;strokeColor=#74A8D6;arcSize=6;" parent="1" vertex="1">
<mxGeometry x="534" y="480" width="144.91" height="80" as="geometry" /> <mxGeometry x="534" y="480" width="144.91" height="80" as="geometry" />
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-20" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;BloodPressureRecord&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;&lt;u&gt;id&lt;i&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;/u&gt;&lt;br&gt;recorded&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;br&gt;value_systolic_mmhg&lt;i&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;br&gt;value_diastolic_mmhg&lt;i&gt; : Integer&lt;br&gt;&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;container=0;" parent="1" vertex="1"> <mxCell id="V-qh-Gk3nv3sh-DeGmF5-20" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;BloodPressureRecord&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;&lt;u&gt;id&lt;i&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;/u&gt;&lt;br&gt;recorded&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;br&gt;value_systolic_mmhg&lt;i&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;br&gt;value_diastolic_mmhg&lt;i&gt; : Integer&lt;br&gt;&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;container=0;rounded=1;fillColor=#E6EAFF;strokeColor=#74A8D6;arcSize=6;" parent="1" vertex="1">
<mxGeometry x="163.98999999999998" y="370" width="186.32" height="100" as="geometry" /> <mxGeometry x="163.98999999999998" y="370" width="186.32" height="100" as="geometry" />
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-21" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;RespirationScoreRecord&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;&lt;u&gt;id&lt;i&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;/u&gt;&lt;br&gt;recorded&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;br&gt;value_severity&lt;i&gt;&amp;nbsp;: Enum&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;container=0;" parent="1" vertex="1"> <mxCell id="V-qh-Gk3nv3sh-DeGmF5-21" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;RespirationScoreRecord&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;&lt;u&gt;id&lt;i&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;/u&gt;&lt;br&gt;recorded&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;br&gt;value_severity&lt;i&gt;&amp;nbsp;: Enum&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;container=0;rounded=1;fillColor=#E6EAFF;strokeColor=#74A8D6;arcSize=6;" parent="1" vertex="1">
<mxGeometry x="164" y="280" width="155.26" height="80" as="geometry" /> <mxGeometry x="164" y="280" width="155.26" height="80" as="geometry" />
</mxCell> </mxCell>
<mxCell id="b34YlEaqVGowunhmw_iH-14" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;MewsRecord&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;&lt;u&gt;id&lt;i&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;/u&gt;&lt;br&gt;recorded&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;br&gt;value_n&lt;i&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;container=0;" parent="1" vertex="1"> <mxCell id="b34YlEaqVGowunhmw_iH-14" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;text-decoration:underline;&quot;&gt;&lt;b&gt;MewsRecord&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin:0px;margin-left:8px;&quot;&gt;&lt;u&gt;id&lt;i&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;/u&gt;&lt;br&gt;recorded&lt;i&gt;&amp;nbsp;: DateTime&lt;/i&gt;&lt;br&gt;value_n&lt;i&gt;&amp;nbsp;: Integer&lt;/i&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;container=0;rounded=1;fillColor=#E6EAFF;strokeColor=#74A8D6;arcSize=6;" parent="1" vertex="1">
<mxGeometry x="358.78" y="480" width="134.56" height="80" as="geometry" /> <mxGeometry x="358.78" y="480" width="134.56" height="80" as="geometry" />
</mxCell> </mxCell>
<mxCell id="b34YlEaqVGowunhmw_iH-16" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToMany;startArrow=ERmandOne;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;endFill=0;" parent="1" source="V-qh-Gk3nv3sh-DeGmF5-2" target="b34YlEaqVGowunhmw_iH-14" edge="1"> <mxCell id="b34YlEaqVGowunhmw_iH-16" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToMany;startArrow=ERmandOne;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;endFill=0;strokeColor=#B3BAB5;strokeWidth=2;" parent="1" source="V-qh-Gk3nv3sh-DeGmF5-2" target="b34YlEaqVGowunhmw_iH-14" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry"> <mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="334" y="630" as="sourcePoint" /> <mxPoint x="334" y="630" as="sourcePoint" />
<mxPoint x="434" y="530" as="targetPoint" /> <mxPoint x="434" y="530" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="b34YlEaqVGowunhmw_iH-17" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERzeroToOne;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0.472;exitY=-0.004;exitDx=0;exitDy=0;exitPerimeter=0;startFill=0;" parent="1" source="b34YlEaqVGowunhmw_iH-14" target="V-qh-Gk3nv3sh-DeGmF5-21" edge="1"> <mxCell id="b34YlEaqVGowunhmw_iH-17" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERzeroToOne;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0.472;exitY=-0.004;exitDx=0;exitDy=0;exitPerimeter=0;startFill=0;strokeColor=#B3BAB5;strokeWidth=2;" parent="1" source="b34YlEaqVGowunhmw_iH-14" target="V-qh-Gk3nv3sh-DeGmF5-21" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry"> <mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="387.0326086956521" y="455" as="sourcePoint" /> <mxPoint x="387.0326086956521" y="455" as="sourcePoint" />
<mxPoint x="440.95" y="330" as="targetPoint" /> <mxPoint x="440.95" y="330" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="b34YlEaqVGowunhmw_iH-18" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERzeroToOne;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0.383;exitY=-0.007;exitDx=0;exitDy=0;exitPerimeter=0;startFill=0;" parent="1" source="b34YlEaqVGowunhmw_iH-14" target="V-qh-Gk3nv3sh-DeGmF5-20" edge="1"> <mxCell id="b34YlEaqVGowunhmw_iH-18" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERzeroToOne;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0.383;exitY=-0.007;exitDx=0;exitDy=0;exitPerimeter=0;startFill=0;strokeColor=#B3BAB5;strokeWidth=2;" parent="1" source="b34YlEaqVGowunhmw_iH-14" target="V-qh-Gk3nv3sh-DeGmF5-20" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry"> <mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="437.51298245614055" y="499.71999999999997" as="sourcePoint" /> <mxPoint x="437.51298245614055" y="499.71999999999997" as="sourcePoint" />
<mxPoint x="329.2521052631579" y="365" as="targetPoint" /> <mxPoint x="329.2521052631579" y="365" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="b34YlEaqVGowunhmw_iH-19" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERzeroToOne;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0.565;exitY=-0.006;exitDx=0;exitDy=0;exitPerimeter=0;startFill=0;" parent="1" source="b34YlEaqVGowunhmw_iH-14" target="V-qh-Gk3nv3sh-DeGmF5-17" edge="1"> <mxCell id="b34YlEaqVGowunhmw_iH-19" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERzeroToOne;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0.565;exitY=-0.006;exitDx=0;exitDy=0;exitPerimeter=0;startFill=0;strokeColor=#B3BAB5;strokeWidth=2;" parent="1" source="b34YlEaqVGowunhmw_iH-14" target="V-qh-Gk3nv3sh-DeGmF5-17" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry"> <mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="425.53701754385975" y="499.51" as="sourcePoint" /> <mxPoint x="425.53701754385975" y="499.51" as="sourcePoint" />
<mxPoint x="360.3084210526315" y="450" as="targetPoint" /> <mxPoint x="360.3084210526315" y="450" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="b34YlEaqVGowunhmw_iH-20" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERzeroToOne;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0.655;exitY=-0.007;exitDx=0;exitDy=0;exitPerimeter=0;startFill=0;" parent="1" source="b34YlEaqVGowunhmw_iH-14" target="V-qh-Gk3nv3sh-DeGmF5-16" edge="1"> <mxCell id="b34YlEaqVGowunhmw_iH-20" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERzeroToOne;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0.655;exitY=-0.007;exitDx=0;exitDy=0;exitPerimeter=0;startFill=0;strokeColor=#B3BAB5;strokeWidth=2;" parent="1" source="b34YlEaqVGowunhmw_iH-14" target="V-qh-Gk3nv3sh-DeGmF5-16" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry"> <mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="450.0271929824563" y="499.5799999999999" as="sourcePoint" /> <mxPoint x="450.0271929824563" y="499.5799999999999" as="sourcePoint" />
<mxPoint x="544.0045614035089" y="364.99999999999994" as="targetPoint" /> <mxPoint x="544.0045614035089" y="364.99999999999994" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="b34YlEaqVGowunhmw_iH-21" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERzeroToOne;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;startFill=0;" parent="1" source="b34YlEaqVGowunhmw_iH-14" target="V-qh-Gk3nv3sh-DeGmF5-19" edge="1"> <mxCell id="b34YlEaqVGowunhmw_iH-21" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERmandOne;startArrow=ERzeroToOne;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;startFill=0;strokeColor=#B3BAB5;strokeWidth=2;" parent="1" source="b34YlEaqVGowunhmw_iH-14" target="V-qh-Gk3nv3sh-DeGmF5-19" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry"> <mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="462.13771929824577" y="499.51" as="sourcePoint" /> <mxPoint x="462.13771929824577" y="499.51" as="sourcePoint" />
<mxPoint x="554.3600000000001" y="445" as="targetPoint" /> <mxPoint x="554.3600000000001" y="445" as="targetPoint" />
@ -204,6 +194,16 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="V-qh-Gk3nv3sh-DeGmF5-32" value="" style="edgeStyle=orthogonalEdgeStyle;fontSize=12;html=1;endArrow=ERzeroToMany;startArrow=ERmandOne;rounded=0;exitX=0;exitY=0.4;exitDx=0;exitDy=0;exitPerimeter=0;endFill=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#B3BAB5;strokeWidth=2;" parent="1" source="V-qh-Gk3nv3sh-DeGmF5-2" target="V-qh-Gk3nv3sh-DeGmF5-21" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="-66" y="620" as="sourcePoint" />
<mxPoint x="124" y="355" as="targetPoint" />
<Array as="points">
<mxPoint x="130" y="720" />
<mxPoint x="130" y="320" />
</Array>
</mxGeometry>
</mxCell>
</root> </root>
</mxGraphModel> </mxGraphModel>
</diagram> </diagram>

View File

@ -1 +1,54 @@
<mxfile host="Electron" modified="2023-06-04T14:28:46.178Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.7.4 Chrome/106.0.5249.199 Electron/21.3.3 Safari/537.36" version="20.7.4" etag="F7tFCP4Nm3QTIsRK-8Ri" type="device"><diagram id="Nfhfv2VjyWhg4Jekitvn" name="Page-1">7Vlbb5swFP41kbaHToC5hMcmvaxSN2nLQy9vDrjg1tjImEL662eDKSBSkqlL6aoqFcGffcD+vnOOj5sZWCblOYdp/IOFiMwsIyxn4GRmWXNjLq8K2NSA7Tk1EHEc1pDZAiv8hDRoaDTHIcp6AwVjROC0DwaMUhSIHgY5Z0V/2B0j/bemMEIDYBVAMkSvcChijbqO3XZ8RziK9astANy6J4HNaL2ULIYhKzoQOJ2BJWdM1HdJuUREkdcQU9udvdD7PDOOqNjHgGbnRrG4X4Xw8td1cHxl2LdHRw3Pmdg0S+YspyFSRsYMLBgXMYsYheSSsVSCpgTvkRAbLRbMBZNQLBKie1GJxbUy/+bo1k2n56TUT64am6ZBBd90jFTzptvXmlWt1i48VjLL5pqw4KGGzjBpJlMvD4UDmVvaNJSxnAdojCvtf5BHSIyMc57FlVGBWILkhKUdRwQK/NifB9T+GT2PaxWUN1rEvxHUHAiqFr/STcqo/Fp8ajym3R4au1NqrCf5CEmu33SSpwQHUMhUqSaRsEcprmV8+Skv1QgXJlLYBV1n6st3rK8jca84LWIs0CqFFVuFzO19/fUMEBeoHCd9SJI28Ayde5qtwdftopNom+QZd3KsbRwqdqzP2HlF7Lh7xo4/Zey4g9j5jQLGQxU4WcARoipyXCIXsFhzeRepuzaQDNOwnfcXPI43dfDMR4jFNCB5uIPY90irB6am1QSfOekVOcnfMyfNJ63Z7DfV2Owo3Oq9S+Oewq3g/5HG3pQa+4P0eJZXVjJZieqFGZJ/YXVI5YoagiO8xgSLTa+SM+bvsHZzncnz5LAovgjlavCdqosxowPOsgInBFahFTOOnxgVkGj33cFgJjh7QEtGpFLqWcAz1Ef23MmnbMP/Aeeu3ecczIecA7CFc/9gnI9t+Zr8yqNFLB00ihX/CPIgrkoCeVkFLM2zkYOK6fveW3j7iEu9rEdfDmvPCHAOpsawtF1VBS2m0YdzfntLvbvV+U33YHx7A76PqySeqDV9NMLdLZXwVsLnh+J7SHebbVDZHDC6O6XvgumSxwvVRtlki93Zw3zT/XN4frtQp7bsI26dnnk4Z5bN9n/6VV/nlxFw+gc=</diagram></mxfile> <mxfile host="app.diagrams.net" modified="2023-09-11T13:41:05.732Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36" etag="tMhgjI-p4Nx-POryOxet" version="21.6.8" type="device">
<diagram id="Nfhfv2VjyWhg4Jekitvn" name="Page-1">
<mxGraphModel dx="807" dy="390" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1654" pageHeight="2336" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="nsG0wBjSdaLQXcAW04Z--10" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;endArrow=block;endFill=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="nsG0wBjSdaLQXcAW04Z--1" target="nsG0wBjSdaLQXcAW04Z--6" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="760" y="480" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="nsG0wBjSdaLQXcAW04Z--12" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=block;endFill=1;" parent="1" source="nsG0wBjSdaLQXcAW04Z--6" target="nsG0wBjSdaLQXcAW04Z--9" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nsG0wBjSdaLQXcAW04Z--15" value="Identification" style="swimlane;horizontal=0;whiteSpace=wrap;html=1;strokeColor=#707070;fontColor=#707070;rounded=1;" parent="1" vertex="1">
<mxGeometry x="640" y="380" width="330" height="140" as="geometry" />
</mxCell>
<mxCell id="nsG0wBjSdaLQXcAW04Z--1" value="Records identified through search in Scopus (N&lt;span style=&quot;font-size: 10px;&quot;&gt;&lt;sub&gt;0&lt;/sub&gt;&lt;/span&gt;=1997)" style="rounded=1;whiteSpace=wrap;html=1;" parent="nsG0wBjSdaLQXcAW04Z--15" vertex="1">
<mxGeometry x="60" y="20" width="120" height="50" as="geometry" />
</mxCell>
<mxCell id="CzIygMLBs7PSniqS3PZd-1" value="n&lt;sub&gt;d&lt;/sub&gt;=952 duplicates removed" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="nsG0wBjSdaLQXcAW04Z--15">
<mxGeometry x="116" y="91" width="170" height="30" as="geometry" />
</mxCell>
<mxCell id="nsG0wBjSdaLQXcAW04Z--16" value="Screening" style="swimlane;horizontal=0;whiteSpace=wrap;html=1;strokeColor=#707070;fontColor=#707070;rounded=1;" parent="1" vertex="1">
<mxGeometry x="640" y="520" width="330" height="140" as="geometry" />
</mxCell>
<mxCell id="nsG0wBjSdaLQXcAW04Z--6" value="Records screened&lt;br&gt;(N&lt;sub&gt;s&lt;/sub&gt;=1045)" style="rounded=1;whiteSpace=wrap;html=1;" parent="nsG0wBjSdaLQXcAW04Z--16" vertex="1">
<mxGeometry x="60" y="30" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="nsG0wBjSdaLQXcAW04Z--17" value="Assessment" style="swimlane;horizontal=0;whiteSpace=wrap;html=1;strokeColor=#707070;fontColor=#707070;rounded=1;" parent="1" vertex="1">
<mxGeometry x="640" y="660" width="330" height="130" as="geometry" />
</mxCell>
<mxCell id="nsG0wBjSdaLQXcAW04Z--9" value="Full text assessed for eligibility (N&lt;sub&gt;a&lt;/sub&gt;=82)" style="rounded=1;whiteSpace=wrap;html=1;" parent="nsG0wBjSdaLQXcAW04Z--17" vertex="1">
<mxGeometry x="60" y="20" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="nsG0wBjSdaLQXcAW04Z--18" value="Inclusion" style="swimlane;horizontal=0;whiteSpace=wrap;html=1;strokeColor=#707070;fontColor=#707070;rounded=1;" parent="1" vertex="1">
<mxGeometry x="640" y="790" width="330" height="80" as="geometry" />
</mxCell>
<mxCell id="nsG0wBjSdaLQXcAW04Z--8" value="Records included&lt;br&gt;(N=45)" style="rounded=1;whiteSpace=wrap;html=1;" parent="nsG0wBjSdaLQXcAW04Z--18" vertex="1">
<mxGeometry x="60" y="20" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="CzIygMLBs7PSniqS3PZd-2" value="n&lt;sub&gt;i&lt;/sub&gt;=963&amp;nbsp;records dismissed" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="754" y="613" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="nsG0wBjSdaLQXcAW04Z--13" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=block;endFill=1;" parent="1" source="nsG0wBjSdaLQXcAW04Z--9" target="nsG0wBjSdaLQXcAW04Z--8" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="CzIygMLBs7PSniqS3PZd-4" value="n&lt;sub&gt;e&lt;/sub&gt;=37 records excluded" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="755" y="741" width="150" height="30" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

Binary file not shown.

View File

@ -4,31 +4,34 @@
\vspace{2cm} \vspace{2cm}
\includegraphics[width=0.5\textwidth]{figures/tubs-logo.png} \\ \includegraphics[width=0.5\textwidth]{figures/tubs-logo.png} \\
\vspace{2cm} \vspace{2cm}
{\large\textbf{Bachelor Thesis}} \\ {\large\textbf{Bachelorarbeit}} \\
\vspace{0.5cm}
Bachelorstudiengang Informatik \\
\vspace{1cm} \vspace{1cm}
{\small{ {\small{
submitted to \\ eingereicht am \\
\vspace{1cm} \vspace{1cm}
\textbf{ \textbf{
Peter L. Reichertz Institut für Medizinische Informatik \\ Peter L. Reichertz Institut für Medizinische Informatik (PLRI) \\
der Technischen Universität Braunschweig \\ der Technischen Universität Braunschweig \\
und der Medizinischen Hochschule Hannover \\ und der Medizinischen Hochschule Hannover \\
} }
\vspace{0.5cm} \vspace{0.5cm}
in \\ im \\
\vspace{0.5cm} \vspace{0.5cm}
\textbf{September 2023} \\ \textbf{September 2023} \\
\vspace{0.5cm} \vspace{0.5cm}
by \\ von \\
\vspace{0.5cm} \vspace{0.5cm}
\textbf{Julian Lobbes} \\ \textbf{Julian Sharif Lobbes} \\
born in Hannover \textit{4343013} \\
geboren in Hannover
}} \\ }} \\
\end{center} \end{center}
\vfill \vfill
{\footnotesize{ {\footnotesize{
Supervisor: \textbf{Prof. Dr. Thomas M. Deserno} \\ Erstgutachter: \textbf{Prof. Dr. med. Dr.-Ing. Michael Marschollek} (PLRI) \\
Supervising assistant: \textbf{Prof. Dr. Sharareh R. Niakan Kalhori} \\ Zweitgutachter: \textbf{Prof. Dr. Thomas M. Deserno} (PLRI) \\
}} }}
\end{titlepage} \end{titlepage}
%\newpage %\newpage

Binary file not shown.

Before

Width:  |  Height:  |  Size: 336 KiB

After

Width:  |  Height:  |  Size: 986 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 KiB

After

Width:  |  Height:  |  Size: 288 KiB

View File

@ -154,7 +154,7 @@ Two commonly used clinical scores are the \Gls{news2} and the
Both are calculated by capturing various vital parameters from the patient at a specific point in time, followed by numerical aggregation of the Both are calculated by capturing various vital parameters from the patient at a specific point in time, followed by numerical aggregation of the
captured data according to the score being used\cite{subbe_validation_2001, noauthor_national_2017}. captured data according to the score being used\cite{subbe_validation_2001, noauthor_national_2017}.
For \Gls{mews}, each measured physiological parameter is assigned an individual score based on which range it lies in. For \Gls{mews}, each measured physiological parameter is assigned an individual score based on which range it lies in.
The ranges for scoring each parameter are shown in Table \ref{tab:mews-calculation}. The ranges for scoring each parameter, as proposed by Subbe et al. in 2001\cite{subbe_validation_2001}, are shown in Table \ref{tab:mews-calculation}.
The individual scores are then added together to produce the final \Gls{mews}. The individual scores are then added together to produce the final \Gls{mews}.
A MEWS value of 5 or above indicates an elevated risk of death, and likelihood of ICU admission\cite{subbe_validation_2001}. A MEWS value of 5 or above indicates an elevated risk of death, and likelihood of ICU admission\cite{subbe_validation_2001}.
@ -185,12 +185,11 @@ A MEWS value of 5 or above indicates an elevated risk of death, and likelihood o
\hline \hline
\tiny{\textbf{AVPU}} & --- & --- & --- & \tiny{alert} & \tiny{reacting to voice} & \tiny{reacting to pain} & \tiny{unresponsive} \\ \tiny{\textbf{AVPU}} & --- & --- & --- & \tiny{alert} & \tiny{reacting to voice} & \tiny{reacting to pain} & \tiny{unresponsive} \\
\end{tcolorbox} \end{tcolorbox}
\caption{\label{tab:mews-calculation}MEWS calculation ranges} \caption{\label{tab:mews-calculation}MEWS calculation ranges as proposed by Subbe et al. in 2001\cite{subbe_validation_2001}}
\end{table} \end{table}
Traditionally, doctors and nursing staff perform collection and evaluation of the data manually, often inputting data into \Gls{ews}-calculators by hand. Traditionally, doctors and nursing staff perform collection and evaluation of the data manually, often inputting data into \Gls{ews}-calculators by hand.
However, as Eisenkraft et al. mentioned in 2023, \enquote{some known setbacks of the NEWS and other scales are the frequency of scoring and However, low scoring frequency and increased proclivity for errors are downsides of manual \Gls{ews} calculation\cite{eisenkraft_developing_2023}.
response, integration into practice, and miscalculation by healthcare providers\ldots~}\cite{eisenkraft_developing_2023}.
\Gls{rpm} can improve deterioration detection\cite{shaik_remote_2023} by greatly reducing the \Gls{rpm} can improve deterioration detection\cite{shaik_remote_2023} by greatly reducing the
amount of human interaction required to take measurements and perform \Gls{ews} calculations. amount of human interaction required to take measurements and perform \Gls{ews} calculations.
@ -211,7 +210,7 @@ in this rapidly evolving field.
A systematic search strategy was implemented on the Scopus database, aimed to encompass a broad spectrum of literature relevant A systematic search strategy was implemented on the Scopus database, aimed to encompass a broad spectrum of literature relevant
to the use of smart medical devices for automated early warning score monitoring of outpatients. to the use of smart medical devices for automated early warning score monitoring of outpatients.
The search focused on topics related to the research area, encompassing the examination of \Gls{ews}, hospital admission, care escalation, The search focused on topics related to the research area, encompassing the examination of \Glspl{ews}, hospital admission, care escalation,
and medical emergencies in combination with IT automation, medical wearables and \Gls{iot}. and medical emergencies in combination with IT automation, medical wearables and \Gls{iot}.
The Scopus database was chosen for its extensive coverage of scholarly literature across multiple disciplines. The Scopus database was chosen for its extensive coverage of scholarly literature across multiple disciplines.
@ -251,11 +250,11 @@ TITLE-ABS-KEY(("patient" OR "clinical" OR "medical") AND ("deterioration" OR "in
\end{center} \end{center}
\end{figure} \end{figure}
An initial query on Scopus yielded a total of $N=1997$ records. An initial query on Scopus yielded a total of $N_0=1997$ records.
After removing duplicates, $N=952$ records were excluded, resulting in $N=1045$ unique records. After removing $n_d=952$ duplicates, the titles and abstracts of $N_s=1045$ records were screened.
Upon screening the titles and abstracts, $N=963$ records did not meet the inclusion criteria, leaving $N=82$ articles to be assessed for Of these, $n_i=963$ items did not meet the inclusion criteria, leaving $N_a=82$ articles to be assessed for
eligibility in full text. eligibility in full text.
Finally, after a thorough evaluation, $N=45$ articles were included for the literature review, providing insight into the current state of Finally, after a thorough evaluation, $N=45$ articles were included in the literature review, providing insight into the current state of
research on the use of smart medical devices for automated early warning score monitoring in patients transitioning from ambulant or research on the use of smart medical devices for automated early warning score monitoring in patients transitioning from ambulant or
hospital care. hospital care.
Figure \ref{prisma-flowchart} shows the screening process. Figure \ref{prisma-flowchart} shows the screening process.
@ -515,27 +514,19 @@ patients at home were identified.
This highlights a crucial research gap and prompts the need for further investigation in this area, potentially warranting the development This highlights a crucial research gap and prompts the need for further investigation in this area, potentially warranting the development
of an \Gls{ews} specialized for use outside of medical care facilities. of an \Gls{ews} specialized for use outside of medical care facilities.
\subsubsection{Interpretation of Results} \subsubsection{Conclusions}
Based on the findings, several key implications can be drawn. Based on the conducted literature review, some key implications can be drawn.
Firstly, the improved availability of smart sensors and the demonstrated effectiveness of \Glspl{ews} in predicting deterioration in direct The improved availability of smart sensors and the demonstrated effectiveness of \Glspl{ews} in predicting deterioration in direct
medical care settings warrant research into their utilization at home. medical care settings warrant research into their utilization at home.
By remotely monitoring patients, it may be possible to identify early signs of deterioration, allowing for earlier dismissal from Monitoring \Glspl{ews} remotely may make it possible to identify signs of deterioration early for patients dismissed from hospital.
hospital care and thereby freeing up valuable resources. It could also hold the potential for significant resource savings, due to the relatively low cost of modern smart medical sensors and a reduction in
Additionally, this approach holds the potential to reduce the frequency of adverse clinical outcomes, as well as mortality rates. workload for medical staff, compared to traditional on-site monitoring.
However, it is important to acknowledge the lack of research in this area, which calls for a feasibility study in this
However, it is important to acknowledge the lack of research on the use of \Glspl{ews} at home, which calls for a feasibility study in this
specific context. specific context.
Such a study would need to address challenges such as the frequency of measurements required and the absence of immediate diagnosis While such a study would need to address challenges such as the frequency of measurements required and the absence of immediate diagnosis
from qualified medical staff. from qualified medical staff, it would contribute significantly to the existing body of knowledge and help advance the field of automated
Overcoming these obstacles is essential to ensure the safety and efficacy of automated remote patient monitoring in home-based settings. early warning score monitoring in home-based care.
In conclusion, the literature review highlights the increasing interest in using smart medical devices and EWS for remote patient
monitoring, particularly in real-world scenarios.
The absence of studies evaluating the application of \Glspl{ews} for patients at home underscores the need for further investigation in this area.
Conducting a feasibility study to explore the practicality and challenges of implementing \Glspl{ews} in home-based care would contribute
significantly to the existing body of knowledge and help advance the field of automated early warning score monitoring in
non-medical care settings.
\subsection{Motivation} \subsection{Motivation}
@ -560,17 +551,9 @@ Still, their integration with \Glspl{ews} remains under-explored, especially for
While \Glspl{ews} have proven effective in hospitals and ambulant care facilities, the practicality of implementing them remotely, under real-life conditions, While \Glspl{ews} have proven effective in hospitals and ambulant care facilities, the practicality of implementing them remotely, under real-life conditions,
leveraging state-of-the-art smart medical devices, remains uncertain. leveraging state-of-the-art smart medical devices, remains uncertain.
Existing research on \Gls{rpm} predominantly focuses on the technology's capability for vitals monitoring, often sidelining the integration and automated calculation of \Glspl{ews}. Existing research on \Gls{rpm} predominantly focuses on the technology's capability for vital signs monitoring, often sidelining the integration and automated calculation of \Glspl{ews}.
Consequently, there is a knowledge gap concerning the system's effectiveness, feasibility, and challenges when deployed in everyday environments,
particularly in patients' homes or during their daily routines.
There is a lack of available software which integrates \Gls{rpm} with \Glspl{ews} while being feasible for everyday use,
as well as a general knowledge gap in exploring the usefulness of this approach.
Existing research on \Gls{rpm} predominantly focuses on the technology's capability for vitals monitoring and often sidelines
the integration and automated calculation of \Glspl{ews}.
This results in a knowledge gap concerning the effectiveness, feasibility, and design challenges of a system which combines both concepts. This results in a knowledge gap concerning the effectiveness, feasibility, and design challenges of a system which combines both concepts.
Moreover, there is a lack of available software which integrates \Gls{rpm} with \Glspl{ews} aimed at everyday use by patients. Moreover, there is a lack of available software implementing such a system, while being usable by patients at home or during their daily routines.
\subsection{Research goals} \subsection{Research goals}
@ -580,7 +563,7 @@ assessments.
Specifically, the following questions are asked: Specifically, the following questions are asked:
\begin{itemize} \begin{itemize}
\item Can an \Gls{rwsm} system, feasible for everyday use, be implented using smart medical devices commercially available today? \item Can an \Gls{rwsm} system, feasible for everyday use, be implemented using smart medical devices commercially available today?
\item What are the technical and operational challenges of implementing such a system? \item What are the technical and operational challenges of implementing such a system?
\item Can existing, validated \Glspl{ews} be utilized in \Gls{rwsm}? \item Can existing, validated \Glspl{ews} be utilized in \Gls{rwsm}?
\end{itemize} \end{itemize}
@ -641,7 +624,7 @@ of \Gls{rwsm} in everyday settings, using current technology.
\section{Medwings} \section{Medwings}
The initial step in conceptualizing an \Gls{rwsm} system was to choose an appropriate \Gls{ews} to use for patient health evaluation. The initial step in conceptualizing an \Gls{rwsm} system was to choose an appropriate \Gls{ews} to use for patient health evaluation.
Three widely used \Glspl{ews} emerged as potential candidates: the \Gls{pews}\cite{monaghan_detecting_2005}, \Gls{news2}\cite{noauthor_national_2017} Three widely used \Glspl{ews} were evaluated as potential candidates: the \Gls{pews}\cite{monaghan_detecting_2005}, \Gls{news2}\cite{noauthor_national_2017}
and \Gls{mews}\cite{subbe_validation_2001}. and \Gls{mews}\cite{subbe_validation_2001}.
All three are established as being effective in predicting clinical deterioration. All three are established as being effective in predicting clinical deterioration.
\Gls{pews} was excluded due to its application being limited to pediatric patients. \Gls{pews} was excluded due to its application being limited to pediatric patients.
@ -678,7 +661,7 @@ measuring a user's \Gls{ecg} and \Gls{spo2} among other things.
A \textit{Withings BPM Core}\cite{noauthor_bpm_nodate}, displayed in Figure~\ref{fig:withings-bpm-core}, was also procured. A \textit{Withings BPM Core}\cite{noauthor_bpm_nodate}, displayed in Figure~\ref{fig:withings-bpm-core}, was also procured.
It is a digital blood pressure meter capable of recording blood pressure and heart rate. It is a digital blood pressure meter capable of recording blood pressure and heart rate.
The third and last device used was a \textit{Withings Thermo}\cite{noauthor_smart_nodate}, a contactless digital thermometer The third and last device used was a \textit{Withings Thermo}\cite{noauthor_smart_nodate}, a contactless digital thermometer
used to measure body temperature. A picture of a Whithings Thermo can be seen in Figure~\ref{fig:withings-thermo}. used to measure body temperature. A picture of a Withings Thermo can be seen in Figure~\ref{fig:withings-thermo}.
\begin{figure}[!ht] \begin{figure}[!ht]
\begin{center} \begin{center}
@ -707,7 +690,7 @@ used to measure body temperature. A picture of a Whithings Thermo can be seen in
\end{center} \end{center}
\end{figure} \end{figure}
All three devices are able synchronize vitals data with the Withings Cloud over the internet, as they connect to the user's phone All three devices are capable of synchronizing vitals data with the Withings Cloud over the internet, as they connect to the user's phone
using a mobile application provided by Withings. using a mobile application provided by Withings.
The chosen selection of devices allows measurements and programmatic access to the vital parameters required to determine a The chosen selection of devices allows measurements and programmatic access to the vital parameters required to determine a
@ -716,8 +699,15 @@ staff.
Additionally, the inclusion of the Withings Scanwatch came with a notable limitation: although the device possesses the capability Additionally, the inclusion of the Withings Scanwatch came with a notable limitation: although the device possesses the capability
to measure a patient's respiration rate, this functionality is restricted to nocturnal measurements, taken while the user is asleep. to measure a patient's respiration rate, this functionality is restricted to nocturnal measurements, taken while the user is asleep.
After consulting with several medical professionals, a decision was made to forgo the traditional respiration rate measurement, as well as the AVPU parameter in the \Gls{mews} calculation. To address these issues, a decision was made to forgo the traditional respiration rate measurement, as well as the AVPU parameter in the \Gls{mews} calculation.
Instead, a custom \textit{respiration score} was introduced, shown in Table~\ref{tab:respiration-score}, which represents any shortness of breath reported by the patient. Instead, a custom \textit{respiration score} was introduced, shown in Table~\ref{tab:respiration-score}, which represents any shortness of breath reported by the patient.
To ensure the clinical soundness of these modifications, expert consultations were sought from an anesthesiologist and a pediatrician, each with over 30 years of practical experience
in intensive care medicine.
The pediatrician affirmed that due to the difficulty of accurately measuring respiration rate in practice, an audiovisual inspection of breathing, as well as patient-reported symptoms of shortness of breath,
are often utilized as reliable substitutes.
Following the expert consultation, the patient's \Gls{spo2} level was used to replace the respiration rate in combination with the described respiration score.
The anesthesiologist affirmed that the \Gls{avpu} score is inherently unsuited for automated electronic measurement, as it requires a human evaluation of the patient's level of consciousness.
Given that a patient with a compromised level of consciousness would be unable to interact with the Medwings system, under expert guidance the decision was made to omit the \Gls{avpu} score entirely.
\begin{table}[!ht] \begin{table}[!ht]
\centering \centering
@ -736,8 +726,6 @@ Instead, a custom \textit{respiration score} was introduced, shown in Table~\ref
\caption{\label{tab:respiration-score}Scoring table for Medwings' custom respiration score} \caption{\label{tab:respiration-score}Scoring table for Medwings' custom respiration score}
\end{table} \end{table}
To replace the respiration rate in the \Gls{mews} calculation, we took into account the patient's \Gls{spo2}, as well as the described respiration score.
\subsection{Requirements} \subsection{Requirements}
Following the selection of an \Gls{ews} and suitable medical sensors, a comprehensive \Gls{rwsm} application was conceptualized, Following the selection of an \Gls{ews} and suitable medical sensors, a comprehensive \Gls{rwsm} application was conceptualized,
@ -793,7 +781,7 @@ Opting for this format offers several advantages: the primary benefit is its inh
on a wide range of devices such as mobile phones and personal computers. on a wide range of devices such as mobile phones and personal computers.
Adhering to the classic client-server paradigm, the Medwings design prioritizes centralized data storage and processing. Adhering to the classic client-server paradigm, the Medwings design prioritizes centralized data storage and processing.
This architecture was found to be benificial for simplifying data synchronization, facilitating secure authentication, This architecture was found to be beneficial for simplifying data synchronization, facilitating secure authentication,
and ensuring high system availability. and ensuring high system availability.
Django, a high-level Python web framework, was employed to develop both the frontend and backend components of the Medwings application. Django, a high-level Python web framework, was employed to develop both the frontend and backend components of the Medwings application.
@ -843,7 +831,7 @@ To separate the different functional aspects of Medwings according to responsibi
\item \code{medwings} \item \code{medwings}
\end{itemize} \end{itemize}
Each module defines classes representing backend logic, database schemas and user interface elements pertaining to its specific function. Each module defines classes representing backend logic, database schemata and user interface elements pertaining to its specific function.
Implementation details are encapsulated within these classes, while public interfaces are exposed to external program code to provide each module's core functionality. Implementation details are encapsulated within these classes, while public interfaces are exposed to external program code to provide each module's core functionality.
The \code{core} module forms the backbone of the application. The \code{core} module forms the backbone of the application.
@ -909,9 +897,13 @@ The patient can now log in to the Medwings website and begin using the system to
\end{center} \end{center}
\end{figure} \end{figure}
The \code{medwings} module, pivotal to the core functionalty of Medwings, defines the data model used to represent and store the various vital signs handled by the application. Managing a user in Medwings requires the respective user's state to be mirrored by two other services, Withings and Gotify.
The \code{authentication} module ensures that user accounts across all three services are kept in sync.
Particularly during user creation, user accounts must be linked to Withings, created on the Gotify server and finally saved to the Medwings database.
Various integrity checks, such as when the user aborts the registration process midway, are put in place to prevent diverging user states across the three services.
The \code{medwings} module, pivotal to the core functionality of Medwings, defines the data model used to represent and store the various vital signs handled by the application.
Furthermore, it provides interfaces to access the data, as well as the algorithm used to calculate the MEWS, which is listed in Algorithm~\ref{algo:mews}. Furthermore, it provides interfaces to access the data, as well as the algorithm used to calculate the MEWS, which is listed in Algorithm~\ref{algo:mews}.
% TODO add some more text here
\begin{centering} \begin{centering}
\begin{tcolorbox}[ \begin{tcolorbox}[
@ -962,6 +954,23 @@ Furthermore, it provides interfaces to access the data, as well as the algorithm
\end{tcolorbox} \end{tcolorbox}
\end{centering} \end{centering}
A MEWS calculation should represent the patient's overall physiological state at -- ideally -- a discrete point in time.
Naturally, there is a delay from when a measurement is taken with a device until it can be retrieved from the API.
The transmission delays are mentioned in the Withings public API documentation:
\enquote{Delays are typically less than two minutes, but it can be longer.}\cite{noauthor_keep_nodate}.
However, in some cases, the measurements taken on a device do not get pushed to the Withings Cloud until much later.
While the cause for these longer than normal delays and missing data points is unknown and outside of the control of Medwings,
these edge cases had to be taken into account.
The time it takes a patient to take measurements using all three devices must also be accounted for.
Therefore, Medwings enforces a maximum allowed time difference of ten minutes between measurements of the different
vitals records used to calculate the \Gls{mews}.
If a set of vitals measurements is, across all records in the set, spaced further apart than ten minutes, no \Gls{mews} record
is calculated, and the user is shown an error message.
Vitals records kept in the Medwings database must be synchronized with all records available on the Withings cloud.
Regularly recurring, as well as on-demand data synchronization hooks are used by the \code{medwings} module to keep
the Medwings database up to date, while database constraints ensure validity of imported data and prevent duplication of existing records.
In order to send push notifications to mobile devices, Medwings leverages \textit{Gotify} -- a dedicated notification microservice\cite{noauthor_gotify_nodate}. In order to send push notifications to mobile devices, Medwings leverages \textit{Gotify} -- a dedicated notification microservice\cite{noauthor_gotify_nodate}.
Gotify is composed of a web server component, and a mobile app acting as the client software. Gotify is composed of a web server component, and a mobile app acting as the client software.
The server exposes its own \Gls{api}, which allows external applications like Medwings to dispatch push notifications programmatically. The server exposes its own \Gls{api}, which allows external applications like Medwings to dispatch push notifications programmatically.
@ -1033,7 +1042,7 @@ A holistic representation of the Medwings data model is shown in Figure~\ref{fig
\end{figure} \end{figure}
At its heart lies the \code{User} entity: it forms the nexus to which all vitals data and user information is linked. At its heart lies the \code{User} entity: it forms the nexus to which all vitals data and user information is linked.
Withings API tokens are stored in the \code{RefreshToken} and \code{AccessToken} entities, while the \code{GotifyUser} and \code{GotifyAccount} entities retain the Gotify API credentials. Withings API tokens are stored in the \code{RefreshToken} and \code{AccessToken} entities, while the \code{GotifyUser} and the \code{GotifyAccount} entities retain the Gotify API credentials.
The numerous vital signs, as well as the \Gls{mews} record which can potentially be calculated based on them, are also represented. The numerous vital signs, as well as the \Gls{mews} record which can potentially be calculated based on them, are also represented.
The \code{Profile} table stores additional medically relevant patient information as supplied during user registration. The \code{Profile} table stores additional medically relevant patient information as supplied during user registration.
@ -1051,42 +1060,10 @@ process in Section~\ref{sec:modules}.
The centralized server components, including the Gotify server, a task scheduler used to schedule sending notifications and the Medwings application code itself are deployed The centralized server components, including the Gotify server, a task scheduler used to schedule sending notifications and the Medwings application code itself are deployed
on a publicly accessible web server using a Docker container environment. on a publicly accessible web server using a Docker container environment.
\subsubsection{Design Challenges}\label{sec:design-challenges}
Since managing a user in Medwings requires the respective user's state to be mirrored by two other services, Withings and Gotify, keeping user accounts across
all three services in sync presents a challenge.
Particularly during user creation, user accounts must be linked to Withings, created on the Gotify server and finally saved to the Medwings database.
Various integrity checks, such as when the user aborts the registration process midway, were put in place to prevent diverging user states across the three services
and overcome this challenge.
Similarly, vitals records kept in the Medwings database must be synchronized with all records available on the Withings cloud.
Regularly recurring, as well as on-demand data synchronization hooks were implemented to keep the Medwings database up to date,
while database constraints ensure validity of imported data and prevent duplication of existing records.
The non-enterprise Withings API enforces a rate limit of 120 requests per minute.
Medwings polls the API regularly to retrieve the latest health data for patients.
At scale, with many patient users, the rate limit would quickly be reached.
The Withing API does provide functionality to notify client applications upon availability of new data, making it possible to avoid polling.
Given that Medwings was only used by a single patient user during the trial phase, falling back to polling was an acceptable compromise to lower complexity
while still operating within the rate limit.
A MEWS calculation should represent the patient's overall physiological state at -- ideally -- a discrete point in time.
Naturally, there is a delay from when a measurement is taken with a device until it can be retrieved from the API.
The transmission delays are mentioned in the Withings public API documentation:
\enquote{Delays are typically less than two minutes, but it can be longer.}\cite{noauthor_keep_nodate}.
However, in some cases, the measurements taken on a device do not get pushed to the Withings Cloud until much later.
While the cause for these longer than normal delays and missing data points is unknown and outside of the control of Medwings,
these edge cases had to be taken into account.
The time it takes a patient to take measurements using all three devices must also be accounted for.
Therefore, Medwings enforces a maximum allowed time difference of ten minutes between measurements of the different
vitals records used to calculate the \Gls{mews}.
If a set of vitals measurements is, across all records in the set, spaced further apart than ten minutes, no \Gls{mews} record
is calculated, and the user is shown an error message.
\section{System test and trial} \section{System test and trial}
Following the development and deployment of the application, Medwings underwent a performance and usability study. Following the development and deployment of the application, Medwings underwent a performance and usability study.
Over the course of one week, a test subject, impersonating a patient, used the application several times a day. Over the course of one week, a male test subject aged 29, impersonated a patient by using the application several times a day.
Each day, five notifications were dispatched. Each day, five notifications were dispatched.
Starting at 10 AM, one notification was sent every three hours. Starting at 10 AM, one notification was sent every three hours.
@ -1158,7 +1135,7 @@ Following an $S_1$, $B_1$ or $T_1$ failure, the subject repeatedly carried out m
Subsequent failures caused by the device aborting measurements were also recorded. Subsequent failures caused by the device aborting measurements were also recorded.
The count of \enquote{device aborted measurement}-failures of each device was compared to the total number of measurement attempts using that device. The count of \enquote{device aborted measurement}-failures of each device was compared to the total number of measurement attempts using that device.
As explained in Section~\ref{sec:design-challenges}, following a successful reading, a device may fail to push the measurement data to the Withings As explained in Section~\ref{sec:modules}, following a successful reading, a device may fail to push the measurement data to the Withings
Cloud within the ten minute validity range for a MEWS calculation imposed by Medwings. Cloud within the ten minute validity range for a MEWS calculation imposed by Medwings.
Depending on whether the Scanwatch, BPM Core or Thermo failed to synchronize its data within the allowed time, an $S_2$, $B_2$ or $T_2$ failure was recorded respectively. Depending on whether the Scanwatch, BPM Core or Thermo failed to synchronize its data within the allowed time, an $S_2$, $B_2$ or $T_2$ failure was recorded respectively.
The number of measurement synchronization failures which occurred was compared to the number of successfully synchronized measurements for each device. The number of measurement synchronization failures which occurred was compared to the number of successfully synchronized measurements for each device.
@ -1169,12 +1146,12 @@ Additionally, the average time taken to complete all three vitals measurements w
If the subject did not visit the Medwings website or carry out any vitals measurements despite being prompted by a notification, a $P_1$ failure was noted. If the subject did not visit the Medwings website or carry out any vitals measurements despite being prompted by a notification, a $P_1$ failure was noted.
Finally, if the patient failed to carry out all three required vitals measurements within the ten minute time limit, a $P_2$ failure was recorded. Finally, if the patient failed to carry out all three required vitals measurements within the ten minute time limit, a $P_2$ failure was recorded.
Preceeding each MEWS measurement, metrics quantifying the quality of the connection between the subject's end device and other devices across the internet were measured. Preceding each MEWS measurement, metrics quantifying the quality of the connection between the subject's end device and other devices across the internet were measured.
This was done by sampling and averaging the data transmission rates, both uplink and downlink, as well as the connection round trip times from the end device to a distant reference server, This was done by sampling and averaging the data transmission rates, both uplink and downlink, as well as the connection round trip times from the end device to a distant reference server,
the location of which was kept constant throughout the trial. the location of which was kept constant throughout the trial.
The collected connection metrics were compared with the occurrence of measurement synchronization failures. The collected connection metrics were compared with the occurrence of measurement synchronization failures.
\subsection{Data Presentation} \subsection{Results}
The trial period encompassed seven days, on each of which five notifications were dispatched to the patient. The trial period encompassed seven days, on each of which five notifications were dispatched to the patient.
Thus, an overall of $N=35$ system interactions were recorded. Thus, an overall of $N=35$ system interactions were recorded.
@ -1183,7 +1160,7 @@ The patient was at home during $26$ of these, and on the go in all other cases.
Seven $P_1$ measurement failures occurred, wherein the patient did not react to a received notification by taking measurements. Seven $P_1$ measurement failures occurred, wherein the patient did not react to a received notification by taking measurements.
Out of these, five occurred while the patient was on the go and, notably, four $P_1$ failures were consecutive, stemming from a period of 24 hours Out of these, five occurred while the patient was on the go and, notably, four $P_1$ failures were consecutive, stemming from a period of 24 hours
during which the patient did not have access to the smart devices. during which the patient did not have access to the smart devices.
No $P_2$ measurement failures occured during the trial. No $P_2$ measurement failures occurred during the trial.
The patient reported feeling reluctant about taking measurements using the devices in public spaces, compared to the privacy of their home. The patient reported feeling reluctant about taking measurements using the devices in public spaces, compared to the privacy of their home.
In total, vitals were measured using all three devices in $28$ cases. In total, vitals were measured using all three devices in $28$ cases.
@ -1198,7 +1175,7 @@ Figure~\ref{fig:measurement-stats} visualizes the overall measurement and failur
\end{center} \end{center}
\end{figure} \end{figure}
Out of $84$ successful individual vitals measurements across all devices throughout the trial, $18\%$ took longer than premitted by Medwings to synchronize with the Withings Cloud. Out of $84$ successful individual vitals measurements across all devices throughout the trial, $18\%$ took longer than permitted by Medwings to synchronize with the Withings Cloud.
Particularly while on the go, synchronization was prone to taking too long: $25\%$ of measurements resulted in synchronization failure, compared Particularly while on the go, synchronization was prone to taking too long: $25\%$ of measurements resulted in synchronization failure, compared
to $11\%$ at home. to $11\%$ at home.
Especially the BPM Core and Thermo devices suffered from slow synchronization times: in a total of $15$ synchronization timeouts, $n_{B_2} = 7$ were caused Especially the BPM Core and Thermo devices suffered from slow synchronization times: in a total of $15$ synchronization timeouts, $n_{B_2} = 7$ were caused
@ -1216,10 +1193,10 @@ The Withings Thermo did not abort any measurements ($n_{T_1} = 0$).
\end{center} \end{center}
\end{figure} \end{figure}
Figure~\ref{fig:connection-boxplot} illustrates the comparative boxplots for the \gls{downlink-datarate}, \gls{uplink-datarate}, and \Gls{rtt} connection metrics when Figure~\ref{fig:connection-boxplot} illustrates the comparative box plots for the \gls{downlink-datarate}, \gls{uplink-datarate}, and \Gls{rtt} connection metrics when
the patient was at home versus on the go. the patient was at home versus on the go.
While there are evident differences in the distributions of these metrics between the two environments, the points representing synchronization failures do not While there are evident differences in the distributions of these metrics between the two environments, the points representing synchronization failures do not
predominantly cluster around areas of low datarate or high \Gls{rtt}. predominantly cluster around areas of low data rate or high \Gls{rtt}.
\begin{figure}[!ht] \begin{figure}[!ht]
\begin{center} \begin{center}
@ -1231,7 +1208,7 @@ predominantly cluster around areas of low datarate or high \Gls{rtt}.
A reaction delay $t_r$ existed from when a notification was dispatched until the subject visited the Medwings website to take measurements. A reaction delay $t_r$ existed from when a notification was dispatched until the subject visited the Medwings website to take measurements.
The average ($\overline{t_{r,\text{home}}} = 36\text{ min}$) and median ($M_{t_{r,\text{home}}} = 33\text{ min}$) delay was significantly lower The average ($\overline{t_{r,\text{home}}} = 36\text{ min}$) and median ($M_{t_{r,\text{home}}} = 33\text{ min}$) delay was significantly lower
when the patient was at home, compared to when they were out of the house ($\overline{t_{r,\text{on the go}}} = 68\text{ min}$, $M_{t_{r,\text{on the go}}} = 70\text{ min}$). when the patient was at home, compared to when they were out of the house ($\overline{t_{r,\text{on the go}}} = 68\text{ min}$, $M_{t_{r,\text{on the go}}} = 70\text{ min}$).
The patient reported feeling fatigued by the regularity of the notifications from the second trial day onwards. The patient reported feeling fatigued by the regularity of the notifications from the second trial day onward.
The average time it took the patient to carry out all three measurements was $4.5$ minutes, with no significant difference between the \enquote{at home} and The average time it took the patient to carry out all three measurements was $4.5$ minutes, with no significant difference between the \enquote{at home} and
\enquote{on the go} environments. \enquote{on the go} environments.
@ -1245,29 +1222,50 @@ Both outliers were detected by Medwings in the form of an elevated \Gls{mews}.
The complete trial data is listed in Appendix~\ref{apdx:trial-data}. The complete trial data is listed in Appendix~\ref{apdx:trial-data}.
\subsection{Interpretation} \newpage
\section{Discussion}
The system was successful in retrieving a wide range of vital signs from the patient at regular intervals, and detected abnormal readings The usability study of the Medwings system provided valuable insights into the system's performance, reliability, and user interaction experience.
Classifying measurement failures into types helped to identify bottlenecks and other areas for improvement.
Overall, the Medwings system was successful in retrieving a wide range of vital signs from the patient at regular intervals, and detected abnormal readings
using the \Gls{mews}. using the \Gls{mews}.
All \Gls{mews} calculations carried out by Medwings resulted in the correct value based on the recorded vitals data. The system successfully aggregated data from multiple sources to compute the \Gls{mews}, and all \Gls{mews} calculations carried out by Medwings resulted in
the correct value based on the recorded vitals data.
Both at home and on the go, the patient's vital parameters could be monitored using the system. Both at home and on the go, the patient's vital parameters could be monitored using the system.
While at home, the patient was able to take all vitals measurements quickly and accommodate the measurement process into their daily routine, leading to a
high rate of interaction with the system.
Within the limited trial period, Medwings was able to detect abnormal readings effectively.
A significant portion of recorded vitals data, however, could not successfully be converted into \Gls{mews} records.
These calculation failures pertained to device synchronization delay with the Withings Cloud, highlighting a critical issue.
The BPM Core and Thermo devices synchronize only when turned on through manual interaction.
This leads to longer sync times for these devices, inhibiting Medwings from accessing new vitals data swiftly and performing a timely \Gls{mews} calculation.
A timeout period more lenient than the ten minute window imposed by Medwings may reduce the rate of synchronization failures, but it may also negatively
impact the validity of a \Gls{mews} record if implemented.
The study found that connection metrics such as data transmission rates and round-trip times did not show a significant correlation with synchronization failures.
This suggests that other factors, likely server-side processing delays on the Withings Cloud, contribute to these failures.
The study also revealed that the system is generally more reliable when the patient is at home, as indicated by the low interaction rate while on the go.
One reason was that carrying a a range of vitals sensors while out of the house is not always feasible.
Another was the subject's reluctance to take measurements in public spaces, suggesting a need for more discreet solutions for on the go vitals monitoring.
However, when measurements were made in the mobile environment, Medwings was successful at aggregating the measured data and, aside from the aforementioned
synchronization issues, was able to calculate the subject's \Gls{mews}.
While at home, the test subject was able to adhere well to the measurement schedule, missing measurements only twice throughout the week. While at home, the test subject was able to adhere well to the measurement schedule, missing measurements only twice throughout the week.
With a three-hour window to respond to each notification, the average response time of 36 minutes and the minimal number of $P_1$ failures show that the With a three-hour window to respond to each notification, the average response time of 36 minutes and the minimal number of $P_1$ failures show that the
4.5-minute measurements were manageable within the home setting. 4.5-minute measurements were manageable within the home setting.
On the go however, a significant portion of the received notifications were not followed up by vitals measurements. On the go however, a significant portion of the received notifications were not followed up by vitals measurements.
When leaving the house for extended periods of time, the subject was not always able to bring the whole array of medical devices with them. When leaving the house for extended periods of time, the subject was not always able to bring the whole array of medical devices with them.
Additionally, taking measurements could not always be done discreetly in public spaces, and finding a private area to take measurements Additionally, taking measurements could not always be done discreetly in public spaces, and finding a private area to take measurements
was not always possible. was not always possible.
This lead to a high rate of $P_1$ failures on the go, coupled with a comparatively long average reaction time of $\overline{t_{r,\text{on the go}}} = 68\text{ minutes}$. This lead to a high rate of $P_1$ failures on the go, coupled with a comparatively long average reaction time of $\overline{t_{r,\text{on the go}}} = 68\text{ minutes}$.
The rate at which device synchronization failures occured was high, with $39\%$ of successful measurements not being pushed to the Withings cloud in time The rate at which device synchronization failures occurred was high, with $39\%$ of successful measurements not being pushed to the Withings cloud in time
for a \Gls{mews} calculation to be valid. for a \Gls{mews} calculation to be valid.
A combination of three factors was determined to be the cause for this. A combination of three factors was determined to be the cause for this.
Firstly, while the Scanwatch is constantly connected to the patient's phone, the BPM Core and Thermo devices only establish Firstly, while the Scanwatch is constantly connected to the patient's phone, the BPM Core and Thermo devices only establish
their bluetooth connection intermittently. their Bluetooth connection intermittently.
Presumably, measurement data updates from these devices are sent to the phone less frequently than for the Scanwatch. Presumably, measurement data updates from these devices are sent to the phone less frequently than for the Scanwatch.
This is strongly underlined by the fact that $93\%$ of all synchronization timeouts were caused by the BPM Core or Thermo. This is strongly underlined by the fact that $93\%$ of all synchronization timeouts were caused by the BPM Core or Thermo.
@ -1287,10 +1285,7 @@ Ultimately, while $61\%$ of notifications to which the patient responded did res
suggests that routing data from the device, to the mobile app, to the Withings cloud, and finally to the Medwings server introduces substantial delays, suggests that routing data from the device, to the mobile app, to the Withings cloud, and finally to the Medwings server introduces substantial delays,
thereby affecting the system's usability for its near-real-time calculation requirement. thereby affecting the system's usability for its near-real-time calculation requirement.
\newpage In terms of its software design, the Medwings application successfully met its predetermined software requirements.
\section{Evaluation}
The Medwings application successfully met its predetermined software requirements.
The system demonstrated robust user authentication mechanisms and offered portability by being accessible on mobile phones. The system demonstrated robust user authentication mechanisms and offered portability by being accessible on mobile phones.
Additionally, it provided an intuitive interface for data visualization. Additionally, it provided an intuitive interface for data visualization.
Vital signs were collected and stored automatically from all three Withings smart medical sensors, and the respiration score was able to be determined interactively. Vital signs were collected and stored automatically from all three Withings smart medical sensors, and the respiration score was able to be determined interactively.
@ -1298,31 +1293,11 @@ The system was consistently available and ensured data validity, while maintaini
While certain challenges were encountered during the usability trial, the software's overarching objectives in terms of functional and non-functional While certain challenges were encountered during the usability trial, the software's overarching objectives in terms of functional and non-functional
requirements were successfully achieved. requirements were successfully achieved.
The usability study of the Medwings system provided valuable insights into the system's performance, reliability, and user interaction experience. % TODO add comparison to similar works
Classifying measurement failures into types helped to identify bottlenecks and other areas for improvement. %While some research exists on IoT-device monitoring in laboratory settings\cite{anzanpour_internet_2015, sahu_internet--things-enabled_2022},
Overall, the system performed well in obtaining vitals readings regularly from a patient test subject. %Medwings extends this to real-world environments.
The system successfully aggregated data from multiple sources to compute the \Gls{mews}, with all calculations being accurate.
At home, the patient was able to take all vitals measurements quickly and accommodate the measurement process into their daily routine, leading to a
high rate of interaction with the system.
Within the limited trial period, Medwings was able to detect abnormal readings effectively.
A significant portion of recorded vitals data, however, could not successfully be converted into \Gls{mews} records.
These calculation failures pertained to device synchronization delay with the Withings Cloud, highlighting a critical issue.
The BPM Core and Thermo devices synchronize only when turned on through manual interaction.
This leads to longer sync times for these devices, inhibiting Medwings from accessing new vitals data swiftly and performing a timely \Gls{mews} calculation.
A timeout period more lenient than the ten minute window imposed by Medwings may reduce the rate of synchronization failures, but it may also negatively
impact the validity of a \Gls{mews} record if implemented.
The study found that connection metrics such as data transmission rates and round-trip times did not show a significant correlation with synchronization failures.
This suggests that other factors, likely server-side processing delays on the Withings Cloud, contribute to these failures.
The study also revealed that the system is generally more reliable when the patient is at home, as indicated by the low interaction rate while on the go.
One reason was that carrying a a range of vitals sensors while out of the house is not always feasible.
Another was the subject's reluctance to take measurements in public spaces, suggesting a need for more discreet solutions for on the go vitals monitoring.
However, when measurements were made in the mobile environment, Medwings was successful at aggregating the measured data and, aside from the aforementioned
synchronization issues, was able to calculate the subject's \Gls{mews}.
%Patients appreciate the face-to-face aspect of early warning score monitoring as it allows for reassurance, social interaction, and gives them further opportunity to ask questions about their medical care\cite{downey_patient_2018}.
\newpage
\subsection{Limitations} \subsection{Limitations}
Several limitations of the current study and the Medwings system must be noted. Several limitations of the current study and the Medwings system must be noted.
@ -1336,15 +1311,36 @@ Due to time constraints, the trial period was limited to lasting only one week,
bias in the gathered data. bias in the gathered data.
Measurement prompts were dispatched every 3 hours during the day. This allows for just a restricted, intermittent view of a patient's Measurement prompts were dispatched every 3 hours during the day. This allows for just a restricted, intermittent view of a patient's
physiological state, and the chosen sampling period may require adequate ajdustment. physiological state, and the chosen sampling period may require adequate adjustment.
Moreover, although designed and implemented as a multi-user system, Medwings was only tested with one active user. Moreover, although designed and implemented as a multi-user system, Medwings was only tested with one active user.
When used by many more users, the proof-of-concept system may encounter scalability issues, such as exceeding the API rate limits When used by many more users, the proof-of-concept system may encounter scalability issues, such as exceeding the API rate limits
imposed by Withings. imposed by Withings.
The non-enterprise Withings API enforces a rate limit of 120 requests per minute.
Medwings polls the API regularly to retrieve the latest health data for patients.
At scale, with many patient users, the rate limit would quickly be reached.
The Withing API does provide functionality to notify client applications upon availability of new data, making it possible to avoid polling.
Given that Medwings was only used by a single patient user during the trial phase, falling back to polling was an acceptable compromise to lower complexity
while still operating within the rate limit.
Another significant limitation pertains to data security and privacy.
The Medwings system replicates sensitive patient data, which is already stored in the Withings Cloud, in its own database.
This dual storage increases the attack surface for breaches of sensitive data, posing a risk to patient privacy.
Ideally, removing the need to store vitals data either in the Withings Cloud or in the Medwings database would improve the system's privacy and security.
Furthermore, the system's complexity during initial setup poses a notable limitation.
Users must undergo a multi-step process: signing up for Withings, pairing medical devices, registering for a Medwings account, and finally, logging in to the Gotify application.
This makes the system less accessible, particularly for elderly patients or those less technically inclined.
Although necessitated by current resource limitations, a more streamlined setup process could have been achieved with additional development time and funding.
For example, integrating Medwings and Gotify into a single mobile application would significantly ease the setup process.
The Withings enterprise API plan can be utilized to manage OAuth2 user accounts\cite{noauthor_withings_nodate}, eliminating the need for a separate Medwings user
database and thus further simplifying user registration.
Lastly, using Medwings and the smart medical devices requires the patient to have internet access, which will negatively impact the Lastly, using Medwings and the smart medical devices requires the patient to have internet access, which will negatively impact the
system's effectiveness in some circumstances where a stable connection is not available. system's effectiveness in some circumstances where a stable connection is not available.
%Patients appreciate the face-to-face aspect of early warning score monitoring as it allows for reassurance, social interaction, and gives them further opportunity to ask questions about their medical care\cite{downey_patient_2018}.
\newpage \newpage
\subsection{Future Work and Improvements} \subsection{Future Work and Improvements}
@ -1374,7 +1370,7 @@ would elevate the system's overall capabilities and usefulness.
As technology advances, future work could explore machine learning models to predict potential health anomalies based on historical data. As technology advances, future work could explore machine learning models to predict potential health anomalies based on historical data.
\newpage \newpage
\subsection{Implications and Conclusions} \section{Conclusion}
The objective of this research was to explore the feasibility and of an \gls{rwsm} system for use by outpatients, using The objective of this research was to explore the feasibility and of an \gls{rwsm} system for use by outpatients, using
commercially available smart medical devices. commercially available smart medical devices.
@ -1434,18 +1430,58 @@ of systems like Medwings for better patient care and resource optimization in he
\includepdf[pages=2-, scale=0.95, pagecommand={}, angle=-90]{./attachments/trial-data.pdf} \includepdf[pages=2-, scale=0.95, pagecommand={}, angle=-90]{./attachments/trial-data.pdf}
\newpage \newpage
\section*{Ehrenwörtliche Erklärung} \section*{Aufgabenstellung zur Abschlussarbeit im Studiengang Informatik}
\addcontentsline{toc}{section}{Ehrenwörtliche Erklärung} \addcontentsline{toc}{section}{Aufgabenstellung}
Ich versichere, dass ich die beiliegende Bachelorarbeit ohne Hilfe Dritter und ohne Benutzung anderer als der angegebenen \begin{table}[!ht]
Quellen und Hilfsmittel angefertigt und die den benutzten Quellen wörtlich oder inhaltlich entnommenen Stellen als solche \centering
kenntlich gemacht habe. \begin{tcolorbox}[
Diese Arbeit hat in gleicher Form noch keiner Prüfungsbehörde vorgelegen. enhanced, width=\linewidth, boxrule=2pt, arc=4pt,
tabularx={l|>{\centering\arraybackslash}X}
]
\textbf{Name Student*in:} & Julian Lobbes \\
\hline
\textbf{Matrikelnummer:} & 4343013 \\
\hline
\textbf{Abschluss:} & Bachelor \\
\hline
\textbf{Name Erstgutachter*in:} & Prof. Dr. med. Dr.-Ing. Michael Marschollek \\
\hline
\textbf{Name Betreuer*in:} & Prof. Dr. Sharareh R. Niakan Kalhori \\
\hline
\textbf{Titel der Arbeit:} & Early detection of patient deterioration at home using smart medical sensors \\
\end{tcolorbox}
\end{table}
Ich bin mir bewusst, dass eine falsche Erklärung rechtliche Folgen haben wird. \subsection*{Aufgabenbeschreibung}
The goal of this bachelor thesis is the development of a software application capable of calculating an early warning score for
patient deterioration using smart medical devices, followed by a usability trial of the application.
With the help of the trial data, the developed software system should be evaluated regarding its feasibility for daily use by patients.
Braunschweig, 12.09.2023 \begin{raggedleft}
\vspace{3cm} \vspace{2cm}
Braunschweig, 12.09.2023 \\
\vspace{0.5cm}
\hspace*{\fill}\includegraphics[height=2.5cm]{/home/ulinja/work/lwe/admin/signature.png}
\end{raggedleft}
\newpage
\section*{Eigenständigkeitserklärung}
\addcontentsline{toc}{section}{Eigenständigkeitserklärung}
Hiermit versichere ich, dass ich die vorliegende Abschlussarbeit selbstständig und ohne unzulässige fremde Hilfe erbracht habe.
Ich habe keine anderen als die angegebenen Quellen und Hilfsmittel benutzt.
Die wörtliche oder sinngemäße Übernahme von Abschnitten aus Texten Dritter sowie aus eigenen vorangegangenen Veröffentlichungen habe ich
kenntlich gemacht.
Ferner versichere ich, dass es sich hier um eine Originalarbeit handelt, die noch nicht in einer anderen Prüfung vorgelegen hat.
\begin{raggedleft}
\vspace{2cm}
Braunschweig, 12.09.2023 \\
\vspace{0.5cm}
\hspace*{\fill}\includegraphics[height=2.5cm]{/home/ulinja/work/lwe/admin/signature.png}
\end{raggedleft}
\end{document} \end{document}