/// <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 ProtocolEditorProcedurePlanSummaryTableItem(ProcedureDetail _rpDetail, ProtocolDetail _protocolDetail) { this._rpDetail = _rpDetail; this._protocolDetail = _protocolDetail; }
/// <summary> /// Formats the procedure name, portable and laterality similar to "Name (Portable/Laterality)". /// Name is formatted according to the default person name format as specified in <see cref="FormatSettings"/> /// </summary> /// <param name="p"></param> /// <returns></returns> public static string Format(ProcedureDetail p) { return Format(p.Type.Name, p.Portable, p.Laterality, FormatSettings.Default.ProcedurePortableLateralityDefaultFormat); }