فلوی احراز هویت و صلاحیت پرستار
راهنمای پیاده‌سازی برای ثبت‌نام در پلتفرم

سناریو: پرستار برای ثبت‌نام مراجعه می‌کند و این داده‌ها را می‌دهد: شمارهٔ موبایل، کد ملی، شمارهٔ نظام (پرستاری)، و در صورت نیاز چند داده دیگر. هدف: اثبات اینکه او واقعاً همان کسی است که می‌گوید، راستی‌آزماییِ صلاحیت حرفه‌ای او، و استخراج خودکارِ حداکثر اطلاعات معتبر از منابع آنلاین (API پولی شخص ثالث بلامانع است).

⚠️ یک تصحیح مهم از همان ابتدا: در ایران پرستاران عضو سازمان نظام پرستاری هستند و «شمارهٔ نظام پرستاری» دارند؛ «کد نظام پزشکی» مخصوص پزشکان (سازمان نظام پزشکی) است. این دو سامانهٔ کاملاً جدا هستند. در این سند هر دو پوشش داده شده‌اند، اما برای پرستار، منبع درست نظام پرستاری است (و جالب اینکه برخلاف نظام پزشکی، استعلام نظام پرستاری API ندارد — به بخش‌های ۴ و ۷ نگاه کنید).


۱. اصول طراحی (پیش از کدنویسی بخوانید)

  1. تفاوت «اظهار» و «دادهٔ رسمی». هر چیزی که پرستار تایپ می‌کند (نام، سابقه، شماره نظام) صرفاً ادعاست. ارزش واقعی وقتی ساخته می‌شود که آن ادعا را با یک منبع رسمی مستقل (ثبت احوال، نظام پرستاری، تأمین اجتماعی) تطبیق دهید.
  2. سه نوع منبع از نظر دسترسی:
    خودکار با API و فقط ورودی‌هایی که پرستار داده، بی‌نیاز از اقدام او رضایتی / OTP نیازمند ورود یا تأیید پیامکیِ خودِ فرد دستی / آپلود فرم وب بدون API، یا آپلود مدرک، یا استعلام سازمانی
  3. هویت را «گره بزنید»، نه اینکه فقط چک کنید. سخت‌ترین تقلب این حوزه، استفاده از یک شمارهٔ نظامِ واقعی ولی دزدیده‌شده است (سناریوی «پرستار قلابی»). پادزهر: نام و عکسِ روی رکورد نظام پرستاری را با هویت ثبت احوال و سلفیِ زندهٔ همان لحظه تطبیق دهید (بخش ۵).
  4. ارزان به گران. اول استعلام‌های ارزان و قطعی (شاهکار) را اجرا کنید؛ اگر رد شد، اصلاً سراغ مراحل گران (احراز ویدیویی) نروید. این هم هزینه را پایین می‌آورد هم تجربهٔ کاربر را.
  5. همهٔ این APIها فقط B2B هستند. برای استفاده باید شرکت ثبت‌شده، احراز کسب‌وکار و client credential داشته باشید؛ و طبق رگولاتوری باید از کاربر رضایت صریح برای استعلام و نگه‌داری داده بگیرید.
  6. «سال سابقه» را نمی‌توان بی‌رضایت و خودکار کشید. هیچ API عمومی‌ای با کد ملی، سال‌های تجربهٔ بالینی را برنمی‌گرداند؛ این داده یا با رضایت/OTP خود فرد از تأمین اجتماعی می‌آید یا با آپلود گواهی سابقه (بخش ۴، گام ۶).

۲. داده‌های ورودی که از پرستار می‌گیریم

برای اجرای کاملِ فلو، در فرم ثبت‌نام این فیلدها را جمع کنید (بعضی برای استعلام‌های رسمی الزامیاند):

