public StaffDetail CreateStaffDetail(Staff staff, IPersistenceContext context)
        {
            PersonNameAssembler      assembler          = new PersonNameAssembler();
            StaffGroupAssembler      groupAssembler     = new StaffGroupAssembler();
            EmailAddressAssembler    emailAssembler     = new EmailAddressAssembler();
            TelephoneNumberAssembler telephoneAssembler = new TelephoneNumberAssembler();
            AddressAssembler         addressAssembler   = new AddressAssembler();

            return(new StaffDetail(
                       staff.GetRef(),
                       staff.Id,
                       EnumUtils.GetEnumValueInfo(staff.Type),
                       assembler.CreatePersonNameDetail(staff.Name),
                       EnumUtils.GetEnumValueInfo(staff.Sex, context),
                       staff.Title,
                       staff.LicenseNumber,
                       staff.BillingNumber,
                       CollectionUtils.Map <TelephoneNumber, TelephoneDetail>(
                           staff.TelephoneNumbers,
                           delegate(TelephoneNumber tn) { return telephoneAssembler.CreateTelephoneDetail(tn, context); }),
                       CollectionUtils.Map <Address, AddressDetail>(
                           staff.Addresses,
                           delegate(Address a) { return addressAssembler.CreateAddressDetail(a, context); }),
                       CollectionUtils.Map <EmailAddress, EmailAddressDetail>(
                           staff.EmailAddresses,
                           delegate(EmailAddress ea) { return emailAssembler.CreateEmailAddressDetail(ea, context); }),
                       CollectionUtils.Map <StaffGroup, StaffGroupSummary>(
                           staff.Groups,
                           delegate(StaffGroup group) { return groupAssembler.CreateSummary(group); }),
                       ExtendedPropertyUtils.Copy(staff.ExtendedProperties),
                       staff.Deactivated,
                       staff.UserName));
        }
Beispiel #2
0
        public VisitSummary CreateVisitSummary(Visit visit, IPersistenceContext context)
        {
            var patientProfileAssembler = new PatientProfileAssembler();
            var summary = new VisitSummary
            {
                VisitRef      = visit.GetRef(),
                Patient       = patientProfileAssembler.CreatePatientProfileSummary(visit.PatientProfile, context),
                VisitNumber   = CreateVisitNumberDetail(visit.VisitNumber),
                AdmissionType = EnumUtils.GetEnumValueInfo(visit.AdmissionType),
                PatientClass  = EnumUtils.GetEnumValueInfo(visit.PatientClass),
                PatientType   = EnumUtils.GetEnumValueInfo(visit.PatientType),
                Status        = EnumUtils.GetEnumValueInfo(visit.Status, context),
                AdmitTime     = visit.AdmitTime,
                DischargeTime = visit.DischargeTime
            };

            var facilityAssembler = new FacilityAssembler();

            summary.Facility = visit.Facility == null ? null : facilityAssembler.CreateFacilitySummary(visit.Facility);

            var locationAssembler = new LocationAssembler();

            summary.CurrentLocation = visit.CurrentLocation == null ? null : locationAssembler.CreateLocationSummary(visit.CurrentLocation);
            summary.CurrentRoom     = visit.CurrentRoom;
            summary.CurrentBed      = visit.CurrentBed;

            return(summary);
        }
        public ReportSummary CreateReportSummary(Procedure rp, Report report, IPersistenceContext context)
        {
            ReportSummary summary = new ReportSummary();

            ProcedureAssembler rpAssembler = new ProcedureAssembler();

            if (report != null)
            {
                summary.ReportRef    = report.GetRef();
                summary.ReportStatus = EnumUtils.GetEnumValueInfo(report.Status, context);

                // use all procedures attached to report
                summary.Procedures = CollectionUtils.Map <Procedure, ProcedureSummary>(report.Procedures,
                                                                                       delegate(Procedure p) { return(rpAssembler.CreateProcedureSummary(p, context)); });
            }
            else
            {
                // use supplied procedure
                summary.Procedures = CollectionUtils.Map <Procedure, ProcedureSummary>(new Procedure[] { rp },
                                                                                       delegate(Procedure p) { return(rpAssembler.CreateProcedureSummary(p, context)); });
            }

            Order order = rp.Order;

            summary.VisitNumber           = new VisitAssembler().CreateVisitNumberDetail(order.Visit.VisitNumber);
            summary.AccessionNumber       = order.AccessionNumber;
            summary.DiagnosticServiceName = order.DiagnosticService.Name;

            return(summary);
        }
        public ModalityPerformedProcedureStepDetail CreateModalityPerformedProcedureStepDetail(ModalityPerformedProcedureStep mpps, IPersistenceContext context)
        {
            var assembler = new ModalityProcedureStepAssembler();

            // include the details of each MPS in the mpps summary
            var mpsDetails = CollectionUtils.Map(mpps.Activities,
                                                 (ProcedureStep mps) => assembler.CreateProcedureStepSummary(mps.As <ModalityProcedureStep>(), context));

            var dicomSeriesAssembler = new DicomSeriesAssembler();
            var dicomSeries          = dicomSeriesAssembler.GetDicomSeriesDetails(mpps.DicomSeries);

            StaffSummary mppsPerformer = null;
            var          performer     = mpps.Performer as ProcedureStepPerformer;

            if (performer != null)
            {
                var staffAssembler = new StaffAssembler();
                mppsPerformer = staffAssembler.CreateStaffSummary(performer.Staff, context);
            }

            return(new ModalityPerformedProcedureStepDetail(
                       mpps.GetRef(),
                       EnumUtils.GetEnumValueInfo(mpps.State, context),
                       mpps.StartTime,
                       mpps.EndTime,
                       mppsPerformer,
                       mpsDetails,
                       dicomSeries,
                       ExtendedPropertyUtils.Copy(mpps.ExtendedProperties)));
        }
