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));
            }