ابنِ على طبقة السجل السريري
خمسة أشياء تستطيع فعلها بواجهتنا، كل واحدة مسار له شاشة في طرفه. وإن لم يكن ما تريده هنا فليس لأننا لم نتفرغ له.
قراءة سجل بتفويض
معالجك يقرأ سجل المريض تمامًا كما يقرأه معالجنا، لأن المريض فوّضه بالاسم ويستطيع سحب التفويض. لا يوجد مفتاح يقرأ سجلًا: المفتاح يخبرك من يستطيع، ومعالجك يسجّل الدخول ليفعل ذلك. والمريض يستطيع أخذ سجله والمغادرة في أي وقت، بما في ذلك مغادرتك.
مثال
GET /api/partner/v1/subjects/YOUR-REF/readers
200 { "readers": [ { "clinicianId": "...", "grantedAt": "..." } ] }
POST /api/partner/v1/launch
{ "clinician": "dr@example.com", "target": "patients" }
200 { "url": "https://.../api/partner/launch?token=..." }
open it in a new window: single use, two minutes,
then a one-hour session for that clinician
targets: dashboard, patients, sessions, notesكتابة الجلسة
جلسة أُجريت على منصتك تُسجّل في ملفنا، منسوبة إلى منصتك. نسجّل أنها حدثت ومتى ومع من. ولا نقبل ملاحظة ولا نصًا من خادم، لأن المحتوى في الملف يحتاج معالجًا اعتمد ذلك النص بعينه.
مثال
POST /api/partner/v1/sessions
{ "subjectRef": "YOUR-REF",
"clinicianEmail": "dr@example.com",
"startedAt": "2026-09-12T14:00:00Z",
"durationMinutes": 50,
"externalMeetingId": "M-8814" }
201 { "sessionId": "..." }
same externalMeetingId again -> the same sessionIdتسليم الملاحظة
ملاحظة نهائية اعتمدها معالج، تجمعها أنت. لا مسودة أبدًا. ولا مخرجات نموذج لم يوقّعها أحد. الاستدعاء يخبرك بوجودها، والمفتاح يجمعها.
مثال
note.approved -> { "event": "note.approved", "id": "...", "at": "..." }
GET /api/partner/v1/notes/<sessionId>
200 { "approvedAt": "...", "content": "..." }
404 while it is a draft, and while nobody has approved itجلسة من أولها إلى آخرها
ست مكالمات. الترتيب ليس عرفًا: كل واحدة ترفض حتى تتم التي قبلها، لأن حصيلتها وثيقة سريرية وضع إنسان اسمه عليها.
- 1
اسأل مريضك قبل الجلسة
اعرض سؤال الموافقة على واجهتك وأرسل لنا الإجابة. وحتى تفعل، لا نسجّل شيئًا إطلاقًا. ومن يوافق بعد عشر دقائق يُرسَل بالمكالمة نفسها مع إزاحة، وتغطي الملاحظة من تلك اللحظة.
POST /api/partner/v1/consent
- 2
أرسل لنا الصوت
رفعًا أو بثًا، أثناء الجلسة أو بعدها. فيديوكم لا يغادر بنيتكم أبدًا: كل ما ننتجه يُصنع من الصوت، وغرفة علاج على أقراصنا شيء لم يطلب منا أحد الاحتفاظ به.
POST /api/partner/v1/sessions/<ref>/media
- 3
اقرأ التفريغ
مفصولًا بالمتحدثين، ومعه الجملة التي تقول ما الذي سُجّل. تفريغ يبدأ بعد عشر دقائق يبدو تمامًا كجلسة بدأت متأخرة، والفرق مهم.
GET /api/partner/v1/sessions/<ref>/transcript
- 4
اعرض المسودة على معالجك
ملاحظة SOAP مكتوبة من التفريغ، بنص عادي يقبله سجلكم. هي مسودة: هذا ما يسميها هذا الطرف، وهذا ما يسميه اسم الحقل.
GET /api/partner/v1/sessions/<ref>/note
- 5
معالجك يعتمد النص
أعد لنا ما اعتمده فعلًا، وقد يختلف عن مسودتنا بأي قدر بما في ذلك كليًا، ومعرّفكم للشخص الذي اعتمده. ملاحظة بلا اسم أحد عليها ليست ملاحظة، ونرفضها.
POST /api/partner/v1/sessions/<ref>/note
- 6
سلّم الملخص لمريضك
مكتوب للمريض لا للسجل، ويراجعه المعالج نفسه. ولا يوجد قبل اعتماد الملاحظة، لأن أن يسمع مريض عن علاجه من نموذج بلا أحد بينهما شيء لن نفعله.
POST /api/partner/v1/sessions/<ref>/summary
الموافقة أثناء الجلسة
الحالة الأرجح أن يغفلها التكامل، لأن البناء البديهي صواب أو خطأ. قد يوافق أحدهم بعد عشر دقائق. أرسل الإزاحة ونبدأ من هناك: تقول الملاحظة إن الجلسة سُجّلت جزئيًا ومتى بدأ ذلك، بدل أن توحي بأننا سمعنا العشر دقائق الأولى.
POST /api/partner/v1/consent
{ "session": "S-1024", "subject": "P-77",
"state": "given", "answered_at": "2026-09-14T10:40:00Z",
"offset_seconds": 600 }
200 { "recording_from_seconds": 600,
"coverage": "Recording started 10 minutes into this
session. Nothing before that was recorded,
and nothing here was written from it.",
"stopped_reason": null }المساعد، واختيار معالجكم نفسه
المعالج على منصتكم يفعّله لنفسه، ثم يسأل عن مريض من الجلسات التي أجريتموها معه. نحن لا نقرر من هو المعالج على منصتكم: خيار التفعيل يقول لماذا هو، ومن يناسبه يجده. وكل إجابة تستشهد بمعرّفات جلساتكم، فيُفتح الاستشهاد في واجهتكم أنتم.
PUT /api/partner/v1/copilot
{ "clinician": "C-9", "enabled": true }
POST /api/partner/v1/copilot
{ "subject": "P-77", "clinician": "C-9",
"question": "What did we agree in March?" }
200 { "answer": "...[S-1024]...", "citations": ["S-1024"] }
GET /api/partner/v1/subjects/<ref>/memory
200 { "sessions": [ { "session": "S-1024", "note": "..." } ] }الحد لكم، ونتوقف عنده
تحدّدون عدد جلسات شهريًا ولا نتجاوزه أبدًا. ننبّه جهة الاتصال عند 80% ثم عند 90%. وعند الحد يستمر منتجكم كما هو تمامًا ويتوقف منتجنا: لا تفريغ ولا ملاحظة ولا ملخص ولا مساعد. ولا نحاسبكم على جلسة لم نقم بها، ولا توجد رسوم تجاوز، لأن فاتورة لم تأذنوا بها ليست تجارة نريدها.
409 { "error": "This account has reached the monthly
session limit it set (500). Your session is
unaffected and is held on your own platform.
Raise the limit to turn the AI back on." }اللوحة المدمجة
زر في منتجك يفتح لوحتنا في نافذتها الخاصة، مسجّلًا دخول معالجك، بلا تسجيل دخول ثانٍ وبلا أي بيانات اعتماد منّا في يدك. وهي نافذة لا إطار مدمج بقصد: السجل داخل صفحة تتحكم فيها أنت سجل يمكن خدع أحد للتصرف فيه. وبلا فيديو افتراضيًا، لأن لديك فيديو خاص بك، ووجود منتجي فيديو على شاشة واحدة أسوأ للمريض من أي منهما وحده.
ما لا توجد له نقطة وصول
ليس مؤجلًا ولا على خطة: لا يوجد مسار ولا وسيط يقبله. لا قائمة بمن هو منضم في أي جهة. لا قائمة بمرضى أحد. لا سجل يقرأه مفتاح. لا ملاحظة لم يعتمدها معالج. لا نص جلسة نقبله من خادم. لا محتوى في استدعاء.
الوعود الأربعة التي قطعتها هذه الصفحة قبل وجود أي من هذا
كانت شروط فتح واجهة برمجية من الأصل. كل وعد منها يسمي الآن ما يحفظه، حتى تتحقق بنفسك بدلًا من أن تثق.
إصدار لا يتغير من تحتك
كل مسار يحمل v1. نضيف صلاحية ولا نعيد تشكيل استجابة، والمفتاح يسمي الصلاحيات التي صدر بها، فلا تصل قدرة جديدة داخل طلب تستخدمه بالفعل.
هوية لا تتصادم
منصتان ستُرسلان إلينا مريضًا اسمه P123. مرجعك يُحفظ على حسابك ويُحلّ داخله فقط، فمرجعك ومرجعهم صفّان مختلفان ولا يمكن لأحدهما الوصول إلى الآخر.
موافقة تبقى قائمة عبر الحدود
لا مفتاح يقرأ سجلًا. المفتاح يسأل من يحق له القراءة، والجواب هو المعالجون الذين منحهم المريض بالاسم. ثم يسجّل معالجك دخوله بنفسه ليقرأ، وإلغاء المنح يغلق هذا الباب في اللحظة نفسها التي يغلق فيها بابنا.
سجل تدقيق على الجانبين
كل طلب يُسجَّل بالمفتاح الذي أجراه، وفي حالة الإطلاق بالمعالج الذي جرى بالنيابة عنه. وقراءة السجل تظهر في سجل وصول المريض نفسه، كما تظهر قراءتنا، وتسمي منصتك.
المفاتيح مُبصمة، ومحدودة باستخدام واحد في المرة، وقابلة للتبديل، وتُصدر بعد اتصال. لا يوجد مفتاح ذاتي الخدمة، ولا يرى المعالج مفتاحًا أبدًا.
المفاتيح الحقيقية محدودة بعدد طلبات في الدقيقة، وتجاوز الحد يوقف المفتاح بدلًا من إبطائه. ابنِ على طلب واحد داخل مسار واحد، لا على مسح شامل.