Beispiel #5
0
		public ProtocolDetail CreateProtocolDetail(Protocol protocol, IPersistenceContext context)
		{
			var detail = new ProtocolDetail();
			var staffAssembler = new StaffAssembler();

			detail.ProtocolRef = protocol.GetRef();
			detail.Author = protocol.Author != null ? staffAssembler.CreateStaffSummary(protocol.Author, context) : null;
			detail.Supervisor = protocol.Supervisor != null ? staffAssembler.CreateStaffSummary(protocol.Supervisor, context) : null;
			detail.Status = EnumUtils.GetEnumValueInfo(protocol.Status, context);
			detail.Urgency = EnumUtils.GetEnumValueInfo(protocol.Urgency);
			detail.RejectReason = EnumUtils.GetEnumValueInfo(protocol.RejectReason);

			detail.Codes = protocol.Codes == null
				? new List<ProtocolCodeSummary>()
				: CollectionUtils.Map<ProtocolCode, ProtocolCodeSummary>(protocol.Codes, CreateProtocolCodeSummary);

			var procedureAssembler = new ProcedureAssembler();
			detail.Procedures = protocol.Procedures == null
				? new List<ProcedureDetail>()
				: CollectionUtils.Map<Procedure, ProcedureDetail>(
					protocol.Procedures,
					procedure => procedureAssembler.CreateProcedureDetail(procedure, delegate { return false; }, false, context));

			return detail;
		}
        public ReportDetail CreateReportDetail(Report report, bool includeCancelledParts, IPersistenceContext context)
        {
            ReportDetail detail = new ReportDetail();

            detail.ReportRef    = report.GetRef();
            detail.ReportStatus = EnumUtils.GetEnumValueInfo(report.Status, context);

            ProcedureAssembler rpAssembler = new ProcedureAssembler();

            detail.Procedures = CollectionUtils.Map <Procedure, ProcedureDetail>(report.Procedures,
                                                                                 delegate(Procedure p)
            {
                return(rpAssembler.CreateProcedureDetail(
                           p,
                           delegate(ProcedureStep ps) { return ps.Is <ReportingProcedureStep>(); }, // only Reporting steps are relevant
                           false,                                                                   // exclude protocols
                           context));
            });

            List <ReportPartDetail> parts = CollectionUtils.Map <ReportPart, ReportPartDetail>(report.Parts,
                                                                                               delegate(ReportPart part) { return(CreateReportPartDetail(part, context)); });

            detail.Parts = includeCancelledParts ? parts :
                           CollectionUtils.Select(parts,
                                                  delegate(ReportPartDetail rpp)
            {
                return(rpp.Status.Code.Equals(ReportPartStatus.X.ToString()) == false);
            });

            return(detail);
        }
        public ExternalPractitionerContactPointDetail CreateExternalPractitionerContactPointDetail(ExternalPractitionerContactPoint contactPoint,
                                                                                                   IPersistenceContext context)
        {
            var telephoneNumberAssembler = new TelephoneNumberAssembler();
            var addressAssembler         = new AddressAssembler();
            var emailAddressAssembler    = new EmailAddressAssembler();

            var currentPhone        = contactPoint.CurrentPhoneNumber;
            var currentFax          = contactPoint.CurrentFaxNumber;
            var currentAddress      = contactPoint.CurrentAddress;
            var currentEmailAddress = contactPoint.CurrentEmailAddress;

            return(new ExternalPractitionerContactPointDetail(
                       contactPoint.GetRef(),
                       contactPoint.Name,
                       contactPoint.Description,
                       contactPoint.IsDefaultContactPoint,
                       EnumUtils.GetEnumValueInfo(contactPoint.PreferredResultCommunicationMode, context),
                       EnumUtils.GetEnumValueInfo(contactPoint.InformationAuthority),
                       CollectionUtils.Map(contactPoint.TelephoneNumbers, (TelephoneNumber phone) => telephoneNumberAssembler.CreateTelephoneDetail(phone, context)),
                       CollectionUtils.Map(contactPoint.Addresses, (Address address) => addressAssembler.CreateAddressDetail(address, context)),
                       CollectionUtils.Map(contactPoint.EmailAddresses, (EmailAddress emailAddress) => emailAddressAssembler.CreateEmailAddressDetail(emailAddress, context)),
                       currentPhone == null ? null : telephoneNumberAssembler.CreateTelephoneDetail(currentPhone, context),
                       currentFax == null ? null : telephoneNumberAssembler.CreateTelephoneDetail(currentFax, context),
                       currentAddress == null ? null : addressAssembler.CreateAddressDetail(currentAddress, context),
                       currentEmailAddress == null ? null : emailAddressAssembler.CreateEmailAddressDetail(currentEmailAddress, context),
                       CreateExternalPractitionerContactPointSummary(contactPoint.GetUltimateMergeDestination()),
                       contactPoint.IsMerged,
                       contactPoint.Deactivated));
        }
