DataForwardingSimple - API
<p>[TOC]</p>
<h1>1.测量数据外发接口</h1>
<h2>1.1 简要描述</h2>
<p>这个接口是Konsung平台用来发送实时呼吸机数据到其他公司或服务的一个工具。别的公司或服务会通过实现这个接口(HTTP服务)来接收这些数据。为了保证数据的安全,接收方需要有一套验证系统。</p>
<h2>1.2 接口使用方法</h2>
<p>如果你想接收来自Konsung平台的实时呼吸机数据,你需要按照我们提供的格式设置一个接口,并在你的网站上运行这个服务。一旦设置好,Konsung平台就会自动把实时数据发送到你的服务上。</p>
<p><strong>安全要求</strong>:</p>
<ul>
<li><strong>重要性</strong>:为了保护数据的安全性,所有通过这个接口的数据传输都必须进行加密。</li>
<li><strong>方法</strong>:使用AES加密方法对所有请求和响应进行加密和解密。</li>
<li><strong>更多信息</strong>:请查阅我们提供的“安全加密指南”,了解具体的操作步骤和加密细节。</li>
</ul>
<h2>1.3 整合流程图</h2>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=35d2ec66aff0cb7064919d6d7bd3df54&amp;file=file.png" alt="整合流程图" /></p>
<h2>1.4 数据传输方式</h2>
<ul>
<li><strong>协议:</strong> HTTP</li>
<li><strong>数据格式:</strong> JSON</li>
<li><strong>请求方式:</strong> POST</li>
</ul>
<h2>1.5 数据传输机制</h2>
<p>这个接口的数据传输过程分为三个主要步骤:</p>
<ol>
<li>
<p><strong>呼吸机数据上传</strong>:</p>
<ul>
<li>呼吸机将实时数据上传到Konsung平台。</li>
<li>这确保了数据的即时性和准确性。</li>
</ul>
</li>
<li>
<p><strong>数据汇总</strong>:</p>
<ul>
<li>Konsung平台会对收集到的所有呼吸机数据进行汇总。</li>
<li>汇总是基于每天收集的数据进行的。</li>
</ul>
</li>
<li><strong>转发数据</strong>:
<ul>
<li>汇总后的数据被整理成一个结果集。</li>
<li>然后,这些数据会被发送到指定的接收方。</li>
</ul></li>
</ol>
<h2>1.6 数据推送机制</h2>
<hr />
<h3>1.6.1 机制一(实时传输)</h3>
<p>> 患者通过WIFI进行治疗时,数据以实时方式传输。</p>
<p><strong>每天中午 <code>11:59:00</code> 推送数据</strong></p>
<p>> 例如:<code>2024年9月4日 11:59:00</code> 发送的数据包括 <code>2024年9月3日 11:59:00 ~ 2024年9月4日 11:59:00</code> 期间的治疗数据。</p>
<h3>1.6.2 机制二(SD卡)</h3>
<p>> 医生导入患者的SD卡时,系统会统一传输数据,时间间隔为1秒。</p>
<p><strong>手动导入SD卡数据时,系统会依次推送尚未传送的治疗日期数据</strong></p>
<p>> 例如:假设SD卡中的治疗数据周期为:</p>
<ol>
<li>2024-9-1 00:41:06 ~ 2024-9-1 06:41:06</li>
<li>2024-9-2 01:22:06 ~ 2024-9-2 07:41:06</li>
<li>2024-9-2 23:22:06 ~ 2024-9-3 05:41:06</li>
</ol>
<p>导入SD卡数据时,系统会逐条发送数据。例如,若第一条已发送,系统将接着发送其余两条数据。</p>
<h2>1.7 数据接收地址</h2>
<p>> <code>HTTPS/HTTP</code></p>
<ul>
<li><strong>网址格式:</strong> <code>http://ip:port/path/method</code></li>
<li><code>ip</code>:第三方接口地址</li>
<li><code>port</code>:第三方接口端口</li>
<li><code>path</code>:第三方接口请求路径</li>
<li><code>method</code>:第三方接口方法</li>
</ul>
<h2>1.8 请求参数说明</h2>
<h3>1.8.1 参数说明</h3>
<table>
<thead>
<tr>
<th>参数名</th>
<th>类型</th>
<th>必需</th>
<th>长度</th>
<th>描述</th>
<th>详细说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>dataId</td>
<td>string</td>
<td>是</td>
<td>32</td>
<td>数据编号</td>
<td>数据在系统中的唯一编码,用于在同步或更新操作时进行区分。</td>
</tr>
<tr>
<td>deviceCode</td>
<td>string</td>
<td>是</td>
<td>32</td>
<td>设备编码</td>
<td>设备的唯一标识符,用于标识请求来源的具体机器设备。</td>
</tr>
<tr>
<td>deviceModel</td>
<td>string</td>
<td>是的</td>
<td>20</td>
<td>设备型号</td>
<td>例如,DM28-25S-B</td>
</tr>
<tr>
<td>time</td>
<td>string</td>
<td>是</td>
<td>32</td>
<td>当前时间</td>
<td>发起请求的当前时间(时间戳ms)。</td>
</tr>
<tr>
<td>dataDate</td>
<td>string</td>
<td>Yes</td>
<td>32</td>
<td>数据的时间</td>
<td>Format: <code>yyyy-MM-dd</code></td>
</tr>
<tr>
<td>key</td>
<td>string</td>
<td>是</td>
<td>32</td>
<td>加密领域</td>
<td>用于安全验证的加密字符串,生成方式为MD5加密<code>appSecret</code>和<code>time</code>的组合,其中<code>appSecret</code>由Konsung提供。</td>
</tr>
<tr>
<td>checkData</td>
<td>array</td>
<td>是</td>
<td>-</td>
<td>数据集</td>
<td>传输的数据集数组,每个元素包含特定检测数据的详细信息。</td>
</tr>
</tbody>
</table>
<h3>1.8.2 checkData对象说明</h3>
<ul>
<li>checkData对象数组解释( 治疗结果数据 + 机器设置信息)
<ol>
<li><strong>治疗结果数据</strong>:这是呼吸机在治疗过程中生成的最终数据,包含了所有关于治疗效果的信息。</li>
<li><strong>机器设置信息</strong>:这些数据提供了关于呼吸机设置的详细信息。</li>
</ol></li>
</ul>
<table>
<thead>
<tr>
<th>参数名</th>
<th>类型</th>
<th>必需</th>
<th>长度</th>
<th>描述</th>
<th>详细说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>checkKindCode</td>
<td>string</td>
<td>是</td>
<td>10</td>
<td>主要类别代码</td>
<td>用于标识数据的主要类别,具体代码和类别请参考[1.8.3 类别对象说明]()。</td>
</tr>
<tr>
<td>checkTypeCode</td>
<td>string</td>
<td>否</td>
<td>10</td>
<td>小类别代码</td>
<td>用于标识数据的更具体的小类别,详情见[1.8.3 类别对象说明]()。</td>
</tr>
<tr>
<td>value</td>
<td>string</td>
<td>是</td>
<td>10</td>
<td>测量值</td>
<td>该检测项的具体数据值。</td>
</tr>
<tr>
<td>unit</td>
<td>string</td>
<td>是</td>
<td>10</td>
<td>单位</td>
<td>测量值的单位。</td>
</tr>
</tbody>
</table>
<p>为了区分这两类数据,需要注意<code>checkData</code>字段中的<code>checkKindCode</code>值:</p>
<ul>
<li>当<code>checkKindCode</code>为<code>31</code>时,表示这是关于治疗的数据。相关数据可从<code>checkTypeCode</code>字段获取。</li>
</ul>
<h3>1.8.3 类别对象说明</h3>
<table>
<thead>
<tr>
<th>检测大项编码</th>
<th>检测小项编码</th>
<th>描述</th>
<th>单位</th>
</tr>
</thead>
<tbody>
<tr>
<td>31</td>
<td>duration</td>
<td>持续时间,表示佩戴的总使用时长。</td>
<td>秒</td>
</tr>
<tr>
<td>31</td>
<td>maskFit</td>
<td>面罩贴合度,计算公式为(不漏气的使用时长/总使用时长),不漏气的使用时长表示头饰有戴在病人的脸上的时长。</td>
<td>%</td>
</tr>
<tr>
<td>31</td>
<td>tidalVolumeAvg</td>
<td>平均呼出潮气量。</td>
<td>ml</td>
</tr>
<tr>
<td>31</td>
<td>Ahi</td>
<td>包含患者呼吸暂停低通气指数。该指标表明患者睡眠呼吸暂停的严重程度。</td>
<td>-</td>
</tr>
<tr>
<td>31</td>
<td>respiratoryRateAvg</td>
<td>平均呼吸频率,表示每分钟呼吸的次数。</td>
<td>次/分钟</td>
</tr>
<tr>
<td>31</td>
<td>ieRatioAvg</td>
<td>平均呼吸比,即吸气时间与呼气时间的比例。</td>
<td>-</td>
</tr>
</tbody>
</table>
<p><strong>示例说明</strong></p>
<p>以下JSON示例展示了如何从<code>checkData</code>数组中提取特定的治疗和机器设置数据:</p>
<ul>
<li>当<code>checkKindCode</code>为<code>31</code>时,表示这是关于治疗的数据。可以根据<code>checkTypeCode</code>的值(例如<code>duration</code>、<code>largeLeakDuration</code>、<code>tidalVolume</code>)获取对应的<code>value</code>。</li>
</ul>
<h2>1.9 请求参数示例</h2>
<pre><code class="language-json">{
&quot;dataId&quot;: &quot;16155278813612&quot;,
&quot;deviceCode&quot;: &quot;YB202304140456&quot;,
&quot;deviceModel&quot;: &quot;DM28-25S-B&quot;,
&quot;time&quot;: &quot;1708480637598&quot;,
&quot;dataDate&quot;: &quot;2024-09-04&quot;,
&quot;key&quot;: &quot;d3c004f1b695fbea0040f82cde631fe9&quot;,
&quot;checkData&quot;: [{
&quot;checkKindCode&quot;: &quot;31&quot;,
&quot;checkTypeCode&quot;: &quot;duration&quot;,
&quot;value&quot;: &quot;7800&quot;,
&quot;unit&quot;: &quot;s&quot;
},
{
&quot;checkKindCode&quot;: &quot;31&quot;,
&quot;checkTypeCode&quot;: &quot;maskFit&quot;,
&quot;value&quot;: &quot;95&quot;,
&quot;unit&quot;: &quot;%&quot;
},
{
&quot;checkKindCode&quot;: &quot;31&quot;,
&quot;checkTypeCode&quot;: &quot;tidalVolumeAvg&quot;,
&quot;value&quot;: &quot;400&quot;,
&quot;unit&quot;: &quot;ml&quot;
},{
&quot;checkKindCode&quot;: &quot;31&quot;,
&quot;checkTypeCode&quot;: &quot;ahi&quot;,
&quot;value&quot;: &quot;4.7&quot;,
&quot;unit&quot;: &quot;Event/H&quot;
},
{
&quot;checkKindCode&quot;: &quot;31&quot;,
&quot;checkTypeCode&quot;: &quot;respiratoryRateAvg&quot;,
&quot;value&quot;: &quot;12&quot;,
&quot;unit&quot;: &quot;cpm&quot;
}
{
&quot;checkKindCode&quot;: &quot;32&quot;,
&quot;checkTypeCode&quot;: &quot;ieRatioAvg&quot;,
&quot;value&quot;: &quot;1.4&quot;,
&quot;unit&quot;: &quot;%&quot;
}
]
}</code></pre>
<h3>1.9.1 请求参数解释</h3>
<ul>
<li><strong>dataId</strong>: 唯一标识数据记录的 ID。</li>
<li><strong>deviceCode</strong>: 设备的唯一标识符,用于识别具体的设备。</li>
<li><strong>deviceModel</strong>: 设备型号。</li>
<li><strong>time</strong>: 请求的时间戳(13 位),以毫秒为单位,用于验证请求的时效性。</li>
<li><strong>dataDate</strong>: 数据记录的日期,格式为 YYYY-MM-DD。</li>
<li><strong>key</strong>: 请求的签名密钥,用于验证请求的真实性。</li>
<li><strong>checkData</strong>: 包含多个数据检查项的数组,每个数据项包含以下字段:
<ul>
<li><strong>checkKindCode</strong>: 检测大项编码,用于标识检测类别(例如,31 表示治疗数据)。</li>
<li><strong>checkTypeCode</strong>: 检测小项编码,用于标识具体的数据项(如 <code>duration</code> 表示持续时间)。</li>
<li><strong>value</strong>: 实际检测值。</li>
<li><strong>unit</strong>: 数据值的单位(如秒 <code>s</code>、毫升 <code>ml</code>)。</li>
</ul></li>
</ul>
<h2>1.10 响应结果参数示例</h2>
<pre><code class="language-JSON">{
&quot;code&quot;: &quot;000&quot;,
&quot;errorMessage&quot;: &quot;Operation successful!&quot;,
&quot;data&quot;: null
}</code></pre>
<table>
<thead>
<tr>
<th>姓名</th>
<th>类型</th>
<th>必需的</th>
<th>长度</th>
<th>描述</th>
<th>解释</th>
</tr>
</thead>
<tbody>
<tr>
<td>code</td>
<td>string</td>
<td>是的</td>
<td>20</td>
<td>状态码</td>
<td>000:成功 001:请求失败 002:参数格式错误 003:缺少参数 105:无效密钥</td>
</tr>
<tr>
<td>errorMessage</td>
<td>string</td>
<td>不</td>
<td>10</td>
<td>错误信息</td>
<td>-</td>
</tr>
<tr>
<td>data</td>
<td>object</td>
<td>不</td>
<td>-</td>
<td>数据</td>
<td>-</td>
</tr>
</tbody>
</table>
<h2>变更历史记录</h2>
<table>
<thead>
<tr>
<th style="text-align: left;">改变日期</th>
<th style="text-align: left;">变更摘要</th>
<th style="text-align: left;">操作</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">-</td>
<td style="text-align: left;">-</td>
<td style="text-align: left;">-</td>
</tr>
</tbody>
</table>
<p>目前没有可用的更改历史记录。</p>