-HORكود القسمالقسم الذي تذهب إليه الأنبوبة (Hormones)
الجزء
المصدر في الكود
المعنى
260601
now()->format('ymd')
تاريخ إنشاء العينة (سنة-شهر-يوم مختصر) — للترتيب والتمييز الزمني
VN4AQM
strtoupper(Str::random(6))
٦ خانات عشوائية (A–Z و 0–9) — تضمن التفرّد بدون عدّاد مركزي
-HOR
'-' . section->code
كود قسم المعمل — الأنبوبة الفرعية لكل قسم لها لاحقة (HEM/CHE/HOR…)
-S3 (أحيانًا)
'-S' . specimen_type_id
يظهر فقط لو القسم له أكثر من نوع عينة (تمييز)
الخلاصة: الطول والحروف بسبب: تاريخ (٦) + عشوائي (٦) + لاحقة قسم. الجزء العشوائي بالحروف عشان يكسب تفرّد عالي جدًا من غير ما يسأل قاعدة البيانات.
2 ليه بالشكل ده؟ (المنطق)
تفرّد بلا عدّاد: ٦ خانات حروف+أرقام = 36⁶ ≈ 2.18 مليار احتمال. يعني العينة بتاخد رقم فريد فورًا من غير ما النظام يسأل «إيه آخر رقم؟» — مفيش race condition ولا قفل على قاعدة البيانات، ويشتغل حتى لو في أكثر من جهاز/فرع بنفس اللحظة.
التاريخ في الأول: تعرف يوم العينة بمجرد النظر، والباركودات بتترتّب زمنيًا.
كود القسم: كل طلب بيتقسّم لأنابيب حسب الأقسام؛ اللاحقة بتقول الأنبوبة رايحة لأي قسم (مفيدة للفرز والأجهزة).
CODE128: الرمزية الحالية بتشفّر حروف+أرقام بكفاءة، فالطول ده مقبول على ملصق 50مم.
3 المقارنة: الحالي (حروف+أرقام) مقابل أرقام فقط
✅ مميزات الوضع الحالي
تفرّد ضخم (2.18 مليار) بدون عدّاد → سريع وآمن وموزّع.
يدعم رموز رقمية أكفأ/أصغر: ITF أو EAN13 (مناسبة لبعض الأجهزة/الطابعات القديمة).
توافق أفضل مع بعض واجهات LIS/الأجهزة اللي بتفضّل الأرقام.
⚠️ عيوبه
يحتاج عدّاد متسلسل (Sequence) لكل شركة → سؤال لقاعدة البيانات لكل عينة (موجود عندنا أصلًا SequenceService).
كود القسم بالحروف (HOR) لازم يتحوّل لرقم أو يختفي من الباركود (لكنه مطبوع كنص على الملصق أصلًا).
لو الرقم العشوائي رقمي قصير → احتمال تصادم أعلى؛ فالأنسب عدّاد متسلسل.
4 التصميم المقترح: أوبشن في السيتنج (الحالي ↔ رقمي)
إعداد جديد في Lab Settings → الباركود اسمه «نظام الباركود» فيه اختيارين:
الوضع
الصيغة
مثال
الحالي (حروف+أرقام) — الافتراضي
تاريخ + عشوائي(6) + كود القسم النصي
260601VN4AQM-HOR
رقميجديد
تاريخ + عدّاد متسلسل + رقم القسم
260601-0042-3
الفكرة الأساسية: في الوضع الرقمي، مكان كود القسم النصي (HOR) يبقى رقم يميّز القسم (مثلاً -3) — عشان الأنبوبة الفرعية لكل قسم بتتسلم وتتجمع لوحدها فلازم تفضل مميّزة، بس بشكل رقمي بدل الحروف.
شكل الوضع الرقمي
260601التاريخYYMMDD (اختياري — ممكن نشيله)
0042عدّاد متسلسلرقم تسلسلي آمن (SequenceService)
-3رقم القسميميّز قسم الأنبوبة رقميًا بدل HOR
مصدر «رقم القسم»: إما id القسم، أو حقل رقمي جديد «رقم باركود القسم» على كل قسم (أنضف وتحت سيطرتك — زي كود الفرع).
5 التفعيل/الإيقاف — وأثر التفعيل
الإعداد قابل للتشغيل/الإيقاف من السيتنج. الافتراضي = الوضع الحالي (مفيش تغيير لحد ما تفعّل الرقمي).
وقت التفعيل: العينات الجديدة فقط تاخد الصيغة الرقمية. القديمة تفضل زي ما هي — مفيش ترحيل، والماسح يقرأ النوعين (فترة انتقالية مختلطة طبيعية).