Beispiel #8
0
        public ResultRecipientDetail CreateResultRecipientDetail(ResultRecipient r, IPersistenceContext context)
        {
            ExternalPractitionerAssembler pracAssembler = new ExternalPractitionerAssembler();

            return(new ResultRecipientDetail(
                       pracAssembler.CreateExternalPractitionerSummary(r.PractitionerContactPoint.Practitioner, context),
                       pracAssembler.CreateExternalPractitionerContactPointDetail(r.PractitionerContactPoint, context),
                       EnumUtils.GetEnumValueInfo(r.PreferredCommunicationMode, context)));
        }
Beispiel #9
0
 public PatientNoteCategorySummary CreateNoteCategorySummary(PatientNoteCategory category, IPersistenceContext context)
 {
     return(new PatientNoteCategorySummary(
                category.GetRef(),
                category.Name,
                category.Description,
                EnumUtils.GetEnumValueInfo(category.Severity, context),
                category.Deactivated));
 }
Beispiel #10
0
        public ProtocolProcedureStepDetail CreateProtocolProcedureStepDetail(ProtocolProcedureStep step, IPersistenceContext context)
        {
            ProtocolProcedureStepDetail detail = new ProtocolProcedureStepDetail();

            detail.ProtocolProcedureStepRef = step.GetRef();
            detail.Status      = EnumUtils.GetEnumValueInfo(step.State, context);
            detail.ProtocolRef = step.Protocol.GetRef();

            return(detail);
        }
 public FacilityDetail CreateFacilityDetail(Facility facility)
 {
     return(new FacilityDetail(
                facility.GetRef(),
                facility.Code,
                facility.Name,
                facility.Description,
                EnumUtils.GetEnumValueInfo(facility.InformationAuthority),
                facility.Deactivated));
 }
