本文整理汇总了C#中ClearCanvas.Dicom.Network.DicomServer.SendCStoreResponse方法的典型用法代码示例。如果您正苦于以下问题:C# DicomServer.SendCStoreResponse方法的具体用法?C# DicomServer.SendCStoreResponse怎么用?C# DicomServer.SendCStoreResponse使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ClearCanvas.Dicom.Network.DicomServer
的用法示例。
在下文中一共展示了DicomServer.SendCStoreResponse方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: OnReceiveRequestMessage
public void OnReceiveRequestMessage(DicomServer server, ServerAssociationParameters association, byte presentationID, DicomMessage message)
{
if (_type == TestTypes.SendMR)
{
DicomAttributeCollection testSet = new DicomAttributeCollection();
_test.SetupMR(testSet);
bool same = testSet.Equals(message.DataSet);
string studyId = message.DataSet[DicomTags.StudyId].GetString(0, "");
Assert.AreEqual(studyId, "1933");
DicomUid sopInstanceUid;
bool ok = message.DataSet[DicomTags.SopInstanceUid].TryGetUid(0, out sopInstanceUid);
if (!ok)
{
server.SendAssociateAbort(DicomAbortSource.ServiceUser, DicomAbortReason.NotSpecified);
return;
}
server.SendCStoreResponse(presentationID, message.MessageId, sopInstanceUid.UID, DicomStatuses.Success);
}
else if (_type == TestTypes.Receive)
{
DicomUid sopInstanceUid;
bool ok = message.DataSet[DicomTags.SopInstanceUid].TryGetUid(0, out sopInstanceUid);
if (!ok)
{
server.SendAssociateAbort(DicomAbortSource.ServiceUser, DicomAbortReason.InvalidPDUParameter);
return;
}
server.SendCStoreResponse(presentationID, message.MessageId, sopInstanceUid.UID, DicomStatuses.Success);
}
else
{
Platform.Log(LogLevel.Error,"Unexpected test type mode");
server.SendAssociateAbort(DicomAbortSource.ServiceUser, DicomAbortReason.InvalidPDUParameter);
return;
}
}
示例2: CompleteStream
public bool CompleteStream(DicomServer server, ServerAssociationParameters assoc, byte presentationId, DicomMessage message)
{
DicomProcessingResult result;
try
{
if (_fileStream != null)
{
_fileStream.Flush(true);
_fileStream.Close();
_fileStream.Dispose();
_fileStream = null;
}
var importer = new SopInstanceImporter(_importContext);
result = importer.ImportFile(message, _sourceFilename);
if (result.Successful)
{
if (!String.IsNullOrEmpty(result.AccessionNumber))
Platform.Log(LogLevel.Info, "Received SOP Instance {0} from {1} to {2} (A#:{3} StudyUid:{4})",
result.SopInstanceUid, assoc.CallingAE, assoc.CalledAE, result.AccessionNumber,
result.StudyInstanceUid);
else
Platform.Log(LogLevel.Info, "Received SOP Instance {0} from {1} to {2} (StudyUid:{3})",
result.SopInstanceUid, assoc.CallingAE, assoc.CalledAE,
result.StudyInstanceUid);
}
}
catch (Exception e)
{
result = new DicomProcessingResult { DicomStatus = DicomStatuses.ProcessingFailure, ErrorMessage = e.Message };
}
if (!result.Successful)
{
Platform.Log(LogLevel.Warn, "Failure importing sop: {0}", result.ErrorMessage);
}
CleanupDirectory();
server.SendCStoreResponse(presentationId, message.MessageId, message.AffectedSopInstanceUid, result.DicomStatus);
return true;
}
示例3: StringBuilder
//private static void WriteLog(string s)
//{
// File.AppendAllText("C:\\_store.txt", string.Format("{0}\n",s));
//}
/// <summary>
/// Hàm xử lý khi nhận xong dữ liệu Dicom
/// </summary>
/// <param name="server"></param>
/// <param name="association"></param>
/// <param name="presentationId"></param>
/// <param name="message"></param>
void IDicomServerHandler.OnReceiveRequestMessage(DicomServer server, ServerAssociationParameters association,
byte presentationId, DicomMessage message)
{
//wc.Stop();
//WriteLog(wc.ElapsedMilliseconds.ToString());
if (message.CommandField == DicomCommandField.CEchoRequest)
{
server.SendCEchoResponse(presentationId, message.MessageId, DicomStatuses.Success);
return;
}
String studyInstanceUid = null;
String seriesInstanceUid = null;
DicomUid sopInstanceUid;
//String patientName = null;
String sex = null;
sex = message.DataSet[DicomTags.PatientsSex].GetString(0, "O");
bool ok = message.DataSet[DicomTags.SopInstanceUid].TryGetUid(0, out sopInstanceUid);
if (ok) ok = message.DataSet[DicomTags.SeriesInstanceUid].TryGetString(0, out seriesInstanceUid);
if (ok) ok = message.DataSet[DicomTags.StudyInstanceUid].TryGetString(0, out studyInstanceUid);
//if (ok) ok = message.DataSet[DicomTags.PatientsName].TryGetString(0, out patientName);
if (!ok)
{
VBLogger.LogError("Unable to retrieve UIDs from request message, sending failure status.");
server.SendCStoreResponse(presentationId, message.MessageId, sopInstanceUid.UID,
DicomStatuses.ProcessingFailure);
return;
}
TransferSyntax syntax = association.GetPresentationContext(presentationId).AcceptedTransferSyntax;
server.SendCStoreResponse(presentationId, message.MessageId,
sopInstanceUid.UID,
DicomStatuses.Success);
string pathImage = "";
var path = new StringBuilder();
path.AppendFormat("{0}{1}{2}{3}{4}", StorageLocation, Path.DirectorySeparatorChar,
studyInstanceUid, Path.DirectorySeparatorChar, seriesInstanceUid);
try
{
// Save File
if (!Directory.Exists(StorageLocation))
Directory.CreateDirectory(StorageLocation);
if (!Directory.Exists(path.ToString()))
Directory.CreateDirectory(path.ToString());
path.AppendFormat("{0}{1}.dcm", Path.DirectorySeparatorChar, sopInstanceUid.UID);
var dicomFile = new DicomFile(message, path.ToString())
{
TransferSyntaxUid = syntax.UidString,
MediaStorageSopInstanceUid = sopInstanceUid.UID,
ImplementationClassUid = DicomImplementation.ClassUID.UID,
ImplementationVersionName = DicomImplementation.Version,
SourceApplicationEntityTitle = association.CallingAE,
MediaStorageSopClassUid = message.SopClass.Uid
};
dicomFile.Save(DicomWriteOptions.None);
//WriteLog(string.Format("Save File OK!: {0}", wc.ElapsedMilliseconds));
var pd = new DicomUncompressedPixelData(message.DataSet);
pathImage = path.ToString();
byte[] thePixels = pd.GetFrame(0);
var pixData = new UInt16[thePixels.Length/2];
int h = dicomFile.DataSet[DicomTags.Rows].GetUInt16(0, 0);
int w = dicomFile.DataSet[DicomTags.Columns].GetUInt16(0, 0);
UInt16 max = 0, min = UInt16.MaxValue;
//min = pd.ge
unsafe
{
fixed (byte* pixPointer = thePixels)
{
var pP = (UInt16*) pixPointer;
for (int i = 0; i < w*h; ++i)
{
pixData[i] = *pP;
if (min > pixData[i]) min = pixData[i];
if (max < pixData[i]) max = pixData[i];
pP++;
}
}
}
int indexOf = pathImage.LastIndexOf(".dcm");
pathImage = pathImage.Substring(0, indexOf);
//.........这里部分代码省略.........
示例4: StringBuilder
void IDicomServerHandler.OnReceiveRequestMessage(DicomServer server, ServerAssociationParameters association, byte presentationID, DicomMessage message)
{
if (message.CommandField == DicomCommandField.CEchoRequest)
{
server.SendCEchoResponse(presentationID, message.MessageId, DicomStatuses.Success);
return;
}
String studyInstanceUid = null;
String seriesInstanceUid = null;
DicomUid sopInstanceUid;
String patientName = null;
bool ok = message.DataSet[DicomTags.SopInstanceUid].TryGetUid(0, out sopInstanceUid);
if (ok) ok = message.DataSet[DicomTags.SeriesInstanceUid].TryGetString(0, out seriesInstanceUid);
if (ok) ok = message.DataSet[DicomTags.StudyInstanceUid].TryGetString(0, out studyInstanceUid);
if (ok) ok = message.DataSet[DicomTags.PatientsName].TryGetString(0, out patientName);
if (!ok)
{
Platform.Log(LogLevel.Error, "Unable to retrieve UIDs from request message, sending failure status.");
server.SendCStoreResponse(presentationID, message.MessageId, sopInstanceUid.UID,
DicomStatuses.ProcessingFailure);
return;
}
TransferSyntax syntax = association.GetPresentationContext(presentationID).AcceptedTransferSyntax;
if (List)
{
Platform.Log(LogLevel.Info, message.Dump());
}
if (Bitbucket)
{
Platform.Log(LogLevel.Info, "Received SOP Instance: {0} for patient {1} in syntax {2}", sopInstanceUid,
patientName, syntax.Name);
server.SendCStoreResponse(presentationID, message.MessageId,
sopInstanceUid.UID,
DicomStatuses.Success);
return;
}
if (!Directory.Exists(StorageLocation))
Directory.CreateDirectory(StorageLocation);
var path = new StringBuilder();
path.AppendFormat("{0}{1}{2}{3}{4}", StorageLocation, Path.DirectorySeparatorChar,
studyInstanceUid, Path.DirectorySeparatorChar,seriesInstanceUid);
Directory.CreateDirectory(path.ToString());
path.AppendFormat("{0}{1}.dcm", Path.DirectorySeparatorChar, sopInstanceUid.UID);
var dicomFile = new DicomFile(message, path.ToString())
{
TransferSyntaxUid = syntax.UidString,
MediaStorageSopInstanceUid = sopInstanceUid.UID,
ImplementationClassUid = DicomImplementation.ClassUID.UID,
ImplementationVersionName = DicomImplementation.Version,
SourceApplicationEntityTitle = association.CallingAE,
MediaStorageSopClassUid = message.SopClass.Uid
};
dicomFile.Save(DicomWriteOptions.None);
Platform.Log(LogLevel.Info, "Received SOP Instance: {0} for patient {1} in syntax {2}", sopInstanceUid,
patientName, syntax.Name);
server.SendCStoreResponse(presentationID, message.MessageId,
sopInstanceUid.UID,
DicomStatuses.Success);
}
示例5: OnReceiveRequest
public override bool OnReceiveRequest(DicomServer server, ServerAssociationParameters association, byte presentationID, DicomMessage message)
{
try
{
SopInstanceImporterContext context = new SopInstanceImporterContext(
String.Format("{0}_{1}", association.CallingAE, association.TimeStamp.ToString("yyyyMMddhhmmss")),
association.CallingAE, association.CalledAE);
SopInstanceImporter importer = new SopInstanceImporter(context);
DicomProcessingResult result = importer.Import(message);
if (result.Successful)
{
if (!String.IsNullOrEmpty(result.AccessionNumber))
Platform.Log(LogLevel.Info, "Received SOP Instance {0} from {1} to {2} (A#:{3} StudyUid:{4})",
result.SopInstanceUid, association.CallingAE, association.CalledAE, result.AccessionNumber,
result.StudyInstanceUid);
else
Platform.Log(LogLevel.Info, "Received SOP Instance {0} from {1} to {2} (StudyUid:{3})",
result.SopInstanceUid, association.CallingAE, association.CalledAE,
result.StudyInstanceUid);
}
else
Platform.Log(LogLevel.Warn, "Failure importing sop: {0}", result.ErrorMessage);
server.SendCStoreResponse(presentationID, message.MessageId, message.AffectedSopInstanceUid, result.DicomStatus);
return true;
}
catch(DicomDataException ex)
{
Platform.Log(LogLevel.Error, ex);
return false; // caller will abort the association
}
catch(Exception ex)
{
Platform.Log(LogLevel.Error, ex);
return false; // caller will abort the association
}
}
示例6: if
/// <summary>
/// Process C-Echo and C-Store request.
/// </summary>
/// <param name="server"></param>
/// <param name="association"></param>
/// <param name="presentationID"></param>
/// <param name="message"></param>
void IDicomServerHandler.OnReceiveRequestMessage(DicomServer server, ServerAssociationParameters association, byte presentationID, DicomMessage message)
{
if (message.CommandField == DicomCommandField.CEchoRequest)
{
server.SendCEchoResponse(presentationID, message.MessageId, DicomStatuses.Success);
return;
}
else if (message.CommandField != DicomCommandField.CStoreRequest)
{
server.SendCEchoResponse(presentationID, message.MessageId, DicomStatuses.UnrecognizedOperation);
return;
}
else if (message.CommandField == DicomCommandField.CStoreRequest)
{
Platform.Log(LogLevel.Info, message.DataSet.DumpString);
ClearCanvas.Common.Platform.Log(LogLevel.Info, "C-Store request for {0}.", message.MessageId);
String studyInstanceUid = null;
String seriesInstanceUid = null;
DicomUid sopInstanceUid;
String patientName = null;
bool ok = message.DataSet[DicomTags.SopInstanceUid].TryGetUid(0, out sopInstanceUid);
if (ok) ok = message.DataSet[DicomTags.SeriesInstanceUid].TryGetString(0, out seriesInstanceUid);
if (ok) ok = message.DataSet[DicomTags.StudyInstanceUid].TryGetString(0, out studyInstanceUid);
if (ok) ok = message.DataSet[DicomTags.PatientsName].TryGetString(0, out patientName);
//if (!ok)
//{
// server.SendCStoreResponse(presentationID, message.MessageId, sopInstanceUid.UID, DicomStatuses.ProcessingFailure);
// return;
//}
try
{
// You can save the file by using this
_storePath = ADCM.GetStoreString();
if (string.IsNullOrEmpty(_storePath))
throw new Exception("No store path provided");
string studyfolder = Path.Combine(_storePath, studyInstanceUid);
studyfolder = Path.Combine(studyfolder, seriesInstanceUid);
if (!Directory.Exists(studyfolder))
Directory.CreateDirectory(studyfolder);
string filename = Path.Combine(studyfolder, message.DataSet[DicomTags.SopInstanceUid].ToString() + ".dcm");
DicomFile file = new DicomFile(message, filename);
file.Save(filename, DicomWriteOptions.Default);
ClearCanvas.Common.Platform.Log(ClearCanvas.Common.LogLevel.Info, "Sending C-Store success response.");
server.SendCStoreResponse(presentationID, message.MessageId, sopInstanceUid.UID, DicomStatuses.Success);
}
catch (Exception ex)
{
ClearCanvas.Common.Platform.Log(LogLevel.Error, ex, "Unable to store request {0}.", message.MessageId);
server.SendCStoreResponse(presentationID, message.MessageId, sopInstanceUid != null ? sopInstanceUid.UID : string.Empty, DicomStatuses.ProcessingFailure);
}
}
}
示例7: StringBuilder
void IDicomServerHandler.OnReceiveRequestMessage(DicomServer server, ServerAssociationParameters association, byte presentationID, DicomMessage message)
{
if (message.CommandField == DicomCommandField.CEchoRequest)
{
server.SendCEchoResponse(presentationID, message.MessageId, DicomStatuses.Success);
return;
}
String studyInstanceUid = null;
String seriesInstanceUid = null;
DicomUid sopInstanceUid;
bool ok = message.DataSet[DicomTags.SopInstanceUid].TryGetUid(0, out sopInstanceUid);
if (ok) ok = message.DataSet[DicomTags.SeriesInstanceUid].TryGetString(0, out seriesInstanceUid);
if (ok) ok = message.DataSet[DicomTags.StudyInstanceUid].TryGetString(0, out studyInstanceUid);
if (!ok)
{
Logger.LogError("Unable to retrieve UIDs from request message, sending failure status.");
server.SendCStoreResponse(presentationID, message.MessageId, sopInstanceUid.UID,
DicomStatuses.ProcessingFailure);
return;
}
if (!Directory.Exists(StorageScp.StorageLocation))
Directory.CreateDirectory(StorageScp.StorageLocation);
StringBuilder path = new StringBuilder();
path.AppendFormat("{0}{1}{2}{3}{4}", StorageScp.StorageLocation, Path.DirectorySeparatorChar,
studyInstanceUid, Path.DirectorySeparatorChar,seriesInstanceUid);
Directory.CreateDirectory(path.ToString());
path.AppendFormat("{0}{1}.dcm", Path.DirectorySeparatorChar, sopInstanceUid.UID);
DicomFile dicomFile = new DicomFile(message, path.ToString());
dicomFile.TransferSyntaxUid = TransferSyntax.ExplicitVrLittleEndianUid;
dicomFile.MediaStorageSopInstanceUid = sopInstanceUid.UID;
dicomFile.ImplementationClassUid = DicomImplementation.ClassUID.UID;
dicomFile.ImplementationVersionName = DicomImplementation.Version;
dicomFile.SourceApplicationEntityTitle = association.CallingAE;
dicomFile.MediaStorageSopClassUid = message.SopClass.Uid;
dicomFile.Save(DicomWriteOptions.None);
String patientName = dicomFile.DataSet[DicomTags.PatientsName].GetString(0, "");
Logger.LogInfo("Received SOP Instance: {0} for patient {1}", sopInstanceUid, patientName);
server.SendCStoreResponse(presentationID, message.MessageId,
sopInstanceUid.UID,
DicomStatuses.Success);
}