/*
 * Copyright ©2023 CJB-CNIT Team. All rights reserved
 */
package com.openhis.web.reportmanage.dto;

import java.math.BigDecimal;

import lombok.Data;
import lombok.experimental.Accessors;

/**
 * 报表统计 dto
 *
 * @author yuxj
 * @date 2025-09-23
 */
@Data
@Accessors(chain = true)
public class AnnualReportStatisticsPageDto {
    // 6.1 总收入相关字段
    private TotalIncomeDTO totalIncome;

    // 6.2 总费用相关字段
    private TotalExpenseDTO totalExpense;

    // 8 诊疗人次数相关字段
    private MedicalTreatmentDTO medicalTreatment;
    /**
     * 6.1 总收入DTO
     */
    @Data
    @Accessors(chain = true)
    public static class TotalIncomeDTO {
        private BigDecimal total; // 总收入合计

        // 6.1.1 财政拨款收入
        private FinancialAppropriationIncomeDTO financialAppropriationIncome;

        // 6.1.2 事业收入
        private UndertakingIncomeDTO undertakingIncome;

        // 6.1.3 上级补助收入
        private BigDecimal superiorSubsidyIncome;

        // 6.1.4 附属单位上缴收入
        private BigDecimal affiliatedUnitTurnoverIncome;

        // 6.1.5 经营收入
        private BigDecimal operatingIncome;

        // 6.1.6 非同级财政拨款收入
        private BigDecimal nonSameLevelFinancialAppropriationIncome;

        // 6.1.7 投资收益
        private BigDecimal investmentIncome;

        // 6.1.8 捐赠收入
        private BigDecimal donationIncome;

        // 6.1.9 利息收入
        private BigDecimal interestIncome;

        // 6.1.10 租金收入
        private BigDecimal rentIncome;

        // 6.1.11 其他收入
        private BigDecimal otherIncome;

        // 6.1.12 总收入中：来源于职工基本医疗保险基金的收入
        private BigDecimal employeeMedicalInsuranceFundIncome;

        // 6.1.13 来源于城乡居民基本医疗保险基金的收入
        private BigDecimal residentMedicalInsuranceFundIncome;

        // 6.1.14 来源于其他医疗保险的收入
        private BigDecimal otherMedicalInsuranceIncome;
    }

    /**
     * 6.1.1 财政拨款收入DTO
     */
    @Data
    @Accessors(chain = true)
    public static class FinancialAppropriationIncomeDTO {
        private BigDecimal total; // 财政拨款收入合计

        // 6.1.1.1 其中：财政基本拨款收入
        private BigDecimal basicFinancialAppropriationIncome;

        // 6.1.1.2 财政项目拨款收入
        private BigDecimal projectFinancialAppropriationIncome;
    }

    /**
     * 6.1.2 事业收入DTO
     */
    @Data
    @Accessors(chain = true)
    public static class UndertakingIncomeDTO {
        private BigDecimal total; // 事业收入合计

        // 6.1.2.1 医疗收入
        private MedicalIncomeDTO medicalIncome;

        // 6.1.2.2 科教收入
        private BigDecimal scienceEducationIncome;

        // 6.1.2.3 非同级财政拨款收入
        private BigDecimal nonSameLevelFinancialAppropriationIncome;

        // 6.1.2.9 门诊和住院药品收入中：基本药物收入
        private BigDecimal essentialDrugsIncome;
    }

    /**
     * 6.1.2.1 医疗收入DTO
     */
    @Data
    @Accessors(chain = true)
    public static class MedicalIncomeDTO {
        /** 医疗收入合计 */
        private BigDecimal totalMedicalRevenue;

