예제 #1
0
        public ActionResult Edit([Bind(Include = "ImmId,PatientId,ImmDate,Notes,FilePath,FileContent")] Immunizations immunizations, HttpPostedFileBase file)
        {
            // Logger.Log(LogLevel.Debug, "Starting ImmunizationsController Post Edit.", "Patient Id = " + immunizations.PatientId.ToString(), "", "");
            if (ModelState.IsValid)
            {
                try
                {
                    string FileExt = Path.GetExtension(file.FileName).ToUpper();

                    if (FileExt == ".PDF")
                    {
                        Stream       str     = file.InputStream;
                        BinaryReader Br      = new BinaryReader(str);
                        Byte[]       FileDet = Br.ReadBytes((Int32)str.Length);
                        immunizations.FilePath    = Path.GetFileName(file.FileName);
                        immunizations.FileContent = FileDet;
                    }
                    else
                    {
                        ViewBag.FileStatus = "Invalid file format.  Choose a pdf file.";
                        return(View());
                    }

                    db.Entry(immunizations).State = EntityState.Modified;
                    db.SaveChanges();

                    //  Logger.Log(LogLevel.Debug, "Returning ImmunizationsController Post Edit.", "Patient Id = " + immunizations.PatientId.ToString(), "", "Saved changes full path name");
                    return(RedirectToAction("ImmIndex", "Immunizations", new { id = immunizations.PatientId }));
                }
                catch (Exception ex)
                {
                }
            }
            return(View(immunizations));
        }
