SFTP
rev.1.3
Specification
| Protocol | SFTP |
| Authorization method | Password authentication |
| SFTP user | OMRON Healthcare provides this. |
| Connection destination host name | OMRON Healthcare provides this. |
| Port no. for connection | OMRON Healthcare provides this. |
Directory Structure
| 1st Tier | 2nd Tier | 3rd Tier | 4th Tier | 5th Tier | 6th Tier | Description |
|---|---|---|---|---|---|---|
| data | Directory for vital data | |||||
| {partnertId} | Directory where actual vital data is placed | |||||
| ecgdata | fixed name | |||||
| {groupD} | The ID of the group to which each user belongs. | |||||
| {Creation date/time} | The date & time when the file generation process started. The directory name follows the 'YYYYMMDDhhmmss' format. | |||||
| {Sequence No} | A 3-digit name starting with '001'. The number of files in the directory is 10,000 or less, if it exceeds 10,000, a new directory is created, and the next file is saved in the new directory. | |||||
Starting at the third tier, only ECG waveform data will be available.
SFTP server has a redundant configuration. In the case of a server failure, failover will automatically switch the server of the connection destination. It may take several minutes for switching to server. If you can not connect, please wait for a few minutes and try to connect again.
Preparation in advance
Install any OpenSSH client.
Install File decompression software (Software that can decompress ZIP files with passwords).
Get data
Specify the connection destination of the SFTP server that is presented by OMRON Healthcare then connect SFTP server with user and password.
C:\> sftp <user>@<connection destination name> [{
"PartnerId" : "a791xpp1-cb4a-11e7-ad25-0a669524e191",
"PartnerName" : "sample partner",
"GroupId" : "p2xhki12x0zk",
"GroupName" : "sample group1",
"deviceCategory" : "0",
"UserId" : "191e612349x8-9218-7e11-0c1a-Xax0a12c",
"measureList" : [{
"_created" : 1505879300391,
"_dataType" : "application/json",
"_id" : "HEM-6324T_00000094002d11020a916900ffff_1_1505855649000",
"_modified" : 1505879300391,
"_owner" : "191e612349x8-9218-7e11-0c1a-Xax0a12c",
"_version" : "1",
"deviceModel" : "HEM-6324T",
"deviceSerialID" : "00000094002d11020a916900ffff",
"userNumberInDevice" : 1,
"measureDeviceDateFrom" : "20170920060935000",
"measureDateFrom" : 1505855649000,
"userUpdateDate" : 1505879300000,
"informationList" : {
"timeZone" : "Asia/Tokyo",
"measureDateTo" : 1505916575000,
"measureDeviceDateTo" : "20170920060935000",
"transferDate" : 1505879131000},
"bodyIndexList" : {
"1" : ["130","20496","0","0"],
"2" : ["87","20496","0","0"],
"3" : ["71","61600","0","0"],
"4" : ["3","0","0","0"],
"6" : ["0","0","0","0"],
"7" : ["0","0","0","0"],
"8" : ["0","0","0","0"],
"10" : ["0","0","0","0"]},
"deleteFlag":0}]}]File Specification
Non-ECG File Specifications
File Name | {Group ID}_{File created date and time}.json.zip |
Data Format | JSON |
Character Code | utf-8 |
File Creation Unit | Created by group, containing only the data that has changed since the last provided file. |
Record Unit | A JSON object created by user, device category |
File Configuration | data file only |
Compression Format | zip Password is required for decompression 2 |
File Creation Cycle | Daily |
File Storage Period | 7th Generation |
1:The file name of HeartAdvisor App is 'externaldata1_[Group ID]_[File created date and time].json.zip'.
2:Password is Partner ID provided by OMRON Healthcare.
ECG Data Specification
| File name | {User ID}_{Client Application Id}16{ObjectId}_Data.json |
| Data format | JSON |
| Character code | UTF-8 |
| Record unit | 1 JSON object as per user unit |
| File configuration | data file only |
| File creation cycle | Every hour |
| File storage period | 7 days |
ECG Data (Waveform) Specification
| File name | {User ID}_{Client Application Id}16{ObjectId}_Body.zip |
| Data format | Binary (.atc) |
| Record unit | 1 object per atc file (There are multiple files in one zip file.) |
| File configuration | data file only |
| Compression format | Zip (No password) |
| File creation cycle | Every hour |
| File storage period | 7 days |
Data Structure
Non-ECG File Specifications
PartnerId | string |
PartnerName | string |
GroupId | string |
GroupName | string |
UserId | string |
deviceCategory | string |
MesureList | object array |
deviceModel | string |
deviceSerialID | string |
userNumberInDevice | int |
measureDateFrom | long |
measureDeviceDateFrom | string |
userUpdateDate | long |
informationList | object |
transferDate | long |
measureDateTo | long |
measureDeviceDateTo | string |
timeZone | string |
deleteFlag | int |
bodyIndexList | object |
decisionFlag | int |
correctedDateTimeFlag | int |
3:About items containing milliseconds
The valid range of values for these items is up to seconds. Do not use the last 3 digits of the milliseconds value.
This is because the last 3 digits of the millisecond value may include device control information, etc., and has nothing to do with the user's measurement behavior.
4:Index is stored in object form inside the body index list (bodyIndexList).
Measured data, unit and index are type of string. Index name: [measured data, unit, index, Sequence no., time division data]
・Arbitrary data may be included in the elements thereafter the time division data.
・Index that does not have time-division data, does not include time division data.
・Regarding the details of time division data, refer to FAQ
・For index name and setting value, refer to each page for devices.
ECG Data Specifications
clientApplicationId | int |
measureList | object |
useObjectBodyFlag | boolean The flag indicating whether data of ObjectBody part(symptom data) is included (true:with waveform data/false:no waveform data) If there is no data, this key may not exist. |
bodyIndexList | int |
userNumberInDevice | int |
uuid | int |
informationList | int |
userUpdateDate | int |
measureDeviceDateFrom | int |
deviceModel | int |
deviceSerialID | int |
measureDateFrom | int |
{
"clientApplicationId":1,
"measureList": {
"useObjectBodyFlag": true,
"_owner": "191e695246a0-8aab-ae11-d77e-ebbf91cd",
"bodyIndexList": {
"4096": ["133", "61600", "0", "0"],
"4228": ["0", "0", "0", "\\u0031\\u0032\\u0033"]
},
"userNumberInDevice": 1,
"_dataType": "application/json",
"_bodyETag": "zop36saq169out7ormwgzjkh2",
"uuid": "191e695246a0-8aab-ae11-d77e-ebbf91cd",
"informationList": {
"measureDateTo": 1602131327000,
"timeZone": "Asia/Tokyo",
"transferDate": 1602131327000,
"measureDeviceDateTo": "20201008000000000"
},
"userUpdateDate": 1602131327000,
"measureDeviceDateFrom": "20201008000000000",
"_created": 1602493425633,
"deviceModel": "HEM-7280T-AR",
"deviceSerialID": "000000000000000q",
"_bodyType": "application/x-zip-compressed",
"_id": "HEM-7280T-AR_000000000000000q_3_1602131327000",
"_version": "11",
"_modified": 1602494255730,
"measureDateFrom": 1602131327000
}
}Updated 8 days ago