হাসপাতালের সফটওয়্যারের জন্য বেড কই API
হাসপাতালের নিজের সফটওয়্যার (HMS) বেড কই-এর সঙ্গে যুক্ত হলে খালি বেডের সংখ্যা নিজে থেকেই হালনাগাদ হয়, আর বেডের অনুরোধ সরাসরি আপনার সফটওয়্যারে পৌঁছায়। এই নির্দেশিকা সফটওয়্যার ডেভেলপারদের জন্য।
এই নির্দেশিকা PDF-এ:বাংলা (PDF)English (PDF)
শুরু করতে
- হাসপাতালের অ্যাডমিন বেড কই প্যানেলে ঢুকে “সফটওয়্যার সংযোগ” পাতা থেকে একটি API কী বানান। কী একবারই দেখানো হয়; গোপন রাখুন।
- প্রতিটি অনুরোধে কী পাঠান X-Api-Key হেডারে। সব ঠিকানা শুরু হয় এখান থেকে:
https://api.bedkoi.com/v1 - আগে নিজের হাসপাতালের সুবিধার তালিকা নিন, তারপর সংখ্যা পাঠান।
curl https://api.bedkoi.com/v1/partner/hospital \
-H "X-Api-Key: bk_live_…"ঠিকানাগুলো
GET/partner/hospitalআপনার হাসপাতাল আর তার সুবিধা: আইডি, ধরন, মোট আর খালিPUT/partner/availabilityখালি বেডের সংখ্যা পাঠানPOST/partner/availability/confirmকিছু বদলায়নি: সব সংখ্যা ঠিক আছেGET/partner/bookingsবুকিংয়ের তালিকা (status=PENDING, CONFIRMED, open বা closed)GET/partner/bookings/{id}একটি বুকিংPOST/partner/bookings/{id}/confirmবেড রাখুন (holdMinutes: ১৫ থেকে ৭২০, না দিলে ১২০ মিনিট)POST/partner/bookings/{id}/declineফিরিয়ে দিন (reason)POST/partner/bookings/{id}/admitরোগী এসেছেনPOST/partner/bookings/{id}/cancelবাতিল করুন (বেড আবার খালি হয়)
সংখ্যা পাঠানো
প্রতিটি সুবিধা চিনুন তার id দিয়ে, অথবা facility (ধরন) আর variant দিয়ে। গোনা যায় এমন সুবিধায় available পাঠান, হ্যাঁ/না সুবিধায় isAvailable। একই সংখ্যা আবার পাঠালেও তা “এইমাত্র দেখা হয়েছে” ধরা হয়, তাই কিছু না বদলালেও অন্তত প্রতি ৩০ মিনিটে একবার পাঠান, নইলে সংখ্যা পুরনো দেখায়। মোট বেড আর দাম প্যানেল থেকে বদলান। dryRun: true দিলে কিছু সেভ না করে দেখায় কী বদলাত।
curl -X PUT https://api.bedkoi.com/v1/partner/availability \
-H "X-Api-Key: bk_live_…" \
-H "Content-Type: application/json" \
-d '{
"items": [
{ "facility": "icu", "available": 3 },
{ "facility": "cabin", "variant": "single-ac", "available": 7 },
{ "facility": "oxygen", "isAvailable": true }
]
}'সুবিধার ধরন (facility)
icuনিবিড় পরিচর্যা কেন্দ্র · সংখ্যা: availableccuহৃদরোগ নিবিড় পরিচর্যা · সংখ্যা: availablehduউচ্চ নির্ভরতা ইউনিট · সংখ্যা: availablenicuনবজাতক নিবিড় পরিচর্যা · সংখ্যা: availablepicuশিশু নিবিড় পরিচর্যা · সংখ্যা: availablescanuনবজাতক বিশেষ পরিচর্যা · সংখ্যা: availablecabinকেবিন · সংখ্যা: availableroomরুম · সংখ্যা: availablegeneral_wardসাধারণ ওয়ার্ড বেড · সংখ্যা: availableisolationআইসোলেশন / ডেঙ্গু ওয়ার্ড · সংখ্যা: availableventilatorভেন্টিলেটর · সংখ্যা: availabledialysisডায়ালাইসিস · সংখ্যা: availableoxygenঅক্সিজেন সরবরাহ · হ্যাঁ/না: isAvailableblood_bankব্লাড ব্যাংক / প্লাটিলেট · হ্যাঁ/না: isAvailabledengue_testডেঙ্গু পরীক্ষা (NS1 / CBC) · হ্যাঁ/না: isAvailableemergencyজরুরি বিভাগ · হ্যাঁ/না: isAvailable
বুকিং
কোনো পরিবার বেড চাইলে অনুরোধ PENDING থাকে; ৩০ মিনিটের মধ্যে উত্তর না এলে নিজে থেকেই বাতিল হয়। confirm করলে খালি সংখ্যা থেকে একটি কমে আর পরিবারকে SMS যায়।
curl -X POST https://api.bedkoi.com/v1/partner/bookings/<id>/confirm \
-H "X-Api-Key: bk_live_…" \
-H "Content-Type: application/json" \
-d '{ "holdMinutes": 120, "note": "Come to the ICU desk, 3rd floor" }'বুকিংয়ের খবর (ওয়েবহুক)
প্যানেলে একটি https ঠিকানা দিলে বেড কই প্রতিটি বুকিংয়ের খবর সেখানে POST করে, বুকিংয়ের পুরো তথ্যসহ। ২xx উত্তর না পেলে আরও ৫ বার চেষ্টা করে, প্রায় ১৫ মিনিট ধরে।
খবরের ধরন
booking.createdকেউ বেড চেয়েছেন (উত্তর দিন)booking.confirmedবেড রাখা হয়েছেbooking.declinedঅনুরোধ ফিরিয়ে দেওয়া হয়েছেbooking.admittedরোগী ভর্তি হয়েছেনbooking.cancelledবাতিল (পরিবার বা হাসপাতাল)booking.expiredউত্তর আসেনি, বা রাখার সময় পেরিয়ে গেছেpingপ্যানেলের “পরীক্ষা পাঠান”
POST https://your-hms.example.com/bedkoi
X-BedKoi-Event: booking.created
X-BedKoi-Delivery: 01a1…
X-BedKoi-Timestamp: 1760603400
X-BedKoi-Signature: v1=5d41…
{
"event": "booking.created",
"occurredAt": "2026-10-16T08:30:00.000Z",
"by": "family",
"viaPartner": false,
"booking": {
"id": "01a1…",
"reference": "BK7Q2XD",
"status": "PENDING",
"hospitalFacilityId": "01a0…",
"facility": { "key": "icu", "shortEn": "ICU", "shortBn": "আইসিইউ" },
"patientName": "…",
"patientAge": 58,
"phone": "+8801…",
"answerBy": "2026-10-16T09:00:00.000Z"
}
}সই মিলিয়ে নিন
X-BedKoi-Signature হলো v1= আর HMAC-SHA256(গোপন চাবি, টাইমস্ট্যাম্প + "." + বডি)। টাইমস্ট্যাম্প থাকে X-BedKoi-Timestamp-এ। সই না মিললে বা খবর ৫ মিনিটের বেশি পুরনো হলে ফেলে দিন। একই খবর দুবার আসতে পারে: X-BedKoi-Delivery দিয়ে চিনে নিন।
// Node.js
import { createHmac, timingSafeEqual } from "node:crypto"
function fromBedKoi(rawBody, headers, secret) {
const ts = headers["x-bedkoi-timestamp"]
const sent = headers["x-bedkoi-signature"] ?? ""
if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false
const expected =
"v1=" + createHmac("sha256", secret).update(ts + "." + rawBody).digest("hex")
return (
sent.length === expected.length &&
timingSafeEqual(Buffer.from(sent), Buffer.from(expected))
)
}<?php
$raw = file_get_contents('php://input');
$ts = $_SERVER['HTTP_X_BEDKOI_TIMESTAMP'] ?? '';
$sig = $_SERVER['HTTP_X_BEDKOI_SIGNATURE'] ?? '';
$expected = 'v1=' . hash_hmac('sha256', $ts . '.' . $raw, getenv('BEDKOI_WEBHOOK_SECRET'));
if (abs(time() - (int) $ts) > 300 || !hash_equals($expected, $sig)) {
http_response_code(401);
exit;
}
$event = json_decode($raw, true);
http_response_code(200);ভুল হলে
400পাঠানো তথ্য ঠিক নয়; বার্তায় কারণ লেখা থাকে।401কী নেই, ভুল বা বাতিল (api_key_missing, api_key_invalid)।404আপনার হাসপাতালে এমন বুকিং নেই।409বুকিং আগেই বদলে গেছে (booking_closed), বা খালি বেড নেই (no_bed)।429মিনিটে ১২০টির বেশি অনুরোধ; একটু পরে আবার চেষ্টা করুন।
সাহায্য দরকার?
প্রশ্ন থাকলে লিখুন: [email protected]