        // 门急诊收入细分
        /** 门急诊收入合计 */
        private BigDecimal totalOutpatientRevenue;
        /** 挂号收入 */
        private BigDecimal outpatientRegistrationRevenue;
        /** 诊察收入（门急诊） */
        private BigDecimal outpatientConsultationRevenue;
        /** 检查收入（门急诊） */
        private BigDecimal outpatientInspectionRevenue;
        /** 化验收入（门急诊） */
        private BigDecimal outpatientLabTestRevenue;
        /** 治疗收入（门急诊） */
        private BigDecimal outpatientTreatmentRevenue;
        /** 手术收入（门急诊） */
        private BigDecimal outpatientSurgeryRevenue;
        /** 卫生材料收入（门急诊） */
        private BigDecimal outpatientMedicalMaterialRevenue;
        // 药品收入细分
        /** 药品收入合计 */
        private BigDecimal outpatientTotalDrugRevenue;
        /** 西药收入合计 */
        private BigDecimal outpatientTotalWesternDrugRevenue;
        /** 疫苗收入（西药下） */
        private BigDecimal outpatientVaccineRevenue;
        /** 中成药收入 */
        private BigDecimal outpatientChinesePatentDrugRevenue;
        /** 中药饮片收入 */
        private BigDecimal outpatientChineseHerbRevenue;
        /** 其他门诊收入 */
        private BigDecimal otherOutpatientRevenue;
        // 住院收入细分
        /** 住院收入合计 */
        private BigDecimal totalInpatientRevenue;
        /** 床位收入（住院） */
        private BigDecimal inpatientBedRevenue;
        /** 诊察收入（住院） */
        private BigDecimal inpatientConsultationRevenue;
        /** 检查收入（住院） */
        private BigDecimal inpatientInspectionRevenue;
        /** 化验收入（住院） */
        private BigDecimal inpatientLabTestRevenue;
        /** 治疗收入（住院） */
        private BigDecimal inpatientTreatmentRevenue;
        /** 手术收入（住院） */
        private BigDecimal inpatientSurgeryRevenue;
        /** 护理收入（住院） */
        private BigDecimal inpatientNursingRevenue;
        /** 卫生材料收入（住院） */
        private BigDecimal inpatientMedicalMaterialRevenue;
        // 药品收入细分（门急诊+住院共用统计维度，无单独区分则合并）
        /** 药品收入合计 */
        private BigDecimal inpatientTotalDrugRevenue;
        /** 西药收入合计 */
        private BigDecimal inpatientTotalWesternDrugRevenue;
        /** 疫苗收入（西药下） */
        private BigDecimal inpatientVaccineRevenue;
        /** 中成药收入 */
        private BigDecimal inpatientChinesePatentDrugRevenue;
        /** 中药饮片收入 */
        private BigDecimal inpatientChineseHerbRevenue;
        /** 其他住院收入 */
        private BigDecimal otherInpatientRevenue;
        /** 结算差额 */
        private BigDecimal settlementDifference;
    }

    /**
     * 6.2 总费用DTO
     */
    @Data
    @Accessors(chain = true)
    public static class TotalExpenseDTO {
        private BigDecimal total; // 总费用合计

        // 6.2.1 业务活动费用
        private BusinessActivityExpenseDTO businessActivityExpense;

        // 6.2.2 单位管理费用
        private UnitManagementExpenseDTO unitManagementExpense;

        // 6.2.3 经营费用
        private BigDecimal operatingExpense;

        // 6.2.4 资产处置费用
        private BigDecimal assetDisposalExpense;

        // 6.2.5 上缴上级费用
        private BigDecimal paymentToSuperiorExpense;

        // 6.2.6 对附属单位补助费用
        private BigDecimal subsidyToAffiliatedUnitsExpense;

        // 6.2.7 所得税费用
        private BigDecimal incomeTaxExpense;

        // 6.2.8 其他费用
        private BigDecimal otherExpense;
    }

    /**
     * 6.2.1 业务活动费用DTO
     */
    @Data
    @Accessors(chain = true)
    public static class BusinessActivityExpenseDTO {
        private BigDecimal total; // 业务活动费用合计

        // 6.2.1.1 财政基本拨款经费
        private BigDecimal basicFinancialAppropriationFund;

        // 6.2.1.2 财政项目拨款经费
        private BigDecimal projectFinancialAppropriationFund;

        // 6.2.1.3 科教经费
        private BigDecimal scienceEducationFund;

        // 6.2.1.4 其他经费
        private BigDecimal otherFund;

        // 6.2.1.5 业务活动费用中：人员经费
        private PersonnelExpenseDTO personnelExpense;

        // 6.2.1.6 固定资产折旧费
        private BigDecimal fixedAssetDepreciation;

        // 6.2.1.7 卫生材料费
        private BigDecimal healthMaterialsExpense;

        // 6.2.1.8 药品费
        // 药品费合计
        private BigDecimal totalDrugExpense;

        // 其中：基本药物费用
        private BigDecimal essentialDrugsExpense;
    }

    /**
     * 人员经费DTO（包含业务活动和单位管理）
     */
    @Data
    @Accessors(chain = true)
    public static class PersonnelExpenseDTO {
        private BigDecimal total; // 人员经费合计

        // 工资福利费用
        // 工资福利费用合计
        private BigDecimal totalSalaryWelfareExpense;

        // 其中：卫生技术人员人均工资性收入
        private HealthTechnicalPersonnelSalaryDTO healthTechnicalPersonnelSalary;

        // 对个人和家庭的补助费用
        private BigDecimal subsidyToIndividualsAndFamilies;

    }

    /**
     * 卫生技术人员工资DTO
     */
    @Data
    @Accessors(chain = true)
    public static class HealthTechnicalPersonnelSalaryDTO {
        private BigDecimal average; // 平均工资

        // 其中：执业（助理）医师
        private PracticingPhysicianSalaryDTO practicingPhysicianSalary;

