private void cargarServicio() { try { string path = ""; try { path = ConfigurationManager.AppSettings["ConfigDirectory"] != null ? ConfigurationManager.AppSettings["ConfigDirectory"].ToString() : ""; } catch (Exception ePath) { path = ""; Log.EscribeLog("Error al obtener el path desde appSettings: " + ePath.Message); } string PathDestino = ""; try { PathDestino = ConfigurationManager.AppSettings["PathDes"].ToString(); //Verificar Folder if (!Directory.Exists(PathDestino)) { Directory.CreateDirectory(PathDestino); } } catch (Exception ePATHDES) { Log.EscribeLog("Existe un error al leer el path de destino: " + ePATHDES.Message); } ClienteF2CResponse mdl = new ClienteF2CResponse(); if (File.Exists(path + "info.xml")) { _conf = XMLConfigurator.getXMLfile(); id_Servicio = _conf.id_Sitio; AETitle = _conf.vchAETitle; vchPathRep = _conf.vchPathLocal; vchClaveSitio = _conf.vchClaveSitio; if (id_Servicio > 0 && vchClaveSitio != "") { Token = Security.Encrypt(id_Servicio + "|" + vchClaveSitio); } } Log.EscribeLog("Sitio: " + vchClaveSitio); if (vchClaveSitio != "") { mdl = ConfigDataAccess.getConeccion(vchClaveSitio, id_Servicio); if (mdl != null || _conf != null) { if (!(id_Servicio > 0)) { id_Servicio = mdl.id_Sitio; } if (vchClaveSitio == "") { vchClaveSitio = mdl.ConfigSitio.vchClaveSitio; } if (AETitle == "") { AETitle = mdl.ConfigSitio.vchAETitle; } if (Token != "") { Token = Security.Encrypt(id_Servicio + "|" + vchClaveSitio); } Log.EscribeLog("Inicio de CargarServicio SCP"); // preload dictionary to prevent timeouts var dict = DicomDictionary.Default; int port = 0; Log.EscribeLog("Puerto: " + (mdl.ConfigSitio == null ? _conf.intPuertoCliente : mdl.ConfigSitio.intPuertoCliente)); Log.EscribeLog("AETitle: " + AETitle); // start DICOM server on port from command line argument or 11112 try { if (_conf.intPuertoCliente > 0) { port = _conf.intPuertoCliente; } else { if (mdl.ConfigSitio.intPuertoCliente > 0) { port = (int)mdl.ConfigSitio.intPuertoCliente; } else { port = Convert.ToInt32(ConfigurationManager.AppSettings["Puerto"].ToString()); } } } catch (Exception ePuerto) { Console.WriteLine("No se pudo leer el puerto especificado, favor de verificar.: " + ePuerto.Message); Log.EscribeLog("No se pudo leer el puerto especificado, favor de verificar.: " + ePuerto.Message); } if (port > 0) { Console.WriteLine($"Iniciando Servidor C-Store SCP en el puerto {port}"); var server = DicomServer.Create <CStoreSCP>(port); Log.EscribeLog($"Iniciando Servidor C-Store SCP en el puerto {port}"); ConfigDataAccess.setService(id_Servicio, vchClaveSitio); // end process Console.WriteLine("Oprimir <return> para finalizar..."); Console.ReadLine(); } else { Console.WriteLine("No se pudo leer el puerto especificado, favor de verificar."); Log.EscribeLog("No se pudo leer el puerto especificado, favor de verificar."); } } } else { Console.WriteLine("No se pudo encontrar los datos para la búsqueda de sitio. En espera de los datos de configuración."); Log.EscribeLog("No se pudo encontrar los datos para la búsqueda de sitio. En espera de los datos de configuración."); } } catch (Exception eLoadService) { Log.EscribeLog("Error al cargar el servicio: " + eLoadService.Message); } }
public DicomCStoreResponse OnCStoreRequest(DicomCStoreRequest request) { try { //public static string PathDestino = ConfigurationManager.AppSettings["PathDes"].ToString(); string PathDestino = ""; try { PathDestino = ConfigurationManager.AppSettings["PathDes"].ToString(); //Verificar Folder if (!Directory.Exists(PathDestino)) { Directory.CreateDirectory(PathDestino); } } catch (Exception ePATHDES) { Log.EscribeLog("Existe un error al leer el path de destino: " + ePATHDES.Message); } if (vchPathRep == "") { vchPathRep = PathDestino; } if (vchPathRep != "") { string studyUid = ""; string AccNum = ""; string Modality = ""; string Edad = ""; string PatientID = ""; string patienName = ""; string genero = ""; string instUid = ""; string SOPClassUid = ""; string FechaNac = ""; string UniversalServiceID = ""; string studyDescription = ""; try { studyUid = request.Dataset.Contains(DicomTag.StudyInstanceUID) ? request.Dataset.Get <string>(DicomTag.StudyInstanceUID) : ""; } catch (Exception eUI) { studyUid = ""; } try { AccNum = request.Dataset.Contains(DicomTag.AccessionNumber) ? request.Dataset.Get <string>(DicomTag.AccessionNumber) : ""; } catch (Exception eUI) { AccNum = ""; } try { Modality = request.Dataset.Contains(DicomTag.Modality) ? request.Dataset.Get <string>(DicomTag.Modality) : ""; } catch (Exception eUI) { Modality = ""; } try { Edad = request.Dataset.Contains(DicomTag.PatientAge) ? request.Dataset.Get <string>(DicomTag.PatientAge) : ""; } catch (Exception eUI) { Edad = ""; } try { FechaNac = request.Dataset.Contains(DicomTag.PatientBirthDate) ? request.Dataset.Get <string>(DicomTag.PatientBirthDate) : ""; } catch (Exception eUI) { FechaNac = ""; } try { PatientID = request.Dataset.Contains(DicomTag.PatientID) ? request.Dataset.Get <string>(DicomTag.PatientID) : ""; } catch (Exception eUI) { PatientID = ""; } try { patienName = request.Dataset.Contains(DicomTag.PatientName) ? request.Dataset.Get <string>(DicomTag.PatientName) : ""; } catch (Exception eUI) { patienName = ""; } try { genero = request.Dataset.Contains(DicomTag.PatientSex) ? request.Dataset.Get <string>(DicomTag.PatientSex) : ""; } catch (Exception eUI) { genero = ""; } try { instUid = request.SOPInstanceUID.UID; } catch (Exception eUI) { instUid = ""; int i = BitConverter.ToInt32(Guid.NewGuid().ToByteArray(), 0); if (i < 0) { i = i * (-1); } instUid = i.ToString(); Log.EscribeLog("No tiene SOPInstanceUID: "); } try { SOPClassUid = request.SOPClassUID.UID; } catch (Exception eUI) { SOPClassUid = ""; } try { UniversalServiceID = request.Dataset.Contains(DicomTag.StudyID) ? request.Dataset.Get <string>(DicomTag.StudyID) : ""; } catch (Exception eUI) { UniversalServiceID = ""; } try { studyDescription = request.Dataset.Contains(DicomTag.StudyDescription) ? request.Dataset.Get <string>(DicomTag.StudyDescription) : ""; } catch (Exception eUI) { studyDescription = ""; } Console.WriteLine(instUid.ToString()); Log.EscribeLog("Leyendo: " + instUid.ToString()); Log.EscribeLog("SOPClassUID: " + instUid.ToString()); var path = Path.GetFullPath(vchPathRep); path = Path.Combine(path, studyUid); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } path = Path.Combine(path, instUid) + ".dcm"; DataAccessLocal.tbl_MST_EstudioAUX mdlEstudio = new DataAccessLocal.tbl_MST_EstudioAUX(); DataAccessLocal.tbl_DET_EstudioAUX mdlDetalle = new DataAccessLocal.tbl_DET_EstudioAUX(); bool valido = false; try { if (PatientID == "") { string idPac = Guid.NewGuid().ToString(); PatientID = vchClaveSitio + idPac.Substring(1, 5).Replace("-", ""); } else { PatientID = vchClaveSitio + PatientID; } //Obtener MST mdlEstudio.id_Sitio = id_Servicio; mdlEstudio.intModalidadID = getModalidad(Modality); mdlEstudio.PatientID = PatientID.Trim() == "" ? getPatientID(mdlEstudio.id_Sitio) : PatientID; mdlEstudio.vchPatientBirthDate = FechaNac; mdlEstudio.PatientName = patienName.Replace("^^", " ").Replace("^^^", " ").Replace("^", " "); mdlEstudio.datFecha = DateTime.Now; mdlEstudio.vchgenero = genero; mdlEstudio.vchEdad = Edad == "" && FechaNac != "" ? getEdad(FechaNac) : Edad; string ValidarAcc = AccNum.Trim(); string anteriorAccNum = getAccNumber((int)mdlEstudio.id_Sitio, (int)mdlEstudio.intModalidadID, mdlEstudio.PatientID); if (anteriorAccNum == "") { if (ValidarAcc == "") { string guid = Guid.NewGuid().ToString(); ValidarAcc = vchClaveSitio + guid.Substring(0, 5).Replace("-", ""); } else { ValidarAcc = vchClaveSitio + ValidarAcc; } } else { ValidarAcc = anteriorAccNum; } if (ValidarAcc.ToUpper().Length > 16) { ValidarAcc = ValidarAcc.ToUpper().Substring(0, 16); } else { ValidarAcc = ValidarAcc.ToUpper(); } mdlEstudio.vchAccessionNumber = ValidarAcc; //mdlEstudio.StudyID = UniversalServiceID; //mdlEstudio.StudyDescription = studyDescription; //Obtener DET mdlDetalle.vchNameFile = Path.GetFileName(path); mdlDetalle.vchPathFile = path.ToString(); mdlDetalle.vchStudyInstanceUID = studyUid; mdlDetalle.datFecha = DateTime.Now; mdlDetalle.intEstatusID = 1; mdlDetalle.bitSync = false; valido = true; } catch (Exception evalidar) { valido = false; Log.EscribeLog("Existe un error al obtener el estudio: " + evalidar.Message); } try { request.Dataset.Remove(DicomTag.PatientID); request.Dataset.Remove(DicomTag.AccessionNumber); request.Dataset.Remove(DicomTag.PatientAge); if (SOPClassUid == "") { request.Dataset.Remove(DicomTag.SOPClassUID); request.Dataset.Add(new DicomCodeString(DicomTag.SOPClassUID, instUid)); } request.Dataset.Add(new DicomCodeString(DicomTag.AccessionNumber, mdlEstudio.vchAccessionNumber)); request.Dataset.Add(new DicomCodeString(DicomTag.PatientID, mdlEstudio.PatientID)); request.Dataset.Add(new DicomCodeString(DicomTag.PatientAge, mdlEstudio.PatientID)); request.File.Save(path); long length = new System.IO.FileInfo(path).Length; mdlDetalle.intSizeFile = (int)length; ConfigDataAccess.setService(id_Servicio, vchClaveSitio); if (valido) { NapoleonAUXDataAccess.setEstudio(mdlEstudio, mdlDetalle); } } catch (Exception eSEND) { Log.EscribeLog("Existe error al guardar el archivo: " + eSEND.Message); } } else { Log.EscribeLog("No se encontro el path."); } } catch (Exception e) { Console.WriteLine("Existe un error: " + e.Message); Log.EscribeLog("Existe un error: " + e.Message); } return(new DicomCStoreResponse(request, DicomStatus.Success)); }