Database
 sql >> डेटाबेस >  >> RDS >> Database

मेडिकल अपॉइंटमेंट बुकिंग ऐप के लिए एक डेटा मॉडल

एक ऑनलाइन ऐप का उपयोग करके डॉक्टर की नियुक्ति बुक करना एक नवाचार है जो पूरी प्रक्रिया को सरल बनाता है। आइए अपॉइंटमेंट बुकिंग ऐप के डेटा मॉडल के बारे में जानें।

एक ऐप का उपयोग क्यों करें? यह लोगों के लिए अपनी पसंद के डॉक्टरों को ढूंढना आसान बनाता है, जिससे उन्हें डॉक्टर के पेशेवर रिकॉर्ड और रोगी की समीक्षा देखने में मदद मिलती है। जब किसी को अपनी पसंद का डॉक्टर मिल जाता है, तो वे ऐप को छोड़े बिना उनके साथ अपॉइंटमेंट बुक कर सकते हैं। एक ऐप डॉक्टरों को अपने मरीजों के प्रतीक्षा समय को यथासंभव कम रखने में मदद कर सकता है, उन्हें अपने मरीजों को शेड्यूल करने में मदद कर सकता है, और उन्हें मरीजों की ऑनलाइन समीक्षाओं पर नजर रखने में सक्षम बनाता है।

चिकित्सा नियुक्ति ऐप आवश्यकताएँ

संक्षेप में, हम उम्मीद करते हैं कि हमारा ऐप:

  • मरीजों को स्थान के आधार पर विभिन्न विशेषज्ञताओं (पारिवारिक चिकित्सक, हृदय रोग विशेषज्ञ, पोडियाट्रिस्ट, आदि) के डॉक्टरों की खोज करने दें।
  • डॉक्टरों की उनके वर्षों के अनुभव, रोगी के स्थान से उनकी दूरी, उनकी रोगी अनुशंसाओं, और उनकी समीक्षा अनुक्रमणिका (बेडसाइड तरीके, प्रतीक्षा समय, स्टाफ, आदि की रोगियों की सामूहिक रेटिंग) के आधार पर एक आदेशित सूची दिखाएं। ली>
  • डॉक्टरों की प्रारंभिक और अनुवर्ती परामर्श शुल्क दिखाएं।
  • डॉक्टरों की प्रोफाइल कैप्चर और प्रदर्शित करें, जिसमें उनकी डिग्री, प्रमाणन, इंटर्नशिप, और अस्पतालों के साथ अतीत और वर्तमान संबद्धता के विवरण शामिल हैं।
  • ऐप उपयोगकर्ताओं से डॉक्टरों के बारे में समीक्षा रिकॉर्ड करें। यह समीक्षा अन्य ऐप उपयोगकर्ताओं को डॉक्टरों और उनके कर्मचारियों का संपूर्ण पूर्वावलोकन देगी।

और ऐप के अनूठे विक्रय बिंदु को न भूलें:आगामी उपलब्ध अपॉइंटमेंट दिखाना और उपयोगकर्ताओं को एक बुक करने की अनुमति देना .

एप्लिकेशन आवश्यकताओं को वर्गीकृत करना

मूल रूप से, हम ऐप की आवश्यकताओं को इन चार क्षेत्रों में विभाजित कर सकते हैं:

  1. डॉक्टरों का डेटा प्रबंधित करना - डॉक्टर रजिस्टर कर सकते हैं और अपने सभी विवरण दर्ज कर सकते हैं।
  2. डॉक्टरों की ओपीडी (आउट पेशेंट विभाग) और क्लिनिक विवरण का प्रबंधन - डॉक्टर (या उनके कर्मचारी) अपने क्लिनिक या ओपीडी कार्यक्रम और उपलब्धता के बारे में विवरण लॉग कर सकते हैं।
  3. क्लाइंट प्रबंधित करना और डेटा की समीक्षा करना - उपयोगकर्ता पंजीकरण कर सकते हैं और अपना मूल विवरण दर्ज कर सकते हैं। वे डॉक्टरों के बारे में समीक्षाएं भी पोस्ट कर सकते हैं।
  4. अपॉइंटमेंट प्रबंधित करना - उपयोगकर्ता कुछ मानदंडों के आधार पर डॉक्टरों की खोज कर सकते हैं।