        // 注册护士
        private RegisteredNurseSalaryDTO registeredNurseSalary;

        // 药师（士）
        private BigDecimal pharmacistSalary;

        // 技师（士）
        private BigDecimal technicianSalary;

    }

    /**
     * 执业（助理）医师工资DTO
     */
    @Data
    @Accessors(chain = true)
    public static class PracticingPhysicianSalaryDTO {
        private BigDecimal total; // 合计

        // 其中：主任医师
        private BigDecimal chiefPhysician;

        // 副主任医师
        private BigDecimal associateChiefPhysician;

        // 主治医师
        private BigDecimal attendingPhysician;

        // 医师（士）
        private BigDecimal physician;

    }

    /**
     * 注册护士工资DTO
     */
    @Data
    @Accessors(chain = true)
    public static class RegisteredNurseSalaryDTO {
        private BigDecimal total; // 合计

        // 其中：主任护师
        private BigDecimal chiefNurse;

        // 副主任护师
        private BigDecimal associateChiefNurse;

        // 主管护师
        private BigDecimal chargeNurse;

        // 护师（士）
        private BigDecimal nurse;
    }

    /**
     * 6.2.2 单位管理费用DTO
     */
    @Data
    @Accessors(chain = true)
    public static class UnitManagementExpenseDTO {
        private BigDecimal total; // 单位管理费用合计

        // 6.2.2.1 财政基本拨款经费
        private BigDecimal basicFinancialAppropriationFund;

        // 6.2.2.2 财政项目拨款经费
        private BigDecimal projectFinancialAppropriationFund;

        // 6.2.2.3 科教经费
        private BigDecimal scienceEducationFund;

        // 6.2.2.4 其他经费
        private BigDecimal otherFund;

        // 6.2.2.5 单位管理费用中：人员经费
        private PersonnelExpenseDTO personnelExpense;

        // 6.2.2.6 固定资产折旧费
        private BigDecimal fixedAssetDepreciation;

        // 6.2.2.7 卫生材料费
        private BigDecimal healthMaterialsExpense;

        // 6.2.2.8 药品费
        // 药品费合计
        private BigDecimal totalDrugExpense;

        // 其中：基本药物费用
        private BigDecimal essentialDrugsExpense;
    }

    /**
     * 8 诊疗人次数相关DTO
     */
    @Data
    @Accessors(chain = true)
    public static class MedicalTreatmentDTO {
        // 8.1 总诊疗人次数
        private TotalDiagnosisTreatmentsDTO totalDiagnosisTreatments;

        // 8.2 X线电子计算机断层扫描装置检查人次数
        private Long ctScanCount;

        // 8.3 医用磁共振成像设备（核磁）检查人次数
        private Long mriScanCount;

        // 8.4 X线正电子发射断层扫描仪（PET/CT）检查人次数
        private Long petCtScanCount;

        // 8.5 心理咨询人次数
        // 心理咨询人次数合计
        private Long totalPsychologicalConsultation;

        // 8.5.1 其中：门诊人次数
        private Long outpatientPsychologicalConsultationCount;

        // 8.6 体重管理咨询人次数
        // 体重管理咨询人次数合计
        private Long totalWeightManagementConsultation;

        // 8.6.1 其中：门诊人次数
        private Long outpatientWeightManagementConsultationCount;

        // 8.7 多学科会诊（MDT）人次数
        private Long mdtConsultationCount;

        // 8.8 互联网诊疗服务人次数
        private Long internetDiagnosisCount;

        // 8.9 远程医疗服务人次数
        private Long telemedicineServiceCount;

        // 8.10 观察室留观病例数
        // 观察室留观病例数合计
        private Long totalObservationCase;

        // 8.10.1 其中: 死亡人数
        private Long deathCount;

        // 8.11 健康检查人次数
        private Long healthExaminationCount;

        // 8.12 入院人次数
        private Long admissionCount;

        // 8.13 出院人次数
        private DischargeCountDTO dischargeCount;

        // 8.14 住院病人手术人次数
        private InpatientSurgeryCountDTO inpatientSurgeryCount;

        // 8.15 门诊处方总数
        private OutpatientPrescriptionDTO outpatientPrescription;

        // 8.16 医疗纠纷例数
        private Long medicalDisputeCount;

        // 8.17 参与家庭医生签约服务的执业（助理）医师数
        private Long familyDoctorCount;

        // 8.18 家庭医生团队签约人数
        private Long familyDoctorContractCount;

        // 8.19 家庭医生团队服务人次数
        private Long familyDoctorServiceCount;

        // 8.20 当年门诊诊疗过程中开具健康教育处方人次数
        private Long healthEducationPrescriptionCount;

        // 8.21 当年开展住院患者健康教育干预人次数
        private Long inpatientHealthEducationCount;

        // 8.22 举办健康教育讲座次数
        private Long healthLectureCount;

