/// <summary>
        /// Routine for failing a work queue uid record.
        /// </summary>
        /// <param name="uid">The WorkItemUid entry to fail.</param>
        /// <param name="retry">A boolean value indicating whether a retry will be attempted later.</param>
        protected WorkItemUid FailWorkItemUid(WorkItemUid uid, bool retry)
        {
            using (var context = new DataAccessContext(DataAccessContext.WorkItemMutex))
            {
                var broker = context.GetWorkItemUidBroker();
                var sop    = broker.GetWorkItemUid(uid.Oid);

                if (!sop.FailureCount.HasValue)
                {
                    sop.FailureCount = 1;
                }
                else
                {
                    sop.FailureCount = (byte)(sop.FailureCount.Value + 1);
                }

                if (sop.FailureCount > WorkItemServiceSettings.Default.RetryCount)
                {
                    sop.Failed = true;
                }

                context.Commit();
                return(sop);
            }
        }
        protected override void OnExecute(CommandProcessor theProcessor)
        {
            var broker = DataAccessContext.GetWorkItemUidBroker();

            _uid          = broker.GetWorkItemUid(_uid.Oid);
            _uid.Complete = true;
        }
Exemple #3
0
        /// <summary>
        /// Process a specific DICOM file which may be related to a <see cref="WorkItem"/> request.
        /// </summary>
        /// <remarks>
        /// <para>
        /// On success and if <see cref="uid"/> is set, the <see cref="WorkItemUid"/> field is marked as complete.  If processing fails,
        /// the FailureCount field is incremented for the <see cref="WorkItemUid"/>.
        /// </para>
        /// </remarks>
        /// <param name="studyXml">The <see cref="StudyXml"/> file to update with information from the file.</param>
        /// <param name="file">The file to process.</param>
        /// <param name="uid">An optional WorkQueueUid associated with the entry, that will be deleted upon success or failed on failure.</param>
        /// <exception cref="ApplicationException"/>
        /// <exception cref="DicomDataException"/>
        public void ProcessFile(DicomFile file, StudyXml studyXml, WorkItemUid uid)
        {
            Platform.CheckForNullReference(file, "file");
            Platform.CheckForNullReference(studyXml, "studyXml");
            var processFile = new ProcessorFile(file, uid);

            InsertBatch(new List <ProcessorFile> {
                processFile
            }, studyXml);
        }
        public InsertWorkItemCommand(WorkItemRequest request, WorkItemProgress progress, string studyInstanceUid, string seriesInstanceUid, string sopInstanceUid) : base("Insert a WorkItem")
        {
            _request               = request;
            _progress              = progress;
            _studyInstanceUid      = studyInstanceUid;
            ExpirationDelaySeconds = 60;

            WorkItemUid = new WorkItemUid
            {
                Complete          = false,
                FailureCount      = 0,
                SeriesInstanceUid = seriesInstanceUid,
                SopInstanceUid    = sopInstanceUid,
                Failed            = false
            };
        }
        public InsertWorkItemCommand(WorkItem item, string studyInstanceUid, string seriesInstanceUid, string sopInstanceUid)
            : base("Insert a WorkItem")
        {
            _request               = item.Request;
            _studyInstanceUid      = studyInstanceUid;
            ExpirationDelaySeconds = 60;

            WorkItem = item;

            WorkItemUid = new WorkItemUid
            {
                Complete          = false,
                FailureCount      = 0,
                WorkItemOid       = WorkItem.Oid,
                SeriesInstanceUid = seriesInstanceUid,
                SopInstanceUid    = sopInstanceUid,
                Failed            = false
            };
        }
Exemple #6
0
 private string GetFilePath(WorkItemUid sop)
 {
     return(String.IsNullOrEmpty(sop.File)
         ? Location.GetSopInstancePath(sop.SeriesInstanceUid, sop.SopInstanceUid)
         : Path.Combine(Location.StudyFolder, sop.File));
 }
 public CompleteWorkItemUidCommand(WorkItemUid uid) : base("Complete WorkItemUid")
 {
     _uid = uid;
 }
 /// <summary>
 /// Delete WorkItemUid entity.
 /// </summary>
 /// <param name="entity"></param>
 public void Delete(WorkItemUid entity)
 {
     this.Context.WorkItemUids.DeleteOnSubmit(entity);
 }
 /// <summary>
 /// Insert a WorkItemUid
 /// </summary>
 /// <param name="entity"></param>
 public void AddWorkItemUid(WorkItemUid entity)
 {
     Context.WorkItemUids.InsertOnSubmit(entity);
 }
Exemple #10
0
 public void Dispose()
 {
     File    = null;
     ItemUid = null;
 }
Exemple #11
0
 public ProcessorFile(string path, WorkItemUid uid)
 {
     FilePath = path;
     ItemUid  = uid;
 }
Exemple #12
0
 public ProcessorFile(DicomFile file, WorkItemUid uid)
 {
     File    = file;
     ItemUid = uid;
 }