Пример #1
0
        /// <summary>
        /// Returns the instance of the element if the procedure is completed, null otherwise
        /// </summary>
        protected virtual Element GetProcedureElement(ManualMeasurementItem proc)
        {
            Element result = null;

            if (proc != null)
            {
                var elements = (Session?.CurrentContext?.ActiveWorkView?.RootItem as Plane)?.GetAllElements();

                if (elements != null)
                {
                    var e = elements.Where(ei => ei.EditProcedure == proc.ProcName
                                           &&
                                           (
                                               (proc.BodySide.HasValue && ei.PatientsBodySide == proc.BodySide.Value) ||
                                               (!proc.BodySide.HasValue && ei.PatientsBodySide == Session.PatientBodySide) ||
                                               ei.PatientsBodySide == PatientsBodySide.None
                                           )).FirstOrDefault();

                    if (e != null && e.State == ElementState.Complete)
                    {
                        result = e;
                    }
                }
            }

            return(result);
        }
Пример #2
0
 /// <summary>
 /// Update session body side for specified measurement<param name="measurement"/>.
 /// </summary>
 protected void UpdateSessionBodySide(ManualMeasurementItem measurement)
 {
     if (measurement != null)
     {
         if (measurement.BodySide.HasValue)
         {
             Session.PatientBodySide = measurement.BodySide.Value;
         }
         else
         {
             Session.PatientBodySide = mPatientBodySide;
         }
     }
 }
Пример #3
0
 /// <summary>
 /// Adds the current <param name="curProc"/> procedure into the Ignore List in case it is not completed, otherwise removes it from the Ignore List.
 /// This method should be used when we skip the procedure (click in the 'Next' button until the procedure has completed)
 /// </summary>
 protected void AddProcedureToIgnoreList(ManualMeasurementItem curProc)
 {
     if (curProc != null)
     {
         var procElement = GetProcedureElement(curProc);
         if (procElement == null || procElement.State != ElementState.Complete)
         {
             if (!mMeasurementIgnoreList.Contains(curProc))
             {
                 mMeasurementIgnoreList.Add(curProc);
             }
         }
         else
         {
             mMeasurementIgnoreList.Remove(curProc);
         }
     }
 }
Пример #4
0
        /// <summary>
        /// Move to the next measurement if the current one is completed or added into <see cref="mMeasurementIgnoreList"/>.
        /// </summary>
        /// <param name="curMeasurementIndex">the index of the current measurement</param>
        /// <returns>True if the procedure is not completed, False otherwise</returns>
        private bool SkipIfCompleted(ref int curMeasurementIndex)
        {
            bool result = false;

            ManualMeasurementItem mItem = null;

            if (mSkipMeasurementIfCompleted)
            {
                while ((mItem = GetProcedureInfo(curMeasurementIndex)) != null)
                {
                    UpdateSessionBodySide(mItem);

                    var procElement = GetProcedureElement(mItem);
                    if ((procElement == null || procElement.State != ElementState.Complete) &&
                        !IsInIgnoreList(mItem))
                    {
                        result = true;
                        break;
                    }
                    else
                    {
                        curMeasurementIndex++;
                    }
                }
            }
            else
            {
                while ((mItem = GetProcedureInfo(curMeasurementIndex)) != null)
                {
                    var procElement = GetProcedureElement(mItem);
                    if (!IsInIgnoreList(mItem))
                    {
                        result = true;
                        break;
                    }
                    else
                    {
                        curMeasurementIndex++;
                    }
                }
            }

            return(result);
        }
Пример #5
0
        /// <summary>
        /// Starts a procedure
        /// </summary>
        /// <param name="procToStart">The procedure to start</param>
        protected virtual Procedure BeginProcedure(ManualMeasurementItem procToStart)
        {
            Procedure result = null;

            try
            {
                mbBeginProcInProgress = true;

                if (procToStart != null)
                {
                    UpdateSessionBodySide(procToStart);
                    result = Session.CurrentContext?.BeginProcedure(procToStart.ProcName, procToStart.Parameter, this, GetProcedureElement(procToStart));
                    mWizardView?.UpdateView();
                }
            }
            finally
            {
                mbBeginProcInProgress = false;
            }

            return(result);
        }
Пример #6
0
        /// <summary>
        /// Moving to the previous measurement until finding one that is not in the <see cref="mMeasurementIgnoreList"/> or until we reach the end of the list
        /// </summary>
        /// <param name="curMeasurementIndex">Index of the current procedure (updating inside the function)/param>
        /// <returns>True if a suitable procedure is found, False otherwise</returns>
        protected bool SkipPrev(ref int curMeasurementIndex)
        {
            bool result = false;

            ManualMeasurementItem mItem = null;

            while ((mItem = GetProcedureInfo(curMeasurementIndex)) != null)
            {
                UpdateSessionBodySide(mItem);

                var procElement = GetProcedureElement(mItem);
                if (!IsInIgnoreList(mItem))
                {
                    result = true;
                    break;
                }
                else
                {
                    curMeasurementIndex--;
                }
            }

            return(result);
        }
Пример #7
0
 /// <summary>
 /// Checks if the current <param name="item"/> procedure is in the Ignore List (<seealso cref="mMeasurementIgnoreList"/>)
 /// </summary>
 protected bool IsInIgnoreList(ManualMeasurementItem item)
 {
     return(IsInIgnoreList(item?.ProcName));
 }
Пример #8
0
 /// <summary>
 /// Checks if the procedure has been executed successfully before
 /// </summary>
 protected bool CheckIfExecuted(ManualMeasurementItem item)
 {
     return(GetProcedureElement(item) != null);
 }