فیلدچرا لازم استوضعیت
شمارهٔ موبایلتطبیق با کد ملی در شاهکار؛ ارسال OTPالزامی
کد ملیکلید همهٔ استعلام‌های هویتی و حرفه‌ایالزامی
تاریخ تولدبرای استعلام هویت ثبت احوال و احراز ویدیویی الزامی است (بدون آن دادهٔ کامل ثبت احوال برنمی‌گردد)الزامی
شمارهٔ نظام پرستاریراستی‌آزمایی صلاحیت در estelam.ino1.irالزامی
سریال پشت کارت ملیورودیِ احراز هویت ویدیوییِ (eKYC)برای eKYC
ویدیوی سلفی (≈۵ ثانیه)زنده‌سنجی + تطبیق چهره با عکس ثبت احوالبرای eKYC
کد پستی محل سکونتتنها راه گرفتن آدرس رسمی (مسیر کد ملی→آدرس وجود ندارد)اختیاری
شمارهٔ کارت یا شبای بانکیتطبیق مالکیت حساب واریز با کد ملیهنگام تسویه
گواهی سابقهٔ کار / مدرک تحصیلی (آپلود)اثبات سابقه و کارشناسی پرستاری (که API ندارند)آپلود

۳. نقشهٔ کلی فلو (نمای پرنده)

تطبیق موبایل ↔ کد ملی خودکار
شاهکار — ارزان‌ترین و اولین دروازه. اگر رد شد، همین‌جا توقف.
تأیید مالکیت موبایل با OTP OTP
پیامک کد یک‌بارمصرف؛ هم رضایت می‌گیرد هم شماره را قفل می‌کند.
استعلام هویت ثبت احوال خودکار
کد ملی + تاریخ تولد → نام، نام پدر، شناسنامه، جنسیت، وضعیت حیات. پر کردن خودکار پروفایل.
احراز هویت ویدیویی (تطبیق چهره) رضایتی
سلفی زنده ↔ عکس ثبت احوال. اثبات «حضور فیزیکیِ صاحب کد ملی».
راستی‌آزمایی صلاحیت پرستاری دستی/Scrape
estelam.ino1.ir → نام، مقطع، رشته، شهر، عکس. تطبیق متقابل با گام ۳ و ۴.
سابقهٔ کار + مدرک تحصیلی رضایتی آپلود
تأمین اجتماعی با OTP خود فرد، یا آپلود گواهی سابقه و دانشنامه.
پروانهٔ صلاحیت حرفه‌ای + عدم سوء پیشینه رضایتی
پروانهٔ وزارت بهداشت (شاملِ غربالگری سوء‌پیشینه است) + آپلود گواهی عدم سوء پیشینه.
تطبیق حساب بانکیِ واریز خودکار
شبا/کارت ↔ کد ملی. هنگام تنظیم تسویه‌حساب.
امتیاز اعتماد و تصمیم نهایی منطق داخلی
جمع‌بندی نتایج، رفع مغایرت، تأیید/رد/بازبینی انسانی.

۴. فلوی مرحله‌به‌مرحله

برای هر گام: ورودی (چه می‌فرستیم)، منبع/API، خروجی (چه فیلدهایی برمی‌گردد)، و منطق تطبیق و تصمیم.

