private bool TransformXML(string xslFilePath, string sourceXml, ref string targetXml, ILogging log) { XMLTransformer t = XMLTransformer.CreateFromFileWithCache(xslFilePath, log, true); if (t == null) { return(false); } return(t.TransformString(sourceXml, ref targetXml, XSLTExtensionTypes.XmlNodeTransformer)); }
public DicomCStoreResponse OnCStoreRequest(DicomCStoreRequest request) { string prefix = "[STORAGESCP] [" + session + "] "; var studyUid = request.Dataset.Get <string>(DicomTag.StudyInstanceUID); var instUid = request.SOPInstanceUID.UID; Program.Log.Write(prefix + "Begin processing c-store request. " + request.SOPClassUID.UID); bool res = true; DElementList iod = new DElementList(request.Dataset); if (Program.ConfigMgt.Config.SOAPEnable) //SOAP communication, 20121017 { string requestDataSet = iod.ToDicomXMLString(); string requestSoap = string.Empty; string responseSoap = string.Empty; string tick = DateTime.Now.Ticks.ToString(); res = _reqTran.TransformString(requestDataSet, ref requestSoap); if (!res) { Program.Log.Write(LogType.Error, "Transforming DICOM message to SOAP failed. "); return(new DicomCStoreResponse(request, DicomStatus.ProcessingFailure)); } res = _SOAPClient.SendMessage(requestSoap, out responseSoap); if (!res) { Program.Log.Write(LogType.Error, "Sending SOAP message failed. "); return(new DicomCStoreResponse(request, DicomStatus.ProcessingFailure)); } } else { if (StorageSCPService.Service == null) { Program.Log.Write(prefix + "[WARNING] SCP is not binded to GC Gateway, dump data to local folder only."); iod.SaveXmlFile("StorageIOD_" + DateTime.Now.Ticks.ToString() + ".xml"); } else { DataSet dsIOD = DicomMappingHelper.CreateQCDataSet <StorageItem>(StorageSCPService.Service.StorageList, request.Dataset); if (dsIOD == null) { Program.Log.Write(prefix + "[WARNING] Process storage IOD failed."); return(new DicomCStoreResponse(request, DicomStatus.ProcessingFailure)); } res = StorageSCPService.Service.SaveData(Program.ConfigMgt.Config.StorageRule, dsIOD); if (!res) { Program.Log.Write(prefix + "[WARNING] Insert GC Gateway database failed."); return(new DicomCStoreResponse(request, DicomStatus.ProcessingFailure)); } } } Program.Log.Write("[STORAGESCP] [" + session + "] Finish processing c-store request. Result:" + res.ToString()); return(new DicomCStoreResponse(request, DicomStatus.Success)); }