وثيقة بروتوكول تجربة سريرية تُترجَم من نصٍّ طبي فوضوي إلى رسم بياني معرفي مُهيكل، تجسيداً لجوهر المقال: الانتقال من الصياغة النصية إلى المنطق في مطابقة المرضى.
Artificial IntelligenceHealthcareClinical Trials

خطأٌ يكلّف 800,000 دولار يومياً: كيف تقتل قسطرةٌ خلط بينها الذكاء الاصطناعي اكتشافَ الأدوية

Ashutosh SinghalAshutosh Singhal4 فبراير 202613 min

كانت ليلة ثلاثاء، وكنت أحدّق في جدول بيانات لا معنى له.

كنا نُجري تجربة تجريبية — نختبر مدى قدرة نموذج لغوي كبير على فرز سجلات المرضى وفق معايير الأهلية لتجربة في علم الأورام. كان البروتوكول واضحاً ومباشراً، كما هي بروتوكولات الأورام عادةً: مضاد تخثّر جديد مع قائمة من معايير الاستبعاد، أحدها كان «قسطرة قلبية سابقة». قسطرة القلب. قسطرة تُمرَّر إلى حجرات القلب لتقييم وظيفة الشرايين التاجية. إجراء قلبي باضع وخطير.

كان الذكاء الاصطناعي قد وضع علامة على أحد المرضى بأنه غير مؤهل. السبب: قسطرة القلب. فتحتُ سجل المريض. كان الإجراء الموثّق عبارة عن بزل وريدي مركزي — قسطرة مركزية تُوضع في الوريد الوداجي لإيصال الأدوية. إنه إجراء وصول وعائي يُجرى بجانب سرير المريض. تقوم به الممرضات في وحدة العناية المركّزة. إنه ليس إجراءً قلبياً. بل ليس قريباً من ذلك حتى.

لكن النموذج رأى «قسطرة»، ورأى «وريدي»، ورأى أن الملاحظة كُتبت في وحدة رعاية قلبية، فاستنتج: الشيء نفسه. اختفى المريض. استُبعد. ولم يظهر أبداً لمنسّق الموقع. وإليك ما ظل يطاردني — ما كان أحد ليلاحظ ذلك. كان النظام سيتخلّص بصمت من مريض مؤهل، وكانت التجربة ستنقص شخصاً واحداً، وما كان أحد ليعرف سبب تأخّر التسجيل.

كانت تلك اللحظة التي توقّفت فيها عن الاعتقاد بأن مطالبات (prompts) أفضل ستُصلح استقطاب المرضى للتجارب السريرية. المشكلة ليست في مفردات النموذج. المشكلة أننا نستخدم آلة احتمالات للقيام بعمل المنطق.

لماذا يعلق 80% من مشاريع شركات الأدوية في مرحلة الاستقطاب؟

لدى صناعة الأدوية سرّ قذر لا تحب أي مكالمة أرباح أن تتوقف عنده: ما يقارب 80% من التجارب السريرية تفشل في الوفاء بالجداول الزمنية للتسجيل. ليس لأن العلم خاطئ. وليس لأن المرضى غير موجودين. بل لأن عملية إيجاد المرضى المؤهلين ومطابقتهم بالتجارب معطّلة على مستوى جوهري.

دعني أضع رقماً مالياً على هذا الخلل. وفقاً لمركز تافتس لدراسة تطوير الأدوية (Tufts Center for the Study of Drug Development)، فإن يوماً واحداً من التأخير في تطوير الأدوية يكلّف الآن نحو 800,000 دولار من مبيعات الوصفات الطبية المفقودة لأصل عالي الأداء. وفي أمراض القلب والأوعية الدموية وأمراض الدم، يرتفع هذا الرقم إلى ما يتجاوز 1.3 مليون دولار في اليوم. أما بالنسبة لتأخير تسجيل مدته ستة أشهر في دواء أورام تنافسي — وهو نوع التأخير الذي يحدث بشكل روتيني — فأنت أمام رقم قد يجعل علاجاً متفوّقاً علمياً ميتاً تجارياً منذ لحظة وصوله.

لم يعد عنق الزجاجة في اكتشاف الأدوية هو العلم، بل الصياغة النصية.