Beispiel #12
0
        public CompositeIdentifierDetail CreateMrnDetail(PatientIdentifier mrn)
        {
            if (mrn == null)
            {
                return(new CompositeIdentifierDetail());
            }

            return(new CompositeIdentifierDetail(
                       mrn.Id,
                       EnumUtils.GetEnumValueInfo(mrn.AssigningAuthority)));
        }
Beispiel #13
0
        public AttachmentSummary CreatePatientAttachmentSummary(PatientAttachment attachment, IPersistenceContext context)
        {
            AttachedDocumentAssembler attachedDocAssembler = new AttachedDocumentAssembler();
            StaffAssembler            staffAssembler       = new StaffAssembler();

            return(new AttachmentSummary(
                       EnumUtils.GetEnumValueInfo(attachment.Category),
                       staffAssembler.CreateStaffSummary(attachment.AttachedBy, context),
                       attachment.AttachedTime,
                       attachedDocAssembler.CreateAttachedDocumentSummary(attachment.Document)));
        }
Beispiel #14
0
        private static VisitPractitionerDetail CreateVisitPractitionerDetail(VisitPractitioner vp, IPersistenceContext context)
        {
            var detail = new VisitPractitionerDetail
            {
                Practitioner = new ExternalPractitionerAssembler().CreateExternalPractitionerSummary(vp.Practitioner, context),
                Role         = EnumUtils.GetEnumValueInfo(vp.Role, context),
                StartTime    = vp.StartTime,
                EndTime      = vp.EndTime
            };

            return(detail);
        }
        public StaffSummary CreateStaffSummary(Staff staff, IPersistenceContext context)
        {
            if (staff == null)
            {
                return(null);
            }

            return(new StaffSummary(staff.GetRef(), staff.Id,
                                    EnumUtils.GetEnumValueInfo(staff.Type),
                                    new PersonNameAssembler().CreatePersonNameDetail(staff.Name),
                                    staff.Deactivated));
        }
        public HealthcardDetail CreateHealthcardDetail(HealthcardNumber healthcard)
        {
            if (healthcard == null)
            {
                return(new HealthcardDetail());
            }

            return(new HealthcardDetail(
                       healthcard.Id,
                       EnumUtils.GetEnumValueInfo(healthcard.AssigningAuthority),
                       healthcard.VersionCode,
                       healthcard.ExpiryDate));
        }
Beispiel #17
0
        public ModalityDetail CreateModalityDetail(Modality modality)
        {
            var facilityAssember = new FacilityAssembler();

            return(new ModalityDetail(
                       modality.GetRef(),
                       modality.Id,
                       modality.Name,
                       modality.Facility == null ? null : facilityAssember.CreateFacilitySummary(modality.Facility),
                       modality.AETitle,
                       EnumUtils.GetEnumValueInfo(modality.DicomModality),
                       modality.Deactivated));
        }
        public ContactPersonDetail CreateContactPersonDetail(ContactPerson cp)
        {
            ContactPersonDetail detail = new ContactPersonDetail();

            detail.Name                = cp.Name;
            detail.Address             = cp.Address;
            detail.HomePhoneNumber     = cp.HomePhone;
            detail.BusinessPhoneNumber = cp.BusinessPhone;
            detail.Relationship        = EnumUtils.GetEnumValueInfo(cp.Relationship);
            detail.Type                = EnumUtils.GetEnumValueInfo(cp.Type);

            return(detail);
        }
