// apps/web/e2e/pages/patient-detail.page.ts
import type { Page } from '@playwright/test';

export class PatientDetailPage {
  readonly page: Page;

  constructor(page: Page) {
    this.page = page;
  }

  async goto(id: string) {
    await this.page.goto(`/#/health/patients/${id}`);
    await this.page.waitForSelector('.ant-descriptions, .ant-tabs', { timeout: 10000 });
  }

  async getPatientName(): Promise<string> {
    const el = this.page.locator('div[style*="font-weight"]').first();
    return el.textContent() ?? '';
  }

  async clickTab(tabName: string) {
    await this.page.click(`.ant-tabs-tab:has-text("${tabName}")`);
    await this.page.waitForTimeout(500);
  }

  async getVitalSignsCount(): Promise<number> {
    return this.page.locator('.ant-table-tbody tr').count();
  }

  async clickAssignDoctor() {
    await this.page.click('button:has-text("分配医生")');
    await this.page.waitForSelector('.ant-modal, .ant-drawer', { timeout: 5000 });
  }

  async selectDoctor(doctorName: string) {
    await this.page.click('.ant-select');
    await this.page.click(`.ant-select-item-option:has-text("${doctorName}")`);
  }

  async confirmAssign() {
    await this.page.click('.ant-modal button[type="submit"], .ant-btn-primary');
    await this.page.waitForSelector('.ant-message-success', { timeout: 5000 });
  }
}