आइए इन क्षेत्रों को अलग-अलग देखें।

डॉक्टरों के डेटा का प्रबंधन

डॉक्टर कुछ अनिवार्य विवरण भरकर ऐप के साथ पंजीकरण कर सकते हैं, लेकिन अपॉइंटमेंट बुकिंग सुविधा उनकी पूरी प्रोफ़ाइल पूरी करने के बाद ही सक्षम होती है। इसमें उनकी योग्यताएं (पेशेवर डिग्री, प्रमाणन/विशेषज्ञताएं, और इंटर्नशिप), और अस्पतालों और स्वास्थ्य सेवा प्रदाताओं के साथ उनकी पिछली और वर्तमान संबद्धताएं शामिल हैं।

नीचे दी गई तालिकाएं इस जानकारी को प्रबंधित करती हैं।

doctor तालिका डॉक्टरों के बारे में प्राथमिक विवरण संग्रहीत करती है, जिसे वे पंजीकरण के दौरान दर्ज करते हैं। इस तालिका में कॉलम हैं:

  • id - एक अद्वितीय नंबर जो ऐप पंजीकरण के दौरान डॉक्टरों को प्रदान करता है।
  • first_name - डॉक्टर का पहला नाम।
  • last_name - डॉक्टर का उपनाम।
  • professional_statement - डॉक्टर की योग्यता, अनुभव, उनके पेशेवर आदर्श वाक्य आदि का विस्तृत अवलोकन। यह जानकारी डॉक्टर द्वारा दर्ज की जाती है और प्रत्येक डॉक्टर के प्रोफाइल पेज पर प्रदर्शित की जाती है।
  • practicing_from - जिस तारीख से डॉक्टर ने दवा का अभ्यास शुरू किया था। इसका गहरा महत्व है, क्योंकि ऐप इस कॉलम में दी गई जानकारी के आधार पर प्रत्येक डॉक्टर के लिए अपनी अनुभव रेटिंग प्राप्त करेगा।

specialization तालिका में सभी मौजूदा चिकित्सा विशेषज्ञता जैसे आर्थोपेडिक, न्यूरोलॉजिस्ट, दंत चिकित्सक, आदि शामिल हैं। एक डॉक्टर के पास एक से अधिक विशेषज्ञता हो सकती है; वास्तव में, डॉक्टर के लिए संबंधित क्षेत्रों में विशेषज्ञता प्राप्त करना बहुत आम है। उदाहरण के लिए, एक न्यूरोलॉजिस्ट एक मनोचिकित्सक भी हो सकता है; स्त्री रोग विशेषज्ञ एंडोक्रिनोलॉजिस्ट हो सकता है, और इसी तरह। इसलिए, doctor_specialization तालिका doctor और specialization टेबल। इन दो तालिकाओं की विशेषताएँ स्व-व्याख्यात्मक हैं।

qualification टेबल में डॉक्टरों की शिक्षा और डिग्री, प्रमाणन, शोध पत्र, सेमिनार, चल रहे प्रशिक्षण आदि सहित पेशेवर योग्यता के बारे में विवरण संग्रहीत हैं। विभिन्न प्रकार की योग्यता विवरणों को सुविधाजनक बनाने के लिए, मैंने इन क्षेत्रों को काफी सामान्य नाम दिए हैं:

  • id - तालिका की प्राथमिक कुंजी।
  • doctor_id - संदर्भ doctor तालिका और योग्यता के साथ डॉक्टर से संबंधित है।
  • qualification_name - डिग्री, प्रमाणन, शोध पत्र आदि के नाम को दर्शाता है।
  • institute_name - डॉक्टर को योग्यता जारी करने वाली संस्था। यह एक विश्वविद्यालय, एक चिकित्सा संस्थान, चिकित्सा चिकित्सकों का एक अंतरराष्ट्रीय संघ आदि हो सकता है।
  • procurement_year - वह तिथि जब योग्यता प्राप्त या प्रदान की गई थी।