예제 #2
0
        public async Task <IActionResult> Edit(int id, [Bind("ImmunizationsId,ImmunizationType,DateReceived,AdministeredBy,DateLastTetanus,Comments")] Immunizations immunizations)
        {
            if (id != immunizations.ImmunizationsId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(immunizations);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ImmunizationsExists(immunizations.ImmunizationsId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(immunizations));
        }
예제 #3
0
        public ActionResult DeleteConfirmed(int id)
        {
            Immunizations immunizations = db.Immunizations.Find(id);

            db.Immunizations.Remove(immunizations);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
예제 #4
0
        public ActionResult DeleteConfirmed(int id)
        {
            //   Logger.Log(LogLevel.Debug, "Starting ImmunizationsController Post Delete.", "Patient Id = " + id.ToString(), "", "");
            Immunizations immunizations = db.Immunizations.Find(id);

            db.Immunizations.Remove(immunizations);
            db.SaveChanges();
            //   Logger.Log(LogLevel.Debug, "Returning ImmunizationsController Post Delete.", "Patient Id = " + id.ToString(), "", "Saved changes");
            return(RedirectToAction("ImmIndex", "Immunizations", new { id = immunizations.PatientId }));
        }
예제 #5
0
 public ActionResult Edit([Bind(Include = "ImmunizationId,VaccineId,DateGiven,AdministratedBy,NextDoesDate,UserId")] Immunizations immunizations)
 {
     if (ModelState.IsValid)
     {
         db.Entry(immunizations).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.VaccineId = new SelectList(db.Vaccines, "VaccineId", "Name", immunizations.VaccineId);
     return(View(immunizations));
 }
예제 #6
0
        public async Task <IActionResult> Create([Bind("ImmunizationsId,ImmunizationType,DateReceived,AdministeredBy,DateLastTetanus,Comments")] Immunizations immunizations)
        {
            if (ModelState.IsValid)
            {
                _context.Add(immunizations);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(immunizations));
        }
예제 #7
0
        /// <summary>
        /// Remove the immunization by ID
        /// </summary>
        /// <param name="immunizationId">ID of the immunization to remove</param>
        /// <returns>If the immunization was successfully removed</returns>
        public bool RemoveImmunization(int immunizationId)
        {
            foreach (PatientImmunization immunization in Immunizations)
            {
                if (immunization.Id == immunizationId)
                {
                    Immunizations.Remove(immunization);
                    return(true);
                }
            }

            return(false);
        }
예제 #8
0
        // GET: Immunizations/Create
        public ActionResult Create(int id)
        {
            //Logger.Log(LogLevel.Debug, "Starting ImmunizationsController Get Create.", "Patient Id = " + id.ToString(), "", "");
            var           patient = db.Patients.Find(id);
            Immunizations imm     = new Immunizations();

            imm.PatientId = id;
            imm.FullName  = patient.FullName;
            imm.BirthDate = patient.BirthDate;
            imm.ImmDate   = DateTime.Now;
            // Logger.Log(LogLevel.Debug, "Returning ImmunizationsController Get Create.", "Patient Id = " + id.ToString(), "", "");
            return(View(imm));
        }
예제 #9
0
        // GET: Immunizations/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Immunizations immunizations = db.Immunizations.Find(id);

            if (immunizations == null)
            {
                return(HttpNotFound());
            }
            return(View(immunizations));
        }
예제 #10
0
        // GET: Immunizations/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Immunizations immunizations = db.Immunizations.Find(id);

            if (immunizations == null)
            {
                return(HttpNotFound());
            }
            ViewBag.VaccineId = new SelectList(db.Vaccines, "VaccineId", "Name", immunizations.VaccineId);
            return(View(immunizations));
        }
예제 #11
0
        // GET: Immunizations/Details/5
        public ActionResult Details(int?id)
        {
            // Logger.Log(LogLevel.Debug, "Starting ImmunizationsController Get Details.", "Patient Id = " + id.ToString(), "", "");
            if (id == null)
            {
                // Logger.Log(LogLevel.Debug, "Returning ImmunizationsController Get Details.", "Patient Id = " + id.ToString(), "", "BadRequest");
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Immunizations immunizations = db.Immunizations.Find(id);

            if (immunizations == null)
            {
                //Logger.Log(LogLevel.Debug, "Returning ImmunizationsController Get Details.", "Patient Id = " + id.ToString(), "", "HttpNotFound");
                return(HttpNotFound());
            }
            // Logger.Log(LogLevel.Debug, "Returning ImmunizationsController Get Details.", "Patient Id = " + id.ToString(), "", "immunizations");
            return(View(immunizations));
        }
예제 #12
0
        public ContinuityOfCareRecord getImmunizations(string appPwd, string patientICN)
        {
            Immunizations          imm = new Immunizations();
            ContinuityOfCareRecord ccr = new ContinuityOfCareRecord()
            {
                Body = new ContinuityOfCareRecordBody()
            };

            ccr.Body.Immunizations = new System.Collections.Generic.List <StructuredProductType>();
            imm = new CdwPharmacyDao(new CdwConnection(new DataSource()
            {
                ConnectionString = "Data Source=VHACDWa01.vha.med.va.gov;Initial Catalog=CDWWork;Trusted_Connection=true",
            })
            {
                Pid = patientICN
            })
                  .getImmunizations("", "");
            ccr.Body.Immunizations = imm.Immunization;
            return(ccr);
        }
예제 #13
0
        public ActionResult ImmIndex(int id)
        {
            // Logger.Log(LogLevel.Debug, "Starting ImmunizationsController ImmIndex.", "Patient Id = " + id.ToString(), "", "");

            if (CheckforImmunizations(id) == true)
            {
                using (var cn = new SqlConnection(ConfigurationManager.ConnectionStrings["PatientContext"].ConnectionString))
                {
                    using (SqlCommand cmd = new SqlCommand("sp_Get_Patient_Imm_List", cn))
                    {
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.Parameters.Add("@id", SqlDbType.Int).Value = id;
                        cn.Open();

                        var rdr = cmd.ExecuteReader();
                        List <Immunizations> model = new List <Immunizations>();
                        while (rdr.Read())
                        {
                            var imms = new Immunizations
                            {
                                PatientId = id,
                                FullName  = rdr["FullName"].ToString(),
                                ImmId     = Convert.ToInt32(rdr["ImmId"]),
                                BirthDate = Convert.ToDateTime(rdr["BirthDate"]),
                                ImmDate   = Convert.ToDateTime(rdr["ImmDate"]),
                                Notes     = rdr["Notes"].ToString(),
                                FilePath  = rdr["FilePath"].ToString()
                            };
                            model.Add(imms);
                        }
                        return(View("Index", model));
                    }
                }
                // Logger.Log(LogLevel.Debug, "Returning ImmunizationsController ImmIndex.", "Patient Id = " + id.ToString(), "", "iList");
            }
            else
            {
                // Logger.Log(LogLevel.Debug, "Returning ImmunizationsController ImmIndex.", "Patient Id = " + id.ToString(), "", "Create");
                return(RedirectToAction("Create", new { id = id }));
            }
        }
예제 #14
0
        public IHttpActionResult Post(Immunizations value)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (value.source == null || value.access_token == null)
            {
                return(BadRequest());
            }

            using (var dbContextTransaction = db.Database.BeginTransaction())
            {
                try
                {
                    tSourceService sourceServiceObj = db.tSourceServices
                                                      .SingleOrDefault(x => x.ServiceName == value.source && x.SourceID == 5);

                    if (sourceServiceObj == null)
                    {
                        sourceServiceObj             = new tSourceService();
                        sourceServiceObj.ServiceName = value.source;
                        sourceServiceObj.TypeID      = 1; //Medical
                        sourceServiceObj.SourceID    = 5; //HumanAPI

                        db.tSourceServices.Add(sourceServiceObj);
                    }

                    tUserSourceService userSourceServiceObj = null;

                    //Get credentials
                    tCredential credentialObj =
                        db.tCredentials.SingleOrDefault(x => x.SourceID == 5 &&
                                                        x.AccessToken == value.access_token &&
                                                        x.SystemStatusID == 1);
                    if (credentialObj == null)
                    {
                        throw new NoUserCredentialsException("Unable to find any matching HAPI user credentials");
                    }
                    else
                    {
                        userSourceServiceObj = db.tUserSourceServices.SingleOrDefault(
                            x => x.SourceServiceID == sourceServiceObj.ID &&
                            x.CredentialID == credentialObj.ID &&
                            x.SystemStatusID == 1);

                        if (userSourceServiceObj == null)
                        {
                            userSourceServiceObj = new tUserSourceService();
                            userSourceServiceObj.SourceServiceID     = sourceServiceObj.ID;
                            userSourceServiceObj.UserID              = credentialObj.UserID;
                            userSourceServiceObj.CredentialID        = credentialObj.ID;
                            userSourceServiceObj.ConnectedOnDateTime = DateTime.Now;
                            userSourceServiceObj.LastSyncDateTime    = DateTime.Now;
                            userSourceServiceObj.LatestDateTime      = value.updatedAt;
                            userSourceServiceObj.StatusID            = 3; //connected
                            userSourceServiceObj.SystemStatusID      = 1; //valid
                            userSourceServiceObj.tCredential         = credentialObj;

                            db.tUserSourceServices.Add(userSourceServiceObj);
                        }
                        else
                        {
                            //update LatestDateTime to the most recent datetime
                            if (userSourceServiceObj.LatestDateTime == null ||
                                userSourceServiceObj.LatestDateTime < value.updatedAt)
                            {
                                userSourceServiceObj.LatestDateTime = value.updatedAt;
                            }
                        }
                    }

                    tSourceOrganization userSourceOrganization = null;
                    if (value.organization != null)
                    {
                        //Get source org
                        userSourceOrganization = db.tSourceOrganizations
                                                 .Include("tOrganization")
                                                 .SingleOrDefault(x => x.SourceObjectID == value.organization.id);

                        if (userSourceOrganization == null)
                        {
                            //create org
                            tOrganization userOrganization = new tOrganization();
                            userOrganization.Name = value.organization.name;

                            //create new source org entry
                            userSourceOrganization = new tSourceOrganization();
                            userSourceOrganization.SourceObjectID  = value.organization.id;
                            userSourceOrganization.tOrganization   = userOrganization;
                            userSourceOrganization.OrganizationID  = userOrganization.ID;
                            userSourceOrganization.SourceServiceID = sourceServiceObj.ID;

                            db.tSourceOrganizations.Add(userSourceOrganization);
                        }
                    }
                    else
                    {
                        //Get source org via sourceserviceid [hack]
                        userSourceOrganization =
                            db.tSourceOrganizations.SingleOrDefault(x => x.SourceServiceID == sourceServiceObj.ID);
                    }

                    tUserImmunization userImmunization = null;
                    userImmunization = db.tUserImmunizations
                                       .SingleOrDefault(x => x.SourceObjectID == value.Id);

                    if (userImmunization == null)
                    {
                        //insert
                        userImmunization = new tUserImmunization();
                        userImmunization.SourceObjectID = value.Id;
                        userImmunization.UserID         = credentialObj.UserID;
                        if (userSourceOrganization != null)
                        {
                            userImmunization.tSourceOrganization  = userSourceOrganization;
                            userImmunization.SourceOrganizationID = userSourceOrganization.ID;
                        }
                        userImmunization.tUserSourceService  = userSourceServiceObj;
                        userImmunization.UserSourceServiceID = userSourceServiceObj.ID;

                        userImmunization.Name = value.name;

                        if (value.dates != null)
                        {
                            foreach (DateTimeOffset immunDate in value.dates)
                            {
                                tUserImmunizationsDate userImmunDate = new tUserImmunizationsDate();
                                userImmunDate.DateTime           = immunDate;
                                userImmunDate.UserImmunizationID = userImmunization.ID;
                                userImmunDate.SystemStatusID     = 1;

                                userImmunization.tUserImmunizationsDates.Add(userImmunDate);
                            }
                        }

                        userImmunization.SystemStatusID = 1;

                        db.tUserImmunizations.Add(userImmunization);
                    }
                    else
                    {
                        if (userSourceOrganization != null)
                        {
                            userImmunization.tSourceOrganization  = userSourceOrganization;
                            userImmunization.SourceOrganizationID = userSourceOrganization.ID;
                        }
                        userImmunization.tUserSourceService  = userSourceServiceObj;
                        userImmunization.UserSourceServiceID = userSourceServiceObj.ID;

                        userImmunization.Name = value.name;

                        List <tUserImmunizationsDate> existingEntries = db.tUserImmunizationsDates
                                                                        .Where(x => x.UserImmunizationID == userImmunization.ID).ToList();
                        existingEntries.ForEach(e => e.SystemStatusID = 4);

                        if (value.dates != null)
                        {
                            foreach (DateTimeOffset immunDate in value.dates)
                            {
                                tUserImmunizationsDate userImmunDate = new tUserImmunizationsDate();
                                userImmunDate.DateTime           = immunDate;
                                userImmunDate.UserImmunizationID = userImmunization.ID;
                                userImmunDate.SystemStatusID     = 1;

                                userImmunization.tUserImmunizationsDates.Add(userImmunDate);
                            }
                        }

                        userImmunization.LastUpdatedDateTime = DateTime.Now;
                    }

                    //codes
                    if (value.codes != null)
                    {
                        foreach (Codes code in value.codes)
                        {
                            if (code.code != null && code.codeSystem != null)
                            {
                                tCode immunCode = null;
                                immunCode = db.tCodes
                                            .SingleOrDefault(x => x.Code == code.code && x.CodeSystem == code.codeSystem);
                                if (immunCode == null)
                                {
                                    immunCode                = new tCode();
                                    immunCode.Code           = code.code;
                                    immunCode.CodeSystem     = code.codeSystem;
                                    immunCode.CodeSystemName = code.codeSystemName;
                                    immunCode.Name           = code.name;

                                    db.tCodes.Add(immunCode);
                                    db.SaveChanges();
                                }

                                tXrefUserImmunizationsCode userXrefImmunCodes = null;
                                userXrefImmunCodes = db.tXrefUserImmunizationsCodes
                                                     .SingleOrDefault(x => x.CodeID == immunCode.ID &&
                                                                      x.UserImmunizationID == userImmunization.ID);

                                if (userXrefImmunCodes == null)
                                {
                                    userXrefImmunCodes = new tXrefUserImmunizationsCode();
                                    userXrefImmunCodes.tUserImmunization  = userImmunization;
                                    userXrefImmunCodes.tCode              = immunCode;
                                    userXrefImmunCodes.CodeID             = immunCode.ID;
                                    userXrefImmunCodes.UserImmunizationID = userImmunization.ID;

                                    userImmunization.tXrefUserImmunizationsCodes.Add(userXrefImmunCodes);
                                }
                            }
                        }
                    }

                    db.SaveChanges();

                    dbContextTransaction.Commit();

                    return(Ok(userImmunization));
                }
                catch (Exception ex)
                {
                    dbContextTransaction.Rollback();

                    //Insert Error Log
                    tUserDataErrLog userErrorLog = new tUserDataErrLog();

                    userErrorLog.ErrTypeID   = (int)ErrorLogging.enumErrorType.Application;
                    userErrorLog.ErrSourceID = (int)AuditLogging.enumApplication.SFCBAL;
                    userErrorLog.Code        = ex.HResult.ToString();
                    userErrorLog.Description = ex.Message;
                    userErrorLog.Trace       = ex.StackTrace;

                    dbErr.tUserDataErrLogs.Add(userErrorLog);
                    dbErr.SaveChanges();

                    string ErrMsg = "An error occured and we have logged the error. Please try again later.";

                    Exception Err = new Exception(ErrMsg, ex);

                    return(InternalServerError(Err));
                }
            }
        }
예제 #15
0
        internal Immunizations toImmunizations(IDataReader reader)
        {
            Immunizations immunizations = new Immunizations();

            immunizations.Immunization = new List <StructuredProductType>();
            StructuredProductType current = new StructuredProductType();

            while (reader.Read())
            {
                Int32  immSid     = reader.GetInt32(reader.GetOrdinal("ImmunizationSID"));
                string immIen     = reader.GetString(reader.GetOrdinal("ImmunizationIEN"));
                Int16  sitecode   = reader.GetInt16(reader.GetOrdinal("Sta3n"));
                string patientIen = getValue(reader, reader.GetOrdinal("PatientIEN"));
                //string patientSid = getValue(reader, reader.GetOrdinal("PatientSID"));
                string   immunizationName      = getValue(reader, reader.GetOrdinal("ImmunizationName"));
                string   immunizationShortName = getValue(reader, reader.GetOrdinal("ImmunizationShortName"));
                string   inactive             = getValue(reader, reader.GetOrdinal("ImmunizationInactiveFlag"));
                string   series               = getValue(reader, reader.GetOrdinal("Series"));
                string   reaction             = getValue(reader, reader.GetOrdinal("Reaction"));
                string   contraindicated      = getValue(reader, reader.GetOrdinal("ContraindicatedFlag"));
                DateTime eventDateTime        = reader.IsDBNull(reader.GetOrdinal("EventDateTime")) ? new DateTime() : reader.GetDateTime(reader.GetOrdinal("EventDateTime"));
                DateTime visitDateTime        = reader.IsDBNull(reader.GetOrdinal("VisitDateTime")) ? new DateTime() : reader.GetDateTime(reader.GetOrdinal("VisitDateTime"));
                DateTime immunizationDateTime = reader.IsDBNull(reader.GetOrdinal("ImmunizationDateTime")) ? new DateTime() : reader.GetDateTime(reader.GetOrdinal("ImmunizationDateTime"));
                string   orderedBy            = getValue(reader, reader.GetOrdinal("OrderingStaffIEN"));
                string   comments             = getValue(reader, reader.GetOrdinal("Comments"));

                current.CCRDataObjectID = immSid.ToString();

                current.CommentID = new List <string>();
                current.CommentID.Add(comments);

                DateTimeType ts = new DateTimeType()
                {
                    ExactDateTime = eventDateTime.ToShortDateString(), Type = new CodedDescriptionType()
                    {
                        Text = "EventDateTime"
                    }
                };
                (current.DateTime = new List <DateTimeType>()).Add(ts);

                (current.Product = new List <StructuredProductTypeProduct>()).Add(new StructuredProductTypeProduct()
                {
                    ProductName = new CodedDescriptionType()
                    {
                        Text = immunizationName
                    }
                });
                current.Reaction = new Reaction()
                {
                    Description = new CodedDescriptionType()
                    {
                        Text = reaction
                    }
                };
                current.SeriesNumber = series;

                ActorReferenceType orderingProvider = new ActorReferenceType()
                {
                    ActorID = orderedBy
                };
                (current.Source = new List <SourceType>()).Add(new SourceType()
                {
                    Actor = new List <ActorReferenceType>()
                });
                current.Source[0].Actor.Add(orderingProvider);

                SourceType site = new SourceType()
                {
                    ReferenceID = new List <string>()
                };
                site.ReferenceID.Add(sitecode.ToString());
                current.Source.Add(site);

                current.Type = new CodedDescriptionType()
                {
                    Text = "Immunization"
                };

                immunizations.Immunization.Add(current);
                current = new StructuredProductType();
            }

            return(immunizations);
        }
예제 #16
0
 /// <summary>
 /// Add an immunization to a patient
 /// </summary>
 /// <param name="immunization"></param>
 public void AddImmunization(PatientImmunization immunization)
 {
     Immunizations.Add(immunization);
 }
예제 #17
0
 /// <summary>
 /// Remove a immunization from a patient
 /// </summary>
 /// <param name="immunization">Immunization to remove</param>
 public void RemoveImmunization(PatientImmunization immunization)
 {
     Immunizations.Remove(immunization);
 }