        // 8.23 健康教育讲座参加人数
        private Long healthLectureParticipantCount;

        // 8.24 举办健康教育咨询活动次数
        private Long healthConsultationActivityCount;

        // 8.25 健康教育咨询活动参加人数
        private Long healthConsultationParticipantCount;

        // 8.26 年内举办各类健康主题宣传活动次数
        private Long healthPromotionActivityCount;
    }

    /**
     * 8.1 总诊疗人次数DTO
     */
    @Data
    @Accessors(chain = true)
    public static class TotalDiagnosisTreatmentsDTO {
        private Long total; // 总诊疗人次数合计

        // 8.1.1 其中：门诊人次数
        private OutpatientVisitDTO outpatientVisit;

        // 8.1.2 急诊人次数
        private EmergencyVisitDTO emergencyVisit;

        // 8.1.3 家庭医疗服务人次数
        private Long homeMedicalServiceCount;

        // 8.1.4 其中：预约诊疗人次数
        private Long appointmentDiagnosisCount;

        // 8.1.5 港澳台居民诊疗人次数
        private Long hongKongTaiwanMacaoPatientCount;

        // 8.1.6 外籍患者诊疗人次数
        private Long foreignPatientCount;
    }

    /**
     * 8.1.1 门诊人次数DTO
     */
    @Data
    @Accessors(chain = true)
    public static class OutpatientVisitDTO {
        private Long totalL; // 门诊人次数合计

        // 8.1.1.1 其中：普通门诊人次数
        private Long generalOutpatientCountL;

        // 8.1.1.2 专家门诊人次数
        // 专家门诊人次数合计
        private Long totalExpertOutpatientL;

        // 8.1.1.2.1 其中：知名专家门诊人次数
        private Long renownedExpertOutpatientCountL;

        // 8.1.1.3 其中：外请专家门诊人次数
        private Long externalExpertOutpatientCountL;

        // 8.1.1.4 其中：应用中药饮片人次数
        private Long chineseHerbalMedicineUsageCountL;

        // 8.1.1.5 使用中医非药物疗法总人次数
        private Long tcmNonDrugTherapyCountL;

        // 8.1.1.6 应用中成药人次数
        private Long chinesePatentMedicineUsageCountL;

        // 8.1.1.7 药学门诊人次数
        private Long pharmacyClinicCountL;
    }

    /**
     * 8.1.2 急诊人次数DTO
     */
    @Data
    @Accessors(chain = true)
    public static class EmergencyVisitDTO {
        private Long total; // 急诊人次数合计

        // 8.1.2.1 其中：急危患者（Ⅰ级）人次数
        private Long emergencyLevel1Count;

        // 8.1.2.2 急重患者（Ⅱ级）人次数
        private Long emergencyLevel2Count;

        // 8.1.2.3 急症患者（Ⅲ级）人次数
        private Long emergencyLevel3Count;

        // 8.1.2.4 亚急症或非亚急症患者（Ⅳ级）人次数
        private Long emergencyLevel4Count;

        // 8.1.2.5 其中:急诊人次中死亡人数
        private Long emergencyDeathCount;
    }

    /**
     * 8.13 出院人次数DTO
     */
    @Data
    @Accessors(chain = true)
    public static class DischargeCountDTO {
        private Long total; // 出院人次数合计

        // 8.13.1 其中：转往基层医疗卫生机构人次数
        private Long transferredToPrimaryCareCount;

        // 8.13.2 日间手术人次数
        private Long daySurgeryCount;

        // 8.13.3 住院分娩人次数
        private Long inpatientDeliveryCount;

        // 8.13.4 死亡人数
        private Long deathCount;
    }

    /**
     * 8.14 住院病人手术人次数DTO
     */
    @Data
    @Accessors(chain = true)
    public static class InpatientSurgeryCountDTO {
        private Long total; // 住院病人手术人次数合计

        // 8.14.1 其中：手术室手术人次数
        private Long operatingRoomSurgeryCount;

        // 8.14.2 介入室手术人次数
        private Long interventionalSurgeryCount;

        // 8.14.3 内镜室手术人次数
        private Long endoscopySurgeryCount;
    }

    /**
     * 8.15 门诊处方总数DTO
     */
    @Data
    @Accessors(chain = true)
    public static class OutpatientPrescriptionDTO {
        private Long total; // 门诊处方总数合计

        // 8.15.1 其中：使用抗菌药物的处方数
        private Long antibioticPrescriptionCount;

        // 8.15.2 中医处方数
        // 中医处方数合计
        private Long totalTcmPrescription;

        // 8.15.2.1 中药饮片处方数
        private Long chineseHerbalPrescriptionCount;

        // 8.15.2.2 中成药处方数
        private Long chinesePatentMedicinePrescriptionCount;
    }

}
