Eduki nagusira joan

Webhook-en ikuspegi orokorra

Zer dira webhook-ak?​

Webhook-ek vitalera-ri zure aplikaziora denbora errealeko HTTP POST jakinarazpenak bidaltzea ahalbidetzen diote plataforman gertaerak gertatzen direnean. APIa aldaketen bila kontsultatu beharrean, webhook-ek datuak zure amaiera-puntura bultzatzen dituzte gertaerak gertatzen diren bezain laster.

Nola funtzionatzen du​

  1. Konfiguratu webhook URL bat zure vitalera erakundearen ezarpenetan
  2. Hautatu jaso nahi dituzun gertaera motak
  3. Ezarri sekretua sinadura-egiaztapenerako
  4. vitalera-k HTTP POST eskaerak bidaltzen ditu zure URLra bat datozen gertaerak gertatzen direnean

Gertaera motak​

Gertaera motaAktibatzailea
observation.createdPaziente batentzako behaketa berri bat erregistratzen da
alarm.triggeredAlarma-arau bat behaketa batek aktibatzen du
alarm.resolvedAurretik aktibatutako alarma bat ebazten da
consent.grantedPaziente batek datu-partekatzeko adostasuna ematen du
consent.revokedPaziente batek adostasuna errebokatzen du
questionnaire_response.submittedPaziente batek galdetegi-erantzun bat bidaltzen du
care_plan.activatedZainketa-plan bat aktibatzen da
care_plan.completedZainketa-plan batek amaiera-data iristen du edo osatzen da

Webhook-aren karga​

Webhook karga guztiek egitura koherente bat jarraitzen dute:

{
"event_type": "observation.created",
"timestamp": "2024-01-15T10:30:00Z",
"organization_id": 42,
"data": {
"id": 810,
"resourceType": "Observation",
"observation_definition": {
"observation_name": "heart_rate",
"observation_method": "device"
},
"category": "physiological_data",
"value": "72",
"value_type": "int",
"value_unit": "bpm",
"issued": "2024-01-15T10:30:00Z",
"effective_datetime": "2024-01-15T10:30:00Z",
"source_id": 1
}
}

Aktibatutako alarma adibidea​

{
"event_type": "alarm.triggered",
"timestamp": "2024-01-15T10:31:00Z",
"organization_id": 42,
"data": {
"alarm_id": 55,
"alarm_name": "High Heart Rate",
"severity": "high",
"patient_id": 123,
"triggering_observation": {
"observation_name": "heart_rate",
"value": "145",
"value_unit": "bpm"
}
}
}

Sinadura-egiaztapena​

Webhook dei guztiek x-webhook-signature goiburu bat biltzen dute eskaeraren gorputzaren HMAC-SHA256 sinadura batekin, zure webhook sekretuarekin kalkulatua.

Webhook bat egiaztatzeko:

  1. Atera x-webhook-signature goiburuaren balioa
  2. Kalkulatu eskaeraren gorputz gordinaren HMAC-SHA256 zure webhook sekretuarekin
  3. Konparatu kalkulatutako sinadura goiburuaren balioarekin (erabili denbora-konstanteko konparazioa)

Python adibidea​

import hmac
import hashlib

def verify_webhook(payload: bytes, signature: str, secret: str) -> bool:
expected = hmac.new(
secret.encode("utf-8"),
payload,
hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, signature)

Node.js adibidea​

const crypto = require('crypto');

function verifyWebhook(payload, signature, secret) {
const expected = crypto.createHmac('sha256', secret).update(payload).digest('hex');
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature));
}

Segurtasun-jardunbide onak​

  • Beti erabili HTTPS amaiera-puntuak
  • Ezarri sekretu bakarra webhook konfigurazio bakoitzeko
  • Egiaztatu sinadura sarrerako eskaera bakoitzean prozesatu aurretik
  • Erantzun 200 OK azkar eta prozesatu karga asinkronoki
  • Gorde webhook sekretua modu seguruan (adib., ingurune-aldagaia, sekretu-kudeatzailea)

Berriro saiatze-politika​

Zure amaiera-puntuak 2xx ez den erantzun bat itzultzen badu edo denbora-muga gaindituko balu, vitalera-k atzerapen esponentzialarekin saiatzen da berriro:

SaiakeraAtzerapena
1. saiakera~1 minutu
2. saiakera~5 minutu
3. saiakera~30 minutu
4. saiakera~2 ordu

Saiakera guztiak agortzen direnean, gertaera huts egin duen gisa markatzen da. Huts egindako bidalketak zure erakundearen ezarpenetan berrikusi ditzakezu.

Laguntza behar duzu?​

Jarri harremanetan [email protected] helbidean zure erakundearentzat webhook-ak konfiguratzeko.