hospital_affiliation तालिका अस्पतालों और स्वास्थ्य सेवा प्रदाताओं के साथ डॉक्टरों की संबद्धता के बारे में जानकारी रखती है। यह डेटा केवल डॉक्टर के प्रोफाइल पर प्रदर्शित करने के लिए है और अपॉइंटमेंट बुकिंग सुविधा में इसका कोई महत्व नहीं है। ओपीडी (आउट पेशेंट विभाग) विवरण अलग से दर्ज किया गया है और इस लेख में बाद में संभाला जाएगा।

इस तालिका के कॉलम हैं:

  • id - तालिका की प्राथमिक कुंजी।
  • doctor_id - संदर्भ doctor तालिका और डॉक्टर को संबद्ध अस्पताल से जोड़ता है।
  • hospital_name - संबद्ध अस्पताल का नाम।
  • city and country - शहर और देश जहां अस्पताल स्थित है। ये एड्रेस कॉलम ऐप के सर्च फंक्शन में कोई भूमिका नहीं निभाते हैं; वे केवल डॉक्टर के प्रोफ़ाइल पर प्रदर्शित करने के लिए हैं।
  • start_date - जब डॉक्टर का अस्पताल से जुड़ाव शुरू हुआ।
  • end_date - जब संबद्धता समाप्त हो गई। यह अशक्त है क्योंकि वर्तमान संबद्धता की समाप्ति तिथि नहीं होगी।

डॉक्टरों की ओपीडी/क्लिनिक विवरण प्रबंधित करना

इस खंड में जानकारी डॉक्टरों (या उनके कर्मचारियों) द्वारा दर्ज की जाती है और ऐप की खोज और बुकिंग कार्यक्षमता में महत्वपूर्ण भूमिका निभाती है।

office तालिका में अस्पतालों के आउट पेशेंट विभाग के बारे में जानकारी है जो डॉक्टर संबद्ध हैं और साथ ही साथ उनके स्वयं के क्लीनिक (यानी कार्यालय या सर्जरी)। इस तालिका में कॉलम हैं:

  • id - इस तालिका की प्राथमिक कुंजी।
  • doctor_id - संदर्भ doctor तालिका और प्रासंगिक चिकित्सक को इंगित करता है।
  • hospital_affiliation_id - उस अस्पताल को दर्शाता है जहां डॉक्टर ओपीडी के लिए उपलब्ध है। चूंकि कॉलम ओपीडी पर लागू होता है, लेकिन क्लीनिक पर नहीं, इसलिए यह अशक्त है।
  • time_slot_per_client_in_min - परामर्श के लिए आवंटित समय (मिनटों में) संग्रहीत करता है। डॉक्टरों द्वारा अपने अनुभव के आधार पर मिनटों की संख्या दर्ज की जाती है। यह कॉलम ऐप को अगला उपलब्ध स्लॉट निर्धारित करने में मदद करता है। ध्यान दें कि यह संख्या अपॉइंटमेंट की अवधि की गारंटी नहीं है, लेकिन अगर वे अपॉइंटमेंट बुक करने के लिए ऐप का उपयोग करते हैं तो यह रोगी प्रतीक्षा समय को कम करने में मदद करता है।
  • first_consultation_fee - डॉक्टर द्वारा प्रारंभिक यात्रा के लिए लिया जाने वाला शुल्क। यह महत्वहीन लग सकता है, लेकिन यह खोज फ़ंक्शन के लिए बहुत महत्वपूर्ण है; शुल्क एक बहुत ही सामान्य फ़िल्टर मानदंड है।
  • followup_consultation_fee - कई डॉक्टर प्रारंभिक परामर्श की तुलना में अनुवर्ती यात्रा के लिए कम शुल्क लेते हैं। यह कॉलम अनुवर्ती परामर्श लागत को संग्रहीत करता है।
  • street_address - अस्पताल की ओपीडी या क्लिनिक का पता।
  • city , state और country -वह शहर, राज्य और देश जहां अस्पताल या क्लिनिक स्थित है।
  • zip - डाक कोड जहां क्लिनिक या अस्पताल स्थित है। अक्सर, लोग डाक कोड का उपयोग करके आस-पास के क्षेत्रों में डॉक्टरों की खोज करते हैं, इसलिए यह फ़ील्ड ऐप के खोज फ़ंक्शन के लिए महत्वपूर्ण होगी।

