public DicomSeriesSynchronizeHelper(DicomSeriesAssembler assembler, ModalityPerformedProcedureStep mpps, IPersistenceContext context) : base(true, true) { _assembler = assembler; _mpps = mpps; _context = context; }
private DicomSeries CreateDicomSeries(DicomSeriesDetail detail, ModalityPerformedProcedureStep mpps) { DicomSeries newSeries = new DicomSeries(); newSeries.ModalityPerformedProcedureStep = mpps; UpdateDicomSeries(newSeries, detail); return(newSeries); }
private static int QueryDocumentation(Order order, out bool hasIncompleteDicomSeries) { List <DicomSeries> dicomSeries = new List <DicomSeries>(); bool isMissingDicomSeries = false; // Find all the DicomSeries for this order CollectionUtils.ForEach(order.Procedures, delegate(Procedure procedure) { CollectionUtils.ForEach(procedure.ModalityProcedureSteps, delegate(ModalityProcedureStep mps) { List <PerformedStep> mppsList = CollectionUtils.Select(mps.PerformedSteps, delegate(PerformedStep ps) { return(ps.Is <ModalityPerformedProcedureStep>()); }); if (mppsList.Count == 0) { isMissingDicomSeries = true; } else { CollectionUtils.ForEach(mps.PerformedSteps, delegate(PerformedStep ps) { if (ps.Is <ModalityPerformedProcedureStep>()) { ModalityPerformedProcedureStep mpps = ps.As <ModalityPerformedProcedureStep>(); if (mpps.DicomSeries == null || mpps.DicomSeries.Count == 0) { isMissingDicomSeries = true; } else { dicomSeries.AddRange(mpps.DicomSeries); } } }); } }); }); // Sum the number of instances for all DicomSeries hasIncompleteDicomSeries = isMissingDicomSeries; int numberOfInstancesFromDocumentation = CollectionUtils.Reduce <DicomSeries, int>( dicomSeries, 0, delegate(DicomSeries series, int totalInstances) { return(totalInstances + series.NumberOfSeriesRelatedInstances); }); return(numberOfInstancesFromDocumentation); }
private void LoadTree() { Type type = typeof(ModalityPerformedProcedureStep); TreeNode node = new TreeNode("Modality Performed Procedure Step"); ModalityPerformedProcedureStep mpps = new ModalityPerformedProcedureStep(); mpps.ScheduledStepAttributeSequence.Add(new ScheduledStepAttribute()); mpps.ScheduledStepAttributeSequence[0].RequestedProcedureCodeSequence.Add(new CodeSequence()); BuildNode(mpps, type, ref node); treeViewDataset.Nodes.Add(node); treeViewDataset.ExpandAll(); RemoveNodeCheckBox(node); BuildDataSet(); }
public void Execute(ModalityPerformedProcedureStep mpps, DateTime?time, IWorkflow workflow) { TerminatePerformedProcedureStep(mpps, time); var oneMps = CollectionUtils.FirstElement <ProcedureStep>(mpps.Activities).As <ModalityProcedureStep>(); var order = oneMps.Procedure.Order; // try to complete any mps that have all mpps completed foreach (var rp in order.Procedures) { if (rp.Status != ProcedureStatus.IP) { continue; } TryAutoTerminateProcedureSteps(rp, time, workflow); TryAutoCheckOut(rp, time); } }
private void BuildDataSet() { using (DicomDataSet ds = new DicomDataSet()) { ModalityPerformedProcedureStep mpps = new ModalityPerformedProcedureStep(); ds.Initialize(DicomClassType.Undefined, DicomDataSetInitializeType.ExplicitVRLittleEndian); ds.Set(new BeforeAddTagDelegate(OnBeforeAdd), mpps); treeViewMPPSDataset.BeginUpdate(); treeViewMPPSDataset.Nodes.Clear(); try { FillTree(ds); } finally { treeViewMPPSDataset.EndUpdate(); } } }
public ModalityPerformedProcedureStep Execute(IList <ModalityProcedureStep> modalitySteps, DateTime?startTime, Staff technologist, IWorkflow workflow) { if (modalitySteps.Count == 0) { throw new WorkflowException("At least one procedure step is required."); } // validate that each mps being started is being performed on the same modality if (!CollectionUtils.TrueForAll(modalitySteps, step => step.Modality.Equals(modalitySteps[0].Modality))) { throw new WorkflowException("Procedure steps cannot be started together because they are not on the same modality."); } // create an mpps var mpps = new ModalityPerformedProcedureStep(technologist, startTime); workflow.AddEntity(mpps); foreach (var mps in modalitySteps) { mps.Start(technologist, startTime); mps.AddPerformedStep(mpps); //note: this feature was disabled by request (see #2138) - they want to enforce explicit check-in //AutoCheckIn(mps.Procedure, startTime); } // Create Documentation Step for each RP that has an MPS started by this service call foreach (var step in modalitySteps) { if (step.Procedure.DocumentationProcedureStep == null) { ProcedureStep docStep = new DocumentationProcedureStep(step.Procedure); docStep.Start(technologist, startTime); workflow.AddEntity(docStep); } } return(mpps); }
public ModalityPerformedProcedureStep Execute(IList<ModalityProcedureStep> modalitySteps, DateTime? startTime, Staff technologist, IWorkflow workflow) { if (modalitySteps.Count == 0) throw new WorkflowException("At least one procedure step is required."); // validate that each mps being started is being performed on the same modality if (!CollectionUtils.TrueForAll(modalitySteps, step => step.Modality.Equals(modalitySteps[0].Modality))) { throw new WorkflowException("Procedure steps cannot be started together because they are not on the same modality."); } // create an mpps var mpps = new ModalityPerformedProcedureStep(technologist, startTime); workflow.AddEntity(mpps); foreach (var mps in modalitySteps) { mps.Start(technologist, startTime); mps.AddPerformedStep(mpps); //note: this feature was disabled by request (see #2138) - they want to enforce explicit check-in //AutoCheckIn(mps.Procedure, startTime); } // Create Documentation Step for each RP that has an MPS started by this service call foreach (var step in modalitySteps) { if (step.Procedure.DocumentationProcedureStep == null) { ProcedureStep docStep = new DocumentationProcedureStep(step.Procedure); docStep.Start(technologist, startTime); workflow.AddEntity(docStep); } } return mpps; }
public void SynchronizeDicomSeries(ModalityPerformedProcedureStep mpps, IList <DicomSeriesDetail> sourceList, IPersistenceContext context) { DicomSeriesSynchronizeHelper synchronizer = new DicomSeriesSynchronizeHelper(this, mpps, context); synchronizer.Synchronize(mpps.DicomSeries, sourceList); }
protected override void TerminatePerformedProcedureStep(ModalityPerformedProcedureStep mpps, DateTime?time) { mpps.Discontinue(time); }
protected abstract void TerminatePerformedProcedureStep(ModalityPerformedProcedureStep mpps, DateTime?time);
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))); }
protected override void TerminatePerformedProcedureStep(ModalityPerformedProcedureStep mpps, DateTime? time) { mpps.Discontinue(time); }
protected abstract void TerminatePerformedProcedureStep(ModalityPerformedProcedureStep mpps, DateTime? time);
public void Execute(ModalityPerformedProcedureStep mpps, DateTime? time, IWorkflow workflow) { TerminatePerformedProcedureStep(mpps, time); var oneMps = CollectionUtils.FirstElement<ProcedureStep>(mpps.Activities).As<ModalityProcedureStep>(); var order = oneMps.Procedure.Order; // try to complete any mps that have all mpps completed foreach (var rp in order.Procedures) { if (rp.Status != ProcedureStatus.IP) continue; TryAutoTerminateProcedureSteps(rp, time, workflow); TryAutoCheckOut(rp, time); } }