package com.njcn.gather.icd.mapping.pojo.vo;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.njcn.gather.icd.mapping.pojo.bo.icd.IcdDocument;
import com.njcn.gather.icd.mapping.pojo.bo.mapping.MappingDocument;
import com.njcn.gather.icd.mapping.pojo.enums.GenerateStatus;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * ICD 映射统一响应。
 */
@Data
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@ApiModel("ICD 映射统一响应")
public class MappingTaskResponse {

    /** 本次接口处理状态。 */
    @ApiModelProperty("本次接口处理状态")
    private GenerateStatus status;

    /** 状态说明或错误提示。 */
    @ApiModelProperty("状态说明或错误提示")
    private String message;

    /** ICD 解析结果。 */
    @ApiModelProperty("ICD 解析结果，在需要确认索引时返回")
    private IcdDocument icdDocument;

    /** 正式生成成功后的完整映射 JSON。 */
    @ApiModelProperty("正式生成成功后的完整映射 JSON")
    private String mappingJson;

    /** 正式生成成功后的结构化映射文档。 */
    @ApiModelProperty("正式生成成功后的结构化映射文档")
    private MappingDocument mappingDocument;

    /** 落盘后的绝对路径。 */
    @ApiModelProperty("落盘后的绝对路径")
    private String savedPath;

    /** 待绑定状态下返回的索引候选分组。 */
    @ApiModelProperty("待绑定状态下返回的索引候选分组")
    private List<IndexCandidateResponse> indexCandidates = new ArrayList<IndexCandidateResponse>();

    /** 模板校验、候选分析或绑定校验问题。 */
    @ApiModelProperty("模板校验、候选分析或绑定校验问题")
    private List<String> problems = new ArrayList<String>();
}