एक अलग "कार्यालय" तालिका क्यों है जब ओपीडी विवरण आसानी से "hospital_affiliation" तालिका में ट्रैक किया जा सकता है?

तीन कारण:

  • एक डॉक्टर अपने काम के एक पहलू (यानी सर्जरी करने) के लिए अस्पताल से संबद्ध हो सकता है, लेकिन दूसरों के लिए नहीं (यानी वॉक-इन रोगियों को देखना)। यदि हम hospital_affiliation केवल तालिका।
  • कई डॉक्टर अस्पतालों से संबद्ध नहीं हैं, लेकिन उनके अपने क्लीनिक या कार्यालय हैं। हमें इन डॉक्टरों के लिए भी जानकारी संग्रहीत करने की आवश्यकता है।
  • एक डॉक्टर के अलग-अलग स्थानों पर कई कार्यालय हो सकते हैं, या किसी अस्पताल की कई शाखाओं में काम कर सकते हैं। यदि डॉक्टर को केवल एक अस्पताल स्थान से संबद्ध होने के रूप में दिखाया जाता है, तो हम कुछ जानकारी खो सकते हैं। यही कारण है कि हम अलग-अलग पता विवरण बनाए रखते हैं।

office_doctor_availability टाइम स्लॉट (जैसे सुबह 2 घंटे और शाम को 4 घंटे) के संदर्भ में टेबल डॉक्टरों की ओपीडी / क्लिनिक की उपलब्धता को स्टोर करता है। दिन को इस तरह विभाजित करना बहुत आम है, इसलिए उपलब्धता स्लॉट को स्टोर करने के लिए एक अतिरिक्त टेबल होना समझ में आता है। साथ ही, डॉक्टर एक से अधिक ओपीडी शिफ्ट में काम कर सकते हैं। इस तालिका के लिए कॉलम हैं:

  • id - तालिका की प्राथमिक कुंजी।
  • office_id - "कार्यालय" तालिका का संदर्भ देता है।
  • day_of_week - सप्ताह का दिन, यानी सोमवार, मंगलवार, आदि। यह डॉक्टरों को अलग-अलग दिनों (उदाहरण के लिए सप्ताहांत बनाम सप्ताह के दिनों) के लिए अलग-अलग उपलब्धता की अनुमति देता है।
  • start_time - जब डॉक्टर पहले मरीज के लिए तैयार हो।
  • end_time - जब अंतिम नियुक्ति या शिफ्ट समाप्त होने वाली हो।
  • is_available - डॉक्टरों को विशेष दिनों या समय स्लॉट के लिए उनकी उपलब्धता को चिह्नित करने की अनुमति देता है। इस कॉलम को डिफ़ॉल्ट के रूप में 'Y' के साथ आरंभ किया जाता है और जब डॉक्टर अपनी अनुपलब्धता को चिह्नित करते हैं तो इसे 'N' में अपडेट कर दिया जाता है।
  • reason_of_unavailablity - कई डॉक्टर यह बताना पसंद करते हैं कि वे अनुपलब्ध क्यों हैं या उन्हें अपॉइंटमेंट रद्द करना चाहिए। यह डॉक्टरों और उनके रोगियों के बीच एक पारदर्शी संबंध बनाने में मदद करता है। चूंकि यह वैकल्पिक है, इसलिए मैंने इसे अशक्त स्तंभ के रूप में रखा है।

