using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
using System;
using System.Collections.Generic;
using IRaCIS.Core.Application.Contracts.Dicom.DTO;
using System.Threading.Tasks;
namespace IRaCIS.Application.Interfaces
{
public interface IStudyService
{
/// 根据项目Id,医生Id,获取受试者访视点(不分页)
IEnumerable GetStudyStatList(Guid trialId, Guid subjectId, Guid siteId);
bool UpdateReUploadNewStudyCode(Guid studyId,Guid newStudyId);
VerifyStudyUploadResult VerifyStudyAllowUpload(string studyInstanceUid, Guid trialId, Guid? studyId);
PageOutput GetStudyList(StudyQueryDTO queryDto);
/// 添加或更新访视点
Task UpdateStudyBinding(StudyEditCommand param);
/// 删除项目访视计划
IResponseOutput DeleteStudy(Guid id);
DicomTrialSiteSubjectInfo GetSaveToDicomInfo(StudyCommand dicomAddtionalCommand);
Guid AddSubjectVisit(Guid subjectId,Guid siteId, Guid visitStageId, DateTime? SVSTDTC, DateTime? SVENDTC);
void UpdateSubjectLatestInfo(Guid subjectId, Guid trialId);
bool UpdateSubjectVisit(Guid subjectVisitId, DateTime? SVSTDTC, DateTime? SVENDTC);
bool DistributeStudy(StudyReviewerCommand studyReviewer);
IResponseOutput EditStudyReviewer(StudyReviewerEditCommand studyReviewerEditCommand);
List GetReviewerListByTrialId(Guid trialId);
///
/// 更新Study 表中的Status,并且往 StudyStatusDetail详情表中插入一条状态变化记录
///
///
bool UpdateStudyStatus(StudyStatusDetailCommand studyStatusDetailDTO, string optUserName);
bool UpdateStudyModaliyAndComment(Guid studyId,string modaliy,string comment);
bool UpdateStudyStatus(List studyStatus, string optUserName);
List GetStudyStatusDetailList(Guid studyId);
PageOutput GetDistributeStudyList(StudyStatusQueryDTO studyStatusQueryDto);
IEnumerable GetRelationVisitList(decimal visitNum, string tpCode);
List GetSubjectVisitStudyList(Guid trialId, Guid siteId, Guid subjectId, Guid subjectVisitId);
Task DicomAnonymize(Guid studyId,string optuserName);
}
}