All projects

WeChat mini-program · Hospital IT internship

Bowel Preparation Assistant

A WeChat mini-program for patient preparation guidance.

During an IT internship at Shanghai Haowangjiao Hospital, Shuran co-developed a tool to help patients follow the preparation process before a colonoscopy.

The Bowel Preparation Assistant mini-program: intake form and a generated care planSoftware copyright registered
The mini-program: patient intake on the left, a generated care plan on the right.

Interface & implementation

Inside the build

Small interactions, backed by practical logic.

The mini-program reminder screen showing two pending reminders and a calendar
The reminder schedule and calendar.

One clear next step.

The schedule separates completed tasks from those still ahead. Future, unfinished reminders are sorted by time, so the earliest one becomes the next step shown to the patient.

computeSummary()JavaScript
function computeSummary(reminders) {
  const total = reminders.length;
  const completed = reminders.filter((item) => item.completed).length;
  const pending = total - completed;
  const upcoming = reminders
    .filter((item) =>
      !item.completed && item.datetime && item.datetime >= new Date()
    )
    .sort((a, b) => a.datetime - b.datetime);
 
  return {
    total,
    completed,
    pending,
    nextReminder: upcoming[0] || null
  };
}
The mini-program intake screen with empty name, date of birth, and weight fields
The patient intake form, before any details are entered.

Start with the essentials.

Before a plan is generated, the form checks for missing details. Each check returns a specific prompt, keeping incomplete information from moving into the next stage.

handleGenerate()JavaScript
if (!user.name) {
  wx.showToast({ title: '请填写姓名', icon: 'none' });
  return;
}
if (!user.birthdate) {
  wx.showToast({ title: '请选择出生日期', icon: 'none' });
  return;
}
if (!user.weight) {
  wx.showToast({ title: '请输入体重', icon: 'none' });
  return;
}
The symptom record screen with total, flagged, and today counts above the entry form
Symptom records, with a summary above the entry form.

A record with context.

Each entry keeps the symptom, reported severity, time, and notes together. An attention flag is retained alongside that context. This is a record of reported symptoms, not an automated diagnosis.

handleAddSymptom()JavaScript
const severity = this.data.severityOptions[this.data.severityIndex];
const urgent = this.data.form.urgent || severity === '重度';
const entry = {
  id: generateId('symptom'),
  symptomId: symptom.id,
  name: symptom.name,
  severity,
  date: this.data.form.date,
  time: this.data.form.time,
  notes: this.data.form.notes,
  urgent,
  className: SEVERITY_CLASS_MAP[severity] || 'light'
};

Selected excerpts from the co-developed application. Original interface and code; spacing adjusted for readability. Project documentation, not medical guidance.

The project

The preparation process before a colonoscopy requires patients to follow diet and medication instructions. This mini-program was developed to provide guidance through that process.

From appointment to reminders

The application brings patient details and examination times into a preparation plan. Its scheduling tools turn plan steps into reminders, while separate views support hydration, food, and symptom records. A dashboard brings those records together.

Making the interface adaptable

The source includes language and text-size preferences, alongside an educational resource library with categories and favorites. These features offer different ways to read and revisit the information.

Development

Co-developed during an IT internship at Shanghai Haowangjiao Hospital, the project extends this software work into a practical patient-facing setting.

Software registration

The software copyright is jointly registered to Shuran Yang and Yunshu Zhang, under registration number 2026SR0206512, dated February 2, 2026.

The Music for Alzheimer prototype: a therapy session with patient status and music playbackNext projectMusic for AlzheimerExplore the project
All projects