in_network_insurance टेबल बीमा जानकारी संग्रहीत करता है। कई देशों में, चिकित्सा सेवाएं बहुत महंगी हैं और स्वास्थ्य बीमा अनिवार्य है। ऐसे मामलों में, इस तालिका में यह विवरण होता है कि अस्पताल ओपीडी या क्लिनिक में कौन सी बीमा कंपनियां पूरी तरह से स्वीकार की जाती हैं।

क्लाइंट प्रबंधित करना और डेटा की समीक्षा करना

एक मरीज के लिए, ऐप के लिए पंजीकरण करने के लिए बहुत कम जानकारी की आवश्यकता होती है। यहाँ से, मैं 'उपयोगकर्ता' या 'रोगी' के बजाय 'ग्राहक' का उपयोग करूँगा।

client_account टेबल ग्राहकों के लिए बुनियादी विवरण संग्रहीत करता है। ये विवरण पंजीकरण के समय दर्ज किए जाते हैं। इस तालिका में कॉलम हैं:

  • id - प्रत्येक ग्राहक को एक विशिष्ट संख्या सौंपी गई है।
  • first_name - ग्राहक का पहला नाम।
  • last_name - ग्राहक का उपनाम।
  • contact_number - ग्राहक का फोन नंबर, अधिमानतः एक मोबाइल नंबर, जिस पर नियुक्ति की जानकारी भेजी जा सकती है। यह वह नंबर भी है जहां डॉक्टर के कार्यालय के कर्मचारी क्लाइंट से संपर्क कर सकते हैं।
  • email - ग्राहक का ईमेल पता। ऐप क्लाइंट को अपॉइंटमेंट रिमाइंडर भेज सकता है।

client_review तालिका न केवल डॉक्टरों के लिए प्रतिक्रिया (यानी ग्राहक समीक्षा) प्रदान करती है, बल्कि यह संभावित ग्राहकों को डॉक्टरों को चुनने में भी मदद करती है। यह इस ऐप का एक अभिन्न अंग है। इस तालिका के लिए कॉलम हैं:

  • id - इस तालिका की प्राथमिक कुंजी।
  • user_account_id - यह दर्शाता है कि कौन सा उपयोगकर्ता समीक्षा सबमिट कर रहा है।
  • doctor_id - डॉक्टर की समीक्षा की जा रही है।
  • is_review_anonymous - रिव्यू के साथ क्लाइंट का नाम पब्लिश होगा या नहीं। यह ग्राहकों के लिए एक सुरक्षा सुविधा है।
  • wait_time_rating - यह नंबर कॉलम 1 (सबसे खराब) से लेकर 10 (सर्वश्रेष्ठ) तक की रेटिंग रखता है। यह क्लाइंट की राय को दर्शाता है कि उन्होंने डॉक्टर को देखने के लिए कितने समय तक इंतजार किया।
  • bedside_manner_rating - डॉक्टर के बेडसाइड तरीके से क्लाइंट की राय को स्टोर करता है (यानी अगर डॉक्टर दयालु है, दयालु है, अच्छी तरह से संवाद करता है, आदि)
  • overall_rating - डॉक्टर के साथ उनके सामान्य अनुभव की क्लाइंट की रेटिंग।
  • review - ग्राहक अपनी विस्तृत प्रतिक्रिया यहां दे सकते हैं।
  • is_doctor_recommended - यह संकेतक कॉलम बताता है कि क्लाइंट डॉक्टर को सलाह देगा या नहीं।
  • review_date - जब समीक्षा सबमिट की गई थी।

अपॉइंटमेंट प्रबंधित करना

यह खंड इस ऐप के लिए सबसे महत्वपूर्ण यूएसपी (यूनीक सेलिंग पॉइंट) है, क्योंकि यह ग्राहकों को विभिन्न डॉक्टरों की उपलब्धता की जांच करने और अपॉइंटमेंट बुक करने की अनुमति देता है।

