import { requestClient } from '#/api/request';

const prefix = 'doctor/';
const commonPrescriptionPrefix = 'common-prescription/';

/**
 * 获取当前登录的医生信息
 * @param data
 */
export async function getDoctorMyInfoApi(data: any) {
  return requestClient.get<any>(`${prefix}my-info`, { params: data });
}

// ==================== 常用方管理 API ====================

/**
 * 常用方列表响应数据结构
 * @description 包含西药、中药、颗粒药三种类型的常用方
 */
export interface CommonPrescriptionResponse {
  /** 西药常用方列表 */
  west_prescription: any[];
  /** 西药详细药品信息 */
  west: any[][];
  /** 中药常用方列表 */
  chin_prescription: any[];
  /** 中药详细药品信息 */
  chinese: any[][];
  /** 颗粒药常用方列表 */
  granular_prescription: any[];
  /** 颗粒药详细药品信息 */
  granular: any[][];
}

/**
 * 获取常用方列表
 * @description 获取当前医生的所有常用方（西药/中药/颗粒药）
 * @param storeId 诊所ID（可选）
 */
export async function getCommonPrescriptionListApi(storeId?: number) {
  return requestClient.get<CommonPrescriptionResponse>(
    `${commonPrescriptionPrefix}list`,
    { params: { store_id: storeId } },
  );
}

/**
 * 获取常用方详情
 * @description 根据ID和类型获取常用方的详细信息
 * @param id 常用方ID
 * @param type 类型：west-西药，chinese-中药，granular-颗粒药
 */
export async function getCommonPrescriptionDetailApi(
  id: number,
  type: string,
) {
  return requestClient.get<any[]>(`${commonPrescriptionPrefix}detail`, {
    params: { id, type },
  });
}

/**
 * 常用方药品数据结构（西药/中成药）
 * @description 西药药品的详细信息
 */
export interface CommonPrescriptionWestDrug {
  /** 药品ID */
  drug_id?: number;
  /** 药品ID（兼容字段） */
  id?: number;
  /** 药品名称 */
  drug_name: string;
  /** 每次用量 */
  number?: number;
  /** 购买数量 */
  select_number?: number;
  /** 单价 */
  price?: number;
  /** 使用时间ID */
  time_id?: number;
  /** 使用类型ID */
  type_id?: number;
  /** 使用频率ID */
  frequency_id?: number;
  /** 单位ID */
  unit_id?: number;
  /** 药品图片 */
  image?: string;
  /** 说明书 */
  instruction?: string;
  /** 使用时间信息 */
  use_num?: { name?: string };
  /** 使用类型信息 */
  use_type?: { name?: string };
  /** 使用频率信息 */
  use_frequency?: { name?: string };
  /** 单位信息 */
  unit?: { name?: string };
}

/**
 * 常用方药品数据结构（中药/颗粒药）
 * @description 中药/颗粒药药品的详细信息
 */
export interface CommonPrescriptionChineseDrug {
  /** 药品ID */
  drug_id?: number;
  /** 药品ID（兼容字段） */
  id?: number;
  /** 药品名称 */
  drug_name: string;
  /** 克数/用量 */
  number?: number;
  /** 单价 */
  price?: number;
  /** 用法ID */
  way_id?: number;
}

/**
 * 保存西药常用方
 * @description 将当前处方保存为西药常用方模板，后端会自动创建 recipe 记录
 * @param data 常用方数据
 */
export async function saveWestCommonPrescriptionApi(data: {
  /** 常用方名称 */
  name: string;
  /** 药品详细信息数组 */
  drugs: CommonPrescriptionWestDrug[];
  /** 诊所ID */
  store_id: number;
  /** 临床诊断（可选） */
  clinical_diagnose?: string;
  /** 医嘱（可选） */
  doctor_order?: string;
  /** 类别 1-自费 2-医保（可选） */
  category?: string;
}) {
  return requestClient.post<any>(`${commonPrescriptionPrefix}save-west`, data);
}

/**
 * 保存中药常用方
 * @description 将当前处方保存为中药常用方模板，后端会自动创建 recipe 记录
 * @param data 常用方数据
 */
export async function saveChineseCommonPrescriptionApi(data: {
  /** 常用方名称 */
  name: string;
  /** 药品详细信息数组 */
  drugs: CommonPrescriptionChineseDrug[];
  /** 诊所ID */
  store_id: number;
  /** 临床诊断（可选） */
  clinical_diagnose?: string;
  /** 医嘱（可选） */
  doctor_order?: string;
  /** 类别 1-自费 2-医保（可选） */
  category?: string;
  /** 剂量/天数（可选，默认7） */
  dosage?: number;
  /** 每日次数（可选，默认2） */
  day_dosage?: number;
  /** 规则类型 1=自制剂，2=委托调剂（可选，默认1） */
  rule_type?: number;
  /** 加工规则ID（制剂，可选） */
  process_rule_id?: number;
  /** 子加工规则ID（煎法，可选） */
  child_process_rule_id?: number;
  /** 加工规则备注ID（备注，可选） */
  process_rule_note_id?: number;
  /** 包装方式ID（可选，默认2） */
  package_method_id?: number;
}) {
  return requestClient.post<any>(
    `${commonPrescriptionPrefix}save-chinese`,
    data,
  );
}

/**
 * 保存颗粒药常用方
 * @description 将当前处方保存为颗粒药常用方模板，后端会自动创建 recipe 记录
 * @param data 常用方数据
 */