Beispiel #19
0
        private static VisitLocationDetail CreateVisitLocationDetail(VisitLocation vl, IPersistenceContext context)
        {
            var detail = new VisitLocationDetail
            {
                Location  = new LocationAssembler().CreateLocationSummary(vl.Location),
                Room      = vl.Room,
                Bed       = vl.Bed,
                Role      = EnumUtils.GetEnumValueInfo(vl.Role, context),
                StartTime = vl.StartTime,
                EndTime   = vl.EndTime
            };

            return(detail);
        }
        public ProcedureStepSummary CreateProcedureStepSummary(ProcedureStep ps, IPersistenceContext context)
        {
            var assembler         = new ProcedureAssembler();
            var modalityAssembler = new ModalityAssembler();

            return(new ProcedureStepSummary(
                       ps.GetRef(),
                       ps.Name,
                       EnumUtils.GetEnumValueInfo(ps.State, context),
                       ps.StartTime,
                       ps.EndTime,
                       ps.Is <ModalityProcedureStep>() ? modalityAssembler.CreateModalitySummary(ps.As <ModalityProcedureStep>().Modality) : null,
                       assembler.CreateProcedureSummary(ps.Procedure, context)));
        }
        public PatientAllergyDetail CreateAllergyDetail(Allergy allergy)
        {
            var nameAssembler = new PersonNameAssembler();

            return(new PatientAllergyDetail(
                       EnumUtils.GetEnumValueInfo(allergy.AllergenType),
                       allergy.AllergenDescription,
                       EnumUtils.GetEnumValueInfo(allergy.Severity),
                       allergy.Reaction,
                       EnumUtils.GetEnumValueInfo(allergy.SensitivityType),
                       allergy.OnsetTime,
                       allergy.ReportedTime,
                       nameAssembler.CreatePersonNameDetail(allergy.Reporter),
                       EnumUtils.GetEnumValueInfo(allergy.ReporterRelationshipType)));
        }
Beispiel #22
0
        public ProcedureSummary CreateProcedureSummary(Procedure rp, IPersistenceContext context)
        {
            var rptAssembler = new ProcedureTypeAssembler();
            var summary      = new ProcedureSummary
            {
                OrderRef           = rp.Order.GetRef(),
                ProcedureRef       = rp.GetRef(),
                ScheduledStartTime = rp.ScheduledStartTime,
                SchedulingCode     = EnumUtils.GetEnumValueInfo(rp.SchedulingCode),
                PerformingFacility = new FacilityAssembler().CreateFacilitySummary(rp.PerformingFacility),
                Type       = rptAssembler.CreateSummary(rp.Type),
                Laterality = EnumUtils.GetEnumValueInfo(rp.Laterality, context),
                Portable   = rp.Portable
            };

            return(summary);
        }
		public WorkQueueItemSummary CreateWorkQueueItemSummary(WorkQueueItem workQueueItem, IPersistenceContext context)
		{
			WorkQueueItemSummary summary = new WorkQueueItemSummary();

			summary.WorkQueueItemRef = workQueueItem.GetRef();
			summary.CreationTime = workQueueItem.CreationTime;
			summary.ScheduledTime = workQueueItem.ScheduledTime;
			summary.ExpirationTime = workQueueItem.ExpirationTime;
			summary.User = workQueueItem.User;
			summary.Type = workQueueItem.Type;
			summary.Status = EnumUtils.GetEnumValueInfo(workQueueItem.Status, context);
			summary.ProcessedTime = workQueueItem.ProcessedTime;
			summary.FailureCount = workQueueItem.FailureCount;
			summary.FailureDescription = workQueueItem.FailureDescription;

			return summary;
		}
        public PatientProfileSummary CreatePatientProfileSummary(PatientProfile profile, IPersistenceContext context)
        {
            var nameAssembler       = new PersonNameAssembler();
            var healthcardAssembler = new HealthcardAssembler();

            var summary = new PatientProfileSummary
            {
                Mrn               = new MrnAssembler().CreateMrnDetail(profile.Mrn),
                DateOfBirth       = profile.DateOfBirth,
                Healthcard        = healthcardAssembler.CreateHealthcardDetail(profile.Healthcard),
                Name              = nameAssembler.CreatePersonNameDetail(profile.Name),
                PatientRef        = profile.Patient.GetRef(),
                PatientProfileRef = profile.GetRef(),
                Sex               = EnumUtils.GetEnumValueInfo(profile.Sex, context)
            };

            return(summary);
        }
