添加项目文件。

This commit is contained in:
DK
2022-03-28 09:57:06 +08:00
parent 3338504c58
commit 9e9868bc4c
527 changed files with 38592 additions and 0 deletions
@@ -0,0 +1,32 @@
using AutoMapper;
namespace IRaCIS.Core.Application.Contracts.AutoMapper
{
public class AutoMapperConfig
{
public static void Config()
{
//Mapper.Initialize(cfg =>
//{
// cfg.AddProfile<DomainToViewModelMappingProfile>();
// cfg.AddProfile(new ViewModelToDomainMappingProfile());
// cfg.AddProfile(new LogicChangeMappingProfile());
// cfg.ForAllMaps((a, b) => b.ForAllMembers(opt => opt.Condition((src, dest, sourceMember) => sourceMember != null)));
//});
}
public static MapperConfiguration RegisterMappings()
{
//创建AutoMapperConfiguration, 提供静态方法Configure,一次加载所有层中Profile定义
//MapperConfiguration实例可以静态存储在一个静态字段中,也可以存储在一个依赖注入容器中。 一旦创建,不能更改/修改。
return new MapperConfiguration(cfg =>
{
cfg.AddProfile<DomainToViewModelMappingProfile>();
cfg.AddProfile(new ViewModelToDomainMappingProfile());
cfg.AddProfile(new LogicChangeMappingProfile());
cfg.ForAllMaps((a, b) => b.ForAllMembers(opt => opt.Condition((src, dest, sourceMember) => sourceMember != null)));
});
}
}
}
@@ -0,0 +1,118 @@
using AutoMapper;
using IRaCIS.Application.Interfaces;
using IRaCIS.Application.ViewModels;
using IRaCIS.Application.ViewModels.Pay;
using IRaCIS.Core.Application.Contracts.Dicom.DTO;
using IRaCIS.Core.Application.Contracts.DTO;
using IRaCIS.Core.Domain.Models;
using System.Linq;
namespace IRaCIS.Core.Application.Contracts.AutoMapper
{
public class DomainToViewModelMappingProfile : Profile
{
public DomainToViewModelMappingProfile()
{
#region Reviewer
CreateMap<Doctor, DoctorBasicInfoCommand>();
CreateMap<Education, EducationInfoViewModel>();
CreateMap<Vacation, VacationCommand>();
CreateMap<Education, EducationInfoViewModel>();
CreateMap<ResearchPublication, ResearchPublicationDTO>();
CreateMap<Postgraduate, PostgraduateViewModel>();
CreateMap<Attachment, AttachmentDTO>();
CreateMap<Doctor, ResumeConfirmDTO>();
CreateMap<Doctor, DoctorSelectDTO>();
CreateMap<Doctor, TrialExperienceViewModel>();
CreateMap<TrialExperience, TrialExperienceCommand>();
CreateMap<Doctor, DoctorBasicInfo>();
#endregion
#region Management
CreateMap<User, UserDetailDTO>();
CreateMap<Role, RoleDTO>();
CreateMap<MenuFunction, MenuFunctionDTO>();
CreateMap<MenuFunction, MenuTreeNodeSelect>();
CreateMap<User, UserSelectionModel>();
#endregion
#region institution
CreateMap<Hospital, HospitalDTO>();
CreateMap<CRO, CROCompanyDTO>();
CreateMap<Sponsor, SponsorDTO>();
CreateMap<CRO, CroSelectDTO>();
CreateMap<Sponsor, SponsorSelectDTO>();
CreateMap<Site, SiteSelectionDTO>();
#endregion
#region WrokLoad
CreateMap<Workload, WorkloadDTO>();
#endregion
CreateMap<Dictionary, DicViewModelDTO>();
CreateMap<Dictionary, KeyNameType>();
#region finacial
CreateMap<RankPrice, RankPriceDTO>();
CreateMap<VolumeReward, AwardPriceDTO>();
CreateMap<RankPrice, RankDic>();
CreateMap<ExchangeRate, ExchangeRateCommand>();
CreateMap<Payment, CalculateNeededDTO>();
CreateMap<VolumeReward, AwardPriceCalculateDTO>();
CreateMap<PaymentDetail, PaymentDetailDTO>();
CreateMap<TrialPaymentPrice,TrialSOWPathDTO > ();
#endregion
#region image
CreateMap<VisitStage, VisitStageDTO>();
CreateMap<SubjectVisit, SubjectVisitDTO>();
CreateMap<StudyStatusDetail, StudyStatusDetailDTO>();
CreateMap<VisitStage, VisitStageSelectDTO>();
CreateMap<DicomInstance, DicomInstanceDTO>();
CreateMap<DicomStudy, DicomStudyDTO>();
CreateMap<DicomSeries, DicomSeriesDTO>();
#endregion
#region QA
CreateMap<QATemplate, QATemplateCommand>();
CreateMap<QATemplate, QATemplateDTO>();
CreateMap<QADictionary, QADictionaryCommand>();
CreateMap<QARecord, QARecordCommand>();
#endregion
CreateMap<TrialAttachment, AcquisitionSpecificationDTO>();
CreateMap<Report, ReportDTO>();
CreateMap<ImageLabel, ImageLabelDTO>();
CreateMap<DicomSeries, DicomSeriesWithLabelDTO>();
CreateMap<TrialPaymentPrice, TrialPaymentPriceDTO>()
.ForMember(t => t.TrialCode, u => u.MapFrom(t => t.Trial.Code))
.ForMember(t => t.ReviewMode, u => u.MapFrom(t => t.Trial.ReviewMode.Value))
.ForMember(t => t.Cro, u => u.MapFrom(t => t.Trial.CRO.CROName))
.ForMember(t => t.Indication, u => u.MapFrom(t => t.Trial.Indication))
.ForMember(t => t.Expedited, u => u.MapFrom(t => t.Trial.Expedited))
.ForMember(t => t.DoctorsNames, u => u.MapFrom(t => string.Join(",", t.Trial.EnrollList.Select(x => x.Doctor.ChineseName))));
}
}
}
@@ -0,0 +1,42 @@
using AutoMapper;
using IRaCIS.Application.ViewModels;
using IRaCIS.Application.ViewModels.Pay;
using IRaCIS.Core.Domain.Models;
namespace IRaCIS.Core.Application.Contracts.AutoMapper
{
public class LogicChangeMappingProfile : Profile
{
public LogicChangeMappingProfile()
{
//医生列表、项目显示列表模型转换
CreateMap<DoctorDTO, SelectionReviewerDTO>();
CreateMap<Message, SysMessageDTO>()
.ForMember(o => o.MessageTime, t => t.MapFrom(u => u.MessageTime.ToString()));
CreateMap<CRO, InstitutionDTO>()
.ForMember(o => o.InstitutionName, t => t.MapFrom(u => u.CROName));
CreateMap<Sponsor, InstitutionDTO>()
.ForMember(o => o.InstitutionName, t => t.MapFrom(u => u.SponsorName));
CreateMap<Hospital, InstitutionDTO>()
.ForMember(o => o.InstitutionName, t => t.MapFrom(u => u.HospitalName));
CreateMap<Site, InstitutionDTO>()
.ForMember(o => o.InstitutionName, t => t.MapFrom(u => u.SiteName));
CreateMap<PaymentAdjustmentCommand, PaymentAdjustment>()
.ForMember(t=>t.YearMonthDate,
u=>u.MapFrom(t=>t.YearMonth))
.ForMember(t=>t.YearMonth,
u=>u.MapFrom(t=>t.YearMonth.ToString("yyyy-MM")));
CreateMap<LesionInformation, VisitLesion>();
CreateMap<EnrollCommand, Enroll>();
}
}
}
@@ -0,0 +1,168 @@
using AutoMapper;
using IRaCIS.Application.Interfaces;
using IRaCIS.Application.ViewModels;
using IRaCIS.Application.ViewModels.Pay;
using IRaCIS.Core.Application.Contracts.Dicom.DTO;
using IRaCIS.Core.Application.Contracts.DTO;
using IRaCIS.Core.Domain.Models;
namespace IRaCIS.Core.Application.Contracts.AutoMapper
{
public class ViewModelToDomainMappingProfile : Profile
{
public ViewModelToDomainMappingProfile()
{
#region reviewer
//基本信息 工作信息 添加时转换使用
CreateMap<DoctorBasicInfoCommand, Doctor>();
//学习经历 添加时转换使用
CreateMap<EducationCommand, Education>();
CreateMap<PostgraduateCommand, Postgraduate>();
CreateMap<ResearchPublicationDTO, ResearchPublication>();
CreateMap<TrialExperienceCommand, TrialExperience>();
//医生账户
CreateMap<DoctorAccountLoginDTO, Doctor>();
CreateMap<DoctorAccountRegisterDTO, Doctor>();
CreateMap<VacationCommand, Vacation>();
CreateMap<AttachmentDTO, Attachment>();
CreateMap<ReviewerAckDTO, Attachment>();
#endregion
#region trial
//临床项目
CreateMap<TrialCommand, IRaCIS.Core.Domain.Models.Trial>();
#endregion
#region workLoad
//工作量
CreateMap<WorkloadCommand, Workload>();
#endregion
CreateMap<DicViewModelDTO, Dictionary>();
CreateMap<UserTrialCommand, UserTrial>();
CreateMap<SiteCRCCommand, UserTrial>();
CreateMap<SystemLogDTO, SystemLog>();
#region management
CreateMap<RoleCommand, Role>();
CreateMap<UserCommand, User>();
CreateMap<UserCommand, User>();
CreateMap<MenuFunctionCommand, MenuFunction>();
//CreateMap<FunctionAddOrUpdateModel, Function>();
#endregion
#region institution
CreateMap<HospitalCommand, Hospital>();
CreateMap<CROCompanyDTO, CRO>();
CreateMap<SiteCommand, Site>();
CreateMap<SponsorCommand, Sponsor>();
//CreateMap<SiteViewModel, Site>();
//CreateMap<HospitalViewModel, Hospital>();
//CreateMap<SponsorViewModel, Sponsor>();
#endregion
#region financial
CreateMap<TrialPaymentPriceCommand, TrialPaymentPrice>();
CreateMap<ReviewerPayInfoCommand, ReviewerPayInformation>();
CreateMap<RankPriceCommand, RankPrice>();
CreateMap<AwardPriceCommand, VolumeReward>();
CreateMap<PaymentCommand, Payment>();
CreateMap<PaymentDetailCommand, PaymentDetail>();
CreateMap<ExchangeRateCommand, ExchangeRate>();
CreateMap<AwardPriceCommand, VolumeReward>();
CreateMap<TrialRevenuesPriceDTO, TrialRevenuesPrice>();
CreateMap<TrialSOWPathDTO, TrialPaymentPrice>();
#endregion
#region image
CreateMap<TrialAttachmentCommand, TrialAttachment>();
CreateMap<VisitPlanCommand, VisitStage>();
CreateMap<SubjectVisitCommand, SubjectVisit>();
CreateMap<StudyCommand, DicomStudy>();
CreateMap<SubjectDTO, Subject>();
CreateMap<SubjectCommand, Subject>();
CreateMap<ImageQACommand, ImageQA>();
#endregion
#region QA
CreateMap<QATemplateCommand, QATemplate>();
CreateMap<QARecordCommand, QARecord>();
CreateMap<QADictionaryCommand,QADictionary>();
CreateMap<QADialogCommand, QADialog>();
CreateMap<QATemplateConfigCommand, QATemplateDictionary>();
#endregion
CreateMap<ReportDTO, Report>();
CreateMap<ImageLabelDTO, ImageLabel>();
CreateMap<GlobalReportCommand, GlobalRS>();
}
}
}
@@ -0,0 +1,65 @@
using EasyCaching.Core.Interceptor;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Domain.Interfaces;
using IRaCIS.Core.Domain.Share;
using System;
using System.Linq;
namespace IRaCIS.Core.Application
{
public interface ICastleService
{
[EasyCachingAble(Expiration = 10)]
DoctorBasicInfoDTO GetDoctorBasicInfo(Guid doctorId);
}
public class CastleService : ICastleService
{
private readonly IDoctorRepository _doctorRepository;
public CastleService(IDoctorRepository doctorRepository)
{
_doctorRepository = doctorRepository;
}
public DoctorBasicInfoDTO GetDoctorBasicInfo(Guid doctorId)
{
var doctorQueryable = _doctorRepository
.Find(t => t.Id == doctorId)
.Select(doctor => new DoctorBasicInfoDTO()
{
Id = doctor.Id,
Code = doctor.Code,
ChineseName = doctor.ChineseName,
EMail = doctor.EMail,
FirstName = doctor.FirstName,
Introduction = doctor.Introduction,
LastName = doctor.LastName,
Phone = doctor.Phone,
Sex = doctor.Sex,
WeChat = doctor.WeChat,
TitleIds = doctor.DoctorDicList
.Where(t => t.KeyName == StaticData.Title).Select(t => t.DictionaryId).ToList()
});
var doctorBasicInfo = doctorQueryable.FirstOrDefault();
return doctorBasicInfo;
}
}
//[ProtoContract]
//[System.Serializable]
public class Demo
{
//[ProtoMember(1)]
public int Id { get; set; }
//[ProtoMember(2)]
public string Name { get; set; }
//[ProtoMember(3)]
public System.DateTime CreateTime { get; set; }
}
}
@@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.ViewModels
{
public class DicViewModelDTO
{
public Guid Id { get; set; }
public string KeyName { get; set; }
public string Value { get; set; }
public int ShowOrder { get; set; }
public string Type { get; set; }
}
public class DicQueryDTO : PageInput
{
public string KeyName { get; set; }
}
public class KeyNameType
{
public Guid KeyId { get; set; }
public string KeyName { get; set; }
public string Type { get; set; }
}
public class DicResultDTO
{
public Dictionary<string, Dictionary<Guid, string>> DicList = new Dictionary<string, Dictionary<Guid, string>>();
}
}
@@ -0,0 +1,17 @@
using IRaCIS.Core.Domain.Share;
using System;
namespace IRaCIS.Application.ViewModels
{
public class UploadFileInfoDTO
{
public Guid Id { get; set; }
public string FilePath { get; set; }
public string FullFilePath => SystemConfig.RootUrl + FilePath;
}
}
@@ -0,0 +1,11 @@
namespace IRaCIS.Application.ViewModels
{
public class MessageViewModel
{
}
}
@@ -0,0 +1,16 @@
using System;
namespace IRaCIS.Application.ViewModels
{
public class SysMessageDTO
{
public int Id { get; set; }
public int ToDoctorId { get; set; }
public int FromUserId { get; set; }
public string Title { get; set; } = string.Empty;
public string Content { get; set; } = string.Empty;
public string MessageTime { get; set; }
public bool HasRead { get; set; }
public string Memo { get; set; } = string.Empty;
}
}
@@ -0,0 +1,29 @@
using System;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.ViewModels
{
public class SystemLogDTO
{
public Guid Id { get; set; }
public string ApiPath { get; set; } = string.Empty;
public string Params { get; set; } = string.Empty;
public string Result { get; set; } = string.Empty;
public DateTime RequestTime { get; set; } = DateTime.Now;
public long ElapsedMilliseconds { get; set; } = 0;
public Guid OptUserId { get; set; } = Guid.Empty;
public string OptUserName { get; set; } = string.Empty;
public string ClientIP { get; set; } = string.Empty;
public bool Status { get; set; } = true;
public string Message { get; set; } = string.Empty;
public string LogCategory { get; set; } = string.Empty;
}
public class QueryLogQueryDTO : PageInput
{
public string Keyword { get; set; } = string.Empty;
public string LogCategory { get; set; } = string.Empty;
public DateTime BeginTime { get; set; } = DateTime.Now;
public DateTime EndTime { get; set; } = DateTime.Now;
}
}
@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using EasyCaching.Core.Interceptor;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IDictionaryService
{
IEnumerable<string> GetDicSelect();
PageOutput<DicViewModelDTO> GetDicSelectList(DicQueryDTO dicSearchModel);
IResponseOutput DeleteDictionary(Guid id);
DicResultDTO GetDictionaryResult(string[] searchArray);
DicResultDTO GetAllDictionary();
IResponseOutput AddOrUpdateDictionary(DicViewModelDTO viewModel);
[EasyCachingAble(Expiration = 10)]
List<DictionaryTreeNode> GetDicTree();
DicViewModelDTO GetDetailById(Guid Id);
}
}
@@ -0,0 +1,17 @@
using System;
namespace IRaCIS.Application.Interfaces
{
public interface IFileService
{
//IResponseOutput<UploadFileInfo> DownloadOfficialResume(Guid[] doctorIds);
string CreateOfficialResumeZip(Guid[] doctorIds);
string CreateDoctorsAllAttachmentZip(Guid[] doctorIds);
string CreateZipPackageByAttachment(Guid doctorId, Guid[] attachmentIds);
}
}
@@ -0,0 +1,12 @@
using IRaCIS.Application.ViewModels;
using System.Collections.Generic;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface ILogService
{
IResponseOutput SaveLog2Db(SystemLogDTO viewModel);
PageOutput<SystemLogDTO> GetLogList(QueryLogQueryDTO param);
}
}
@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IMessageService
{
int GetUnReadMessageCount(Guid doctorId);
IResponseOutput DeleteSysMessage(Guid messageId);
IResponseOutput MarkedAsRead(Guid messageId);
PageOutput<SysMessageDTO> GetMessageList(Guid doctorId, int pageSize, int pageIndex);
}
}
@@ -0,0 +1,18 @@
using System.Collections.Generic;
namespace IRaCIS.Core.Application.Contracts.Dicom.DTO
{
public sealed class DicomArchiveResult
{
public int ReceivedFileCount { get; set; }
public ICollection<string> ErrorFiles { get; set; }
public ICollection<DicomStudyDTO> ArchivedDicomStudies { get; set; }
public DicomArchiveResult()
{
ReceivedFileCount = 0;
ErrorFiles = new List<string>();
ArchivedDicomStudies = new List<DicomStudyDTO>();
}
}
}
@@ -0,0 +1,69 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace IRaCIS.Core.Application.Contracts.Dicom.DTO
{
public class DicomInstanceDTO
{
public Guid Id { get; set;}
public Guid StudyId { get; set; }
public Guid SeriesId { get; set; }
public string StudyInstanceUid { get; set; }
public string SeriesInstanceUid { get; set; }
public string SopInstanceUid { get; set; }
public int InstanceNumber { get; set; }
public DateTime InstanceTime { get; set; }
public bool CPIStatus { get; set; }
public int ImageRows { get; set; }
public int ImageColumns { get; set; }
public int SliceLocation { get; set; }
public Guid TrialId { get; set; }
public Guid SiteId { get; set; }
public Guid SubjectId { get; set; }
public Guid SubjectVisitId { get; set; }
public Guid CreateUserId { get; set; }
public DateTime CreateTime { get; set; }
public Guid UpdateUserId { get; set; }
public DateTime UpdateTime { get; set; }
}
public class DicomTrialSiteSubjectInfo
{
public string SiteCode { get; set; }
public string SiteName { get; set; }
public string SubjectCode { get; set; }
public string SubjectName { get; set; }
public int SubjectAge { get; set; }
public string SubjectSex { get; set; }
public string TrialCode { get; set; }
public string ReviewMode { get; set; }
public bool IsDoubleReview { get; set; }
public string TrialIndication { get; set; }
public decimal SubjectVisitNum { get; set; }
public string SubjectVisitSVUPDES { get; set; }
public string SubjectVisitVisitName { get; set; }
public string Sponsor { get; set; }
public string Comment { get; set; }=String.Empty;
public Guid TrialId { get; set; }
public Guid SiteId { get; set; }
public Guid SubjectId { get; set; }
public Guid SubjectVisitId { get; set; }
}
}
@@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace IRaCIS.Core.Application.Contracts.Dicom.DTO
{
public class DicomSeriesDTO
{
public Guid Id { get; set; }
public Guid StudyId { get; set; }
public string StudyInstanceUid { get; set; }
public string SeriesInstanceUid { get; set; }
public int SeriesNumber { get; set; }
public DateTime SeriesTime { get; set; }
public string Modality { get; set; }
public string Description { get; set; }
public int InstanceCount { get; set; }
public string SliceThickness { get; set; }
public Guid TrialId { get; set; }
public Guid SiteId { get; set; }
public Guid SubjectId { get; set; }
public Guid SubjectVisitId { get; set; }
public List<Guid> InstanceList { get; set; } = new List<Guid>();
public Guid CreateUserId { get; set; }
public DateTime CreateTime { get; set; }
public Guid UpdateUserId { get; set; }
public DateTime UpdateTime { get; set; }
}
public class DicomSeriesWithLabelDTO : DicomSeriesDTO
{
public bool HasLabel { get; set; } = false;
public bool KeySeries { get; set; } = false;
}
}
@@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace IRaCIS.Core.Application.Contracts.Dicom.DTO
{
public class DicomStudyDTO
{
public Guid Id { get; set; }
public Guid TrialId { get; set; }
public Guid SiteId { get; set; }
public Guid SubjectId { get; set; }
public Guid SubjectVisitId { get; set; }
public string StudyCode { get; set; } = string.Empty;
public int Status { get; set; } = 1;
public string StudyInstanceUid { get; set; } = string.Empty;
public DateTime? StudyTime { get; set; }
public string Modalities { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public int SeriesCount { get; set; } = 0;
public int InstanceCount { get; set; } = 0;
public bool SoftDelete { get; set; } = false;
public string InstitutionName { get; set; } = string.Empty;
public string PatientId { get; set; } = string.Empty;
public string PatientName { get; set; } = string.Empty;
public string PatientAge { get; set; } = string.Empty;
public string PatientSex { get; set; } = string.Empty;
public Guid UpdateUserId { get; set; }
public DateTime UpdateTime { get; set; }
public Guid CreateUserId { get; set; }
public DateTime CreateTime { get; set; }
}
public class RelationVisitDTO
{
public string VisitName { get; set; }
public string TpCode { get; set; }
public Guid StudyId { get; set; }
}
}
@@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace IRaCIS.Core.Application.Contracts.Dicom.DTO
{
public class ImageLabelDTO
{
public Guid Id { get; set; } = Guid.Empty;
public string TpCode { get; set; } = string.Empty;
public Guid StudyId { get; set; } = Guid.Empty;
public Guid SeriesId { get; set; } = Guid.Empty;
public Guid InstanceId { get; set; } = Guid.Empty;
public string LabelValue { get; set; } = string.Empty;
}
public class ImageLabelInfo
{
public Guid StudyId { get; set; } = Guid.Empty;
public Guid SeriesId { get; set; } = Guid.Empty;
public Guid InstanceId { get; set; } = Guid.Empty;
public string LabelValue { get; set; } = string.Empty;
}
public class ImageLabelCommand
{
public string TpCode { get; set; } = string.Empty;
public List<ImageLabelInfo> ImageLabelList { get; set; } = new List<ImageLabelInfo>();
}
}
@@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using IRaCIS.Application.ViewModels;
namespace IRaCIS.Core.Application.Contracts.Dicom.DTO
{
public class StudyReviewerDTO
{
public Guid Id { get; set; }
public Guid StudyId { get; set; }
public Guid ReviewerId { get; set; }
}
public class StudyDistributeInfo
{
public Guid StudyId { get; set; }
public int Status { get; set; }
//public int ReviewerCount { get; set; }
}
public class StudyReviewerCommand
{
public List<StudyDistributeInfo> StudyList { get; set; } = new List<StudyDistributeInfo>();
//public List<Guid> StudyIdList { get; set; }
public Guid ReviewerId { get; set; }
//public int WorkloadType { get; set; }
public Guid TrialId { get; set; }
//public bool IsDoubleReview { get; set; }
}
public class StudyReviewerEditCommand
{
public Guid TrialId { get; set; }
public Guid StudyId { get; set; }
public bool IsDoubleReview { get; set; }
public Guid? ReviewerId1 { get; set; }
public Guid? ReviewerId2 { get; set; }
public Guid? ReviewerIdForAD { get; set; }
}
public class ReviewerDistributionDTO
{
public Guid ReviewerId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Code { get; set; }
}
}
@@ -0,0 +1,22 @@
using System;
namespace IRaCIS.Core.Application.Contracts.Dicom.DTO
{
public class StudyStatusDetailDTO
{
public Guid Id { get; set; }
public Guid StudyId { get; set; }
public int Status { get; set; }
public string OptUserName { get; set; }
public DateTime OptTime { get; set; }
public string Note { get; set; } = string.Empty;
}
public class StudyStatusDetailCommand
{
public Guid StudyId { get; set; }
public int Status { get; set; }
public string Note { get; set; } = string.Empty;
public string QAComment { get; set; } = string.Empty;
}
}
@@ -0,0 +1,43 @@
using EasyCaching.Core.Interceptor;
using IRaCIS.Core.Application.Contracts.Dicom.DTO;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace IRaCIS.Core.Application.Contracts.Dicom
{
public interface IDicomArchiveService
{
Task<DicomInstanceDTO> ArchiveDicomStreamAsync(Stream dicomStream, DicomTrialSiteSubjectInfo addtionalInfo);
ICollection<DicomStudyDTO> GetArchivedStudyList(List<Guid> archivedStudyIds);
DicomStudyDTO GetStudyItem(Guid studyId);
[EasyCachingAble(Expiration = 6000)]
string GetStudyPreview(Guid studyId);
IEnumerable<DicomSeriesDTO> GetSeriesList(Guid studyId);
IEnumerable<DicomSeriesWithLabelDTO> GetSeriesWithLabelList(Guid studyId,string tpCode);
[EasyCachingAble(Expiration = 6000)]
string GetSeriesPreview(Guid seriesId);
IEnumerable<DicomInstanceDTO> GetInstanceList(Guid seriesId);
IEnumerable<Guid> GetInstanceIdList(Guid seriesId, string tpCode, bool? key);
[EasyCachingAble(Expiration = 6000)]
string GetInstancePreview(Guid instanceId);
string GetInstanceContent(Guid instanceId);
IEnumerable<ImageLabelDTO> GetImageLabel(string tpCode);
//bool SaveImageLabel(ImageLabelDTO label);
bool SaveImageLabelList(ImageLabelCommand imageLabelCommand);
}
}
@@ -0,0 +1,62 @@
using IRaCIS.Core.Domain.Share;
using System;
namespace IRaCIS.Application.ViewModels
{
public class AttachmentDTO
{
public Guid Id { get; set; }
public Guid DoctorId { get; set; }
public bool IsOfficial { get; set; }
public string Type { get; set; }
public string Path { get; set; }
public string FullPath => SystemConfig.RootUrl + Path;
public string FileName { get; set; } = string.Empty;
public DateTime? CreateTime { get; set; }
}
public class ReviewerAckDTO
{
public Guid Id { get; set; }
public Guid DoctorId { get; set; }
public string Type { get; set; }
public string Path { get; set; }
public string FullPath => SystemConfig.RootUrl + Path;
public string FileName { get; set; } = string.Empty;
}
public class TrialSOWPathDTO
{
public Guid TrialId { get; set; }
public string SowName { get; set; }
public string SowPath { get; set; }
}
public class DeleteSowPathDTO
{
public Guid TrialId { get; set; }
public string Path { get; set; }
}
public class UploadAgreementAttachmentDTO
{
public Guid Id { get; set; }
public Guid DoctorId { get; set; }
public string Type { get; set; }
public string Path { get; set; }
public string FullPath => SystemConfig.RootUrl + Path;
public string FileName { get; set; } = string.Empty;
}
public class AttachementCommand
{
public Guid Id { get; set; }
public string Path { get; set; }
}
}
@@ -0,0 +1,12 @@
using System;
namespace IRaCIS.Application.ViewModels
{
public class DoctorAccountRegisterDTO : DoctorAccountLoginDTO
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string EMail { get; set; }
public DateTime RegisterTime { get; set; }
}
}
@@ -0,0 +1,524 @@
using System;
using System.Collections.Generic;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
using IRaCIS.Core.Domain.Share;
namespace IRaCIS.Application.ViewModels
{
#region
public class DoctorDTO
{
public DoctorDTO()
{
TitleList = new List<string>();
TitleIdList = new List<Guid>();
ReadingTypeList = new List<string>();
ReadingTypeIds = new List<Guid>();
SubspecialityList = new List<string>();
SubspecialityIds = new List<Guid>();
}
public Guid Id { get; set; }
public DateTime CreateTime { get; set; }
public string Code { get; set; }//GUID
public string FirstName { get; set; } = string.Empty;
public string LastName { get; set; } = string.Empty;
public string ChineseName { get; set; } = string.Empty;
public List<Guid> TitleIdList { get; set; }
public List<string> TitleList { get; set; }
public string Phone { get; set; } = string.Empty;
public string Introduction { get; set; } = string.Empty;
public string EMail { get; set; } = string.Empty;
public string WeChat { get; set; } = string.Empty;
//部门
public string Department { get; set; } = string.Empty;
public Guid DepartmentId { get; set; }
public string DepartmentOther { get; set; }
//增加的
public Guid SpecialityId { get; set; } = Guid.Empty;
public string Speciality { get; set; } = string.Empty;
public string SpecialityOther { get; set; } = string.Empty;
//职称
public string Rank { get; set; } = string.Empty;
public Guid RankId { get; set; }
public string RankOther { get; set; }
//职位
public string Position { get; set; } = string.Empty;
public Guid PositionId { get; set; }
public string PositionOther { get; set; }
//医院
public string HospitalName { get; set; } = string.Empty;
public string HospitalOther { get; set; }
public Guid HospitalId { get; set; }
//临床实践中使用的模式
public List<string> ReadingTypeList { get; set; }
public List<Guid> ReadingTypeIds { get; set; }
public string ReadingTypeOther { get; set; }
//第二专业
public List<string> SubspecialityList { get; set; }
public List<Guid> SubspecialityIds { get; set; }
public string SubspecialityOther { get; set; }
public int GCP { get; set; }
public Guid GCPId { get; set; }
public string ResumePath { get; set; } = string.Empty;
public bool HasResume
{
get; set;
}
public bool Reconfirmed { get; set; }
public int CooperateStatus { get; set; }
public int ResumeStatus { get; set; }
public bool AcceptingNewTrial { get; set; } = false;
public bool ActivelyReading { get; set; } = false;
public string City { get; set; }
public string Country { get; set; }
public int Reading { get; set; }
public int Approved { get; set; }
public int Submitted { get; set; }
}
/// <summary>
/// Reviewer 列表查询参数
/// </summary>
public class DoctorSearchDTO : PageInput
{
public DoctorSearchDTO()
{
ReadingTypeIdList = new List<Guid>();
SubspecialityIdList = new List<Guid>();
TitleIdList = new List<Guid>();
}
public string Name { get; set; }
public List<Guid> ReadingTypeIdList { get; set; }
public List<Guid> SubspecialityIdList { get; set; }
public List<Guid> TitleIdList { get; set; }
public Guid? DepartmentId { get; set; } = Guid.Empty;
public Guid? SpecialityId { get; set; } = Guid.Empty;
public Guid? PositionId { get; set; } = Guid.Empty;
public Guid? RankId { get; set; } = Guid.Empty;
public Guid? HospitalId { get; set; } = Guid.Empty;
//合作状态
public int? ContractorStatus { get; set; }
// 简历审核状态
public int? InformationConfirmed { get; set; }
public int? EnrollStatus { get; set; } //入组状态
public bool? AcceptingNewTrial { get; set; }//是否接受新的项目
public bool? ActivelyReading { get; set; }// 是否接受新的读片任务
public int? Nation { get; set; }// 0-中国医生,2-美国医生,3-全部
}
/// <summary>
/// 入组 Selection 列表查询参数
/// </summary>
public class ReviewerSelectionQueryDTO : DoctorSearchDTO
{
public Guid TrialId { get; set; } = Guid.Empty;
}
public class ReviewerSubmissionQueryDTO : PageInput
{
public Guid TrialId { get; set; } = Guid.Empty;
public int IntoGroupSearchState { get; set; }
}
public class ReviewerConfirmationQueryDTO : PageInput
{
public Guid TrialId { get; set; } = Guid.Empty;
}
public class EnrollGetQuery : PageInput
{
public Guid TrialId { get; set; }
}
public class EnrollCommand
{
public Guid Id { get; set; }
public decimal? Training { get; set; }
public decimal? RefresherTraining { get; set; }
public decimal? Timepoint { get; set; }
public decimal? Timepoint48H { get; set; }
public decimal? Timepoint24H { get; set; }
public decimal? Adjudication { get; set; }
public decimal? Adjudication48H { get; set; }
public decimal? Adjudication24H { get; set; }
public decimal? Global { get; set; }
public decimal? Downtime { get; set; }
}
public class EnrollViewModel
{
public string ChineseName { get; set; } = string.Empty;
public string FirstName { get; set; } = string.Empty;
public string LastName { get; set; } = string.Empty;
public decimal? AdjustmentMultiple { get; set; } = 0;
public Guid? DoctorId { get; set; }
public Guid? TrialId { get; set; }
public Guid? Id { get; set; }
public int? Training { get; set; }
public int? RefresherTraining { get; set; }
public int? Timepoint { get; set; }
public int? Timepoint48H { get; set; }
public int? Timepoint24H { get; set; }
public int? Adjudication { get; set; }
public int? Adjudication48H { get; set; }
public int? Adjudication24H { get; set; }
public int? Global { get; set; }
public int? Downtime { get; set; }
public string ReviewerCode { get; set; } = string.Empty;
public string Code { get; set; }
}
public class SelectionReviewerDTO : DoctorDTO
{
public int DoctorTrialState { get; set; }
public string OptUserName { get; set; } = string.Empty;
public DateTime? OptTime { get; set; }
public string OptTimeStr => OptTime?.ToString("yyyy-MM-dd HH:mm:ss");
}
public class DoctorOptDTO
{
public Guid Id { get; set; }
public string Code { get; set; }//GUID
public string FirstName { get; set; } = string.Empty;
public string LastName { get; set; } = string.Empty;
public string ChineseName { get; set; } = string.Empty;
public string City { get; set; } = string.Empty;
public string HospitalName { get; set; } = string.Empty;
public string Country { get; set; } = string.Empty;
}
public class ConfirmationReviewerDTO : DoctorOptDTO
{
public int DoctorTrialState { get; set; }
public string OptUserName { get; set; } = string.Empty;
public DateTime? OptTime { get; set; }
public string OptTimeStr => OptTime?.ToString("yyyy-MM-dd HH:mm:ss");
}
public class DoctorStateModelDTO
{
public Guid DoctorId { get; set; }
public int IntoGroupState { get; set; }
public string OptUserName { get; set; }
public DateTime? OptTime { get; set; }
}
#endregion
public class DoctorDetailDTO
{
public DoctorBasicInfoDTO BasicInfoView { get; set; }
public EmploymentDTO EmploymentView { get; set; }
public SpecialtyDTO SpecialtyView { get; set; }
public IEnumerable<EducationInfoViewModel> EducationList { get; set; }
public IEnumerable<PostgraduateViewModel> PostgraduateList { get; set; }
public ResearchPublicationDTO ResearchPublicationView { get; set; }
public TrialExperienceViewModel TrialExperienceView { get; set; }
public ResumeConfirmDTO AuditView { get; set; }
public IEnumerable<AttachmentDTO> AttachmentList { get; set; }
public List<SowDTO> SowList { get; set; }
public List<SowDTO> AckSowList { get; set; }
public DoctorEnrollInfoDTO IntoGroupInfo { get; set; }
public bool InHoliday { get; set; }
public DoctorDetailDTO()
{
BasicInfoView = new DoctorBasicInfoDTO();
EmploymentView = new EmploymentDTO();
SpecialtyView = new SpecialtyDTO();
EducationList = new List<EducationInfoViewModel>();
PostgraduateList = new List<PostgraduateViewModel>();
ResearchPublicationView = new ResearchPublicationDTO();
TrialExperienceView = new TrialExperienceViewModel();
AuditView = new ResumeConfirmDTO();
AttachmentList = new List<AttachmentDTO>();
IntoGroupInfo = new DoctorEnrollInfoDTO();
SowList = new List<SowDTO>();
AckSowList = new List<SowDTO>();
}
}
public class DoctorEnrollInfoDTO
{
public Guid DoctorId { get; set; }
public int Submitted { get; set; }
public int Approved { get; set; }
public int Reading { get; set; }
}
#region
public class DoctorBasicInfo
{
public Guid? Id { get; set; }
public string Code { get; set; } = string.Empty;
public string FirstName { get; set; }
public string LastName { get; set; }
public string ChineseName { get; set; }
public int Sex { get; set; }
public string Phone { get; set; }
public string Introduction { get; set; }
public string EMail { get; set; }
public string WeChat { get; set; }
public int Nation { get; set; }
}
public class DoctorBasicInfoCommand: DoctorBasicInfo
{
public DoctorBasicInfoCommand()
{
TitleIds = new List<Guid>();
}
//职称
public List<Guid> TitleIds { get; set; }
}
public class DoctorBasicInfoDTO : DoctorBasicInfo
{
//public Guid DoctorId { get; set; }
public DoctorBasicInfoDTO()
{
TitleList = new List<string>();
TitleIds = new List<Guid>();
}
//职称
public List<Guid> TitleIds { get; set; }
public List<string> TitleList { get; set; }
}
public class SowDTO
{
public string FileName { get; set; }
public string TrialCode { get; set; }
public string FilePath { get; set; }
public string FullPath { get { return SystemConfig.RootUrl + FilePath; } }
public DateTime CreateTime { get; set; }
}
#endregion
#region
public class EmploymentDTO : EmploymentInfo
{
public string Department { get; set; }
public string Rank { get; set; }
public string Position { get; set; }
#region
public string HospitalName { get; set; }
public string UniversityAffiliated { get; set; }
public string Country { get; set; }
public string Province { get; set; }
public string City { get; set; }
#endregion
}
public class EmploymentCommand : EmploymentInfo
{
}
public class EmploymentInfo
{
public Guid Id { get; set; }
//部门
public Guid DepartmentId { get; set; } = Guid.Empty;
public string DepartmentOther { get; set; }
//职称
public Guid RankId { get; set; } = Guid.Empty;
public string RankOther { get; set; }
//职位 主席 副主席
public Guid PositionId { get; set; } = Guid.Empty;
public string PositionOther { get; set; }
public Guid HospitalId { get; set; } = Guid.Empty;
}
#endregion
#region Specialty模型
public class SpecialtyDTO : SpecialtyCommand
{
public SpecialtyDTO()
{
ReadingTypeList = new List<string>();
SubspecialityList = new List<string>();
}
public List<string> ReadingTypeList { get; set; }
public List<string> SubspecialityList { get; set; }
}
public class SpecialtyCommand
{
public SpecialtyCommand()
{
ReadingTypeIds = new List<Guid>();
SubspecialityIds = new List<Guid>();
}
public Guid Id { get; set; }
public string OtherSkills { get; set; } = string.Empty;
//临床实践中使用的模式
public List<Guid> ReadingTypeIds { get; set; }
public string ReadingTypeOther { get; set; } = string.Empty;
//亚专科
public List<Guid> SubspecialityIds { get; set; }
public string SubspecialityOther { get; set; } = string.Empty;
public Guid SpecialityId { get; set; } = Guid.Empty;
public string Speciality { get; set; } = string.Empty;
public string SpecialityOther { get; set; } = string.Empty;
//public Guid DepartmentId { get; set; } = Guid.Empty;
//public string DepartmentName { get; set; } = string.Empty;
//public string DepartmentOther { get; set; } = string.Empty;
}
#endregion
#region
public class DoctorAccountLoginDTO
{
public string Phone { get; set; }
public string Password { get; set; }
}
public class DoctorAccountDTO
{
public Guid Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Phone { get; set; }
public string PhotoPath { get; set; }
}
public class DoctorAccountUpdatePasswordCommand
{
public string Phone { get; set; }
public string OldPassword { get; set; }
public string NewPassword { get; set; }
}
#endregion
#region
public class ResumeConfirmCommand
{
//int userId, int doctorId, int status, string memo
//public Guid FromUserId { get; set; }
public Guid Id { get; set; }
public int ResumeStatus { get; set; }
public int ReviewStatus { get; set; }
public bool AcceptingNewTrial { get; set; } = false;
public bool ActivelyReading { get; set; } = false;
public string AdminComment { get; set; }
public string MessageContent { get; set; }
public int CooperateStatus { get; set; }
}
public class ResumeConfirmDTO
{
public Guid Id { get; set; }
public int CooperateStatus { get; set; }
public int ResumeStatus { get; set; }
public int ReviewStatus { get; set; } //复审状态
public bool AcceptingNewTrial { get; set; }
public bool ActivelyReading { get; set; }
public string AdminComment { get; set; }
public bool InHoliday { get; set; }
}
#endregion
public class TrialPaymentPriceQueryDTO : PageInput
{
public string KeyWord { get; set; }
public Guid? CroId { get; set; }
}
public class DoctorPaymentInfoQueryDTO : PageInput
{
public string SearchName { get; set; }
public Guid? HospitalId { get; set; } = Guid.Empty;
}
}
@@ -0,0 +1,69 @@
using System;
using System.Collections.Generic;
namespace IRaCIS.Application.ViewModels
{
public class EducationCommand
{
public Guid? Id { get; set; }
public Guid DoctorId { get; set; }
public DateTime BeginDate { get; set; }
public DateTime EndDate { get; set; }
public string Degree { get; set; }
public string Major { get; set; }
public string Organization { get; set; }
public string Country { get; set; }
public string Province { get; set; }
public string City { get; set; }
}
public class EducationInfoViewModel : EducationCommand
{
public DateTime? CreateTime { get; set; }
public string BeginDateStr => BeginDate.ToString("yyyy-MM");
public string EndDateStr => EndDate.ToString("yyyy-MM");
}
public class PostgraduateCommand
{
public Guid? Id { get; set; }
public Guid DoctorId { get; set; }
public DateTime BeginDate { get; set; }
public DateTime EndDate { get; set; }
public string Training { get; set; }
public string Major { get; set; }
public string Hospital { get; set; }
public string School { get; set; }
public string Country { get; set; }
public string Province { get; set; }
public string City { get; set; }
}
public class PostgraduateViewModel: PostgraduateCommand
{
public DateTime? CreateTime { get; set; }
public string BeginDateStr => BeginDate.ToString("yyyy-MM");
public string EndDateStr => EndDate.ToString("yyyy-MM");
}
public class DoctorEducationExperienceDTO
{
public IEnumerable<EducationInfoViewModel> EducationList=new List<EducationInfoViewModel>();
public IEnumerable<PostgraduateViewModel> PostgraduateList = new List<PostgraduateViewModel>();
}
}
@@ -0,0 +1,13 @@
using System;
namespace IRaCIS.Application.ViewModels
{
public class VacationCommand
{
public Guid? Id { get; set; }
public Guid DoctorId { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public int Status { get; set; } = 1;
}
}
@@ -0,0 +1,14 @@
using System;
namespace IRaCIS.Application.ViewModels
{
public class ResearchPublicationDTO
{
public Guid? Id { get; set; }
public Guid DoctorId { get; set; }
public string Research { get; set; }
public string Grants { get; set; }
public string Publications { get; set; }
public string AwardsHonors { get; set; }
}
}
@@ -0,0 +1,63 @@
using IRaCIS.Core.Domain.Share;
using System;
using System.Collections.Generic;
namespace IRaCIS.Application.ViewModels
{
public class TrialExperienceCommand
{
public Guid? Id { get; set; }
public Guid DoctorId { get; set; }
public string Term { get; set; }
public string EvaluationCriteria { get; set; }
public string EvaluationContent { get; set; }
}
public class TrialExperienceViewModel: GcpAndOtherExperienceDTO
{
public List<TrialExperienceCommand> ClinicalTrialExperienceList=new List<TrialExperienceCommand>();
public string ExpiryDateStr { get; set; } = string.Empty;
public string GCPFullPath => SystemConfig.RootUrl + Path;
}
public class GcpAndOtherExperienceDTO
{
public Guid Id { get; set; }
public int GCP { get; set; }
public Guid GCPId { get; set; }
public string OtherClinicalExperience { get; set; }
public string Type { get; set; } = string.Empty;
public string Path { get; set; } = string.Empty;
public string FileName { get; set; } = string.Empty;
}
public class GCPExperienceCommand
{
public Guid Id { get; set; }
public int GCP { get; set; }
public Guid GCPId { get; set; }
}
public class ClinicalExperienceCommand
{
public Guid DoctorId { get; set; }
public string OtherClinicalExperience { get; set; }
}
}
@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IAttachmentService
{
IEnumerable<AttachmentDTO> SaveAttachmentRange(IEnumerable<AttachmentDTO> attachmentList);
IResponseOutput DeleteAttachment(Guid attachmentId);
AttachmentDTO GetDetailById(Guid attachmentId);
IEnumerable<AttachmentDTO> GetAttachmentByType(Guid doctorId,string type);
IEnumerable<AttachmentDTO> GetAttachmentByTypes(Guid doctorId, string[] types);
IEnumerable<AttachmentDTO> GetAttachments(Guid doctorId);
string GetDoctorOfficialCV(Guid doctorId);
IResponseOutput SetOfficial(Guid doctorId, Guid attachmentId);
}
}
@@ -0,0 +1,14 @@
using System;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IDoctorAccountService
{
IResponseOutput Register(DoctorAccountRegisterDTO doctorAccount);
DoctorAccountDTO Login(DoctorAccountLoginDTO doctorAccount);
IResponseOutput UpdatePassword(DoctorAccountUpdatePasswordCommand doctorAccount);
}
}
@@ -0,0 +1,39 @@
using IRaCIS.Application.ViewModels;
using System;
using EasyCaching.Core.Interceptor;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IDoctorListQueryService
{
bool AddOrUpdateEnroll(EnrollCommand addOrUpdateModel);
PageOutput<EnrollViewModel> GetTrialDoctorList(EnrollGetQuery challengeQuery);
/// <summary>
/// 医生多条件查询
/// </summary>
PageOutput<DoctorDTO> GetReviewerList(DoctorSearchDTO param,Guid reviewerId);
/// <summary>
/// 筛选医生列表
/// </summary>
/// <param name="doctorSearchModel"></param>
/// <returns></returns>
//
PageOutput<SelectionReviewerDTO> GetSelectionReviewerList(
ReviewerSelectionQueryDTO doctorSearchModel);
/// <summary>
/// //入组 相关接口 (提交CRO-1) CRO确认-4
/// </summary>
PageOutput<ConfirmationReviewerDTO> GetSubmissionOrApprovalReviewerList(
ReviewerSubmissionQueryDTO doctorIntoGroupSearchModel);
//医生确认状态列表
PageOutput<ConfirmationReviewerDTO> GetConfirmationReviewerList(
ReviewerConfirmationQueryDTO trialIdPageModel);
}
}
@@ -0,0 +1,77 @@
using System;
using System.Collections.Generic;
using EasyCaching.Core.Interceptor;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IDoctorService
{
#region
/// <summary>
/// 基本信息详情展示、编辑使用
/// </summary>
/// <param name="doctorId"></param>
/// <returns></returns>
DoctorBasicInfoDTO GetDoctorBasicInfo(Guid doctorId);
/// <summary>
/// 添加医生基本信息
/// </summary>
/// <param name="addBasicInfoParam"></param>
/// <param name="userId"></param>
/// <param name="addBasicInfoModel"></param>
/// <returns></returns>
IResponseOutput<DoctorBasicInfoCommand> AddOrUpdateDoctorBasicInfo(DoctorBasicInfoCommand addBasicInfoParam, Guid userId);
#endregion
#region
/// <summary>
/// 获取医生 工作信息
/// </summary>
/// <param name="doctorId"></param>
/// <returns></returns>
EmploymentDTO GetEmploymentInfo(Guid doctorId);
/// <summary>
/// 更新医生 工作信息
/// </summary>
/// <param name="updateDoctorWorkInfoViewModel"></param>
/// <returns></returns>
IResponseOutput UpdateDoctorEmploymentInfo(EmploymentCommand updateDoctorWorkInfoViewModel);
#endregion
/// <summary>
/// 获取医生技能信息
/// </summary>
SpecialtyDTO GetDoctorSpecialty(Guid doctorId);
/// <summary>
/// 更新医生技能信息
/// </summary>
IResponseOutput UpdateDoctorSpecialty(SpecialtyCommand specialtyUpdateModel);
/// <summary>
/// 获取医生 审核状态
/// </summary>
ResumeConfirmDTO GetDoctorAuditStatus(Guid doctorId);
/// <summary>
/// 审核简历 和合作关系
/// </summary>
IResponseOutput AuditResume(ResumeConfirmCommand auditResumeParam,Guid userId);
/// <summary> 医生详情 入组信息 </summary>
DoctorEnrollInfoDTO GetDoctorEnrollInfo(Guid doctorId);
/// <summary> 获取医生参与项目的Sow协议 </summary>
List<SowDTO> GetDoctorSow(Guid doctorId);
/// <summary> 获取医生入组的 ack Sow </summary>
List<SowDTO> GetDoctorAckSow(Guid doctorId);
}
}
@@ -0,0 +1,29 @@
using System;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IEducationService
{
DoctorEducationExperienceDTO GetEducation(Guid doctorId);
#region
IResponseOutput AddOrUpdateEducationInfo(EducationCommand doctorEducationInfoViewModel);
IResponseOutput DeleteEducationInfo(Guid doctorId);
#endregion
#region
IResponseOutput AddOrUpdatePostgraduateInfo(PostgraduateCommand doctorContinueLearningViewModel);
IResponseOutput DeletePostgraduateInfo(Guid doctorId);
#endregion
}
}
@@ -0,0 +1,12 @@
using System;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IResearchPublicationService
{
ResearchPublicationDTO GetResearchPublication(Guid doctorId);
IResponseOutput AddOrUpdateResearchPublication(ResearchPublicationDTO param);
}
}
@@ -0,0 +1,15 @@
using System;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface ITrialExperienceService
{
TrialExperienceViewModel GetTrialExperience(Guid doctorId);
IResponseOutput AddOrUpdateTrialExperience(TrialExperienceCommand model);
IResponseOutput DeleteTrialExperience(Guid id);
IResponseOutput UpdateGcpExperience(GCPExperienceCommand model);
IResponseOutput UpdateOtherExperience(Guid doctorId, string otherClinicalExperience);
}
}
@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IVacationService
{
IResponseOutput AddOrUpdateVacation(VacationCommand vacationViewModel);
IResponseOutput DeleteVacation(Guid id);
PageOutput<VacationCommand> GetVacationList(Guid doctorId, int pageIndex, int pageSize);
/// <summary> 判断当前时间是否在休假 </summary>
IResponseOutput OnVacation(Guid reviewerId);
}
}
@@ -0,0 +1,37 @@
using System;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public class AwardPriceDTO: AwardPriceCalculateDTO
{
public Guid Id { get; set; }
}
public class AwardPriceCalculateDTO
{
public decimal Price { get; set; }
public int Max { get; set; }
public int Min { get; set; }
}
public class AwardPriceCommand
{
public Guid Id { get; set; }
public decimal Price { get; set; }
public int Min { get; set; }
public int Max { get; set; }
public Guid OptUserId { get; set; }
}
public class AwardPriceQueryDTO : PageInput
{
}
public class ExchangeRateQueryDTO : PageInput
{
public DateTime? SearchMonth { get; set; }
}
}
@@ -0,0 +1,44 @@
using System;
namespace IRaCIS.Application.ViewModels
{
public class CalculateNeededDTO
{
public Guid Id { get; set; }
public Guid DoctorId { get; set; }
public string YearMonth { get; set; }
public bool IsLock { get; set; }
}
public class DoctorPrice
{
public decimal? AdjustmentMultiple { get; set; }
public Guid? DoctorId { get; set; }
public Guid? TrialId { get; set; }
public bool? IsNewTrial { get; set; }
public int? Training { get; set; }
public int? RefresherTraining { get; set; }
public int? Timepoint { get; set; }
public int? Timepoint48H { get; set; }
public int? Timepoint24H { get; set; }
public int? Adjudication { get; set; }
public int? Adjudication48H { get; set; }
public int? Adjudication24H { get; set; }
public int? Global { get; set; }
public int? Downtime { get; set; }
}
}
@@ -0,0 +1,13 @@
using System;
namespace IRaCIS.Application.ViewModels
{
public class ExchangeRateCommand
{
public Guid? Id { get; set; }
public string YearMonth { get; set; }
public decimal Rate { get; set; }
public DateTime UpdateTime { get; set; }
}
}
@@ -0,0 +1,54 @@
using System;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.ViewModels.Pay
{
public class PaymentAdjustmentCommand
{
public Guid? Id { get; set; }
public Guid ReviewerId { get; set; }
public DateTime YearMonth { get; set; }
public decimal AdjustPaymentUSD { get; set; }
public decimal AdjustPaymentCNY { get; set; }
public string Note { get; set; } = string.Empty;
}
public class PaymentAdjustmentDTO
{
public Guid Id { get; set; }
public Guid ReviewerId { get; set; }
public string YearMonth { get; set; }
public DateTime YearMonthDate { get; set; }
public bool IsLock { get; set; }
public decimal AdjustPaymentUSD { get; set; }
public decimal AdjustPaymentCNY { get; set; }
public string Note { get; set; }
}
public class PaymentAdjustmentDetailDTO: PaymentAdjustmentDTO
{
public string ReviewerCode { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName => LastName + " / " + FirstName;
public string ChineseName { get; set; }
}
public class PaymentAdjustmentQueryDTO:PageInput
{
public string TrialCode { get; set; } = string.Empty;
public string Reviewer { get; set; } = string.Empty;
public DateTime BeginMonth { get; set; }
public DateTime EndMonth { get; set; }
}
public class DoctorSelectDTO
{
public Guid Id { get; set; }
public string Code { get; set; } = string.Empty;
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName => LastName + " / " + FirstName;
public string ChineseName { get; set; }
}
}
@@ -0,0 +1,195 @@
using System;
using System.Collections.Generic;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.ViewModels.Pay
{
public class PaymentDetailDTO
{
public Guid Id { get; set; }
public Guid PaymentId { get; set; }
public string YearMonth { get; set; }
public Guid DoctorId { get; set; }
public Guid TrialId { get; set; }
public string TrialCode { get; set; }
public string PaymentType { get; set; }
public int Count { get; set; }
public decimal BasePrice { get; set; }
public decimal PersonalAdditional { get; set; }
public decimal TrialAdditional { get; set; }
public int ShowTypeOrder { get; set; }
public int ShowCodeOrder { get; set; }
public decimal ExchangeRate { get; set; }
public decimal PaymentUSD { get; set; }
public decimal PaymentCNY { get; set; }
public bool? IsNewTrial { get; set; }
public decimal? NewPersonalAdditional { get; set; }
public decimal TotalUnitPrice => BasePrice + PersonalAdditional + TrialAdditional;
public AdjustmentDTO AdjustmentView { get; set; }
}
public class AdjustmentDTO
{
public decimal AdjustPaymentUSD { get; set; }
public decimal AdjustPaymentCNY { get; set; }
public string AdjustType
{
get
{
if (AdjustPaymentUSD > 0)
{
return "+";
}
else if (AdjustPaymentUSD < 0)
{
return "-";
}
else { return string.Empty; }
}
}
public string Note { get; set; }
}
public class PaymentDetailCommand : PaymentDetailDTO
{
}
public class PayDetailDTO
{
public IEnumerable<PaymentDetailDTO> DetailList { get; set; } = new List<PaymentDetailDTO>();
public DoctorPayInfo DoctorInfo { get; set; } = new DoctorPayInfo();
}
public class LockPaymentDTO
{
public List<Guid> ReviewerIdList { get; set; }
public DateTime Month { get; set; }
}
public class DoctorPayInfo
{
public Guid DoctorId { get; set; }
public string ChineseName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Phone { get; set; }
public string PayTitle { get; set; }
public string Code { get; set; }
public string YearMonth { get; set; }
}
public class ReviewerPaymentUSD
{
public Guid RecordId { get; set; }
public Guid DoctorId { get; set; }
public decimal PaymentUSD { get; set; }
}
public class PaymentQueryDTO : PageInput
{
public string Reviewer { get; set; }
public DateTime BeginMonth { get; set; }
public DateTime EndMonth { get; set; }
public int? Nation { get; set; }
}
public class MonthlyPaymentDTO
{
public Guid ReviewerId { get; set; }
public string ReviewerCode { get; set; }
public string ChineseName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public decimal AdjustmentUSD { get; set; }
public decimal AdjustmentCNY { get; set; }
public decimal PaymentUSD { get; set; }
public decimal PaymentCNY { get; set; }
public decimal TotalUSD { get; set; }
public decimal TotalCNY { get; set; }
}
public class VolumeStatisticsDTO
{
public Guid StatisticsId { get; set; }
public string Month { get; set; }
public decimal VolumeReward { get; set; }
public decimal ExchangeRate { get; set; }
public decimal AdjustmentUSD { get; set; }
public decimal AdjustmentCNY { get; set; }
public decimal PaymentUSD { get; set; }
public decimal PaymentCNY { get; set; }
public decimal TotalCNY => AdjustmentCNY + PaymentCNY;
public decimal TotalUSD => AdjustmentUSD + PaymentUSD;
public List<TrialPaymentDTO> TrialPaymentList = new List<TrialPaymentDTO>();
}
public class TrialPaymentDTO
{
public Guid TrialId { get; set; }
public string TrialCode { get; set; }
public decimal TrialPayment { get; set; }
}
public class VolumeQueryDTO
{
public DateTime BeginMonth { get; set; }
public DateTime EndMonth { get; set; }
public Guid ReviewerId { get; set; }
}
public class RevenuesDTO
{
public List<string> MissingTrialCodes = new List<string>();
public Guid Id { get; set; }
public string TrialCode { get; set; }
public Guid TrialId { get; set; }
public string Indication { get; set; }
public Guid CroId { get; set; }
public string Cro { get; set; } = string.Empty;
public int Expedited { get; set; }
public string ChineseName { get; set; } = string.Empty;
public string FirstName { get; set; } = string.Empty;
public string LastName { get; set; } = string.Empty;
public string ReviewerCode { get; set; } = string.Empty;
public decimal Training { get; set; }
public decimal Downtime { get; set; }
public decimal Timepoint { get; set; }
public decimal TimepointIn24H { get; set; }
public decimal TimepointIn48H { get; set; }
public decimal Adjudication { get; set; }
public decimal AdjudicationIn24H { get; set; }
public decimal AdjudicationIn48H { get; set; }
public decimal Global { get; set; }
public decimal Total { get; set; }
public string YearMonth { get; set; }
}
}
@@ -0,0 +1,179 @@
using System;
using System.Collections.Generic;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.ViewModels
{
public class PaymentDTO
{
public PageOutput<PaymentViewModel> CostList { get; set; }
public decimal ExchangeRate { get; set; }
}
public class PaymentViewModel
{
public Guid Id { get; set; }
public string RankName { get; set; }
public Guid DoctorId { get; set; }
public string YearMonth { get; set; }
public DateTime YearMonthDate { get; set; }
public DateTime? CalculateTime { get; set; }
public string CalculateUser { get; set; }
//额外信息
public string Code { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string ChineseName { get; set; }
public string Phone { get; set; }
public string DoctorNameInBank { get; set; }
public string IDCard { get; set; }
public string BankCardNumber { get; set; }
public string BankName { get; set; }
public bool IsLock { get; set; } = false;
public decimal ExchangeRate { get; set; }
public decimal PaymentCNY { get; set; }
public decimal AdjustPaymentCNY { get; set; }
public decimal TotalPaymentCNY { get; set; }
public decimal PaymentUSD { get; set; }
public decimal AdjustPaymentUSD { get; set; }
public decimal TotalPaymentUSD { get; set; }
}
public class PaymentCommand
{
public Guid Id { get; set; }
public Guid DoctorId { get; set; }
public string YearMonth => new DateTime(Year, Month, 1).ToString("yyyy-MM");
public int Year { get; set; }
public int Month { get; set; }
public decimal PaymentUSD { get; set; }
public DateTime CalculateTime { get; set; }
public decimal PaymentCNY { get; set; }
public decimal ExchangeRate { get; set; }
public string CalculateUser { get; set; }
}
public class MonthlyPaymentQueryDTO : PageInput
{
public DateTime StatisticsDate { get; set; }
public string KeyWord { get; set; }
public int? Nation { get; set; }
}
public class MonthlyPaymentDetailQuery
{
public Guid PaymentId { get; set; }
public Guid ReviewerId { get; set; }
public DateTime YearMonth { get; set; }
}
//public class LaborPaymentQuery
//{
// public Guid PaymentId { get; set; }
// public Guid ReviewerId { get; set; }
// public DateTime YearMonth { get; set; }
//}
public class TrialAnalysisDTO
{
public Guid TrialId { get; set; }
public string Indication { get; set; }
public string TrialCode { get; set; }
public string Cro { get; set; } = string.Empty;
public int Expedited { get; set; }
public string Type { get; set; }
public decimal PaymentUSD { get; set; }
public decimal RevenusUSD { get; set; }
public decimal GrossProfit => RevenusUSD - PaymentUSD;
public decimal GrossProfitMargin
{
get {
if (RevenusUSD == 0)
return 0;
else
{
return GrossProfit / RevenusUSD;
}
}
}
}
public class LaborPayment
{
public string ChineseName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string ResidentId { get; set; }
public string Phone { get; set; }
public string AccountNumber { get; set; }
public string Bank { get; set; }
public string YearMonth { get; set; }
public decimal PaymentCNY { get; set; }
public decimal TaxCNY { get; set; }
public decimal ActuallyPaidCNY { get; set; }
public decimal BankTransferCNY { get; set; }
}
public class ReviewerAnalysisDTO
{
public List<string> MissingTrialCodes = new List<string>();
public string ChineseName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Guid ReviewerId { get; set; }
public string ReviewerCode { get; set; }
public decimal PaymentUSD { get; set; }
public decimal RevenusUSD { get; set; }
public decimal GrossProfit => RevenusUSD - PaymentUSD;
public decimal GrossProfitMargin
{
get {
if (RevenusUSD == 0)
return 0;
else
{
return GrossProfit / RevenusUSD;
}
}
}
}
public class AnalysisQueryDTO
{
public string Reviewer { get; set; }
public DateTime BeginDate { get; set; }
public DateTime EndDate { get; set; }
public int? Nation { get; set; }
}
public class TrialAnalysisQueryDTO
{
public Guid? CroId { get; set; }
public string TrialCode { get; set; }
public DateTime BeginDate { get; set; }
public DateTime EndDate { get; set; }
public int? AttendedReviewerType { get; set; }
}
}
@@ -0,0 +1,50 @@
using System;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.ViewModels
{
public class RankPriceDTO
{
public Guid Id { get; set; }
public string RankName { get; set; }
public decimal Timepoint { get; set; }
public decimal TimepointIn24H { get; set; }
public decimal TimepointIn48H { get; set; }
public decimal Adjudication { get; set; }
public decimal AdjudicationIn24H { get; set; }
public decimal AdjudicationIn48H { get; set; }
public decimal Global { get; set; }
public decimal Training { get; set; }
public decimal Downtime { get; set; }
public decimal RefresherTraining { get; set; }
public int ShowOrder { get; set; }
}
public class RankDic
{
public Guid Id { get; set; }
public string RankName { get; set; }
}
public class RankPriceCommand
{
public Guid? Id { get; set; }
public string RankName { get; set; }
public decimal Timepoint { get; set; }
public decimal TimepointIn24H { get; set; }
public decimal TimepointIn48H { get; set; }
public decimal Adjudication { get; set; }
public decimal AdjudicationIn24H { get; set; }
public decimal AdjudicationIn48H { get; set; }
public decimal Global { get; set; }
public decimal Training { get; set; }
public decimal Downtime { get; set; }
public decimal RefresherTraining { get; set; }
}
public class RankPriceQueryDTO : PageInput
{
}
}
@@ -0,0 +1,40 @@
using System;
namespace IRaCIS.Application.ViewModels
{
public class ReviewerPayInfoQueryDTO
{
public Guid DoctorId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string ChineseName { get; set; }
public string Code { get; set; }
public string Phone { get; set; }
public string DoctorNameInBank { get; set; }
public string IDCard { get; set; }
public string BankCardNumber { get; set; }
public string BankName { get; set; }
public Guid? RankId { get; set; }
public decimal? Additional { get; set; }
public DateTime? CreateTime { get; set; }
}
public class DoctorPayInfoQueryListDTO : ReviewerPayInfoQueryDTO
{
public string Hospital { get; set; }
public string RankName { get; set; }
}
public class ReviewerPayInfoCommand
{
//public Guid Id { get; set; }
public Guid DoctorId { get; set; }
public string DoctorNameInBank { get; set; }
public string IDCard { get; set; }
public string BankCardNumber { get; set; }
public string BankName { get; set; }
public Guid RankId { get; set; }
public decimal? Additional { get; set; }
}
}
@@ -0,0 +1,37 @@
using IRaCIS.Core.Domain.Share;
using System;
namespace IRaCIS.Application.ViewModels
{
public class TrialPaymentPriceDTO
{
public Guid TrialId { get; set; }
public string TrialCode { get; set; }
public string Indication { get; set; }
public string Cro { get; set; }
public int Expedited { get; set; }
public decimal? TrialAdditional { get; set; }
public DateTime? CreateTime { get; set; }
public string SowName { get; set; }
public string SowPath { get; set; }
public string SowFullPath => SystemConfig.RootUrl + SowPath;
public string DoctorsNames { get; set; } = String.Empty;
public string ReviewMode { get; set; } = String.Empty;
public decimal AdjustmentMultiple { get; set; } = 1;
public bool? IsNewTrial { get; set; }
}
public class TrialPaymentPriceCommand
{
public Guid TrialId { get; set; }
public decimal TrialAdditional { get; set; }
public decimal AdjustmentMultiple { get; set; }
public bool? IsNewTrial { get; set; }
}
}
@@ -0,0 +1,17 @@
using IRaCIS.Application.ViewModels;
using IRaCIS.Application.ViewModels.Pay;
using System;
using System.Collections.Generic;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface ICalculateService
{
IResponseOutput CalculateMonthlyPayment(CalculateDoctorAndMonthDTO param, string token);
IResponseOutput UpdateLockStatus(List<Guid> reviewerIds, string yearMonth, bool isLock);
List<CalculateNeededDTO> GetNeedCalculateReviewerList(Guid reviewerId, string yearMonth);
bool IsLock(Guid reviewerId, string yearMonth);
//bool ResetMonthlyPayment(Guid reviewerId, Guid trialId,string yearMonth);
}
}
@@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IReviewerPayInfoService
{
IResponseOutput AddOrUpdateReviewerPayInfo(ReviewerPayInfoCommand addOrUpdateModel, Guid userId);
PageOutput<DoctorPayInfoQueryListDTO> GetDoctorPayInfoList(DoctorPaymentInfoQueryDTO queryParam);
DoctorPayInfoQueryListDTO GetReviewerPayInfo(Guid doctorId);
List<Guid> GetReviewerIdByRankId(Guid rankId);
}
}
@@ -0,0 +1,15 @@
using IRaCIS.Application.ViewModels;
using System;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IExchangeRateService
{
IResponseOutput AddOrUpdateExchangeRate(ExchangeRateCommand model);
decimal GetExchangeRateByMonth(string month);
PageOutput<ExchangeRateCommand> GetExchangeRateList(ExchangeRateQueryDTO queryParam);
IResponseOutput DeleteExchangeRate(Guid id);
}
}
@@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using IRaCIS.Application.ViewModels.Pay;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IPaymentAdjustmentService
{
PageOutput<PaymentAdjustmentDetailDTO> GetPaymentAdjustmentList(PaymentAdjustmentQueryDTO queryParam);
IResponseOutput AddOrUpdatePaymentAdjustment(PaymentAdjustmentCommand addOrUpdateModel,Guid optUseId);
IResponseOutput DeleteCostAdjustment(Guid id);
void CalculateCNY(string yearMonth, decimal rate);
List<DoctorSelectDTO> GetReviewerSelectList();
}
}
@@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using IRaCIS.Application.ViewModels;
using IRaCIS.Application.ViewModels.Pay;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IPaymentService
{
PageOutput<PaymentViewModel> GetMonthlyPaymentList(MonthlyPaymentQueryDTO queryParam);
PayDetailDTO GetMonthlyPaymentDetailList(Guid PaymentId, Guid doctorId, DateTime yearMonth);
List<LaborPayment> GetLaborPaymentList(List<Guid> paymentId);
//导出多个医生的付费详细
List<PayDetailDTO> GetReviewersMonthlyPaymentDetail(List<MonthlyPaymentDetailQuery> manyReviewers);
PageOutput<MonthlyPaymentDTO> GetPaymentHistoryList(PaymentQueryDTO param);
List<VolumeStatisticsDTO> GetPaymentHistoryDetailList(VolumeQueryDTO param);
PageOutput<RevenuesDTO> GetRevenuesList(StatisticsQueryDTO param);
List<TrialAnalysisDTO> GetTrialAnalysisList(TrialAnalysisQueryDTO param);
List<ReviewerAnalysisDTO> GetReviewerAnalysisList(AnalysisQueryDTO param);
}
}
@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IRankPriceService
{
IResponseOutput AddOrUpdateRankPrice(RankPriceCommand addOrUpdateModel, Guid userId);
PageOutput<RankPriceDTO> GetRankPriceList(RankPriceQueryDTO queryParam);
IResponseOutput DeleteRankPrice( Guid id);
List<RankDic> GetRankDic();
}
}
@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface ITrialPaymentPriceService
{
IResponseOutput AddOrUpdateTrialPaymentPrice(TrialPaymentPriceCommand addOrUpdateModel, Guid userId);//新增也不需要返回Id,TrialId 也是唯一
PageOutput<TrialPaymentPriceDTO> GetTrialPaymentPriceList(TrialPaymentPriceQueryDTO queryParam);
/// <summary>
/// 上传入组后的Ack-SOW
/// </summary>
IResponseOutput UploadTrialSOW(Guid userId, TrialSOWPathDTO trialSowPath);
IResponseOutput DeleteTrialSOW(Guid userId, DeleteSowPathDTO trialSowPath);
}
}
@@ -0,0 +1,15 @@
using IRaCIS.Application.ViewModels;
using System;
using System.Collections.Generic;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface ITrialRevenuesPriceService
{
IResponseOutput AddOrUpdateTrialRevenuesPrice(TrialRevenuesPriceDTO model);
bool DeleteTrialCost(Guid Id);
PageOutput<TrialRevenuesPriceDetialDTO> GetTrialRevenuesPriceList(TrialRevenuesPriceQueryDTO param);
}
}
@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IVolumeRewardService
{
IResponseOutput AddOrUpdateVolumeRewardPriceList(IEnumerable<AwardPriceCommand> addOrUpdateModels,Guid userId);
PageOutput<AwardPriceDTO> GetVolumeRewardPriceList(AwardPriceQueryDTO queryParam);
List<AwardPriceCalculateDTO> GetVolumeRewardPriceList();
}
}
@@ -0,0 +1,31 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<OutputPath>..\bin</OutputPath>
</PropertyGroup>
<ItemGroup>
<Folder Include="AutoMapper\" />
<Folder Include="Trial\Enrollment\" />
<Folder Include="Trial\Workload\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="AutoMapper" Version="10.0.0" />
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.0.1" />
<PackageReference Include="EasyCaching.InMemory" Version="0.8.10" />
<PackageReference Include="EasyCaching.Interceptor.Castle" Version="0.8.10" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="protobuf-net" Version="3.0.29" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\IRaCIS.Core.Domain.Share\IRaCIS.Core.Domain.Share.csproj" />
<ProjectReference Include="..\IRaCIS.Core.Domain\IRaCIS.Core.Domain.csproj" />
</ItemGroup>
</Project>
@@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IStatisticsService
{
PageOutput<WorkloadByTrialAndReviewerDTO> GetWorkloadByTrialAndReviewer(StatisticsWorkloadQueryParam param,Guid userId);
PageOutput<EnrollStatByTrialDTO> GetEnrollStatByTrial(EnrollStatByTrialQueryDTO param);
#region Dashboard
/// <summary> 按类型统计读片数量 </summary>
ReadingDataDTO GetReadingDataByType();
/// <summary> 按月份统计读片数量 </summary>
List<ReadingDataMonthDTO> GetReadingDataByMonth(int monthCount);
/// <summary> 读片数量排行 </summary>
List<ReadingDataRankDTO> GetReadingDataRank(int topCount);
/// <summary> 按Position统计 Reviewers 数量 </summary>
List<RankReviewersDTO> GetReviewersByRank();
///<summary> 每月入组人次 </summary>
List<EnrollQuartDataDTO> GetEnrollDataByQuarter(int quarterCount, int monthCount);
///<summary> 参与项目数排行 </summary>
List<TrialDataRankDTO> GetTrialCountRank(int topCount);
///<summary> 最新工作量 (已确定的)</summary>
List<LatestWorkLoadDTO> GetLatestWorkLoadList( int searchCount);
#endregion
PageOutput<EnrollStatByReviewerDTO> GetEnrollStatByReviewer(EnrollStatByReviewerQueryDTO enrollTrialStatisticsQueryParam);
}
}
@@ -0,0 +1,29 @@
using System;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.ViewModels
{
public class CROCompanyDTO
{
public Guid? Id { get; set; }
public string CROName { get; set; } = string.Empty;
public string CROCode { get; set; }
}
public class CroSelectDTO
{
public Guid Id { get; set; }
public string CROName { get; set; } = string.Empty;
public string CROCode { get; set; }
}
public class CROCompanyQueryDTO : PageInput
{
public string CROName { get; set; } = string.Empty;
}
public class CROCompanySelectSearchDTO
{
public string CROName { get; set; } = string.Empty;
}
}
@@ -0,0 +1,27 @@
using System;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.ViewModels
{
public class HospitalDTO : HospitalCommand
{
}
public class HospitalCommand
{
public Guid? Id { get; set; }
public string HospitalName { get; set; }
public string UniversityAffiliated { get; set; }
public string Country { get; set; }
public string Province { get; set; }
public string City { get; set; }
}
public class HospitalQueryDTO : PageInput
{
public string HospitalName { get; set; } = string.Empty;
public string Province { get; set; } = string.Empty;
public string City { get; set; } = string.Empty;
}
}
@@ -0,0 +1,44 @@
using System;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.ViewModels
{
public class SiteDTO: SiteCommand
{
}
public class SiteCommand
{
public Guid? Id { get; set; }
public string SiteName { get; set; }
public string SiteCode { get; set; }
public string City { get; set; } = string.Empty;
public string Country { get; set; } = string.Empty;
public Guid HospitalId { get; set; }
public string DirectorName { get; set; } = string.Empty;
public string DirectorPhone { get; set; } = string.Empty;
public string ContactName { get; set; } = string.Empty;
public string ContactPhone { get; set; } = string.Empty;
}
public class SiteSelectionDTO
{
public Guid Id { get; set; }
public string SiteName { get; set; }
public string City { get; set; }
public string Country { get; set; }
}
public class SiteSelectDTO : SiteDTO
{
public string HospitalName { get; set; }
public bool IsSelect { get; set; }
}
public class SiteQueryParam : PageInput
{
public string SiteName { get; set; }
public Guid UserId { get; set; } = Guid.Empty;
}
}
@@ -0,0 +1,28 @@
using System;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.ViewModels
{
public class SponsorDTO
{
public Guid Id { get; set; }
public string SponsorName { get; set; } = string.Empty;
}
public class SponsorCommand
{
public Guid? Id { get; set; }
public string SponsorName { get; set; } = string.Empty;
}
public class SponsorQueryDTO : PageInput
{
public string SponsorName { get; set; } = string.Empty;
}
public class SponsorSelectDTO
{
public Guid Id { get; set; }
public string SponsorName { get; set; } = string.Empty;
}
}
@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface ICroService
{
PageOutput<CROCompanyDTO> GetCroList(CROCompanyQueryDTO queryModel);
IEnumerable<CroSelectDTO> GetCroSearchList();
IResponseOutput AddOrUpdateCro(CROCompanyDTO addCroCompanyViewModel,Guid userId);
IResponseOutput DeleteCro(Guid croCompanyId);
}
}
@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IHospitalService
{
/// <summary>获取医院列表</summary>
IEnumerable<HospitalDTO> GetHospitalList();
PageOutput<HospitalDTO> GetHospitalPageList(HospitalQueryDTO queryModel);
IResponseOutput AddOrUpdateHospital(HospitalCommand model);
IResponseOutput DeleteHospital(Guid hospitalId);
}
}
@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface ISiteService
{
PageOutput<SiteSelectDTO> GetSiteList(SiteQueryParam queryModel);
IEnumerable<SiteSelectionDTO> GetSiteList();
IResponseOutput AddOrUpdateSite(SiteCommand AddModel, Guid userId);
IResponseOutput DeleteSite(Guid researchCenterId);
}
}
@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface ISponsorService
{
PageOutput<SponsorDTO> GetSponsorList(SponsorQueryDTO queryParam);
IEnumerable<SponsorSelectDTO> GetSponsorSearchList();
IResponseOutput AddOrUpdateSponsor(SponsorCommand model);
IResponseOutput DeleteSponsor(Guid sponsorId);
}
}
@@ -0,0 +1,10 @@
using System;
namespace IRaCIS.Application.ViewModels
{
public class InstitutionDTO
{
public Guid Id { get; set; }
public string InstitutionName { get; set; }
}
}
@@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
namespace IRaCIS.Application.ViewModels
{
public class MenuFunctionCommand : MenuFunctionDTO
{
}
public class MenuFunctionDTO
{
public Guid Id { get; set; } = Guid.Empty;
public Guid ParentId { get; set; } = Guid.Empty;
public string RouteName { get; set; } = string.Empty;
public string MenuName { get; set; }
public string Component { get; set; } = string.Empty;
public string Redirect { get; set; } = string.Empty;
public string Path { get; set; } = string.Empty;
public string MetaTitle { get; set; } = string.Empty;
public bool MetaBreadcrumb { get; set; }
public string MetaIcon { get; set; } = string.Empty;
public string MetaActiveMenu { get; set; } = string.Empty;
public string FunctionName { get; set; } = string.Empty;
public bool IsFunction { get; set; } = false;
public string Note { get; set; } = string.Empty;
public int ShowOrder { get; set; }
public int Status { get; set; } = 1;
public bool Hidden { get; set; }
public bool SuperAdmin { get; set; } = true;
//public DateTime CreateTime { get; set; } = DateTime.Now;
//public Guid CreateUserId { get; set; } = Guid.Empty;
//public DateTime UpdateTime { get; set; } = DateTime.Now;
//public Guid UpdateUserId { get; set; } = Guid.Empty;
}
public class RoleMenuFunctionSelectDTO
{
public Guid RoleId { get; set; }
public List<Guid> MenuFunctionId { get; set; }
}
public class FunctionSelectDTO
{
public Guid RoleId { get; set; }
public Guid FunctionId { get; set; }
public bool IsSelect { get; set; }
}
}
@@ -0,0 +1,30 @@
using System;
namespace IRaCIS.Application.ViewModels
{
public class RoleDTO
{
public Guid? Id { get; set; } = Guid.Empty;
public string RoleName { get; set; }
public string RoleDescription { get; set; } = string.Empty;
public int PrivilegeLevel { get; set; }
}
public class UserRoleSelectDTO
{
public Guid userId { get; set; }
public Guid roleId { get; set; }
public bool isSelect { get; set; }
}
public class UserSelectRoleDTO : RoleDTO
{
public bool IsSelect { get; set; }
}
public class RoleCommand : RoleDTO
{
}
}
@@ -0,0 +1,172 @@
using System;
using System.Collections.Generic;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
using Newtonsoft.Json;
namespace IRaCIS.Application.ViewModels
{
public class UserLoginDTO
{
public string UserName { get; set; }
public string Password { get; set; }
}
public class LoginReturnDTO
{
public UserBasicInfo BasicInfo { get; set; } = new UserBasicInfo();
public string JWTStr { get; set; }
public List<MenuFuncTreeNodeView> MenuTree = new List<MenuFuncTreeNodeView>();
//public List<FunctionTreeNodeView> FuncTree = new List<FunctionTreeNodeView>();
public Dictionary<string, List<string>> FuncDictionary=new Dictionary<string, List<string>>();
}
public class UserBasicInfo
{
public Guid Id { get; set; }
public string UserName { get; set; }
public string RealName { get; set; }
public int Sex { get; set; } // 1-男 2-女
public bool IsAdmin { get; set; } = false;
public bool IsReviewer { get; set; } = false;
public string ReviewerCode { get; set; } = string.Empty;
}
public class MenuFuncTreeNodeView
{
[JsonIgnore]
public Guid Id { get; set; }
[JsonIgnore]
public Guid ParentId { get; set; } = Guid.Empty;
[JsonIgnore]
public int ShowOrder { get; set; }
public string routeName { get; set; } = string.Empty;
public string component { get; set; } = string.Empty;
public string redirect { get; set; } = string.Empty;
public string path { get; set; } = string.Empty;
public Meta meta { get; set; }
public bool hidden { get; set; }
public List<MenuFuncTreeNodeView> Childrens { get; set; }
}
public class Meta
{
public string MetaTitle { get; set; } = string.Empty;
public bool MetaBreadcrumb { get; set; } = false;
public string MetaIcon { get; set; } = string.Empty;
public string MetaActiveMenu { get; set; } = string.Empty;
}
public class FunctionTreeNodeDTO
{
[JsonIgnore]
public Guid Id { get; set; }
[JsonIgnore]
public Guid ParentId { get; set; } = Guid.Empty;
[JsonIgnore]
public int ShowOrder { get; set; }
public string RouteName { get; set; } = string.Empty;
public string FunctionName { get; set; } = string.Empty;
public List<FunctionTreeNodeDTO> Childrens { get; set; }
}
public class UserDetailDTO : UserInfo
{
public string UserTypeName { get; set; }
}
public class UserInfo
{
public Guid Id { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string RealName { get; set; }
public int Sex { get; set; } // 1-男 2-女
public int Status { get; set; } = 1; // 0-已删除 1-正常
public string Phone { get; set; } = string.Empty;
public string EMail { get; set; } = string.Empty;
public Guid UserTypeId { get; set; } = Guid.Empty;
public string OrganizationName { get; set; } = string.Empty;
public Guid OrganizationId { get; set; }
public string Code { get; set; }
public bool IsZhiZhun { get; set; }
public string UserType { get; set; }
public Guid OrganizationTypeId { get; set; } = Guid.Empty;
public string OrganizationType { get; set; } = String.Empty;
public string DepartmentName { get; set; } = String.Empty;
public string PositionName { get; set; } = String.Empty;
}
/// <summary>
/// 添加用户是的返回模型
/// </summary>
public class UserAddedReturnDTO
{
public Guid Id { get; set; }
public string Code { get; set; }
}
public class UserCommand : UserInfo
{
}
public class EditPasswordCommand
{
public string NewPassWord { get; set; }
public string OldPassWord { get; set; }
}
public class UserListQueryDTO : PageInput
{
public string UserName { get; set; } = string.Empty;
public string Phone { get; set; } = string.Empty;
public string OrganizationName { get; set; } = string.Empty;
public Guid? UserType { get; set; } = Guid.Empty;
public int? UserState { get; set; }
}
public class UserRoleInfoDTO
{
public List<string> RoleList { get; set; } = new List<string>();
public int MaxPrivilegeLevel { get; set; }
}
public class UserListDTO : UserInfo
{
public IEnumerable<RoleDTO> RoleNameList { get; set; } = new List<RoleDTO>();
}
public class UserIdRoleName : RoleDTO
{
public Guid UserId { get; set; }
}
public class UserIdRoleNameList
{
public Guid UserId { get; set; }
public IEnumerable<RoleDTO> RoleList { get; set; }
}
public class ResetPasswordCommand
{
public string EmailOrPhone { get; set; }
public int VerificationType { get; set; }
public string VerificationCode { get; set; }
public string NewPwd { get; set; }
public bool IsReviewer { get; set; } = false;
}
}
@@ -0,0 +1,12 @@
using IRaCIS.Application.ViewModels;
using System;
using System.Collections.Generic;
namespace IRaCIS.Application.Interfaces
{
public interface IInstitutionService
{
IEnumerable<InstitutionDTO> GetInstitutionSelectionByTypeId(Guid userTypeId);
}
}
@@ -0,0 +1,28 @@
using IRaCIS.Application.ViewModels;
using System;
using System.Collections.Generic;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IMenuService
{
/// <summary> 在某个父节点下面 新增子菜单</summary>
IResponseOutput AddOrUpdateMenu(MenuFunctionCommand menuAddModel,Guid userId);
/// <summary>根据菜单Id 递归删除子菜单</summary>
IResponseOutput DeleteMenuFunction(Guid menuId);
List<MenuTreeNode> GetTreeAll();
List<MenuTreeNodeSelect> GetMenuFunctionIsSelectByRoleId(Guid roleId);
List<MenuTreeNodeSelect> GetFunctionIsSelectByRoleId(Guid roleId, Guid parentId);
IResponseOutput UpdateRoleMenuSelect(Guid roleId, List<Guid> menuId);
IResponseOutput UpdateRoleFunctionSelect(FunctionSelectDTO functionSelect);
}
}
@@ -0,0 +1,20 @@
using System;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IRoleService
{
IResponseOutput AddOrUpdateRole(RoleCommand role,Guid userId);
IResponseOutput DeleteRole(Guid roleId);
PageOutput<RoleDTO> GetRoleListByPage(int pageIndex, int pageSize);
PageOutput<UserSelectRoleDTO> GetRoleListByPage(Guid userId, int pageIndex, int pageSize);
IResponseOutput UpdateUserRole(Guid userId, Guid roleId, bool isSelect);
}
}
@@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IUserService
{
Task<IResponseOutput> SendVerificationCode(string emailOrPhone, int verificationType,bool isReviewer=false);
IResponseOutput SetNewPassword(string emailOrPhone, int verificationType,
string verificationCode, string newPwd,bool isReviewer);
IResponseOutput<LoginReturnDTO> Login(string userName, string password);
IResponseOutput<bool> VerifySignature(string userName, string password);
IEnumerable<UserDetailDTO> GetAllUser();
PageOutput<UserListDTO> GetUserList(UserListQueryDTO userQueryModel);
IResponseOutput UpdateUserState(Guid userId, int state);
UserDetailDTO GetUserById(Guid id);
IResponseOutput<UserAddedReturnDTO> AddUser(UserCommand userAddModel, Guid userId);
IResponseOutput UpdateUser(UserCommand userUpdateModel, Guid userId);
IResponseOutput ResetPassword(Guid userId);
List<string> GetUserRolesById(Guid userId);
int GetUserRoleMaxPrivilegeLevel(Guid userId);
IResponseOutput ModifyPassword(EditPasswordCommand editPwModel);
}
}
@@ -0,0 +1,93 @@
using System;
using System.Collections.Generic;
using IRaCIS.Core.Domain.Models;
namespace IRaCIS.Core.Application.Contracts
{
public class HistoryVisitRSDTO
{
public Guid StudyId { get; set; }
public string StudyCode { get; set; }
public decimal VisitNum { get; set; }
public string VisitName { get; set; }
public string OverallResponse { get; set; }
public string TpCode { get; set; }
public GlobalRSSelectView GlobalRSSelect { get; set; }
}
public class GlobalRSSelectView
{
public bool? Agree { get; set; }
public string NewRS { get; set; }
public string Note { get; set; }
}
public class HistoryGlobalRsDTO
{
public decimal VisitNum { get; set; }
public string VisitName { get; set; }
public string OverallResponse { get; set; }
}
public class PreviousGlobalReadsView
{
public string SubjectNote { get; set; }
public List<HistoryGlobalRsDTO> PreviousGlobalReadsList { get; set; } = new List<HistoryGlobalRsDTO>();
}
public class GlobalTaskReportCommand
{
public Guid GlobalId { get; set; }
public string SubjectNote { get; set; }
public string SubjectCode { get; set; }
public Guid SubjectId { get; set; }
public List<GlobalReportCommand> GlobalRSReportList { get; set; }=new List<GlobalReportCommand>();
}
public class GlobalReportCommand
{
public Guid GlobalId { get; set; }
public string TpCode { get; set; }
public int VisitNum { get; set; }
public bool? Agree { get; set; }
public string NewRS { get; set; }
public string Note { get; set; }
}
public class AdReportDTO
{
public WorkloadAD ADInfo { get; set; }
public PreviousGlobalReadsView Global1 { get; set; }
public PreviousGlobalReadsView Global2 { get; set; }
public IEnumerable<HistoryVisitRSDTO> Global1VisitRS { get; set; }=new List<HistoryVisitRSDTO>();
public IEnumerable<HistoryVisitRSDTO> Global2VisitRS { get; set; } = new List<HistoryVisitRSDTO>();
}
public class ADReportCommand
{
public Guid AdId { get; set; }
public Guid SelectGlobalId { get; set; }
public string ADNote { get; set; }
}
}
@@ -0,0 +1,280 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace IRaCIS.Core.Application.Contracts
{
public class LesionInformation
{
public Guid TUId { get; set; }
public int LesionType { get; set; } //病灶类型
public string STUDYID { get; set; } // 项目ID
public string USUBJID { get; set; } // 受试者ID
public int TUSEQ { get; set; } // 病灶序号
// 病灶分组,主要是用于将分裂或者结合在一起的已经被标识的肿瘤分类
public string TUGRPID { get; set; } = string.Empty;
//内部或外部的肿瘤/病灶标识。 例如:医学影像 ID
public string TUREFID { get; set; } = string.Empty;
public string TUSPID { get; set; } = string.Empty;// 申办方标识
// 关联测量结果,及TUGRPID一起,标识分裂及合并
public string TULNKID { get; set; } = string.Empty;
/// <summary>
/// 检查项目
/// TUMIDENT Tumor Identification
/// TUSPLIT Tumor Split
/// TUMERGE Tumor Merged
/// </summary>
public string TUTESTCD { get; set; } = string.Empty;
public string TUTEST { get; set; } = string.Empty;
public string TUORRES { get; set; } = string.Empty;//TARGET, NON-TARGET, NEW
public string TUSTRESC { get; set; } = string.Empty;//包含从 TUORRES拷贝的所有发现的结果
public string TUNAM { get; set; } = string.Empty;//完成肿瘤标识的供应商名称或标识
public string LocDescription { get; set; } = string.Empty;// 部位描述
public string TULOC { get; set; } = string.Empty; // 解剖学部位
public string TULAT { get; set; } = string.Empty;//解剖学部位或者样本更详细的偏侧性修饰语,比如,左侧, 右侧,双侧。
public string TUDIR { get; set; } = string.Empty;//解剖学部位或者样本更详细的方向性修饰语,比如,上边的 ,里面的。
public string TUPORTOT { get; set; } = string.Empty;//解剖学部位或者样本更详细的分布,安排,分配的修饰语, 比如,全部的,单一的,部分的,多数的。
public string TUMETHOD { get; set; } = string.Empty; //用来标识肿瘤的办法。 例如,核磁共振,CT扫描。
public string TUEVAL { get; set; } = string.Empty; //评估者的角色。 例如:研究者,独立评估者。
public string TUEVALID { get; set; } = string.Empty;//这个特定的评估者变量是与 TUEVAL一起使用来提供更详 细的信息
public string TUACPTFL { get; set; } = string.Empty;
// 访视信息
public decimal VISITNUM { get; set; } = 0;
public string VISIT { get; set; } = string.Empty;
public int VISITDY { get; set; }
public string EPOCH { get; set; } = string.Empty;
public string TUDTC { get; set; } = string.Empty;
public int TUDY { get; set; } = 0;
//TR
public string TRTESTCD { get; set; }
public string TRTEST { get; set; }
public string TRORRES { get; set; } = string.Empty;//原始收到或采集的肿瘤测量/评估结
public string TRORRESU { get; set; } = string.Empty;//原始单位
public string TRSTRESC { get; set; } = string.Empty;//标准化结 果
public double TRSTRESN { get; set; }//标准化结 果(N)
public string TRSTRESU { get; set; } // 标准化单位
public string TRSTAT { get; set; } // 未做状态
public string TRREASND { get; set; } // 未做原因
public string Note { get; set; }
public string TRGRPID { get; set; }
public string TRDTC { get; set; } = string.Empty;
public int TRDY { get; set; } = 0;
////RS
//public string RSCAT { get; set; } // 类别,用来识别对反应评估中使用的标准,以及适当时提供版本号
//public string RSORRES { get; set; } //原始接收、采集或者计算的肿瘤反应评估的结果。
//public string RSSTRESC { get; set; } //标准化结果
public bool CoveredLesion { get; set; }
}
public class VisitLesion : LesionInformation
{
public LesionInformation CurrentLesion { get; set; } = new LesionInformation();
}
public class EfficacyAssessment
{
public string TargetLesion { get; set; } = string.Empty;
public string Non_targetLesion { get; set; } = string.Empty;
public string OverallAssessment { get; set; } = string.Empty;
public string TargetLesionNote { get; set; } = string.Empty;
public string Non_targetLesionNote { get; set; } = string.Empty;
public string OverallAssessmentNote { get; set; } = string.Empty;
}
public class PreviousOverallAssessment
{
public string VisitName { get; set; }
public string OverallAssessment { get; set; }
}
public class VisitLesionInfo
{
//基线病灶信息及本次访视测量信息
public IList<VisitLesion> BLLesionList { get; set; } = new List<VisitLesion>();
// public IList<LesionInformation> BLVisitLesionList { get; set; } = new List<LesionInformation>();
//public IList<LesionInformation> CurrentVisitLesionList { get; set; } = new List<LesionInformation>();
// 以往病灶信息
public IList<VisitLesion> PreviousNewLesionList { get; set; } = new List<VisitLesion>();
//本次疑似新病灶
public IList<LesionInformation> EquivocalNewLesionList { get; set; } = new List<LesionInformation>();
public IList<LesionInformation> UnequivocalNewLesionList { get; set; } = new List<LesionInformation>();
public ReportDTO ReportResult { get; set; } = new ReportDTO();
public EfficacyAssessment Efficacy { get; set; } = new EfficacyAssessment();
public List<PreviousOverallAssessment> PreviousOverallAssessment { get; set; } = new List<PreviousOverallAssessment>();
public MinVisit MinVisitInfo { get; set; }
}
public class MinVisit
{
public double MinSum { get; set; } = 0.0;
public string MinVistName { get; set; } = string.Empty;
}
public class ReportCommand
{
public List<LesionInformation> LesionInformationList { get; set; }
//RS
public string RSCAT { get; set; } // 类别,用来识别对反应评估中使用的标准,以及适当时提供版本号
public string RSORRES { get; set; } //原始接收、采集或者计算的肿瘤反应评估的结果。
public string RSSTRESC { get; set; } //标准化结果
}
public class TUDTO
{
public int LesionType { get; set; }
public string STUDYID { get; set; }
public string USUBJID { get; set; }
public int TUSEQ { get; set; }
public string TUGRPID { get; set; } = string.Empty;
public string TUREFID { get; set; } = string.Empty;//内部或外部的肿瘤/病灶标识。 例如:医学影像 ID
public string TUSPID { get; set; } = string.Empty;
public string TULNKID { get; set; } = string.Empty;
public string TUTESTCD { get; set; } = string.Empty;
public string TUTEST { get; set; } = string.Empty;
public double TUORRES { get; set; } = 0;
public string TUSTRESC { get; set; } = string.Empty;
public string TUNAM { get; set; } = string.Empty;
public string TULOC { get; set; } = string.Empty;
public string TULAT { get; set; } = string.Empty;
public string TUDIR { get; set; } = string.Empty;
public string TUPORTOT { get; set; } = string.Empty;
public string TUMETHOD { get; set; } = string.Empty;
public string TUEVAL { get; set; } = string.Empty;
public string TUEVALID { get; set; } = string.Empty;
public string TUACPTFL { get; set; } = string.Empty;
public double VISITNUM { get; set; } = 0;
public string VISIT { get; set; } = string.Empty;
public string VISITDY { get; set; } = string.Empty;
public string EPOCH { get; set; } = string.Empty;
public string TUDTC { get; set; } = string.Empty;
public int TUDY { get; set; } = 0;
}
public class TRDTO
{
public string STUDYID { get; set; } = string.Empty;
public string DOMAIN { get; set; } = string.Empty;
public string USUBJID { get; set; } = string.Empty;
public int TRSEQ { get; set; }
public string TRGRPID { get; set; } = string.Empty;
public string TRREFID { get; set; } = string.Empty;
public string TRSPID { get; set; } = string.Empty;
public string TRLNKID { get; set; } = string.Empty;
public string TRLNKGRP { get; set; } = string.Empty;
public string TRTESTCD { get; set; } = string.Empty;
public string TRTEST { get; set; } = string.Empty;
public string TRORRES { get; set; } = string.Empty;
public string TRORRESU { get; set; } = string.Empty;
public string TRSTRESC { get; set; } = string.Empty;
public double TRSTRESN { get; set; } = 0;
public string TRSTRESU { get; set; } = string.Empty;
public string TRSTAT { get; set; } = string.Empty;
public string TRREASND { get; set; } = string.Empty;
public string TRNAM { get; set; } = string.Empty;
public string TRMETHOD { get; set; } = string.Empty;
public string TREVAL { get; set; } = string.Empty;
public string TREVALID { get; set; } = string.Empty;
public string TRACPTFL { get; set; } = string.Empty;
public decimal VISITNUM { get; set; } = 0;
public string VISIT { get; set; } = string.Empty;
public int VISITDY { get; set; } = 0;
public string EPOCH { get; set; } = string.Empty;
public string TRDTC { get; set; } = string.Empty;
public int TRDY { get; set; } = 0;
public string Note { get; set; } = string.Empty;
public bool CoveredLesion { get; set; } = true;
}
public class RSDTO
{
public string STUDYID { get; set; } = string.Empty;
public string DOMAIN { get; set; } = string.Empty;
public string USUBJID { get; set; } = string.Empty;
public int RSSEQ { get; set; }
public string RSGRPID { get; set; } = string.Empty;
public string RSREFID { get; set; } = string.Empty;
public string RSSPID { get; set; } = string.Empty;
public string RSLNKID { get; set; } = string.Empty;
public string RSLNKGRP { get; set; } = string.Empty;
public string RSTESTCD { get; set; } = string.Empty;
public string RSTEST { get; set; } = string.Empty;
public string RSCAT { get; set; } = string.Empty;
public string RSORRES { get; set; } = string.Empty;
public string RSSTRESC { get; set; } = string.Empty;
public string RSSTAT { get; set; } = string.Empty;
public string RSREASND { get; set; } = string.Empty;
public string RSNAM { get; set; } = string.Empty;
public string RSEVAL { get; set; } = string.Empty;
public string RSEVALID { get; set; } = string.Empty;
public string RSACPTFL { get; set; } = string.Empty;
public decimal VISITNUM { get; set; } = 0;
public string VISIT { get; set; } = string.Empty;
public int VISITDY { get; set; } = 0;
public string EPOCH { get; set; } = string.Empty;
public string RSDTC { get; set; } = string.Empty;
public int RSDY { get; set; } = 0;
public Guid StudyGuid { get; set; } = Guid.Empty;
public Guid TrialGuid { get; set; } = Guid.Empty;
public Guid SubjectGuid { get; set; } = Guid.Empty;
public string Note { get; set; } = string.Empty;
}
public class ReportDTO
{
public bool Qualified { get; set; } = true;
public string DiseaseProgression { get; set; } = string.Empty;
public string NotEvaluable { get; set; } = string.Empty;
public string Timepoint { get; set; } = string.Empty;
public string TrialCode { get; set; } = string.Empty;
public string SubjectCode { get; set; } = string.Empty;
public decimal? VisitNum { get; set; }
public string VisitName { get; set; } = string.Empty;
public int? DiseaseSituation { get; set; }
public string Comment { get; set; }
public Guid? TPId { get; set; }
public Guid? DicomStudyId { get; set; }
public string TpCode { get; set; } = string.Empty;
public bool AffectRead { get; set; }//是否影响读片
public string AffectReadNote { get; set; }//备注说明
}
public class VisitReportCommand
{
public List<LesionInformation> LesionInformation { get; set; } = new List<LesionInformation>();
public List<TRDTO> TRList { get; set; } = new List<TRDTO>();
public List<RSDTO> RSList { get; set; } = new List<RSDTO>();
public ReportDTO ReportResult { get; set; } = new ReportDTO();
}
public class BaseLineReportCommand
{
//public Guid TimepointId { get; set; }
public string SumOfDiameter { get; set; }
public string SumDiameterOfNonLymphNode { get; set; }
public IList<LesionInformation> LesionInformation { get; set; } = new List<LesionInformation>();
public ReportDTO ReportResult { get; set; } = new ReportDTO();
}
public class BaseLineReportDTO
{
public IList<LesionInformation> LesionInformation { get; set; } = new List<LesionInformation>();
public ReportDTO ReportResult { get; set; } = new ReportDTO();
}
}
@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
namespace IRaCIS.Core.Application.Contracts
{
public interface IGlobalService
{
//string GetCommentsForSubject(Guid globalId);
IEnumerable<HistoryVisitRSDTO> GetHistoryVisitRsList(Guid trialId, Guid subjectId, decimal visitNum, Guid globalId,string globalCode);
PreviousGlobalReadsView GetHistoryGlobalRsList(Guid trialId, Guid subjectId, decimal visitNum, Guid globalId);
bool AddGlobalReport(GlobalTaskReportCommand globalTaskReportCommand);
AdReportDTO GetAdReport(Guid adId);
bool AddAdjudicationReport(ADReportCommand adReportCommand);
}
}
@@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace IRaCIS.Core.Application.Contracts
{
public interface IReportService
{
//bool SaveReport(ReportCommand reportCommand);
/// <summary> 添加基线期病灶标识及测量信息 </summary>
bool AddLesion(List<LesionInformation> lesionInformation, ReportDTO report);
/// <summary> 获取基线期信息 <summary>
//IList<LesionInformation> GetBLLesion(string trialCode, string subjectCode);
/// <summary>
/// 获取访视病灶信息
/// </summary>
VisitLesionInfo GetVisitLesion(string trialCode, string subjectCode, decimal visitNum,string tpCode);
bool SaveVisitReport(VisitReportCommand visitReportCommand);
bool SaveBLReport(BaseLineReportCommand baseLineReportCommand);
BaseLineReportDTO GetBaseLineReport(string trialCode, string subjectCode, string tpCode);
bool SubmiteReport(Guid tpId);
}
}
@@ -0,0 +1,40 @@
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
using System;
namespace IRaCIS.Application.ViewModels
{
public class WorkloadReadingDTO
{
public Guid Id { get; set; }
public Guid StudyId { get; set; }
public Guid TrialId { get; set; }
public string TrialCode { get; set; }
public string TrialIndication { get; set; }
public string Sponsor { get; set; }
public int Expedited { get; set; }
public Guid SubjectId { get; set; }
public string SubjectCode { get; set; }
public string VisitName { get; set; }
public decimal VisitNum { get; set; }
public Guid WorkloadId { get; set; }
public string WorkloadCode { get; set; }
public int WorkloadType { get; set; }
public int Status { get; set; }
public DateTime UpdateTime { get; set; }
}
public class WorkloadQueryParam : PageInput
{
public Guid? TrialId { get; set; } = Guid.Empty;
public string SubjectCode { get; set; } = string.Empty;
public int? Status { get; set; }
public int WorkloadType { get; set; }
public int? Expedited { get; set; }
}
}
@@ -0,0 +1,10 @@
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IReviewerReadingService
{
PageOutput<WorkloadReadingDTO> GetWorkloadList(WorkloadQueryParam param);
}
}
@@ -0,0 +1,243 @@
using System;
using System.Collections.Generic;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.ViewModels
{
public class EnrollStatByReviewerDTO
{
public Guid Id { get; set; }
public string Hospital { get; set; }
public string ChineseName { get; set; } = string.Empty;
public string FirstName { get; set; } = string.Empty;
public string LastName { get; set; } = string.Empty;
public string ReviewerCode { get; set; } = string.Empty;
public int Pending { get; set; }
public int Approved { get; set; }
public int Reading { get; set; }
public int Finished { get; set; }
public int Total { get; set; }
public double EntryRate
{
get
{
if (Total == 0)
{
return 0;
}
return Math.Round(((Reading + Finished) / (double)Total) * 100, 1, MidpointRounding.AwayFromZero);
;
}
}
}
public class EnrollStatByTrialDTO
{
public string TrialCode { get; set; }
public Guid TrialId { get; set; }
public string Indication { get; set; }
//public Guid CroId { get; set; }
public string Cro { get; set; } = string.Empty;
public DateTime CreateTime { get; set; }
public int Expedited { get; set; }
public int EnrollCount { get; set; }
public List<string> ReviewerNameCNList=new List<string>();
public List<string> ReviewerNameList=new List<string>();
}
#region 20200413 add by dingke
public class WorkloadByTrialAndReviewerDTO
{
public Guid Id { get; set; }
public string TrialCode { get; set; }
public Guid TrialId { get; set; }
public string Indication { get; set; }
public Guid CroId { get; set; }
public string Cro { get; set; } = string.Empty;
public string ChineseName { get; set; } = string.Empty;
public string FirstName { get; set; } = string.Empty;
public string LastName { get; set; } = string.Empty;
public string ReviewerCode { get; set; } = string.Empty;
public int Training { get; set; }
public int Downtime { get; set; }
public int Timepoint { get; set; }
public int TimepointIn24H { get; set; }
public int TimepointIn48H { get; set; }
public int Adjudication { get; set; }
public int AdjudicationIn24H { get; set; }
public int AdjudicationIn48H { get; set; }
public int Global { get; set; }
public int RefresherTraining { get; set; }
public int PersonalTotal { get; set; }
}
public class StatisticsQueryDTO : PageInput
{
public Guid? CroId { get; set; } = Guid.Empty;
public string TrialCode { get; set; } = string.Empty;
public string Reviewer { get; set; } = string.Empty;
public DateTime BeginDate { get; set; } = DateTime.Now;
public DateTime EndDate { get; set; } = DateTime.Now;
public int StatType { get; set; }
//医生付费类型 CN US
public int? Nation { get; set; }
public int? AttendedReviewerType { get; set; }
}
public class StatisticsWorkloadQueryParam : PageInput
{
public Guid? CroId { get; set; } = Guid.Empty;
public string TrialCode { get; set; } = string.Empty;
public string Reviewer { get; set; } = string.Empty;
public DateTime BeginDate { get; set; } = DateTime.Now;
public DateTime EndDate { get; set; } = DateTime.Now;
public int StatType { get; set; }
public Guid? HospitalId { get; set; } = Guid.Empty;
}
public class RevenuesStatQueryDTO : PageInput
{
public Guid CroId { get; set; } = Guid.Empty;
public string Reviewer { get; set; } = string.Empty;
public string TrialCode { get; set; } = string.Empty;
public DateTime BeginDate { get; set; } = DateTime.Now;
public DateTime EndDate { get; set; } = DateTime.Now;
public int StatType { get; set; }
}
public class EnrollStatByReviewerQueryDTO : PageInput
{
public Guid? HospitalId { get; set; } = Guid.Empty;
public string Reviewer { get; set; } = string.Empty;
public DateTime BeginDate { get; set; } = DateTime.Now;
public DateTime EndDate { get; set; } = DateTime.Now;
}
public class EnrollStatByTrialQueryDTO : PageInput
{
public string TrialCode { get; set; }
public string Indication { get; set; }
public DateTime? BeginDate { get; set; } = DateTime.Now;
public DateTime? EndDate { get; set; } = DateTime.Now;
public Guid? CROId { get; set; }
public int? Expedited { get; set; }
}
#endregion
#region dashbord
/// <summary>
/// 读片数量分类统计
/// </summary>
public class ReadingDataDTO
{
public int Timepoint { get; set; }
public int Adjudication { get; set; }
public int Global { get; set; }
}
public class ReadingDataMonthDTO : ReadingDataDTO
{
public string Month { get; set; }
}
public class ReadingDataRankDTO : ReadingDataDTO
{
public int TotalReadingCount { get; set; }
public Guid ReviewerId { get; set; }
public string ReviewerCode { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string ChineseName { get; set; }
}
public class RankReviewersDTO
{
public Guid RankId { get; set; }
public string RankName { get; set; }
public string RankNameAbbreviation
{
get
{
var arr = RankName.Split(' ');
return arr[0];
}
}
public int ReviewerCount { get; set; }
}
public class EnrollDataDTO
{
public int Year { get; set; }
public int Month { get; set; }
public string QuarterStr => Year + "-Q" + (Month / 3 + (Month % 3 == 0 ? 0 : 1));
public string YearMonth => new DateTime(Year, Month, 1).ToString("yyyy-MM");
public int EnrollCount { get; set; }
}
public class EnrollQuartDataDTO
{
//public int Year { get; set; }
public string ViewStr { get; set; }
public int EnrollCount { get; set; }
}
public class LatestWorkLoadDTO : ReadingDataDTO
{
public int TotalReadingCount => Timepoint + Adjudication + Global;
public Guid ReviewerId { get; set; }
public string ReviewerCode { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string ChineseName { get; set; }
public string TrialCode { get; set; }
}
public class TrialDataRankDTO
{
public Guid ReviewerId { get; set; }
public string ReviewerCode { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string ChineseName { get; set; }
public int TrialCount { get; set; }
}
#endregion
}
@@ -0,0 +1,67 @@
using System;
using System.Collections.Generic;
namespace IRaCIS.Application.ViewModels
{
public class DictionaryTreeNode
{
public Guid Id { get; set; }
public string KeyName { get; set; } = string.Empty;
public string Type { get; set; }
public List<DictionaryTreeNode> Children { get; set; }
}
public class MenuTreeNodeSelect
{
public Guid Id { get; set; }
public Guid ParentId { get; set; }
public string RouteName { get; set; }
public string MenuName { get; set; }
//public string Component { get; set; }
//public string Redirect { get; set; }
//public string Path { get; set; }
//public string MetaTitle { get; set; }
//public bool MetaBreadcrumb { get; set; }
//public string MetaIcon { get; set; }
//public string MetaActiveMenu { get; set; }
public string FunctionName { get; set; }
//public bool IsFunction { get; set; }
public string Note { get; set; }
public int ShowOrder { get; set; }
//public int Status { get; set; }
//public DateTime CreateTime { get; set; }
//public Guid CreateUserId { get; set; }
//public DateTime UpdateTime { get; set; }
//public Guid UpdateUserId { get; set; }
//public bool Hidden { get; set; }
public List<MenuTreeNodeSelect> Children { get; set; }
public bool IsSelect { get; set; } = false;
}
public class MenuTreeNode
{
public Guid Id { get; set; }
public Guid ParentId { get; set; }
public string RouteName { get; set; }
public string MenuName { get; set; }
public string Component { get; set; }
public string Redirect { get; set; }
public string Path { get; set; }
public string MetaTitle { get; set; }
public bool MetaBreadcrumb { get; set; }
public string MetaIcon { get; set; }
public string MetaActiveMenu { get; set; }
public string FunctionName { get; set; }
public bool IsFunction { get; set; }
public string Note { get; set; }
public int ShowOrder { get; set; }
public int Status { get; set; }
public DateTime CreateTime { get; set; }
public Guid CreateUserId { get; set; }
public DateTime UpdateTime { get; set; }
public Guid UpdateUserId { get; set; }
public bool Hidden { get; set; }
public List<MenuTreeNode> Children { get; set; }
}
}
@@ -0,0 +1,65 @@
using System;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.ViewModels
{
public class SubjectDTO: SubjectCommand
{
public Guid SubjectVisitId { get; set; }
public int StudyCount { get; set; }
public int VisitCount { get; set; }
public int PlanVisitCount { get; set; }
public string Modalities { get; set; }
}
public class SubjectCommand
{
public Guid? Id { get; set; }
public string Code { get; set; }//患者匿名编码
public string Name { get; set; }
public int Age { get; set; }
public string Sex { get; set; }
public Guid SiteId { get; set; }
public Guid TrialId { get; set; }
public string MedicalNo { get; set; }
public int Status { get; set; }
public string Reason { get; set; }
}
public class SubjectQueryModel: SubjectDTO
{
public DateTime? CreateTime { get; set; }
public DateTime? UpdateTime { get; set; }
public string SiteName { get; set; }
public string VisitName { get; set; }
}
public class SubjectQueryParam : PageInput
{
public Guid TrialId { get; set; } = Guid.Empty;
public string Code { get; set; } = string.Empty;
public string Name { get; set; } = string.Empty;
public string Sex { get; set; } = string.Empty;
public Guid? SiteId { get; set; }
//public Guid? SubjectVisitId { get; set; } = Guid.Empty;
public int? Status { get; set; }
}
public class SubjectSelect
{
public Guid SubjectId { get; set; }
public string Name { get; set; }
public string Code { get; set; }
public string Sex { get; set; }
public int Age { get; set; }
}
}
@@ -0,0 +1,234 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
using IRaCIS.Core.Domain.Share;
namespace IRaCIS.Application.ViewModels
{
/// <summary>
///后台 工作量审核视图模型
/// </summary>
public class WorkLoadDetailDTO : WorkloadDTO
{
public DateTime CreateTime { get; set; }
public string ChineseName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Code { get; set; }
public string Indication { get; set; }
public int RowIntId { get; set; }
public Guid RowGuid { get; set; }
public string YearMonthStr { get; set; }
public string WorkTimeStr => YearMonthStr;
public bool IsLock { get; set; } = false;
}
public class WorkLoadDetailViewModel : WorkloadDTO
{
public DateTime CreateTime { get; set; }
public string ChineseName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Code { get; set; }
public string Indication { get; set; }
public Guid RowGuid { get; set; }
public string YearMonthStr { get; set; }
public bool IsLock { get; set; } = false;
public string DeclareTimeStr => CreateTime.ToString("yyyy-MM-dd");
public string WorkTimeStr => WorkTime.ToString("yyyy-MM-dd");
}
public class CalculatePaymentDTO : WorkloadDTO
{
public string TrialCode { get; set; }
public decimal? TrialAdditional { get; set; }
public decimal AdjustmentMultiple { get; set; }
//public double RankPrice { get; set; }
public decimal PersonalAdditional { get; set; }
public decimal TimepointPrice { get; set; }
public decimal TimepointIn24HPrice { get; set; }
public decimal TimepointIn48HPrice { get; set; }
public decimal AdjudicationPrice { get; set; }
public decimal AdjudicationIn24HPrice { get; set; }
public decimal AdjudicationIn48HPrice { get; set; }
public decimal GlobalPrice { get; set; }
public decimal TrainingPrice { get; set; }
public decimal DowntimePrice { get; set; }
public decimal RefresherTrainingPrice { get; set; }
}
/// <summary>
/// 工作量审核数据库查询模型
/// </summary>
public class WorkloadDTO
{
public Guid? Id { get; set; }
public Guid TrialId { get; set; }
public Guid DoctorId { get; set; }
public int DataFrom { get; set; }
public DateTime WorkTime { get; set; }
public int Training { get; set; }
public int Downtime { get; set; }
public int Timepoint { get; set; }
public int TimepointIn24H { get; set; }
public int TimepointIn48H { get; set; }
public int Adjudication { get; set; }
public int AdjudicationIn24H { get; set; }
public int AdjudicationIn48H { get; set; }
public int Global { get; set; }
public int RefresherTraining { get; set; }
}
/// <summary>
/// 工作量分页列表模型 医生端查询模型
/// </summary>
public class WorkLoadQueryDTO : PageInput
{
public Guid TrialId { get; set; }
public int WorkLoadFromStatus { get; set; } // 关联枚举
public DateTime? SearchBeginDateTime { get; set; }
public DateTime? SearchEndDateTime { get; set; }
}
/// <summary>
/// 后台查询模型
/// </summary>
public class WorkLoadStatsQueryDTO : PageInput
{
public Guid? TrialId { get; set; }
public Guid? DoctorId { get; set; } = Guid.Empty;
public List<int> WorkLoadFromStatus { get; set; } = new List<int>(); // 关联枚举
public DateTime? SearchBeginDateTime { get; set; }
public DateTime? SearchEndDateTime { get; set; }
}
public class WorkLoadDetailQueryDTO
{
public Guid TrialId { get; set; } = Guid.Empty;
public Guid DoctorId { get; set; } = Guid.Empty;
public string YearMonthStr { get; set; }
}
public class CalculateDoctorAndMonthDTO
{
[Required(ErrorMessage = "需要有效的时间")]
public DateTime CalculateMonth { get; set; }
[Required(ErrorMessage = "需要有效的医生列表")]
public List<Guid> NeedCalculateReviewers { get; set; }
}
public class WorkLoadDoctorQueryDTO : PageInput
{
public Guid TrialId { get; set; } = Guid.Empty;
}
public class WorkLoadCommand : WorkloadDTO
{
public Guid CreateUserId { get; set; }
public int CreateUserType { get; set; }
public Guid UpdateUserId { get; set; }
}
public class ExistWorkloadViewModel
{
public bool IsExist { get; set; }
public WorkloadDTO WorkLoad { get; set; }
}
public class WorkloadCommand : WorkloadDTO
{
}
public class WorkloadExistQueryDTO
{
public Guid TrialId { get; set; }
public Guid DoctorId { get; set; }
public DateTime WorkDate { get; set; }
}
public class WorkLoadAndTrainingDTO
{
public Guid DoctorId { get; set; }/*=Guid.Empty;*/
public string Code { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string ChineseName { get; set; }
public DateTime? EnrollTime { get; set; }
public int ReviewerReadingType { get; set; }
public string EnrollTimeStr => EnrollTime?.ToString("yyyy-MM-dd HH:mm:ss");
public DateTime? UpdateTime { get; set; }
public string UpdateTimeStr => UpdateTime?.ToString("yyyy-MM-dd HH:mm:ss");
public int TrainingTimes { get; set; }
public int Downtime { get; set; }
//读片点
public int Timepoint { get; set; }
public int TimepointIn24H { get; set; }
public int TimepointIn48H { get; set; }
//裁判阅片
public int Adjudication { get; set; }
public int AdjudicationIn24H { get; set; }
public int AdjudicationIn48H { get; set; }
//全局阅片
public int Global { get; set; }
public int RefresherTraining { get; set; }
}
public class WorkLoadAndAgreementDTO : WorkLoadAndTrainingDTO
{
public Guid AgreementId { get; set; }
public string AgreementPath { get; set; }
public string AgreementFileName => AgreementPath?.Split('/').Last();
public string AgreementFullPath => SystemConfig.RootUrl + AgreementPath;
}
}
@@ -0,0 +1,40 @@
using System;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
using IRaCIS.Core.Domain.Share;
namespace IRaCIS.Application.ViewModels
{
/// <summary>
/// 影像采集规范
/// </summary>
public class TrialAttachmentCommand
{
public Guid? Id { get; set; }
public Guid TrialId { get; set; }
public string Type { get; set; }
public string DocumentName { get; set; }
public string DocumentPath { get; set; }
public string DocumentFullPath
{
get { return SystemConfig.RootUrl + DocumentPath; }
}
}
public class AcquisitionSpecificationDTO : TrialAttachmentCommand
{
public string TrialCode { get; set; }
public string Indication { get; set; }
public string OptUserName { get; set; }
public DateTime CreateTime { get; set; }
}
public class ImageAcquisitionSpecificationQueryDTO : PageInput
{
public Guid TrialId { get; set; }
}
}
@@ -0,0 +1,21 @@
using System;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.ViewModels
{
public class TrialInterviewDTO
{
public Guid Id { get; set; }
public Guid TrialId { get; set; }
public string Stage { get; set; }
public string InterViewTime { get; set; }
public string Description { get; set; }
public DateTime CreateTime { get; set; }
}
public class InterviewQueryDTO : PageInput
{
public Guid TrialId { get; set; } = Guid.Empty;
public string Keyword { get; set; } = string.Empty;
}
}
@@ -0,0 +1,28 @@
using System;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.ViewModels
{
public class TrialResearchCenterDTO
{
public Guid Id { get; set; }
public Guid TrialId { get; set; }
public Guid SiteId { get; set; }
public string MainCenter { get; set; }
public DateTime OptTime { get; set; }
public int State { get; set; }
}
public class TrialResearchCenterDetailDTO : TrialResearchCenterDTO
{
public string TrialCode { get; set; }
public string TrialName { get; set; }
public string ResearchCenterName { get; set; }
}
public class TrialCenterQueryDTO : PageInput
{
public Guid TrialId { get; set; }
public Guid CenterId { get; set; }
}
}
@@ -0,0 +1,72 @@
using System;
using System.Collections.Generic;
namespace IRaCIS.Core.Application.Contracts.Trial.DTO
{
public class RevenusVerifyQueryDTO
{
public DateTime BeginDate { get; set; } = DateTime.Now;
public DateTime EndDate { get; set; } = DateTime.Now;
}
public class AnalysisVerifyQueryDTO
{
public DateTime BeginDate { get; set; } = DateTime.Now;
public DateTime EndDate { get; set; } = DateTime.Now;
}
public class AnalysisNeedLockDTO
{
public string YearMonth { get; set; }
public string ReviewerCode { get; set; }
public string ReviewerName { get; set; }
public string ReviewerNameCN { get; set; }
}
public class AnalysisVerifyResultDTO
{
public List<MonthlyResult> MonthVerifyResult = new List<MonthlyResult>();
public List<RevenusVerifyDTO> RevenuesVerifyList = new List<RevenusVerifyDTO>();
}
public class MonthlyResult
{
public string YearMonth { get; set; }
public List<string> ReviewerNameList = new List<string>();
public List<string> ReviewerNameCNList = new List<string>();
public List<string> ReviewerCodeList = new List<string>();
}
public class RevenusVerifyDTO
{
public string TrialCode { get; set; }
public bool Training { get; set; } = false;
public bool Downtime { get; set; } = false;
public bool Global { get; set; } = false;
public bool Timepoint { get; set; } = false;
public bool TimepointIn24H { get; set; } = false;
public bool TimepointIn48H { get; set; } = false;
public bool Adjudication { get; set; } = false;
public bool AdjudicationIn24H { get; set; } = false;
public bool AdjudicationIn48H { get; set; } = false;
}
}
@@ -0,0 +1,37 @@
using System;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.ViewModels
{
public class TrialRevenuesPriceDTO
{
public Guid TrialId { get; set; }
public decimal Timepoint { get; set; }
public decimal TimepointIn24H { get; set; }
public decimal TimepointIn48H { get; set; }
public decimal Adjudication { get; set; }
public decimal AdjudicationIn24H { get; set; }
public decimal AdjudicationIn48H { get; set; }
public decimal RefresherTraining { get; set; }
public decimal Global { get; set; }
public decimal Training { get; set; }
public decimal Downtime { get; set; }
}
public class TrialRevenuesPriceDetialDTO : TrialRevenuesPriceDTO
{
public Guid Id { get; set; }
public string TrialCode { get; set; }
public string Indication { get; set; }
public int Expedited { get; set; }
public string ReviewMode { get; set; }
public string Cro { get; set; }
}
public class TrialRevenuesPriceQueryDTO : PageInput
{
public string KeyWord { get; set; }
public Guid? CroId { get; set; }
}
}
@@ -0,0 +1,167 @@
using System;
using System.Collections.Generic;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
using IRaCIS.Core.Domain.Share;
namespace IRaCIS.Application.ViewModels
{
public class TrialDTO : TrialDbModel
{
public string ReviewType { get; set; }
public string Criterion { get; set; }
public string CRO { get; set; }
public string Sponsor { get; set; }
public int TrialStatus { get; set; }
public string TrialStatusStr { get; set; } = string.Empty;
public DateTime? CreateTime { get; set; }
}
public class TrialDbModel
{
public Guid Id { get; set; }
public string Code { get; set; } = string.Empty;
public string Indication { get; set; } = string.Empty;
public string Phase { get; set; } = string.Empty;
public Guid? ReviewTypeId { get; set; } = Guid.Empty;
public Guid? CriterionId { get; set; } = Guid.Empty;
public Guid? CROId { get; set; } = Guid.Empty;
public Guid? SponsorId { get; set; } = Guid.Empty;
public Guid? ReviewModeId { get; set; } = Guid.Empty;
public string Note { get; set; } = string.Empty;
public string TurnaroundTime { get; set; } = string.Empty;
public int ExpectedPatients { get; set; }
public int TimePointsPerPatient { get; set; }
public int GRRReviewers { get; set; }
public int TotalReviewers { get; set; }
public string ReviewProtocol { get; set; } = string.Empty;
public string MessageFromClient { get; set; } = string.Empty;
public string ReviewProtocolName { get; set; } = string.Empty;
public string MessageFromClientName { get; set; } = string.Empty;
public int? Expedited { get; set; }
public int AttendedReviewerType { get; set; }
public bool VisitPlanConfirmed { get; set; }
}
public class TrialDetailDTO : TrialDTO
{
public TrialDetailDTO()
{
ModalityIds = new List<Guid>();
ModalityList = new List<string>();
}
public string ReviewMode { get; set; }
public string ReviewProtocolFullPath => SystemConfig.RootUrl + ReviewProtocol;
public string MessageFromClientFullPath => SystemConfig.RootUrl + MessageFromClient;
public string SowFullPath => SystemConfig.RootUrl + SowPath;
public List<string> ModalityList { get; set; } //成像设备 多选
public List<Guid> ModalityIds { get; set; }
//统计字段
public string SowName { get; set; }
public string SowPath { get; set; }
public bool IsLocked { get; set; }
public int EnrollStatus { get; set; }
//public bool LockTrialCode { get; set; }
//public int Submitted { get; set; }
//public int Approved { get; set; }
//public int Trained { get; set; }
//public int Reading { get; set; }
public int SubjectCount { get; set; }
//public int VisitCount { get; set; }
public int StudyCount { get; set; }
public int SiteCount { get; set; }
}
public class TrialAndTrialStateVieModel
{
public TrialDetailDTO TrialView { get; set; }
public int TrialMaxState { get; set; }
}
public class TrialCommand : TrialDbModel
{
public Guid UserId { get; set; }
public List<Guid> ModalityIds { get; set; } = new List<Guid>();
}
public class TrialQueryDTO : PageInput
{
public TrialQueryDTO()
{
ModalityIds = new List<Guid>();
}
public Guid? CriterionId { get; set; } = Guid.Empty;
public Guid? SponsorId { get; set; } = Guid.Empty;
public Guid? CROId { get; set; } = Guid.Empty;
public Guid? ReviewTypeId { get; set; } = Guid.Empty;
public List<Guid> ModalityIds { get; set; }
public string Code { get; set; } = string.Empty;
public string Indication { get; set; } = string.Empty;
public string Phase { get; set; } = string.Empty;
public string TrialStatus { get; set; }
public DateTime? BeginDate { get; set; }
public DateTime? EndDate { get; set; }
public int? Expedited { get; set; }
public int? AttendedReviewerType { get; set; }
}
public class ReviewerTrialQueryDTO : PageInput
{
public string Code { get; set; } = string.Empty;
public string Indication { get; set; } = string.Empty;
public int? EnrollStatus { get; set; }
public int? Expedited { get; set; }
}
public class TrialByStatusQueryDTO : PageInput
{
public Guid DoctorId { get; set; }
public int Status { get; set; }
}
}
@@ -0,0 +1,111 @@
using System;
using System.Collections.Generic;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.ViewModels
{
public class TrialSiteSelect
{
public Guid Id { get; set; }
public string SiteName { get; set; }
}
public class UserTrialDTO: UserTrialCommand
{
public Guid SiteId { get; set; }
public string Phone { get; set; }
//public Guid OrganizationTypeId { get; set; }
//public string OrganizationType { get; set; }
public DateTime UpdateTime { get; set; } = DateTime.Now;
}
public class SiteCRCCommand : UserTrialCommand
{
//public Guid OrganizationTypeId { get; set; }
//public string OrganizationType { get; set; }
public Guid SiteId { get; set; } = Guid.Empty;
}
public class UserTrialCommand
{
public Guid? Id { get; set; }
public Guid UserId { get; set; }
public Guid TrialId { get; set; }
public Guid UserTypeId { get; set; }
public string UserType { get; set; }
public Guid OrganizationId { get; set; }
public string OrganizationName { get; set; }
public string OrganizationType { get; set; }
public Guid OrganizationTypeId { get; set; }
public string UserRealName { get; set; }
public string UserName { get; set; }
}
public class SiteCrcDTO : UserTrialDTO
{
//public Guid SiteId { get; set; } = Guid.Empty;
//public string Phone { get; set; }
//public Guid OrganizationTypeId { get; set; }
//public string OrganizationType { get; set; }
public string Site { get; set; }
public string City { get; set; }
public string Country { get; set; }
}
public class SiteStatDTO
{
public Guid SiteId { get; set; } = Guid.Empty;
public string Site { get; set; }
public string City { get; set; }
public string Country { get; set; }
//public int VisitCount { get; set; }
//public int PlanVisitCount { get; set; }
public int UserCount { get; set; }
public int StudyCount { get; set; }
public int SubjectCount { get; set; }
public List<UserTrialDTO> UserList=new List<UserTrialDTO>();
}
public class UserSelectionModel
{
public Guid Id { get; set; }
public string RealName { get; set; }
public string UserName { get; set; }
}
public class TrialMaintenanceQuery
{
public Guid TrialId { get; set; } = Guid.Empty;
public string UserName { get; set; } = string.Empty;
public Guid? UserTypeId { get; set; } = Guid.Empty;
}
public class UserTrialListQueryDTO : PageInput
{
public Guid TrialId { get; set; } = Guid.Empty;
public string UserName { get; set; } = string.Empty;
public Guid? UserTypeId { get; set; } = Guid.Empty;
}
public class SiteCrcQueryDTO : PageInput
{
public Guid TrialId { get; set; } = Guid.Empty;
public string UserRealName { get; set; } = string.Empty;
//public Guid? OrganizationTypeId { get; set; } = Guid.Empty;
//public Guid SiteId { get; set; } = Guid.Empty;
public string SiteName { get; set; } = string.Empty;
}
}
@@ -0,0 +1,36 @@
using System;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.ViewModels
{
public class VisitStageSelectDTO
{
public Guid Id { get; set; }
public string VisitName { get; set; }
public int VisitDay { get; set; }
}
public class VisitStageDTO: VisitPlanCommand
{
public DateTime CreateTime { get; set; }
}
public class VisitPlanCommand
{
public Guid? Id { get; set; }
public Guid TrialId { get; set; }
public decimal VisitNum { get; set; }
public string VisitName { get; set; }
public int VisitDay { get; set; }
public string Description { get; set; }
public bool NeedGlobal { get; set; }
}
public class VisitPlanQueryDTO : PageInput
{
public Guid TrialId { get; set; } = Guid.Empty;
public string Keyword { get; set; } = string.Empty;
}
}
@@ -0,0 +1,318 @@
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
using System;
using System.Collections.Generic;
using System.Dynamic;
namespace IRaCIS.Application.ViewModels
{
public class SubjectVisitDTO : SubjectVisitCommand
{
public int StudyCount { get; set; }
}
public class SubjectVisitNewDTO : SubjectVisitDTO
{
public DateTime UpdateTime { get; set; }
public string SubjectCode { get; set; }
public string SubjectName { get; set; } = string.Empty;
public string SiteName { get; set; }
public string SiteCode { get; set; }
//public Guid VisitPlanId { get; set; }
}
public class SubjectVisitSearchDTO : PageInput
{
public string SubjectInfo { get; set; }
public string VisitPlanInfo { get; set; }
public Guid? SubjectId { get; set; }
public Guid TrialId { get; set; }
public Guid? SiteId { get; set; }
}
public class SubjectVisitSelectDTO
{
public Guid GuidId{get;set;}=Guid.NewGuid();
public Guid SubjectVisitId { get; set; } = Guid.Empty;
public decimal VisitNum { get; set; }
public string VisitName { get; set; } = string.Empty;
public string SVUPDES { get; set; } = string.Empty;
//public Guid VisitStageId { get; set; } = Guid.Empty;
public DateTime? SVSTDTC { get; set; }
public DateTime? SVENDTC { get; set; }
//public bool IsSubjectVisit { get; set; } = false;
public bool StudyUploaded { get; set; }
public List<SubjectVisitStudyDTO> StudyList=new List<SubjectVisitStudyDTO>();
}
public class SubjectVisitCommand
{
public Guid? Id { get; set; }
public Guid TrialId { get; set; }
public Guid SubjectId { get; set; }
public Guid SiteId { get; set; }
public bool InPlan { get; set; } = true;
public bool StudyUploaded { get; set; } = false;
public decimal VisitNum { get; set; }
public string VisitName { get; set; } = string.Empty;
public int VisitDay { get; set; }
public string SVUPDES { get; set; } = string.Empty;
public DateTime? SVSTDTC { get; set; }
public DateTime? SVENDTC { get; set; }
}
public class SubjectVisitStudyDTO
{
public Guid SubjectVisitId { get; set; }
public Guid StudyId { get; set; }
public string StudyCode { get; set; }
public string Modalities { get; set; }
public int Status { get; set; }
}
public class ArchiveStudyCommand
{
public Guid? AbandonStudyId { get; set; }
public Guid TrialId { get; set; }
public Guid SiteId { get; set; }
public Guid SubjectId { get; set; }
//public Guid? VisitStageId { get; set; }
public Guid SubjectVisitId { get; set; }
public DateTime? SVSTDTC { get; set; }
public DateTime? SVENDTC { get; set; }
public string Comment { get; set; } = string.Empty;
}
public class StudyCommand
{
public Guid Id { get; set; } = Guid.Empty;
public Guid TrialId { get; set; }
public Guid SiteId { get; set; }
public Guid SubjectId { get; set; }
public Guid SubjectVisitId { get; set; }
}
public class StudyEditCommand: StudyCommand
{
public Guid VisitStageId { get; set; }
public DateTime? SVSTDTC { get; set; }
public DateTime? SVENDTC { get; set; }
public string Comment { get; set; }
}
public class StudyStatDTO
{
public int StudyCount { get; set; }
public decimal VisitNum { get; set; }
public string VisitName { get; set; }
public int VisitDay { get; set; }
public string Description { get; set; }
public Guid TrialId { get; set; }
public Guid SubjectVisitId { get; set; }
}
public class DistributeReviewerStudyStatusDTO
{
public string NameCN { get; set; }
public string Name { get; set; }
public string ReviewerCode { get; set; }
public string StudyCode { get; set; }
public int Status { get; set; }
}
public class StudyStatusQueryDTO:PageInput
{
public Guid TrialId { get; set; }
public Guid? ReviewerId { get; set; }
public int? StudyStatus { get; set; }
}
//public class StudyDTO
//{
// public SubjectVisitInfo SubjectVisit { get; set; }=new SubjectVisitInfo();
// public StudyInfo Study { get; set; }=new StudyInfo();
// public SiteInfo Site { get; set; }=new SiteInfo();
// public QAInfo QA { get; set; }=new QAInfo();
// public class SubjectVisitInfo
// {
// public Guid SubjectVisitId { get; set; }
// public double VisitNum { get; set; }
// public string VisitName { get; set; }
// }
// public class StudyInfo
// {
// public Guid Id { get; set; }
// public Guid TrialId { get; set; }
// public string StudyCode { get; set; }
// public int StudyStatus { get; set; }
// public DateTime? StudyDate { get; set; }
// public string Modalities { get; set; }
// public int SeriesCount { get; set; }
// public int InstanceCount { get; set; }
// }
// public class SiteInfo
// {
// public Guid SiteId { get; set; }
// public string SiteName { get; set; }
// }
// public class QAInfo
// {
// public Guid SubjectId { get; set; }
// public string SubjectCode { get; set; }
// public string SubjectName { get; set; }
// public int SubjectAge { get; set; }
// public string SubjectSex { get; set; }
// public string PatientName { get; set; }
// public string PatientAge { get; set; }
// public string PatientSex { get; set; }
// }
//}
public class VerifyStudyUploadResult
{
public bool AllowUpload { get; set; }
public StudyDTO StudyInfo { get; set; }
}
public class StudyDTO
{
public Guid SubjectVisitId { get; set; }
public decimal VisitNum { get; set; }
public string VisitName { get; set; }
public int VisitDay { get; set; }
public string SVUPDES { get; set; }
public DateTime? SVSTDTC { get; set; }
public DateTime? SVENDTC { get; set; }
public Guid Id { get; set; }
public Guid TrialId { get; set; }
public string StudyCode { get; set; }
public int StudyStatus { get; set; }
public DateTime? StudyDate { get; set; }
public string Modalities { get; set; }
public int SeriesCount { get; set; }
public int InstanceCount { get; set; }
public bool IsDoubleReview { get; set; }
public string StudyDescription { get; set; }
public string BodyPartExamined { get; set; }
public string Comment { get; set; }
public DateTime UpdateTime { get; set; }
//public List<DistributeReviewer> DistributeReviewers { get; set; }=new List<DistributeReviewer>();
public Guid SiteId { get; set; }
public string SiteName { get; set; }
public string StudyId { get; set; } //这个Id是dicom文件中的Id
public Guid SubjectId { get; set; }
public string SubjectCode { get; set; }
public string SubjectName { get; set; }
public int SubjectAge { get; set; }
public string SubjectSex { get; set; }
public string PatientId { get; set; }
public string PatientName { get; set; }
public string PatientAge { get; set; }
public string PatientSex { get; set; }
public string AccessionNumber { get; set; } = string.Empty;
public string PatientBirthDate { get; set; } = string.Empty;
}
public class DistributeReviewer
{
public Guid StudyId { get; set; }
public Guid ReviewerId { get; set; }
public string NameCN { get; set; }
public string Name { get; set; }
public int Status { get; set; }
}
public class StudyQueryDTO : PageInput
{
public Guid? SubjectId { get; set; }
public Guid? SiteId { get; set; }
public Guid TrialId { get; set; }
public string SubjectInfo { get; set; }
public string VisitPlanInfo { get; set; }
public Guid? SubjectVisitId { get; set; }
public int? Status { get; set; }
public DateTime? StudyTimeBegin { get; set; }
public DateTime? StudyTimeEnd { get; set; }
public DateTime? UpdateTimeBegin { get; set; }
public DateTime?UpdateTimeEnd { get; set; }
}
}
@@ -0,0 +1,21 @@
using System;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface ITrialEnrollmentService
{
/// <summary>入组流程-筛选医生 [select]</summary>
IResponseOutput SelectReviewer(Guid userId, Guid trialId, Guid[] doctorIdArray);
/// <summary>入组流程-向CRO提交医生[Submit]</summary>
IResponseOutput SubmitReviewer(Guid userId, Guid trialId, Guid[] doctorIdArray, int commitState);
/// <summary>入组流程-CRO确定医生名单 [ Approve]</summary>
IResponseOutput ApproveReviewer(Guid userId, Guid trialId, Guid[] doctorIdArray, int auditState);
/// <summary>入组流程-向CRO提交医生[Submit]</summary>
IResponseOutput ConfirmReviewer(Guid userId, Guid trialId, Guid[] doctorIdArray, int confirmState);
}
}
@@ -0,0 +1,63 @@
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
{
/// <summary> 根据项目Id,医生Id,获取受试者访视点(不分页)</summary>
IEnumerable<StudyStatDTO> GetStudyStatList(Guid trialId, Guid subjectId, Guid siteId);
bool UpdateReUploadNewStudyCode(Guid studyId,Guid newStudyId);
VerifyStudyUploadResult VerifyStudyAllowUpload(string studyInstanceUid, Guid trialId, Guid? studyId);
PageOutput<StudyDTO> GetStudyList(StudyQueryDTO queryDto);
/// <summary> 添加或更新访视点</summary>
Task<IResponseOutput> UpdateStudyBinding(StudyEditCommand param);
/// <summary> 删除项目访视计划</summary>
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<ReviewerDistributionDTO> GetReviewerListByTrialId(Guid trialId);
/// <summary>
/// 更新Study 表中的Status,并且往 StudyStatusDetail详情表中插入一条状态变化记录
/// </summary>
/// <param name="studyStatusDetailDTO"></param>
bool UpdateStudyStatus(StudyStatusDetailCommand studyStatusDetailDTO, string optUserName);
bool UpdateStudyModaliyAndComment(Guid studyId,string modaliy,string comment);
bool UpdateStudyStatus(List<StudyStatusDetailCommand> studyStatus, string optUserName);
List<StudyStatusDetailDTO> GetStudyStatusDetailList(Guid studyId);
PageOutput<DistributeReviewerStudyStatusDTO> GetDistributeStudyList(StudyStatusQueryDTO studyStatusQueryDto);
IEnumerable<RelationVisitDTO> GetRelationVisitList(decimal visitNum, string tpCode);
List<SubjectVisitStudyDTO> GetSubjectVisitStudyList(Guid trialId, Guid siteId, Guid subjectId, Guid subjectVisitId);
Task<bool> DicomAnonymize(Guid studyId,string optuserName);
}
}
@@ -0,0 +1,25 @@
using IRaCIS.Application.ViewModels;
using System;
using System.Collections.Generic;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface ITrialAttachmentService
{
IResponseOutput AddOrUpdateSpecification(TrialAttachmentCommand model,Guid userId);
IResponseOutput DeleteSpecification(Guid Id);
IEnumerable<AcquisitionSpecificationDTO> GetSpecificationList(
Guid trialId,string type);
///// <summary>
///// 获取采集规范列表
///// </summary>
///// <param name="param"></param>
///// <returns></returns>
//PageOutput<AcquisitionSpecificationDTO> GetSpecificationList(ImageAcquisitionSpecificationQueryDTO param);
}
}
@@ -0,0 +1,16 @@
using System.Collections.Generic;
using IRaCIS.Core.Application.Contracts.Trial.DTO;
namespace IRaCIS.Application.Interfaces
{
public interface ITrialRevenuesPriceVerificationService
{
//List<RevenusVerifyDTO> GetRevenuesVerifyResultList(RevenusVerifyQueryDTO param);
AnalysisVerifyResultDTO GetAnalysisVerifyList(RevenusVerifyQueryDTO param);
List<RevenusVerifyDTO> GetTrialRevenuesVerifyResultList(RevenusVerifyQueryDTO param);
}
}
@@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface ITrialService
{
bool TrialExpeditedChange { get; set; }
//查询
TrialDetailDTO GetTrialInfoAndLockState(Guid projectId);
int GetTrialExpeditedState(Guid trialId);//获取项目加急状态
int GetTrialMaxState(Guid trialId);
IResponseOutput ConfirmTrialVisitPlan(Guid trialId);
//添加项目基本信息
IResponseOutput AddOrUpdateTrial(TrialCommand addTrialModel, Guid userId);
//手动变更项目状态
IResponseOutput UpdateTrialStatus(Guid trialId, string statusStr);
//删除
IResponseOutput DeleteTrial(Guid trialId);
//获取分页项目 列表 多条件查询
PageOutput<TrialDetailDTO> GetTrialList(TrialQueryDTO searchModel, Guid userId);
List<Guid> GetTrialEnrollmentReviewerIds(Guid trialId);
PageOutput<TrialDetailDTO> GetReviewerTrialListByEnrollmentStatus(
TrialByStatusQueryDTO param);
PageOutput<TrialDetailDTO> GetTrialListByReviewer(ReviewerTrialQueryDTO searchModel, Guid userId);
IResponseOutput UpdateEnrollStatus(Guid trialId, int status);
}
}
@@ -0,0 +1,40 @@
using IRaCIS.Application.ViewModels;
using System;
using System.Collections.Generic;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IUserTrialService
{
IEnumerable<TrialSiteSelect> GetTrialSiteSelect(Guid trialId);
/// <summary>获取项目的维护人员列表 </summary>
PageOutput<UserTrialDTO> GetUserTrialList(UserTrialListQueryDTO param);
IEnumerable<UserTrialDTO> GetMaintenanceUserList(TrialMaintenanceQuery param);
/// <summary> 获取可供选择的运维人员列表</summary>
IEnumerable<UserSelectionModel> GetUserSelectionList(Guid userTypeId,Guid institutionId);
/// <summary> 添加或更新运维人员</summary>
IResponseOutput AddOrUpdateUserTrial(UserTrialCommand param);
/// <summary> 删除运维人员</summary>
IResponseOutput DeleteUserTrial(Guid param);
/// <summary>获取负责研究中心CRC列表</summary>
PageOutput<SiteStatDTO> GetSiteCRCList(SiteCrcQueryDTO param);
/// <summary> 添加或更新CRC人员</summary>
IResponseOutput AddOrUpdateSiteCRC(SiteCRCCommand param);
/// <summary> 删除CRC人员</summary>
IResponseOutput DeleteSiteCRC(Guid id);
}
}
@@ -0,0 +1,27 @@
using IRaCIS.Application.ViewModels;
using System;
using System.Collections.Generic;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
namespace IRaCIS.Application.Interfaces
{
public interface IVisitPlanService
{
/// <summary> 分页获取项目访视计划</summary>
PageOutput<VisitStageDTO> GetTrialVisitStageList(VisitPlanQueryDTO param);
IEnumerable<VisitStageSelectDTO> GetTrialVisitStageSelect(Guid trialId);
/// <summary> 根据项目Id,获取项目访视计划(不分页)</summary>
IEnumerable<VisitStageDTO> GetVisitStageList(Guid trialId);
/// <summary> 添加或更新运维人员</summary>
IResponseOutput AddOrUpdateVisitStage(VisitPlanCommand param);
/// <summary> 删除项目访视计划</summary>
IResponseOutput DeleteVisitStage(Guid id);
}
}
@@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
namespace IRaCIS.Application.ViewModels
{
public class ImageQACommand
{
public Guid TrialId { get; set; }
public Guid SiteId { get; set; }
public Guid StudyId { get; set; }
public Guid? ParentId { get; set; }
public String CommunicationRecord { get; set; }
}
public class ImageQaDTO: ImageQACommand
{
public Guid Id { get; set; }
public string UserName { get; set; }
}
public class StudyQAView
{
List<ImageQaDTO> ImageQAList =new List<ImageQaDTO>();
List<Guid> DictionayIds=new List<Guid>();
//List<string> Qa
}
}

Some files were not shown because too many files have changed in this diff Show More