添加项目文件。
This commit is contained in:
@@ -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
Reference in New Issue
Block a user