والواقع التشغيلي أكثر قتامةً من الواقع المالي. 37% من مواقع البحث تسجّل عدداً أقل من المطلوب، و11% منها تفشل في تسجيل مريض واحد. كل فشل في الفرز — مريض يبدو مؤهلاً على الورق لكنه ليس كذلك — يكلّف نحو 1,200 دولار. وعندما تُنتج أداة الذكاء الاصطناعي لديك 100 «تطابق» ولا يكون منها حقيقياً سوى 5، فأنت لم تُؤتمِت الاستقطاب. بل شنَنت هجوم حجب خدمة (denial-of-service) على مواقعك السريرية نفسها.

رأيت هذا يحدث. بدأ منسّقو المواقع الذين كانوا متحمّسين لنماذجنا الأولية بتجاهل قوائم التطابق تماماً. قالت لي إحداهن في مكالمة: «أداتك تعطيني هُراءً». ولم تكن مخطئة. عادت إلى تصفّح ملفات PDF يدوياً. Ctrl+F. هذا هو الوضع الفعلي لأحدث ما توصّلت إليه الصناعة.

القسطرة التي حطّمت إيماني بالنماذج اللغوية الكبيرة

دعني أتعمّق أكثر في خطأ ليلة الثلاثاء تلك، لأنه يوضّح شيئاً تتجاوزه معظم عروض الذكاء الاصطناعي في الرعاية الصحية.

عندما يعالج نموذج لغوي كبير النص، فإنه يحوّل الكلمات إلى متجهات — نقاط في فضاء رياضي عالي الأبعاد. والكلمات التي تظهر في سياقات متشابهة ينتهي بها المطاف قريبةً من بعضها. فـ«قسطرة القلب» و«القسطرة الوريدية المركزية»، في فضاء المتجهات، متجاورتان عملياً. كلتاهما تتضمّن قسطرة. وكلتاهما تتعلّق بالجهاز الوعائي. وكلتاهما تظهر في الملاحظات السريرية محاطةً بمصطلحات طبية متشابهة.

لكنهما إجراءان مختلفان تماماً يستهدفان بُنى تشريحية مختلفة بملامح مخاطر مختلفة وتبعات سريرية مختلفة. أحدهما يدخل إلى القلب. والآخر يدخل إلى وريد. استبعد البروتوكول الأول. وكان لدى المريض الثاني. ولم يستطع الذكاء الاصطناعي التمييز بينهما لأنه لا يفهم علم التشريح — بل يفهم تقارب الكلمات.

هذه ليست حالة نادرة. فقد حدّدت دراسات تُقيّم نماذج الذكاء الاصطناعي لمطابقة التجارب نمط الفشل هذا بالضبط: نماذج تستنتج خطأً أن قسطرة القلب مماثلة للبزل الوريدي المركزي، ما يؤدي إلى استبعاد خاطئ. إنها فئة من الأخطاء، وليست خللاً عابراً.

طرحتُ هذا على فريقي في صباح اليوم التالي. اقترح أحد مهندسينا — شاب لامع، ذو خلفية في التعلّم العميق — أن بإمكاننا إصلاحه بضبط دقيق (fine-tuning) أفضل. مزيد من بيانات التدريب الطبية. نوافذ سياق أكبر. أتذكّر النقاش الذي تلا ذلك، لأنه كان النقاش الذي شكّل توجّهنا التقني بأكمله. كان موقفي بسيطاً، وقد قلته على الأرجح بصراحة مفرطة: لا يمكنك أن تخرج من مأزق أنطولوجيا مفقودة عبر الضبط الدقيق.

النموذج اللغوي الكبير لا يعرف أن «قسطرة القلب» تقع على فرع مختلف من شجرة الإجراءات الطبية عن «القسطرة الوريدية المركزية». إنه لا يملك شجرة. بل يملك ضباباً من الارتباطات الإحصائية. ولن يمنحه أي قدر من بيانات التدريب الفهم الصارم والهرمي الذي توفّره أنطولوجيا طبية — أي معرفة أن الإجراء «أ» نوع فرعي من «إجراء على القلب» بينما الإجراء «ب» نوع فرعي من «قسطرة الوريد»، وأنهما متمايزان فئوياً.

انتهى ذلك النقاش بإعادة بنائنا لمعماريتنا من الصفر.

ما هو التنميط الظاهري المدفوع بالأنطولوجيا، ولماذا يهمّك؟

