using IRaCIS.Core.Domain.Share;

namespace IRaCIS.Core.Application.Service.ImageAndDoc.DTO
{
    public class SubjectImageUploadDTO
    {
        public Guid VisitTaskId { get; set; }

        public Guid TrialSiteId { get; set; }

        public Guid SubejctId { get; set; }

        public string SubjectCode { get; set; }

        public string TaskBlindName { get; set; }

        public string TaskName { get; set; }

        public bool IsImageFilter { get; set; }
        public string CriterionModalitys { get; set; }

        public Guid? SourceSubjectVisitId { get; set; }

        public ReadingTaskState ReadingTaskState { get; set; }

        public List<StudyBasicInfo> OrginalStudyList { get; set; }

        public List<StudyBasicInfo> UploadStudyList { get; set; }

    }




    public class StudyBasicInfo : DicomStudyBasicInfo
    {

        public List<string> SopInstanceUidList { get; set; }
    }


    public class SubjectUploadTaskInfo
    {
        public Guid VisitTaskId { get; set; }

        public Guid SubjectId { get; set; }

        public string SubjectCode { get; set; }

        public string TaskBlindName { get; set; }

        public string TaskName { get; set; }

        public bool IsImageFilter { get; set; }
        public string CriterionModalitys { get; set; }

        public Guid? SourceSubjectVisitId { get; set; }

    }

    public class SubjectCRCImageUploadedStudyDto : SubjectCRCImageUploadedDto
    {
        public bool IsDicom => DicomStudyList.Count() > 0;
    }

    public class SubjectCRCImageUploadedDto
    {
        public Guid VisitTaskId { get; set; }

        public Guid SubjectId { get; set; }

        public string SubjectCode { get; set; }

        public string TaskBlindName { get; set; }

        public string TaskName { get; set; }
        public Guid? SourceSubjectVisitId { get; set; }


        public bool IsImageFilter { get; set; }
        public string CriterionModalitys { get; set; }



        public List<DicomStudyBasicInfo> DicomStudyList { get; set; } = new List<DicomStudyBasicInfo>();

        public List<NoneDicomStudyBasicInfo> NoneDicomStudyList { get; set; }
    }


    public class DicomStudyBasicInfo
    {
        public Guid Id { get; set; }
        public string StudyInstanceUid { get; set; }

        public string StudyCode { get; set; }

        public string ModalityForEdit { get; set; }

        public string BodyPartExamined { get; set; }


        public string BodyPartForEdit { get; set; }

        public DateTime? StudyTime { get; set; }

        public string Modalities { get; set; }

        public string Description { get; set; }
        public int SeriesCount { get; set; }
        public int InstanceCount { get; set; }
    }

    public class NoneDicomStudyBasicInfo
    {
        public Guid Id { get; set; }

        public string StudyCode { get; set; } = string.Empty;

        public int FileCount { get; set; }

        public string BodyPart { get; set; }

        public string Modality { get; set; }

        public DateTime ImageDate { get; set; }

        public string Description { get; set; } = string.Empty;



    }
}