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); }
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); }
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); }