public void ClassSetUp() { _factory = new MockRepository(MockBehavior.Loose); _reportsUnitOfWork = _factory.Create <IReportsUnitOfWork>(); _summariesUnitOfWork = _factory.Create <ISummariesUnitOfWork>(); _classicImagesRepository = _factory.Create <IClassicImagesRepository>(); _reportDerived = new ReportDerived(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), ModuleType.Incident, true); _case = new Domain.Summaries.Case.Case(Guid.NewGuid(), Guid.NewGuid(), "number"); _summaryDerived = new SummaryDerived(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), ModuleType.Incident, "number", _case); _reportAttachment = new ReportAttachment(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid()); _reportAttachment.FileName = FileName; _reportAttachment.Source = "InformRMSWeb"; _summaryAttachment = new SummaryAttachment(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid()); _summaryAttachment.FileName = FileName; _summaryAttachment.Source = "InformRMSWeb"; _reportsUnitOfWork.Setup(mock => mock.Find <ReportAttachment>(It.IsAny <Guid>(), It.IsAny <TrackingMode>(), It.IsAny <ThrowIf>())) .Returns(_reportAttachment); _reportsUnitOfWork.Setup(mock => mock.Find <Report>(It.IsAny <Guid>(), It.IsAny <TrackingMode>(), It.IsAny <ThrowIf>())) .Returns(_reportDerived); _summariesUnitOfWork.Setup(mock => mock.Find <Summary>(It.IsAny <Guid>(), It.IsAny <TrackingMode>(), It.IsAny <ThrowIf>())) .Returns(_summaryDerived); _summariesUnitOfWork.Setup(mock => mock.Find <SummaryAttachment>(It.IsAny <Guid>(), It.IsAny <TrackingMode>(), It.IsAny <ThrowIf>())) .Returns(_summaryAttachment); _attachmentQueryService = new AttachmentQueryService(_reportsUnitOfWork.Object, _summariesUnitOfWork.Object, _classicImagesRepository.Object, Mock.Of <ILog>(), Mock.Of <IServiceAuthorizationPolicy>(), Mock.Of <IServiceIdentityProvider>()); }
private void SetUpAttachmentToReport() { _reportsUnitOfWork.Setup(mock => mock.Find <Report>(It.IsAny <Guid>(), It.IsAny <TrackingMode>(), It.IsAny <ThrowIf>())).Returns(_report); var attachment = new ReportAttachment(DataEntryUnitTestFixture.IdentityId, DataEntryUnitTestFixture.AgencyDetails.Id, Guid.NewGuid()); attachment.Source = AttachmentDescription.OfficerReport.GetDescription(); _report.Attachments.Add(attachment); _attachmentId = attachment.Id; }
public async Task <ActionResult> Add(ReportAttachmentInsertDto attachment) { ReportAttachment newAttachment = _mapper.Map <ReportAttachment>(attachment); await _repository.Add(newAttachment); if (ValidOperation()) { } return(Ok()); }
public bool Delete(ReportAttachment model) { var containerName = ConfigUtil.ReportAttachmentStorageContainerName; var reportGuid = _reportRepository.GetReportGuid(model.CompanyId, model.ReportId); var blobName = (model.AreaId.HasValue) ? string.Format("{0}/{1}/{2}", reportGuid, model.AreaId, model.FileName) : string.Format("{0}/{1}", reportGuid, model.FileName); _cloudStorage.DeleteBlob(containerName, blobName); _reportAttachmentRepository.Delete(model.Id); return(true); }
public ReportAttachment Create(ReportAttachment model, Stream fileToBeUploaded) { var containerName = ConfigUtil.ReportAttachmentStorageContainerName; var reportGuid = _reportRepository.GetReportGuid(model.CompanyId, model.ReportId); var blobName = (model.AreaId.HasValue) ? string.Format("{0}/{1}/{2}", reportGuid, model.AreaId, model.FileName) : string.Format("{0}/{1}", reportGuid, model.FileName); model.FilePath = _cloudStorage.SaveBlob(containerName, blobName, fileToBeUploaded); var newReportAttachment = _reportAttachmentRepository.Create(model); return(newReportAttachment); }
public ActionResult AttachFile(int year, int month, Guid areaUniqueId, string fileDescription, HttpPostedFileBase newAttachment) { if (ModelState.IsValid) { if (newAttachment != null && newAttachment.ContentLength > 0) { ListHelper.InitializeAreas(CurrentUser); int?areaId = null; if (areaUniqueId != Guid.Empty) { areaId = ListHelper.GetAreas().SingleOrDefault(a => a.UniqueId == areaUniqueId).Id; } if (!CurrentUser.IsCompanyAdmin && !CurrentUser.AccessibleAreaIds.Contains(areaId.Value)) { throw new HttpException(400, "Bad Request"); } var reportDate = new DateTime(year, month, 1); var reportId = _reportManager.GetReportId(CompanyId, reportDate); if (!_reportAttachmentManager.IsFilenameUnique(new ReportAttachment { CompanyId = CompanyId, ReportId = reportId, FileName = newAttachment.FileName, AreaId = areaId })) { return(Json(new { success = false, error = "A file with this name already exists. Delete it before trying to replace it." })); } var attachment = new ReportAttachment { CompanyId = CompanyId, ReportId = reportId, FileName = newAttachment.FileName, Description = fileDescription, MimeType = newAttachment.ContentType, AreaId = areaId }; var model = _reportAttachmentManager.Create(attachment, newAttachment.InputStream); var html = ViewToString("_Attachment_Row", model); return(Json(new { success = true, html = html })); } } else { return(Json(new { success = false, error = "File attachment failed, try again." })); } return(Json(new { success = false, error = "File attachment failed, try again." })); }
public bool IsFilenameUnique(ReportAttachment reportAttachment) { var existingFile = _reportAttachmentRepository.GetList( new { CompanyId = reportAttachment.CompanyId, ReportId = reportAttachment.ReportId, FileName = reportAttachment.FileName, AreaId = reportAttachment.AreaId } ).FirstOrDefault(); return(existingFile == null); }
public void ClassSetUp() { _identityId = Guid.NewGuid(); var identityContext = new IdentityContext() { IdentityId = Guid.NewGuid() }; _authorizationPolicy = new Mock <IServiceAuthorizationPolicy>(); _authorizationPolicy.Setup(mock => mock.RequireViewPermissions(It.IsAny <IdentityContext>(), It.IsAny <Guid>(), It.IsAny <ModuleType>())); _identityProvider = new Mock <IServiceIdentityProvider>(); _identityProvider.Setup(x => x.GetPrincipalIdentifier()).Returns(identityContext.IdentityId); _identityProvider.Setup(x => x.GetIdentityContext()).Returns(identityContext); _factory = new MockRepository(MockBehavior.Loose); _reportDerived = new ReportDerived(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), ModuleType.Incident, true); _case = new Domain.Summaries.Case.Case(Guid.NewGuid(), Guid.NewGuid(), "number"); _summaryDerived = new SummaryDerived(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), ModuleType.Incident, "number", _case); _reportAttachment = new ReportAttachment(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid()); _summaryAttachment = new SummaryAttachment(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid()); //_eventDispatcher = _factory.Create<IEventDispatcher>(); _messageBusClient = _factory.Create <IMessageBusPublishClient>(); //MessageBus.SetInstance( //_eventDispatcher.Object, _messageBusClient.Object ); //_eventDispatcher.Setup( mock => mock.Publish( It.IsAny<object>() ) ); _reportsUnitOfWork = _factory.Create <IReportsUnitOfWork>(); _summariesUnitOfWork = _factory.Create <ISummariesUnitOfWork>(); _reportsUnitOfWork.Setup(mock => mock.Find <ReportAttachment>(It.IsAny <Guid>(), It.IsAny <TrackingMode>(), It.IsAny <ThrowIf>())) .Returns(_reportAttachment); _reportsUnitOfWork.Setup(mock => mock.Find <Report>(It.IsAny <Guid>(), It.IsAny <TrackingMode>(), It.IsAny <ThrowIf>())) .Returns(_reportDerived); _summariesUnitOfWork.Setup(mock => mock.Find <SummaryAttachment>(It.IsAny <Guid>(), It.IsAny <TrackingMode>(), It.IsAny <ThrowIf>())) .Returns(_summaryAttachment); _summariesUnitOfWork.Setup(mock => mock.Find <Summary>(It.IsAny <Guid>(), It.IsAny <TrackingMode>(), It.IsAny <ThrowIf>())) .Returns(_summaryDerived); _reportsUnitOfWork.Setup(x => x.PendingMessages).Returns(new System.Collections.Generic.List <TriTech.InformRMS.Infrastructure.Messaging.Contracts.Messages.Message>()); _summariesUnitOfWork.Setup(x => x.PendingMessages).Returns(new System.Collections.Generic.List <TriTech.InformRMS.Infrastructure.Messaging.Contracts.Messages.Message>()); _attachmentCommandService = new AttachmentCommandService( _reportsUnitOfWork.Object, _summariesUnitOfWork.Object, Mock.Of <ILog>(), _authorizationPolicy.Object, _identityProvider.Object); }
/// <summary> /// Add the PDF to Report and Summary /// </summary> public void AttachOfficerReport(Attachment attachment, Report report, Summary summary) { //todo: Enable MSDTC? var reportAttachment = new ReportAttachment(report.CreatedBy, report.AgencyId, attachment.Id); attachment.MapInto(reportAttachment); report.Attachments.Add(reportAttachment); _rptUoW.Commit(); var summaryAttachment = new SummaryAttachment(summary.CreatedBy, summary.AgencyId, attachment.Id); attachment.MapInto(summaryAttachment); summary.Attachments.Add(summaryAttachment); _summariesUnitOfWork.Commit(); // Raise a message indicating that the report has been attached to the summary. _summariesUnitOfWork.PendingMessages.Add(DataEntryMessages.EntityCreated(summaryAttachment, summary.ModuleType, DataEntryAggregateType.Summary)); _summariesUnitOfWork.PublishPendingMessages(); }
public Guid AddAttachmentToReport(Attachment attachment, Guid reportId) { // Load the Report. var report = _rptUoW.Find <Report>(reportId); // TODO: Check permissions once we determine module type. // Create the Attachment var entity = new ReportAttachment(IdentityId, report.AgencyId, attachment.Id); attachment.MapInto(entity); report.Attachments.Add(entity); _rptUoW.Commit(); // TODO: Hack until the Surrogate Keys are introduced in the Data layer. // TODO: Currently the Event messages will get the wrong Id unless they are raised AFTER the database commit // TODO: because the database may override the Guid the Domain is trying to use. _rptUoW.PendingMessages.Add(DataEntryMessages.EntityCreated(entity, report.ModuleType, DataEntryAggregateType.Report)); _rptUoW.PublishPendingMessages(); return(entity.Id); }
/// <summary> /// Create a PathologyTransformResult instance (containing a PathologyResultReport and a ReportAttachment instance) from a HL7 V2 pathology message. /// The PathologyTransformResult instance is then used to generate a CDA document. /// </summary> /// <param name="hl7GenericMessage">The HL7 V2 message to transform.</param> /// <param name="metadata">Mandatory information to supplement the transform.</param> /// <param name="reportData">Report data.</param> /// <returns></returns> internal PathologyTransformResult Transform(HL7GenericMessage hl7GenericMessage, PathologyMetadata metadata, byte[] reportData = null) { PathologyResultReport pathologyResultReport = PathologyResultReport.CreatePathologyResultReport(); // Include Logo pathologyResultReport.IncludeLogo = false; // Set Creation Time pathologyResultReport.DocumentCreationTime = GetResultsReportStatusChange(hl7GenericMessage); // Document Status pathologyResultReport.DocumentStatus = GetReportStatus(hl7GenericMessage); #region Setup and populate the CDA context model // CDA Context model var cdaContext = PathologyResultReport.CreateCDAContext(); // Document Id cdaContext.DocumentId = BaseCDAModel.CreateIdentifier(BaseCDAModel.CreateOid(), null); // Set Id cdaContext.SetId = BaseCDAModel.CreateIdentifier(BaseCDAModel.CreateGuid(), null); // CDA Context Version cdaContext.Version = "1"; // Legal Authenticator cdaContext.LegalAuthenticator = CreateLegalAuthenticator(hl7GenericMessage); // Custodian cdaContext.Custodian = BaseCDAModel.CreateCustodian(); ICustodian custodian = BaseCDAModel.CreateParticipantCustodian(); cdaContext.Custodian.Participant = custodian; pathologyResultReport.CDAContext = cdaContext; #endregion #region Setup and Populate the SCS Context model // SCS Context model pathologyResultReport.SCSContext = PathologyResultReport.CreateSCSContext(); // Author Health Care Provider pathologyResultReport.SCSContext.Author = CreateAuthor(hl7GenericMessage); // The Reporting Pathologist pathologyResultReport.SCSContext.ReportingPathologist = CreateReportingPathologist(hl7GenericMessage); // Order Details pathologyResultReport.SCSContext.OrderDetails = CreateOrderDetails(hl7GenericMessage); // Subject Of Care pathologyResultReport.SCSContext.SubjectOfCare = CreateSubjectOfCare(hl7GenericMessage); #endregion #region Setup and populate the SCS Content model // SCS Content model pathologyResultReport.SCSContent = PathologyResultReport.CreateSCSContent(); ReportAttachment reportAttachment = GetReportAttachment(hl7GenericMessage, reportData); // Pathology Test Result pathologyResultReport.SCSContent.PathologyTestResult = CreatePathologyTestResults(hl7GenericMessage); // Related Document pathologyResultReport.SCSContent.RelatedDocument = CreateRelatedDocument(hl7GenericMessage, reportAttachment); #endregion FillInAdditionalMetadata(pathologyResultReport, metadata); return(new PathologyTransformResult { PathologyResultReport = pathologyResultReport, Attachment = reportAttachment }); }
/// <summary> /// Create a DiagnosticImagingTransformResult instance (containing a DiagnosticImagingReport and a ReportAttachment instance) from a /// HL7 V2 diagnostic imaging message. The DiagnosticImagingTransformResult instance is then used to generate a CDA document. /// </summary> /// <param name="hl7GenericMessage">The HL7 V2 message to transform.</param> /// <param name="metadata">Mandatory information to supplement the transform.</param> /// <param name="reportData">Report data.</param> /// <returns></returns> internal DiagnosticImagingTransformResult Transform(HL7GenericMessage hl7GenericMessage, DiagnosticImagingMetadata metadata, byte[] reportData = null) { DiagnosticImagingReport diagnosticImagingReport = DiagnosticImagingReport.CreateDiagnosticImagingReport(); // Include Logo diagnosticImagingReport.IncludeLogo = false; // Set Creation Time diagnosticImagingReport.DocumentCreationTime = GetResultsReportStatusChange(hl7GenericMessage); // Document Status diagnosticImagingReport.DocumentStatus = GetReportStatus(hl7GenericMessage); #region Setup and populate the CDA context model // CDA Context model var cdaContext = DiagnosticImagingReport.CreateCDAContext(); // Document Id cdaContext.DocumentId = BaseCDAModel.CreateIdentifier(BaseCDAModel.CreateOid(), null); // Set Id cdaContext.SetId = BaseCDAModel.CreateIdentifier(BaseCDAModel.CreateGuid(), null); // CDA Context Version cdaContext.Version = "1"; // Legal Authenticator cdaContext.LegalAuthenticator = CreateLegalAuthenticator(hl7GenericMessage); // Custodian cdaContext.Custodian = BaseCDAModel.CreateCustodian(); ICustodian custodian = BaseCDAModel.CreateParticipantCustodian(); cdaContext.Custodian.Participant = custodian; diagnosticImagingReport.CDAContext = cdaContext; #endregion #region Setup and Populate the SCS Context model // SCS Context model diagnosticImagingReport.SCSContext = DiagnosticImagingReport.CreateSCSContext(); // Author Health Care Provider diagnosticImagingReport.SCSContext.Author = CreateAuthor(hl7GenericMessage); // The Reporting Radiologist diagnosticImagingReport.SCSContext.ReportingRadiologist = CreateReportingRadiologist(hl7GenericMessage); // Order Details diagnosticImagingReport.SCSContext.OrderDetails = CreateOrderDetails(hl7GenericMessage); // Subject Of Care diagnosticImagingReport.SCSContext.SubjectOfCare = CreateSubjectOfCare(hl7GenericMessage); #endregion #region Setup and populate the SCS Content model // SCS Content model diagnosticImagingReport.SCSContent = DiagnosticImagingReport.CreateSCSContent(); ReportAttachment reportAttachment = GetReportAttachment(hl7GenericMessage, reportData); // Imaging Examination Results diagnosticImagingReport.SCSContent.ImagingExaminationResults = CreateImagingExaminationResults(hl7GenericMessage); // Related Document diagnosticImagingReport.SCSContent.RelatedDocument = CreateRelatedDocument(hl7GenericMessage, reportAttachment); #endregion FillInAdditionalMetadata(diagnosticImagingReport, metadata); return(new DiagnosticImagingTransformResult { DiagnosticImagingReport = diagnosticImagingReport, Attachment = reportAttachment }); }
/// <summary> /// Create the related document from information in the HL7 V2 message. /// </summary> /// <param name="message">The HL7 V2 message.</param> /// <param name="reportAttachment">Report attachment.</param> /// <returns>RelatedDocument</returns> internal static RelatedDocument CreateRelatedDocument(HL7GenericMessage message, ReportAttachment reportAttachment) { RelatedDocument relatedDocument = PathologyResultReport.CreateRelatedDocument(); // Pathology PDF var attachmentPdf = BaseCDAModel.CreateExternalData(); attachmentPdf.ExternalDataMediaType = reportAttachment.MediaType; attachmentPdf.ByteArrayInput = new ByteArrayInput { ByteArray = reportAttachment.Data, FileName = reportAttachment.Filename }; relatedDocument.ExaminationResultRepresentation = attachmentPdf; DocumentDetails documentDetails = BaseCDAModel.CreateDocumentDetails(); // Report Date documentDetails.ReportDate = GetReportDate(message); // Result Status string status = GetRelatedDocumentStatus(message); Hl7V3ResultStatus resultStatus; if (!EnumHelper.TryGetEnumValue <Hl7V3ResultStatus, NameAttribute>(attribute => attribute.Code == status, out resultStatus)) { throw new ArgumentException("No matching Hl7V3ResultStatus value found"); } documentDetails.ReportStatus = BaseCDAModel.CreateResultStatus(resultStatus); // Report Name documentDetails.ReportDescription = GetReportName(message); relatedDocument.DocumentDetails = documentDetails; return(relatedDocument); }