Example #1
0
        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));
        }
Example #2
0
        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));
        }