رسم تخطيطي على شكل شجرة متفرّعة يوضّح كيف يفصل تسلسل «هي نوع من» (Is-A) في SNOMED CT بين «قسطرة القلب» و«القسطرة الوريدية المركزية» إلى فرعين مختلفين تماماً، ما يجعل الخطأ المحوري في المقال واضحاً بصرياً على الفور.

إليك الفكرة بلغة بسيطة: بدلاً من أن نطلب من الذكاء الاصطناعي قراءة السجلات الطبية وتخمين معناها، نُجبر الذكاء الاصطناعي على ترجمة كل مفهوم طبي يصادفه إلى رمز موحّد من SNOMED CT — أشمل نظام مصطلحات سريرية في العالم — قبل أن يتّخذ أي قرارات.

SNOMED CT ليس قاموساً. إنه رسم بياني موجَّه ضخم تُربط فيه المفاهيم الطبية بعلاقات منطقية. وأهم هذه العلاقات هي علاقة «هي نوع من» (Is-A). «تصوير الأوعية التاجية» هي نوع من «قسطرة القلب» هي نوع من «إجراء على القلب». و«القسطرة الوريدية المركزية» هي نوع من «قسطرة الوريد» هي نوع من «إدخال قسطرة وعائية». فروع مختلفة. آباء مختلفون. معنى مختلف.

لذا عندما يصادف نظامنا بروتوكولاً يستبعد «قسطرة القلب» وسجل مريض يذكر وضع قسطرة مركزية، فإنه لا يقارن سلاسل نصية أو متجهات. بل يسأل الأنطولوجيا: هل إجراء هذا المريض نوع فرعي من الإجراء المُستبعَد؟ يجيب الرسم البياني: لا. يبقى المريض مؤهلاً. بشكل حتمي. في كل مرة.

توقّفنا عن السؤال «هل تبدو هاتان الكلمتان متشابهتين؟» وبدأنا نسأل «هل هذان المفهومان مرتبطان منطقياً؟». هذا التحوّل الوحيد غيّر كل شيء.

ينجح هذا حتى عندما يكتب الأطباء بصيغة مختصرة. «heart cath» و«angio» و«LHC» و«central line» و«CVC insertion» — يربط SNOMED CT كل هذه الصيغ المختلفة بمعرّفات مفاهيم محدّدة. وبمجرد أن تعمل على معرّفات المفاهيم بدلاً من السلاسل النصية، يتلاشى الالتباس. فأنت تطابق المعنى بالمعنى، لا الكلمة بالكلمة.

كتبتُ عن المعمارية التقنية وراء هذا — تسلسلات SNOMED CT الهرمية، والتنسيق اللاحق (post-coordination) للجانبية والشدّة، وبناء الأنماط الظاهرية الحاسوبية — في النسخة التفاعلية من بحثنا. لكن الفكرة الجوهرية بسيطة: يحتاج الذكاء الاصطناعي الطبي إلى خريطة للطب، لا مجرد نموذج إحصائي للغة الطبية.

كيف تُحلِّل كلمة «ما لم»؟

مقارنة جنباً إلى جنب توضّح كيف يستبعد مُطابِق الكلمات المفتاحية خطأً مريضاً مصاباً بارتفاع ضغط دم مضبوط، مقابل كيفية تقييم حلّال المنطق الواجبي للإذن الشرطي بشكل صحيح وتحديده للأهلية.

تتكفّل الأنطولوجيا بـ«ماذا» — ما هي المفاهيم الطبية التي نتحدّث عنها؟ لكن بروتوكولات التجارب السريرية تحمل طبقة أخرى من التعقيد يتعامل معها الذكاء الاصطناعي العام تعاملاً سيئاً للغاية: منطق الأهلية.

إليك معيار استبعاد حقيقياً من تجربة أورام:

«استبعِد المرضى المصابين بارتفاع ضغط الدم، ما لم يكن مضبوطاً جيداً بدواء ثابت لمدة 3 أشهر على الأقل.»

يرى مُطابِق الكلمات المفتاحية «ارتفاع ضغط الدم» فيستبعد المريض. ويرى مرشّح منطقي (بولياني) ارتفاع ضغط الدم = TRUE فيستبعد. كلا النهجين يتخلّص من مريض مصاب بارتفاع ضغط الدم لكنه مؤهل تماماً لأن ضغط دمه كان مضبوطاً ومستقراً لأشهر.