۱تطبیق موبایل ↔ کد ملی (شاهکار)خودکار
ورودی
mobileNumber + nationalId (همان دو فیلدی که پرستار داده)
منبع / API
سرویس شاهکار از طریق یکی از resellerها: Finnotech، U-ID/یوآیدی، api.ir، Shabanic، Zohal و … (همگی روی همان backend دولتی رگولاتوری مخابرات).
خروجی
فقط یک بولینِ isMatched: true/false (به‌همراه کد/پیام وضعیت). هیچ دادهٔ هویتی دیگری نمی‌دهد.
منطق تصمیم
اگر false → یعنی سیم‌کارت به‌نام این کد ملی نیست؛ ثبت‌نام را همین‌جا متوقف یا به بازبینی دستی بفرستید. اگر true → ادامه. (ارزان‌ترین استعلام؛ همیشه اول اجرا شود.)
۲تأیید مالکیت شماره با OTPOTP
ورودی
شمارهٔ موبایل (همان شمارهٔ تأییدشده در گام ۱)
منبع / API
هر سرویس پیامک (Kavenegar، ملی‌پیامک، IPPanel، …)
خروجی
تأیید اینکه کاربر همان لحظه به سیم‌کارت دسترسی دارد + ثبت رضایت قانونی برای استعلام‌ها.
منطق تصمیم
شاهکار می‌گوید «سیم به‌نام این کد ملی است»؛ OTP می‌گوید «کاربر همین حالا سیم را در دست دارد». ترکیب این دو، جعل شماره را بسیار سخت می‌کند.
۳استعلام هویت ثبت احوال (استخراج خودکار اطلاعات)خودکار
ورودی
nationalCode + birthDate (تاریخ تولد الزامی است)
منبع / API
استعلام هویت ثبت احوال از Shabanic یا U-ID. توجه «صحت‌سنجی کد ملیِ» Finnotech فقط درصد تطبیق می‌دهد، نه خودِ داده — برای پر کردن پروفایل از سرویس «استعلام هویت» استفاده کنید.
خروجی (فیلدها)
firstName، lastName، fatherName (نام پدر)، gender (جنسیت)، birthDate، deathStatus (وضعیت حیات — زنده/فوت)، idNo (شماره شناسنامه)، idSerial/idSerie (سری و سریال شناسنامه). شهر محل تولد به‌صورت فیلد صریح برنمی‌گردد.
منطق تصمیم
پروفایل را خودکار پر کنید و نامِ اظهارشدهٔ پرستار را با firstName/lastNameِ رسمی تطبیق دهید. اگر deathStatus = فوت‌شده → پرچم قرمز و توقف. این گام، «نام واقعیِ گره‌خورده به کد ملی» را به دست می‌دهد که در گام ۵ به‌کار می‌آید.
۴احراز هویت ویدیویی و تطبیق چهره (eKYC)رضایتی
ورودی
ویدیوی سلفی (≈۵ ثانیه) + nationalId + nationalIdSerial (سریال پشت کارت ملی) + birthDate + gender
منبع / API
احراز هویت ویدیوییِ U-ID، api.ir یا VIDA/ویدا. (زنده‌سنجی ~۹۸٪، تطبیق چهره >۹۹٪ طبق اعلام ارائه‌دهنده.)
خروجی
یک enum وضعیت: state = ACCEPTED/REJECTED به‌همراه reason (مثلاً FACE_NOT_MATCH_ID یا تأیید). خروجی عددِ درصد نیست، بلکه قبول/رد است.
منطق تصمیم
این گام اثبات می‌کند فردِ زندهٔ پشت دوربین همان صاحب عکسِ ثبت احوالِ آن کد ملی است — یعنی صرفاً کسی نیست که کد ملیِ دیگری را تایپ کرده. اگر REJECTED → بازبینی دستی یا توقف.
۵راستی‌آزمایی صلاحیت پرستاری (نظام پرستاری)دستی / Scrape
ورودی
شمارهٔ نظام پرستاری یا نام و نام خانوادگی (تطبیق دقیق است؛ ورودیِ کد ملی ندارد)
منبع
سامانهٔ عمومی estelam.ino1.ir («استعلام پرستاران کشور») — بدون لاگین، بدون کپچا. API رسمی یا واسطه‌ای ندارد؛ یا بررسی دستی است یا scrape شکنندهٔ صفحه (با CSRF token).
خروجی (فیلدها)
نام، نام خانوادگی، شمارهٔ نظام، مقطع تحصیلی (مثلاً «کارشناس»)، رشتهٔ تحصیلی (مثلاً «پرستاری»)، شهر هیئت‌مدیره (شعبه/استان)، و عکس پرسنلی.
چه چیزی نمی‌دهد
مهم وضعیت فعال/منقضی، تاریخ ثبت/عضویت، تخصص و محل خدمت را نمی‌دهد. ⟶ یعنی «فعال بودن» و «سال سابقه» از این استعلام درنمی‌آید (برای آن‌ها به گام ۶ و ۷ بروید).
منطق تصمیم
اینجاست که تطبیق متقابل انجام می‌شود: نامِ روی رکورد نظام پرستاری باید با نامِ ثبت احوال (گام ۳) بخواند، و عکسِ این رکورد باید با چهرهٔ سلفی (گام ۴) و عکس ثبت احوال هم‌خوان باشد. این کار، شمارهٔ نظامِ «واقعی ولی دزدیده‌شده» را لو می‌دهد.
۶سابقهٔ کار و مدرک تحصیلیرضایتیآپلود
سابقهٔ کار
تأمین اجتماعی (eservices.tamin.ir / اپ «تأمین من»). با کد ملیِ تنها قابل استخراج نیست؛ نیازمند لاگین یا OTP رویِ سیم‌کارتِ خود فرد است. خروجی: روزهای بیمه، دستمزد مبنا، سوابق تلفیقی، و مدت اشتغال نزد هر کارفرما. گزینهٔ عملی: یا API استعلام بیمهٔ مبتنی‌بر رضایت (کاربر OTP می‌زند)، یا از پرستار بخواهید «خروجی سابقه/گواهی سابقهٔ کار» را خودش بگیرد و آپلود کند.
مدرک تحصیلی
مدرک پرستاری زیر نظر وزارت بهداشت است، نه وزارت علوم ⟶ سامانهٔ سجاد آن را تأیید نمی‌کند. منبع درست: eg.behdasht.gov.ir (سامانهٔ دانش‌آموختگان). استعلامِ تأییدیه سازمان‌محور است (شرکت شما درخواست رسمی می‌دهد، پاسخ به شما برمی‌گردد) و API عمومی ندارد. گزینهٔ عملی اولیه: آپلود دانشنامه/مدرک کارشناسی + بررسی بصری.
منطق تصمیم
«سال سابقه» و «کارشناسی پرستاری» را به‌عنوان دادهٔ اظهاری-با-مدرک ثبت کنید و در صورت نیاز با تأییدیهٔ رسمی ارتقا دهید. تاریخِ نبودِ این داده‌ها در APIهای ارزان را به‌عنوان محدودیت بپذیرید.
۷پروانهٔ صلاحیت حرفه‌ای + گواهی عدم سوء پیشینهرضایتی
پروانهٔ صلاحیت حرفه‌ای
مدرک وزارت بهداشت (سامانه‌های Rn.behdasht.gov.ir و op.salamat.gov.ir) که صدورش مشروط به گزینش و گواهی عدم سوء پیشینه است. صدور self-service (لاگین خود فرد با کد ملی + OTP) است و API عمومی ندارد. ⟶ معتبر بودنِ این پروانه یعنی «سوء‌پیشینه و گزینش هنگام صدور بررسی شده‌اند».
عدم سوء پیشینه
گواهی رسمی که فقط خودِ فرد از adliran.ir با رمز ثنا می‌گیرد؛ هیچ API شخص‌ثالثی برای کشیدن آن وجود ندارد. ⟶ از پرستار بخواهید گواهی را بگیرد و آپلود کند، و دوره‌ای تمدید کنید.
منطق تصمیم
چون این دو سند برای کارِ مراقبت از افراد آسیب‌پذیر حیاتی‌اند، آن‌ها را الزامی کنید (آپلود + بازبینی)، حتی اگر خودکار نیستند.
۸تطبیق حساب بانکیِ واریزخودکار
ورودی
شمارهٔ کارت یا شبا + nationalCode (+ تاریخ تولد)
منبع / API
تطبیق شبا/کارت با کد ملی (Shabanic / U-ID). یا «کارت به شبا»ی Shabanic که IBAN، شماره حساب، depositOwners (نام صاحب حساب) و نام بانک را می‌دهد (~۵٬۰۰۰ تومان).
خروجی
وضعیت تطبیق + نام صاحب حساب + نام بانک + وضعیت حساب (فعال/مسدود).
منطق تصمیم
اطمینان از اینکه پولِ پرستار به حسابِ خودِ او واریز می‌شود (نه واسطه). معمولاً هنگام اولین تسویه اجرا می‌شود، نه لزوماً در ثبت‌نام.
۹امتیاز اعتماد و تصمیم نهاییمنطق داخلی