appointment तालिका ग्राहकों के लिए नियुक्ति विवरण रखती है। इसके स्तंभों में शामिल हैं:

  • id - प्रत्येक अपॉइंटमेंट के लिए एक यूनिक नंबर दिया जाता है। यह नंबर कहीं और संदर्भित है।
  • user_account_id - कौन सा क्लाइंट अपॉइंटमेंट बुक कर रहा है।
  • office_id - यह दर्शाता है कि नियुक्ति में कौन सा डॉक्टर और कौन सा अस्पताल ओपीडी या क्लिनिक शामिल है।
  • probable_start_time - यह एक टाइमस्टैम्प कॉलम है जिसमें अपॉइंटमेंट का संभावित प्रारंभ समय होता है। चिकित्सा नियुक्तियों का प्रारंभ समय आमतौर पर पूर्ण होने के बजाय संभावित होता है।
  • actual_end_time - परामर्श का वास्तविक अंत समय। प्रारंभ में यह कॉलम खाली है, क्योंकि अपॉइंटमेंट समाप्त होने पर कई कारक प्रभावित हो सकते हैं। इसलिए, यह एक अशक्त स्तंभ है।
  • appointment_status_id - यह appointment_status तालिका, और यह नियुक्ति की वर्तमान स्थिति को दर्शाता है। स्थिति के लिए संभावित मान "सक्रिय", "रद्द" और "पूर्ण" हैं। प्रारंभ में स्थिति "सक्रिय" होगी। नियुक्ति हो जाने के बाद यह "पूर्ण" हो जाएगा। यदि ग्राहक अपनी नियुक्ति रद्द कर देता है तो यह "रद्द" हो जाएगा।
  • appointment_taken_date - तारीख जब नियुक्ति की गई थी।
  • app_booking_channel_id - जिस चैनल के जरिए अपॉइंटमेंट बुक किया गया था। ऐसे कई चैनल हैं जिनके माध्यम से अपॉइंटमेंट किए जाते हैं:ऐप के माध्यम से, अस्पताल को कॉल करके, डॉक्टर या उनके कार्यालय को कॉल करके, आदि।

संपूर्ण डेटा मॉडल देखें




कार्य में खोज कार्य

आइए 63101 ज़िप कोड में नेत्र रोग विशेषज्ञ की तलाश करें। खोज परिणामों को निम्नलिखित मानदंडों द्वारा क्रमबद्ध किया जाना चाहिए:

  • अधिकतर अनुभव
  • सर्वोच्च ग्राहक अनुशंसा रेटिंग
  • न्यूनतम प्रारंभिक परामर्श शुल्क

ये रहा कोड:

SELECT doctor_name, hospital_name, practicing_from, first_consultation_fee, recomm_count FROM
(SELECT d.doctor_id, d.first_name || ‘ ‘ || d.last_name as doctor_name, 
ha.hospital_name, d.practicing_from, o.first_consultation_fee 
FROM office o, doctor d, doctor_specialization ds, specialization s, hospital_affiliation ha 
WHERE o.doctor_id = d.id AND d.id = ds.doctor_id 
AND s.id = ds.specialization_id AND s.specialization_name = ‘Ophthalmologist’
AND o.hospital_affiliation_id = ha.id (+)
AND o.zip = ‘63101’) doctor_detail, 
(SELECT doctor_id, count(1) as recomm_count FROM client_review 
WHERE is_doctor_recommended = ‘Y’ GROUP BY doctor_id) review_count
WHERE doctor_detail.doctor_id = review_count.doctor_id
ORDER BY doctor_detail.practicing_from DESC, review_count.recomm_count DESC doctor_detail.first_consultation_fee ASC;

आप क्या जोड़ेंगे?

इस ऐप और इस डेटा मॉडल में और क्या जोड़ा जा सकता है? टिप्पणियों में अपने विचार साझा करें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TimescaleDB के लिए स्ट्रीमिंग प्रतिकृति का अवलोकन

  2. Alteryx में जावा डेटा के साथ कार्य करना

  3. उदाहरण के साथ एसक्यूएल जॉइन ट्यूटोरियल

  4. IDEF1X संकेतन

  5. SQL INSERT INTO Statement