أصابني هذا بشيء من الجنون عندما واجهته لأول مرة على نطاق واسع. سحبنا معايير الأهلية من دفعة من بروتوكولات أورام في المرحلتين الثانية والثالثة (Phase II and III) ووجدنا أن غالبيتها تحتوي على استبعادات شرطية — عبارات «ما لم»، وعبارات «إلا عندما»، وتبعيات زمنية مثل «خلال 6 أشهر» أو «اكتمل قبل أكثر من 90 يوماً». هذه ليست حالات هامشية. بل هي القاعدة. وكل واحدة منها فخّ للأنظمة التي لا تستطيع الاستدلال حول الشروط والأذونات والزمن.

لجأنا إلى المنطق الواجبي (deontic logic) — وهو فرع من المنطق الصوري يتناول الالتزامات والأذونات والمحظورات. إنه منطق المعايير والقواعد، طوّره الفلاسفة في الأصل، وينطبق تماماً على معايير التجارب السريرية. الإصابة بارتفاع ضغط الدم أمرٌ محظور — ما لم تستوفِ أيضاً شروط الإذن المتمثلة في ضغط دم مضبوط ودواء ثابت للمدة المطلوبة. يُنمذج النظام هذا كتعبير منطقي صوري، ويتحقّق من الجدول الزمني للمريض، ويحسب الأهلية بدقة رياضية.

نمط آخر نراه باستمرار:

«يجب ألا يكون المرضى قد تلقّوا علاجاً كيميائياً سابقاً، ما لم يكن علاجاً مساعداً استباقياً (neoadjuvant) اكتمل قبل أكثر من 6 أشهر.»

على الذكاء الاصطناعي أن يتحقّق من ثلاثة أمور في آن واحد: هل تلقّى المريض علاجاً كيميائياً؟ وهل كان الغرض منه استباقياً (neoadjuvant)؟ وهل انتهى قبل أكثر من ستة أشهر من التاريخ المرجعي؟ نتعامل مع هذا بما تسمّيه الأدبيات المنطق الزمني التجميعي (Temporal Ensemble Logic) — إذ يبني النظام جدولاً زمنياً لتاريخ المريض السريري ويضع الأحداث ضمن نوافذ ملاحظة صالحة.

يرى بحث الكلمات المفتاحية «العلاج الكيميائي» في السجل فيُصاب بالذعر. أما نظامنا فيرى العلاج الكيميائي، ويفحص خاصية الغرض، ويقيس الفارق الزمني، ويحدّد الأهلية بشكل صحيح.

المعمارية التي لم يطلبها أحد (لكن يحتاجها الجميع)

رسم تخطيطي لمعمارية من ثلاث طبقات يوضّح الأدوار المتمايزة للنموذج اللغوي الكبير (الإدراك/الاستخراج)، ورسم SNOMED CT البياني المعرفي (الربط/إزالة الالتباس)، وحلّال المنطق الرمزي (الاستدلال الحتمي)، مع تدفّق واضح للبيانات بينها.

عندما أصف نهجنا للمستثمرين ومديري شركات الأدوية التنفيذيين، أحصل أحياناً على نظرة معيّنة — النظرة التي تقول «لماذا تجعل الأمر بهذا التعقيد؟ استخدم GPT فحسب.»

تلقّيت تلك النظرة من شريك محتمل بعد نحو عام من بدء تطويرنا. كان رجلاً ذكياً، يدير فريق الابتكار الرقمي في إحدى منظمات البحوث التعاقدية (CRO)، وكان يؤمن بصدق أن غلافاً لـ GPT-4 بمطالبات جيدة مع بعض التوليد المعزّز بالاسترجاع (retrieval-augmented generation) المضاف إليه سيحلّ المشكلة. قال لي: «النماذج تتحسّن كل ربع سنة». «أنت تُفرِط في هندسة هذا الأمر.»

أظهرتُ نتائج اختباراتنا. مجموعة البيانات نفسها، ومعايير الأهلية نفسها. غلاف GPT الخاص بفريقه: دقّة متغيّرة بين التشغيلات — أجوبة مختلفة حرفياً على المريض نفسه بحسب وقت تشغيلك له. لا مسار تدقيق. ولا سبيل لتفسير لماذا أُدرِج مريض أو استُبعد. ودقّة لا يتجاوز سقفها نحو 63-87% حسب تعقيد المعايير.

