Exemplo n.º 1
0
        public void OnRequestReceived(NActionRequest req, Association asc)
        {
            //Find it
            var txId   = req.Data.GetSelector().TransactionUID.Data;
            var found  = new List <DICOMObject>();
            var toFind = req.Data.GetSelector().ReferencedSOPSequence;

            foreach (var item in toFind.Items)
            {
                var sopClass    = item.GetSelector().ReferencedSOPClassUID.Data;
                var sopInstance = item.GetSelector().ReferencedSOPInstanceUID.Data;
                //If found, add to found list
                if (Find(sopClass, sopInstance))
                {
                    found.Add(item);
                }
            }
            //Send N-EVENT-REPORT-RQ
            var nReq = new NEventReportRequest();

            nReq.AffectedSOPClassUID    = req.RequestedSOPClassUID;
            nReq.MessageID              = req.MessageID;
            nReq.AffectedSOPInstanceUID = req.RequestedSOPInstanceUID;
            nReq.EventTypeId            = req.ActionTypeID;
            var data = new DICOMObject(DICOMForge.TransactionUID(txId),
                                       DICOMForge.ReferencedSOPSequence(found.ToArray()));

            nReq.Data = data;
            asc.OutboundMessages.Enqueue(nReq);
        }
Exemplo n.º 2
0
        public void OnRequestReceived(NEventReportRequest req, Association asc)
        {
            asc.Logger.Log("<-- DIMSE" + req.GetLogString());
            req.LogData(asc);
            asc.LastActive = DateTime.Now;
            var resp = new NEventReportResponse(req, Status.SUCCESS);

            _dms.RaiseDIMSERequestReceived(req, asc);
            PDataMessenger.Send(resp, asc);
        }
Exemplo n.º 3
0
        public List <bool> VerifyStorage(Dictionary <string, string> dictionary, int msTimeout = 10000)
        {
            var results = new List <bool>();
            var request = CreateRequest(dictionary);

            request.MessageID = _messageId;
            _messageId       += 3;
            System.DateTime lastContact = System.DateTime.Now;

            var mr = new ManualResetEvent(false);
            NEventReportRequest req = null;
            var cr = new Services.DIMSEService.DIMSERequestHandler <NEventReportRequest>((res, asc) =>
            {
                lastContact  = System.DateTime.Now;
                var origTxId = request.Data.GetSelector().TransactionUID.Data;
                if (res.Data.GetSelector().TransactionUID.Data == origTxId)
                {
                    var refSeq = res.Data.GetSelector().ReferencedSOPSequence;
                    Dictionary <string, string> refSeqDictionary = new Dictionary <string, string>();
                    refSeq.Items.ToList().ForEach(i =>
                    {
                        refSeqDictionary.Add(i.GetSelector().ReferencedSOPClassUID.Data,
                                             i.GetSelector().ReferencedSOPInstanceUID.Data);
                    });
                    foreach (var entry in dictionary)
                    {
                        results.Add(refSeqDictionary.Contains(entry));
                    }
                }
                req = res;
                mr.Set();
            });

            _scu.DIMSEService.Subscribe(cr);
            _scu.SendMessage(request, callingEntity);
            mr.WaitOne(msTimeout);
            _scu.DIMSEService.Unsubscribe(cr);
            return(results);
        }