Beispiel #25
0
        public OrderSummary CreateOrderSummary(Order order, IPersistenceContext context)
        {
            var practitionerAssembler = new ExternalPractitionerAssembler();

            return(new OrderSummary
            {
                OrderRef = order.GetRef(),
                AccessionNumber = order.AccessionNumber,
                DiagnosticServiceName = order.DiagnosticService.Name,
                EnteredTime = order.EnteredTime,
                SchedulingRequestTime = order.SchedulingRequestTime,
                OrderingPractitioner = practitionerAssembler.CreateExternalPractitionerSummary(order.OrderingPractitioner, context),
                OrderingFacility = order.OrderingFacility.Name,
                ReasonForStudy = order.ReasonForStudy,
                OrderPriority = EnumUtils.GetEnumValueInfo(order.Priority, context),
                OrderStatus = EnumUtils.GetEnumValueInfo(order.Status, context)
            });
        }
		public WorkQueueItemDetail CreateWorkQueueItemDetail(WorkQueueItem workQueueItem, IPersistenceContext context)
		{
			WorkQueueItemDetail detail = new WorkQueueItemDetail();

			detail.WorkQueueItemRef = workQueueItem.GetRef();
			detail.CreationTime = workQueueItem.CreationTime;
			detail.ScheduledTime = workQueueItem.ScheduledTime;
			detail.ExpirationTime = workQueueItem.ExpirationTime;
			detail.User = workQueueItem.User;
			detail.Type = workQueueItem.Type;
			detail.Status = EnumUtils.GetEnumValueInfo(workQueueItem.Status, context);
			detail.ProcessedTime = workQueueItem.ProcessedTime;
			detail.FailureCount = workQueueItem.FailureCount;
			detail.FailureDescription = workQueueItem.FailureDescription;
			detail.ExtendedProperties = ExtendedPropertyUtils.Copy(workQueueItem.ExtendedProperties);

			return detail;
		}
Beispiel #27
0
        public VisitDetail CreateVisitDetail(Visit visit, IPersistenceContext context)
        {
            var patientProfileAssembler = new PatientProfileAssembler();
            var detail = new VisitDetail
            {
                VisitRef             = visit.GetRef(),
                Patient              = patientProfileAssembler.CreatePatientProfileSummary(visit.PatientProfile, context),
                VisitNumber          = CreateVisitNumberDetail(visit.VisitNumber),
                AdmissionType        = EnumUtils.GetEnumValueInfo(visit.AdmissionType),
                PatientClass         = EnumUtils.GetEnumValueInfo(visit.PatientClass),
                PatientType          = EnumUtils.GetEnumValueInfo(visit.PatientType),
                Status               = EnumUtils.GetEnumValueInfo(visit.Status, context),
                AdmitTime            = visit.AdmitTime,
                DischargeTime        = visit.DischargeTime,
                DischargeDisposition = visit.DischargeDisposition,
                Facility             = new FacilityAssembler().CreateFacilitySummary(visit.Facility),
                CurrentLocation      = visit.CurrentLocation == null ? null : new LocationAssembler().CreateLocationSummary(visit.CurrentLocation),
                CurrentRoom          = visit.CurrentRoom,
                CurrentBed           = visit.CurrentBed,
                Locations            = new List <VisitLocationDetail>(),
                PreadmitNumber       = visit.PreadmitNumber,
                VipIndicator         = visit.VipIndicator,
                ExtendedProperties   = ExtendedPropertyUtils.Copy(visit.ExtendedProperties)
            };

            foreach (var vl in visit.Locations)
            {
                detail.Locations.Add(CreateVisitLocationDetail(vl, context));
            }

            detail.Practitioners = new List <VisitPractitionerDetail>();
            foreach (var vp in visit.Practitioners)
            {
                detail.Practitioners.Add(CreateVisitPractitionerDetail(vp, context));
            }

            detail.AmbulatoryStatuses = new List <EnumValueInfo>();
            foreach (var ambulatoryStatus in visit.AmbulatoryStatuses)
            {
                detail.AmbulatoryStatuses.Add(EnumUtils.GetEnumValueInfo(ambulatoryStatus));
            }

            return(detail);
        }