نظامنا العصبي-الرمزي: حتمي، وقابل لإعادة الإنتاج، بدقّة تتجاوز 95%، مع مسار استدلال كامل لكل قرار.

لا تقبل إدارة الغذاء والدواء (FDA) عبارة «هكذا رأى الذكاء الاصطناعي» كمبرّر. إنهم يحتاجون إلى برهان منطقي. وهذا ليس ميزة كمالية — بل هو الفرق بين أداة تعزّز البحث السريري ولعبة تبهر جماهير العروض التوضيحية.

إليك كيف تعمل المعمارية فعلياً، دون أن أُغرقك في تفاصيل التنفيذ:

النموذج اللغوي الكبير يقرأ. فهو يستوعب الواقع الفوضوي غير المُهيكل للسجلات الطبية — ملفات PDF ممسوحة ضوئياً، وملاحظات مكتوبة بخط اليد، وسرديات الأطباء — ومهمّته الوحيدة هي استخراج الكيانات الطبية وتوحيدها. يقرأ «pt complains of chest pain» ويُخرج مفهوم SNOMED الخاص بألم الصدر. هذا كل شيء. النموذج اللغوي الكبير هو طبقة الإدراك. وهو لا يتّخذ أبداً قراراً بشأن الأهلية.

الرسم البياني المعرفي يربط. تُربط الكيانات المستخرجة بمعرّفات مفاهيم SNOMED CT، ويُزال التباسها حسب السياق. «cold» بمعنى الفيروس (نزلة برد) مقابل «cold» بمعنى الحرارة (البرودة). بنية الرسم البياني تحلّ الالتباس.

حلّال المنطق يستدلّ. هنا يحدث تحديد الأهلية الفعلي — مُستدِلّ رمزي حتمي يطبّق قواعد المنطق الواجبي على النمط الظاهري المُهيكل للمريض. يفحص علاقات «هي نوع من» (Is-A)، ويحسب المدد الزمنية، ويقيّم الأذونات الشرطية. وبإعطائه المدخلات نفسها، يُنتج دائماً المخرجات نفسها.

نستخدم أيضاً GraphRAG بدلاً من الاسترجاع القياسي المعتمد على المتجهات. يسترجع نظام RAG القياسي مقاطع من المستندات بناءً على تشابه الكلمات. أما GraphRAG فيجتاز العلاقات. فإذا كانت تجربة تستبعد «أي دواء يتفاعل مع إنزيمات CYP3A4» وكان المريض يتناول Drug B، فقد يفوّت RAG القياسي الصلة إذا لم يذكر سجل المريض صراحةً قط أن «Drug B مثبّط لـ CYP3A4». أما GraphRAG فيعرف، لأن الرسم البياني المعرفي يحتوي على العلاقة: Drug B يثبّط CYP3A4. استدلال متعدّد القفزات. من النوع الذي يقوم به الصيدلي بحدسه لكن نظام مطابقة النصوص لن يقوم به أبداً.

للاطّلاع على التفصيل التقني الكامل للمعمارية — التكامل العصبي-الرمزي من النوع الرابع (Type 4)، وفكّ التشفير المدرك للمفاهيم، وطبقة التشغيل البيني FHIR/CDISC — راجع ورقتنا البحثية المفصّلة.

«لكن ألن تتحسّن النماذج ببساطة؟»

يعترض الناس دائماً على هذه النقطة، وأنا أفهم السبب. فمسار تطوّر النماذج اللغوية الكبيرة مبهر حقاً. وكل بضعة أشهر، يحقّق نموذج جديد درجات أعلى في المعايير الطبية. فلماذا لا ننتظر إذاً؟

لأن المشكلة ليست في القدرة — بل في المعمارية. فالنموذج اللغوي الكبير هو مُتنبّئ احتمالي للرموز (tokens). وجعله أكبر وتدريبه على مزيد من النصوص الطبية يجعله أفضل مُتنبّئاً احتمالياً للرموز. لكنه لا يجعله محرّك منطق. ولا يمنحه الحتمية. ولا يمنحه مسار تدقيق. وفي صناعة منظَّمة حيث تحتاج إدارة الغذاء والدواء (FDA) والوكالة الأوروبية للأدوية (EMA) إلى معرفة السبب الدقيق لاستبعاد المريض رقم #4,271 من التجربة XYZ-003، فإن عبارة «تنبّأ النموذج بأن هذا هو الجواب الأرجح» غير مقبولة.

