How gleamslime/hospital-wxapp works
Purpose and Runtime
This is a WeChat Mini Program frontend for a hospital/medical consultation product: account binding and registration, department/doctor discovery, family management, ID-card upload, and consultation history/messaging. The client runtime is WeChat Mini Program APIs; its server API base URL is configured in miniprogram/app.js. A WeChat cloud function obtains the platform OpenID at cloud/getOpenId/index.js.
Application Bootstrap and Global Data
miniprogram/app.js is the application entry point and initializes shared data, including cached department information. miniprogram/app.json declares application pages, window/tab-bar behavior, and component availability. The launch path retrieves or reuses department hierarchy data, with README-defined one-hour local-cache validity.
Paths: miniprogram/app.js, miniprogram/app.json, miniprogram/app.wxss.
Account and Identity Boundary
The account area owns login, OpenID binding, user/doctor registration, and persisted account/token/master-account state. Account data is cached locally for three days to reduce backend calls; pages must refresh it when absent or expired. The client’s OpenID dependency crosses into the cloud-function boundary rather than deriving identity itself.
Paths: miniprogram/pages/account/account.js, miniprogram/pages/account/login/login.js, miniprogram/pages/account/register/register.js, cloud/getOpenId/index.js.
Discovery and Doctor Consultation
The home page is the primary navigation and department entry surface. Search supports department/subdepartment, name, filtering, throttling, and doctor/expert selection. The doctor detail and consulting pages continue the selected-doctor flow into consultation functionality. Expert list data is locally cached by search for one hour.
Paths: miniprogram/pages/index/index.js, miniprogram/pages/search/search.js, miniprogram/pages/doctor/doctor.js, miniprogram/pages/doctor/consulting/consulting.js.
Consultations and Messaging
Consultation records are surfaced from the account domain and lead into an answer/conversation page. The intended ordering is replied consultations, then pending, then completed. The messaging UI distinguishes static historical messages from animated newly sent messages and includes a bottom tool bar. API calls and message state remain client-page responsibilities; no separate messaging backend implementation exists in this repository.
Paths: miniprogram/pages/account/askList/askList.js, miniprogram/pages/account/answer/answer.js.
Family and Verification Workflows
Family-member management is an account-adjacent domain for listing, adding, and deleting members. Identity verification/upload is separated into upload pages, including an ID-card-specific screen; it feeds the broader registration and account-verification flow through configured remote APIs.
Paths: miniprogram/pages/account/family/family.js, miniprogram/pages/upload/idCard/idcard.js, miniprogram/pages/upload/page/page.js.
Shared UI and External Dependencies
A custom reusable Toast component provides transient user feedback across pages. Infrastructure consists of WeChat client APIs, WeChat cloud-function execution for OpenID, local storage, and an externally hosted hospital API selected by the URL in miniprogram/app.js. The repository contains frontend and one cloud function only; its operational backend is intentionally external.
Paths: miniprogram/component/Toast/Toast.js, miniprogram/component/Toast/Toast.wxml, cloud/getOpenId/package.json.
Components 19
Mini Program Client
WeChat frontend runtime and page domains.
- App bootstrap · Initializes global data and department cache.
miniprogram/app.js - Page and UI manifest · Declares pages, tab bar, window, and components.
miniprogram/app.json - Home and departments · Primary navigation and department entry surface.
miniprogram/pages/index/index.js - Doctor search · Searches and filters departments and experts with one-hour result caching.
miniprogram/pages/search/search.js - Doctor detail
miniprogram/pages/doctor/doctor.js - Consulting · Starts consultation with the selected doctor.
miniprogram/pages/doctor/consulting/consulting.js - Toast · Reusable transient feedback UI.
miniprogram/component/Toast/Toast.js
Account Workflows
Identity, registration, family, and consultation history.
- Account hub · Owns cached account, token, and master-account state.
miniprogram/pages/account/account.js - Login and binding · Binds platform identity to an account.
miniprogram/pages/account/login/login.js - User and doctor registration
miniprogram/pages/account/register/register.js - Family management · Lists, adds, and deletes family members.
miniprogram/pages/account/family/family.js - Consultation history · Orders replied, pending, then completed consultations.
miniprogram/pages/account/askList/askList.js - Answer conversation · Renders history and animated newly sent messages.
miniprogram/pages/account/answer/answer.js - ID-card upload · Identity verification upload workflow.
miniprogram/pages/upload/idCard/idcard.js - General upload flow
miniprogram/pages/upload/page/page.js
Cloud Identity
Platform OpenID boundary.
- OpenID cloud function · Obtains the WeChat platform OpenID.
cloud/getOpenId/index.js
External Services
Platform, device storage, and hospital APIs.
- WeChat APIs · Provides Mini Program runtime and cloud execution.
- Local storage · Caches departments, searches, and account data.
- Hospital API · Remote operational backend selected by the app URL.
Connections 22
- Page and UI manifest → App bootstrap: configures
- App bootstrap → Home and departments: launches
- App bootstrap → Local storage: caches departments
- Home and departments → Doctor search: navigates to
- Doctor search → Doctor detail: selects doctor
- Doctor search → Local storage: caches search results
- Doctor detail → Consulting: continues to
- Consulting → Hospital API: consultation APIs
- Account hub → Login and binding: opens
- Account hub → User and doctor registration: opens
- Account hub → Family management: manages
- Account hub → Consultation history: shows
- Account hub → Local storage: caches account state
- Login and binding → OpenID cloud function: requests OpenID
- OpenID cloud function → WeChat APIs: uses cloud context
- Login and binding → Hospital API: binds account
- User and doctor registration → ID-card upload: requires verification
- ID-card upload → General upload flow: uses upload flow
- ID-card upload → Hospital API: uploads verification
- Consultation history → Answer conversation: opens conversation
- Answer conversation → Hospital API: loads and sends messages
- Toast → Home and departments: feedback UI