نتایج همهٔ گام‌ها را در یک «کارت اعتماد» جمع کنید و بر اساس آن تأیید/رد/بازبینی انسانی را تصمیم بگیرید (بخش ۷ این سند).


۵. ماتریس تطبیق متقابل (قلبِ ضدِ تقلب)

ارزش فلو در تک‌تک استعلام‌ها نیست، بلکه در هم‌خوانیِ آن‌ها با یکدیگر است. این جدول نشان می‌دهد کدام فیلد باید با کدام منبع بخواند تا هویت «گره» بخورد:

چه چیزی باید با چه چیزی بخواندمنبع‌های درگیراگر نخواند یعنی…
موبایل ↔ کد ملیشاهکار (گام ۱)سیم‌کارت به‌نام شخص دیگری است / جعل شماره
نامِ اظهارشده ↔ نامِ ثبت احوالفرم ثبت‌نام ↔ استعلام هویت (گام ۳)کد ملیِ متعلق به فرد دیگری وارد شده
چهرهٔ سلفیِ زنده ↔ عکس ثبت احوالeKYC (گام ۴)فرد، صاحب واقعیِ کد ملی نیست (هویت دزدیده)
نام و عکسِ نظام پرستاری ↔ هویت ثبت احوال + سلفیestelam.ino1.ir (گام ۵) ↔ گام‌های ۳ و ۴شمارهٔ نظامِ واقعی ولی دزدیده‌شده — خطرناک‌ترین حالت
رشته/مقطعِ نظام پرستاری ↔ مدرک تحصیلی آپلودیگام ۵ ↔ گام ۶مدرک جعلی یا ناهماهنگ
نام صاحب حساب ↔ کد ملیتطبیق بانکی (گام ۸)حساب واریز متعلق به شخص دیگری است

