private string getPatientID(int?id_Sitio) { string PatientID = ""; try { string id = NapoleonAUXDataAccess.getPatientID(); PatientID = vchClaveSitio + (id == "" ? Guid.NewGuid().ToString() : id); } catch (Exception egPI) { Log.EscribeLog("Existe error en getPatientID: " + egPI.Message); PatientID = ""; } return(PatientID); }
private string getAccNumber(int id_Sitio, int intModalidadID, string patientID) { string AccNum = ""; string accAux = ""; try { int consec = 0; try { accAux = NapoleonAUXDataAccess.getAccNumber(patientID.Trim(), id_Sitio); if (accAux == "") { consec = NapoleonAUXDataAccess.getConsecutivo(); } } catch (Exception) { consec = 0; } if (accAux == "") { AccNum = vchClaveSitio.ToString() + intModalidadID.ToString() + (patientID.ToString().Replace(vchClaveSitio, "").Trim() != "" ? patientID.ToString().Replace(vchClaveSitio, "") : "XXXXX") + consec; } else { AccNum = accAux; } } catch (Exception egAN) { AccNum = ""; Log.EscribeLog("Existe error en getAccNumber: " + egAN.Message); } return(AccNum); }
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)); }