export async function saveGranularCommonPrescriptionApi(data: {
  /** 常用方名称 */
  name: string;
  /** 药品详细信息数组 */
  drugs: CommonPrescriptionChineseDrug[];
  /** 诊所ID */
  store_id: number;
  /** 临床诊断（可选） */
  clinical_diagnose?: string;
  /** 医嘱（可选） */
  doctor_order?: string;
  /** 类别 1-自费 2-医保（可选） */
  category?: string;
  /** 剂量/天数（可选，默认7） */
  dosage?: number;
  /** 每日次数（可选，默认2） */
  day_dosage?: number;
}) {
  return requestClient.post<any>(
    `${commonPrescriptionPrefix}save-granular`,
    data,
  );
}

/**
 * 删除常用方
 * @description 删除指定的常用方
 * @param id 常用方ID
 * @param type 类型：west-西药，chinese-中药，granular-颗粒药
 */
export async function deleteCommonPrescriptionApi(id: number, type: string) {
  return requestClient.post<any>(`${commonPrescriptionPrefix}delete`, {
    id,
    type,
  });
}

/**
 * 常用方更新参数（基础）
 * @description 更新常用方基本信息的参数
 */
export interface UpdateCommonPrescriptionBaseParams {
  /** 常用方ID */
  id: number;
  /** 常用方名称（可选） */
  name?: string;
  /** 临床诊断（可选） */
  clinical_diagnose?: string;
  /** 医嘱（可选） */
  doctor_order?: string;
}

/**
 * 西药常用方更新参数
 * @description 更新西药常用方，支持更新药品列表
 */
export interface UpdateWestCommonPrescriptionParams extends UpdateCommonPrescriptionBaseParams {
  /** 药品数组（可选） */
  drugs?: CommonPrescriptionWestDrug[];
}

/**
 * 中药/颗粒药常用方更新参数
 * @description 更新中药/颗粒药常用方，支持更新药品列表
 */
export interface UpdateChineseCommonPrescriptionParams extends UpdateCommonPrescriptionBaseParams {
  /** 药品数组（可选） */
  drugs?: CommonPrescriptionChineseDrug[];
  /** 剂量/天数（可选） */
  dosage?: number;
  /** 每日次数（可选） */
  day_dosage?: number;
  /** 规则类型 1=自制剂，2=委托调剂（可选） */
  rule_type?: number;
  /** 加工规则ID（制剂，可选） */
  process_rule_id?: number;
  /** 子加工规则ID（煎法，可选） */
  child_process_rule_id?: number;
  /** 加工规则备注ID（备注，可选） */
  process_rule_note_id?: number;
  /** 包装方式ID（可选） */
  package_method_id?: number;
}

/**
 * 更新西药常用方
 * @description 更新西药常用方的基本信息和药品列表
 * @param data 更新参数
 */
export async function updateWestCommonPrescriptionApi(
  data: UpdateWestCommonPrescriptionParams,
) {
  return requestClient.post<any>(
    `${commonPrescriptionPrefix}update-west`,
    data,
  );
}

/**
 * 更新中药常用方
 * @description 更新中药常用方的基本信息和药品列表
 * @param data 更新参数
 */
export async function updateChineseCommonPrescriptionApi(
  data: UpdateChineseCommonPrescriptionParams,
) {
  return requestClient.post<any>(
    `${commonPrescriptionPrefix}update-chinese`,
    data,
  );
}

/**
 * 更新颗粒药常用方
 * @description 更新颗粒药常用方的基本信息和药品列表
 * @param data 更新参数
 */
export async function updateGranularCommonPrescriptionApi(
  data: UpdateChineseCommonPrescriptionParams,
) {
  return requestClient.post<any>(
    `${commonPrescriptionPrefix}update-granular`,
    data,
  );
}
/**
 * 获取当前登录的医生信息
 */
export async function getDoctorMyDoctorOrderApi() {
  return requestClient.get<any>(`${prefix}my-doctor-order`);
}
/**
 * 获取当前登录的医生信息
 */
export async function getDoctorMyDiseaseListApi() {
  return requestClient.get<any>(`${prefix}my-disease-list`);
}
/**
 * 保存服务价格
 * @param data
 */
export async function saveServicePriceApi(data: Record<string, any>) {
  return requestClient.post<any>(`${prefix}save-service-price`, data);
}
/**
 * 创建医嘱
 * @param content
 */
export async function createDoctorOrderApi(content: string) {
  return requestClient.post<any>(`${prefix}create-doctor-order`, { content });
}

/**
 * 删除医嘱
 * @param id 医嘱ID
 */
export async function deleteDoctorOrderApi(id: number) {
  return requestClient.post<any>(`${prefix}delete-doctor-order`, { id });
}

/**
 * 添加常用诊断
 * @param disease_id 疾病ID
 */
export async function addDoctorMyDiseaseApi(disease_id: number) {
  return requestClient.post<any>(`${prefix}add-my-disease`, { disease_id });
}

/**
 * 删除常用诊断
 * @param id 常用诊断记录ID
 */
export async function deleteDoctorMyDiseaseApi(id: number) {
  return requestClient.post<any>(`${prefix}delete-my-disease`, { id });
}

/**
 * 更新医生签名
 * @param data 签名数据，包含 sign_image 字段
 */
export async function updateSignatureApi(data: { sign_image: string }) {
  return requestClient.post<any>(`${prefix}update-signature`, data);
}