درس کلیدی: یک شمارهٔ نظام پرستاریِ معتبر به‌تنهایی چیزی را اثبات نمی‌کند، چون می‌تواند دزدیده شده باشد. آنچه اثبات می‌کند، زنجیرهٔ «کد ملی ← چهرهٔ زنده ← عکس ثبت احوال ← عکس نظام پرستاری ← نامِ یکسان در همه» است. این تنها سدّ واقعی در برابر سناریوی «پرستار قلابی» است.


۶. جدول «داده موردنیاز ← منبع / سرویس»

داده‌ای که می‌خواهیدمنبع / APIورودی لازمدسترسی
تطبیق موبایل ↔ کد ملیشاهکار (Finnotech/U-ID/api.ir/…)موبایل + کد ملیخودکار
نام، نام خانوادگی، نام پدر، جنسیتاستعلام هویت ثبت احوال (Shabanic/U-ID)کد ملی + تاریخ تولدخودکار
شماره/سری/سریال شناسنامهاستعلام هویت ثبت احوالکد ملی + تاریخ تولدخودکار
وضعیت حیات (زنده/فوت)استعلام هویت ثبت احوال (deathStatus)کد ملی + تاریخ تولدخودکار
تطبیق چهرهٔ زنده با عکس رسمیeKYC ویدیویی (U-ID/api.ir/VIDA)ویدیو + کد ملی + سریال کارت + تاریخ تولد + جنسیترضایتی
صحت شمارهٔ نظام + مقطع/رشته/شهر + عکسنظام پرستاری estelam.ino1.irشماره نظام یا نام (تطبیق دقیق)دستی/Scrape
وضعیت فعال/منقضیِ عضویت نظام پرستاریپورتال عضویت membership.ino1.irلاگین + OTP خود فردرضایتی
سال سابقه / سوابق بیمهتأمین اجتماعی eservices.tamin.ircredential یا OTP خود فردرضایتی
مدرک کارشناسی پرستاریوزارت بهداشت eg.behdasht.gov.ir / آپلودself-service فرد یا استعلام سازمانیآپلود/دستی
غربالگری سوء‌پیشینه (غیرمستقیم)پروانهٔ صلاحیت حرفه‌ای + گواهی عدم سوء پیشینهself-service فرد / آپلود گواهیرضایتی
تطبیق حساب واریز با کد ملیتطبیق شبا/کارت با کد ملی (Shabanic/U-ID)شبا یا کارت + کد ملیخودکار
آدرس رسمیاستعلام آدرس با کد پستیکد پستی (از خود فرد)خودکار
کد نظام پزشکی (فقط اگر فرد پزشک باشد)نظام پزشکی membersearch.irimc.org / API پادیومکد ملی یا شماره نظامخودکار (B2B سلامت)
موبایل از کد ملی / هویت از موبایل (معکوس)غیرقابل‌دسترس

