API:Исследователь:Example

Материал из КардиоКВАРК
Перейти к: навигация, поиск
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright (C) CardioQVARK 2015-2018, All rights reserved

import datetime
import json
import CQ # http://wiki.cardioqvark.ru/index.php?title=Docs:Example:KeepAlive

host_api = 'b-api.cardioqvark.ru'
port_api = 1443
host_cloud = 'b-g2.cardioqvark.ru'
port_cloud = 443

with CQ.Api(host_api, port_api, 'cardio-account-998.pem') as api: # сертификат Исследователя
	for c in api.all('/cardiogram?minId=70000'): # читаем нужные нам записи

		print('{0}\t{1}'.format(c['id'], datetime.datetime.fromtimestamp(c['date']).strftime('%d.%m.%Y %H:%M:%S'))) # unix timestamp -> дата записи ЭКГ

		t = api.get('/token/{0}'.format(c['id'])) # токен на чтение треков
		with CQ.Cloud(host_cloud, port_cloud) as cloud:
			wav = cloud.get('/file/{0}/100'.format(c['id']), t['token']) # читаем файл в буфер
		assert wav != None
		with open('{0}-1K-raw.wav'.format(c['id']), 'wb') as f: f.write(wav) # сохраним на диск

		rr = api.first('/analysis/{0}/rr'.format(c['id'])) # RR интервалы
		if rr == None or 'error' in rr and rr['error'] != 0: continue # пропускаем плохие
		with open('{0}-rr.json'.format(c['id']), 'w') as f: json.dump(rr, f) # сохраним на диск

		my_result = {
			'cardiogramId': c['id'],
			'methodId': 'my-method',
			'value': {
				'result': my_analysis(rr['value']['data'])
			}
		}
		api.post(my_result) # отправить в API (только для разрешенных Администратором уч. записей Исследователя)