وهناك أيضاً مشكلة الخصوصية التي لا تزول مع التوسّع. فإرسال سجلات المرضى غير المُهيكلة إلى واجهات برمجة النماذج السحابية (APIs) — حتى المؤسسية منها — يخلق تعرّضاً لمخاطر HIPAA وGDPR لا تخفّفه اتفاقيات BAA بالكامل مهما كثرت. معماريتنا تُبقي بيانات المرضى داخل جيوب آمنة. طبقة الاستدلال الرمزي والرسم البياني المعرفي تعملان محلياً. ويمكن أن تكون الطبقة العصبية نموذجاً محلياً مفتوح المصدر. ولا تغادر المعلومات الصحية المحمية جدار الحماية أبداً.

ثم هناك مسألة قابلية إعادة الإنتاج التي أجدها الأكثر إدانةً. مرّر سجل المريض نفسه عبر نموذج لغوي كبير مرتين بالمطالبة نفسها، وقد تحصل على أجوبة مختلفة. غيّر إعداد درجة الحرارة (temperature)، أو اضبط نافذة السياق، أو أعد صياغة السؤال قليلاً — نتيجة مختلفة. تتطلّب التجارب السريرية قرارات قابلة لإعادة الإنتاج بنسبة 100%. الإطار التنظيمي يقتضي ذلك. والأخلاقيات تقتضيه.

المرضى الذين نخسرهم

قضيتُ معظم هذا المقال في الحديث عن المعمارية والاقتصاد، لكنني أريد أن أختم في مكان أكثر صدقاً.

بالنسبة لمرضى السرطان النقيلي، أو ابيضاض الدم النقوي الحاد (AML)، أو اضطراب وراثي نادر، فإن تأخير تسجيل مدته ستة أشهر ليس بنداً في نموذج مالي. إنه الفرق بين الوصول إلى علاج قد يكون شافياً وعدم الوصول إليه. وعندما يستبعد نظامنا مريضاً مؤهلاً خطأً — لأنه خلط بين إجراءي قسطرة، أو لأنه لم يستطع تحليل عبارة «ما لم» — فإن ذلك المريض لا يتلقّى إشعاراً يقول «عذراً، ارتكب الذكاء الاصطناعي خطأً». إنهم ببساطة لا يسمعون أبداً عن التجربة. وطبيب الأورام الخاص بهم لا يتلقّى التنبيه أبداً. يبقى المقعد شاغراً، أو يذهب إلى شخص آخر، ويستمرّ المريض على الرعاية المعيارية، دون أن يعلم أبداً أن خياراً كان موجوداً.

هذا ما أفكّر فيه عندما يخبرني أحدهم بأن أستخدم واجهة برمجة (API) غلافية فحسب.

بنينا VeriPrajna لأن الفجوة بين ما يَعِد به الذكاء الاصطناعي في الرعاية الصحية وما يقدّمه فعلياً ليست مشكلة تسويق — بل مشكلة هندسية. اختارت الصناعة المعمارية السهلة (رمِ نموذجاً لغوياً كبيراً على المشكلة) بدلاً من المعمارية الصحيحة (امنح النموذج اللغوي الكبير أنطولوجيا وحلّال منطق وقيّده ليفعل فقط ما يجيده).

لن نصل إلى الطب الدقيق عبر هندسة المطالبات. نحن بحاجة إلى أنظمة تستدلّ، لا أنظمة تخمّن بثقة.

علاج أزمة الاستقطاب ليس نماذج لغوية أفضل. بل هو الإدراك بأن الأهلية مشكلة منطقية ترتدي زيّاً لغوياً. جرّد النص غير المُهيكل، واربطه بأنطولوجيا طبية، وطبّق الاستدلال الصوري، وفجأةً يبدأ الـ80% من التجارب التي تفوّت جداولها الزمنية للتسجيل بأن تبدو مشكلة قابلة للحلّ بدلاً من حتمية صناعية.

توقّف عن مطابقة الكلمات. وابدأ بمطابقة المرضى. الفرق هو رسم بياني معرفي، وحلّال منطق، والاستعداد لبناء شيء أصعب من غلاف.

Related Research

Also Published On