Beispiel #28
0
        /// <summary>
        /// Creates procedure detail optionally including specified data.
        /// </summary>
        /// <param name="rp"></param>
        /// <param name="procedureStepFilter"></param>
        /// <param name="includeProtocol"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public ProcedureDetail CreateProcedureDetail(
            Procedure rp,
            Predicate <ProcedureStep> procedureStepFilter,
            bool includeProtocol,
            IPersistenceContext context)
        {
            var detail = new ProcedureDetail
            {
                ProcedureRef         = rp.GetRef(),
                Status               = EnumUtils.GetEnumValueInfo(rp.Status, context),
                Type                 = new ProcedureTypeAssembler().CreateSummary(rp.Type),
                ScheduledStartTime   = rp.ScheduledStartTime,
                SchedulingCode       = EnumUtils.GetEnumValueInfo(rp.SchedulingCode),
                StartTime            = rp.StartTime,
                EndTime              = rp.EndTime,
                CheckInTime          = rp.ProcedureCheckIn.CheckInTime,
                CheckOutTime         = rp.ProcedureCheckIn.CheckOutTime,
                PerformingFacility   = new FacilityAssembler().CreateFacilitySummary(rp.PerformingFacility),
                PerformingDepartment = rp.PerformingDepartment == null ? null : new DepartmentAssembler().CreateSummary(rp.PerformingDepartment, context),
                Laterality           = EnumUtils.GetEnumValueInfo(rp.Laterality, context),
                ImageAvailability    = EnumUtils.GetEnumValueInfo(rp.ImageAvailability, context),
                Portable             = rp.Portable,
                StudyInstanceUid     = rp.StudyInstanceUID
            };

            var includedSteps = CollectionUtils.Select(rp.GetWorkflowHistory(), procedureStepFilter);

            if (includedSteps.Count > 0)
            {
                var procedureStepAssembler = new ProcedureStepAssembler();
                detail.ProcedureSteps = CollectionUtils.Map(
                    includedSteps,
                    (ProcedureStep ps) => procedureStepAssembler.CreateProcedureStepDetail(ps, context));
            }

            // the Protocol may be null, if this procedure has not been protocolled
            if (includeProtocol && rp.ActiveProtocol != null)
            {
                var protocolAssembler = new ProtocolAssembler();
                detail.Protocol = protocolAssembler.CreateProtocolDetail(rp.ActiveProtocol, context);
            }

            return(detail);
        }
        public ProcedureStepDetail CreateProcedureStepDetail(ProcedureStep ps, IPersistenceContext context)
        {
            var staffAssembler    = new StaffAssembler();
            var modalityAssembler = new ModalityAssembler();

            return(new ProcedureStepDetail(
                       ps.GetRef(),
                       ps.Name,
                       ps.GetClass().Name,
                       ps.Is <ModalityProcedureStep>() ? ps.As <ModalityProcedureStep>().Description : null,
                       EnumUtils.GetEnumValueInfo(ps.State, context),
                       ps.CreationTime,
                       ps.Scheduling == null ? null : ps.Scheduling.StartTime,
                       ps.StartTime,
                       ps.EndTime,
                       ps.AssignedStaff == null ? null : staffAssembler.CreateStaffSummary(ps.AssignedStaff, context),
                       ps.PerformingStaff == null ? null : staffAssembler.CreateStaffSummary(ps.PerformingStaff, context),
                       ps.Is <ModalityProcedureStep>() ? modalityAssembler.CreateModalitySummary(ps.As <ModalityProcedureStep>().Modality) : null));
        }
        public ReportPartDetail CreateReportPartDetail(ReportPart reportPart, IPersistenceContext context)
        {
            StaffAssembler   staffAssembler = new StaffAssembler();
            ReportPartDetail summary        = new ReportPartDetail(
                reportPart.GetRef(),
                reportPart.Index,
                reportPart.Index > 0,
                EnumUtils.GetEnumValueInfo(reportPart.Status, context),
                reportPart.CreationTime,
                reportPart.PreliminaryTime,
                reportPart.CompletedTime,
                reportPart.CancelledTime,
                reportPart.Supervisor == null ? null : staffAssembler.CreateStaffSummary(reportPart.Supervisor, context),
                reportPart.Interpreter == null ? null : staffAssembler.CreateStaffSummary(reportPart.Interpreter, context),
                reportPart.Transcriber == null ? null : staffAssembler.CreateStaffSummary(reportPart.Transcriber, context),
                reportPart.TranscriptionSupervisor == null ? null : staffAssembler.CreateStaffSummary(reportPart.TranscriptionSupervisor, context),
                reportPart.Verifier == null ? null : staffAssembler.CreateStaffSummary(reportPart.Verifier, context),
                EnumUtils.GetEnumValueInfo(reportPart.TranscriptionRejectReason),
                ExtendedPropertyUtils.Copy(reportPart.ExtendedProperties));

            return(summary);
        }