دو مسیر که برای شرکت خصوصی وجود ندارند و نباید رویشان حساب کنید: (۱) «کد ملی → شمارهٔ موبایل» یا «موبایل → هویت کامل» (فقط با دستور قضایی)، و (۲) «کد ملی → آدرس» (آدرس فقط با خودِ کد پستی به‌دست می‌آید).


۷. جمع‌بندیِ تصمیم و امتیاز اعتماد

پیشنهاد می‌شود نتیجهٔ هر گام را به یک «کارت اعتماد» تبدیل کنید و سیاست تأیید را روی آن بنا کنید:

سطحشرطنتیجه
هویت پایه ✅شاهکار + OTP + استعلام ثبت احوال (نام می‌خواند، حیات تأیید) موفقاجازهٔ تکمیل پروفایل؛ هنوز قابل‌رزرو نیست
هویت قوی ✅✅+ احراز ویدیوییِ ACCEPTED (تطبیق چهره)هویت فرد قطعی است
صلاحیت حرفه‌ای ✅✅✅+ تطبیق نام/عکسِ نظام پرستاری با هویت + پروانهٔ صلاحیت + عدم سوء پیشینهقابل‌رزرو برای خانواده‌ها (نشانِ «احرازشده»)
بازبینی دستی ⚠️هر مغایرتی (نام نمی‌خواند، عکس مردد، شماره نظام یافت نشد)صف بازبینی انسانی پیش از فعال‌سازی
رد ⛔شاهکار false، حیات=فوت، چهره REJECTED، یا سوء‌پیشینهٔ مشکل‌دارعدم پذیرش

نکته‌های اجرایی: نتایج استعلام‌ها را با مهر زمانی ذخیره کنید (هم برای حسابرسی، هم دفاع حقوقی)؛ مدارک حساس (مجوز، سوء‌پیشینه) را دوره‌ای بازبینی/تمدید کنید نه فقط یک‌بار در ثبت‌نام؛ و هر استعلام را فقط با رضایت ثبت‌شدهٔ کاربر اجرا کنید.


موارد با اطمینان پایین‌تر که پیش از کدنویسی باید با خودِ ارائه‌دهنده نهایی شوند: نام دقیق فیلدهای خروجی (مثل idSerie/idSerial و enumهای eKYC)؛ قیمت‌ها؛ امکان استعلامِ پروانهٔ صلاحیت حرفه‌ای توسط شخص ثالث؛ پوششِ مدارک وزارت بهداشت توسط APIهای reseller؛ و جزئیات API نظام پزشکیِ پادیوم. این‌ها از مستندات/منابع ثانویه استخراج شده‌اند و ممکن است در نسخهٔ قراردادی کمی فرق کنند.


۹. منابع

هویت و KYC: Finnotech — شاهکار · Finnotech — صحت‌سنجی کد ملی · U-ID — API هویت · U-ID — شاهکار · U-ID — eKYC docs · Shabanic — استعلام ثبت احوال · Shabanic — کارت به شبا · Shabanic — تطبیق شبا با کد ملی · api.ir — زنده‌سنجی · VIDA · ملی‌پیامک — استعلام موبایل با کد ملی

صلاحیت حرفه‌ای و سابقه: نظام پرستاری — استعلام · نظام پرستاری — عضویت · heyvagroup — نظام پرستاری · صلاحیت حرفه‌ای — اپراتور سلامت · heyvagroup — صلاحیت حرفه‌ای · نظام پزشکی — جستجو · Podium — API نظام پزشکی · تأمین اجتماعی · وزارت بهداشت — دانش‌آموختگان · Ghabzino — سوابق بیمه

این سند بر پایهٔ استعلام مستقیم مستندات ارائه‌دهندگان (Finnotech، U-ID، Shabanic، api.ir) و سامانه‌های رسمی (estelam.ino1.ir، membersearch.irimc.org، behdasht.gov.ir، tamin.ir) تهیه شده است. پیش از پیاده‌سازی، فیلدها و قیمت‌ها را با واحد فروش ارائه‌دهنده‌ای که با او قرارداد می‌بندید نهایی کنید.