public async Task <IHttpActionResult> PuttUserVital(int id, tUserVital tUserVital)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != tUserVital.ID)
            {
                return(BadRequest());
            }

            db.Entry(tUserVital).State = EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!tUserVitalExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
        public async Task <IHttpActionResult> GettUserVital(int id)
        {
            tUserVital tUserVital = await db.tUserVitals.FindAsync(id);

            if (tUserVital == null)
            {
                return(NotFound());
            }

            return(Ok(tUserVital));
        }
        public async Task <IHttpActionResult> PosttUserVital(tUserVital tUserVital)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.tUserVitals.Add(tUserVital);
            await db.SaveChangesAsync();

            return(Ok(tUserVital));
            //   return CreatedAtRoute("DefaultApi", new { id = tUserVital.ID }, tUserVital);
        }
        public async Task <IHttpActionResult> SoftDeleteUserVitals(int id, int status)
        {
            tUserVital tUserVital = await db.tUserVitals.FindAsync(id);

            if (tUserVital == null)
            {
                return(NotFound());
            }
            tUserVital.SystemStatusID      = status;
            tUserVital.LastUpdatedDateTime = DateTime.Now;
            await db.SaveChangesAsync();

            return(Ok(tUserVital));
        }
        public async Task <IHttpActionResult> DeletetUserVital(int id)
        {
            tUserVital tUserVital = await db.tUserVitals.FindAsync(id);

            if (tUserVital == null)
            {
                return(NotFound());
            }

            db.tUserVitals.Remove(tUserVital);
            await db.SaveChangesAsync();

            return(Ok(tUserVital));
        }
示例#6
0
        public IHttpActionResult Post(BMI value)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (value.source == null || value.humanId == 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      = 2; //Wellness
                        sourceServiceObj.SourceID    = 5; //HumanAPI

                        db.tSourceServices.Add(sourceServiceObj);
                    }

                    tUserSourceService userSourceServiceObj = null;

                    //Get credentials
                    tCredential credentialObj =
                        db.tCredentials.SingleOrDefault(x => x.SourceID == 5 && x.SourceUserID == value.humanId &&
                                                        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;
                            }
                        }
                    }

                    tUserVital userVitals = null;
                    userVitals = db.tUserVitals
                                 .SingleOrDefault(x => x.SourceObjectID == value.id);

                    if (userVitals == null)
                    {
                        //insert
                        userVitals = new tUserVital();
                        userVitals.SourceObjectID      = value.id;
                        userVitals.UserID              = credentialObj.UserID;
                        userVitals.tUserSourceService  = userSourceServiceObj;
                        userVitals.UserSourceServiceID = userSourceServiceObj.ID;

                        userVitals.SystemStatusID = 1;
                        userVitals.Name           = "Body Mass Index";
                        userVitals.Value          = value.value;

                        //Dates
                        DateTimeOffset dtoStart;
                        if (RESTfulBAL.Models.DynamoDB.Utilities.ConvertToDateTimeOffset(value.timestamp,
                                                                                         value.tzOffset,
                                                                                         out dtoStart))
                        {
                            userVitals.ResultDateTime = dtoStart;
                        }
                        else
                        {
                            userVitals.ResultDateTime = value.timestamp;
                        }

                        //UOM
                        if (value.unit != null)
                        {
                            tUnitsOfMeasure uom = null;
                            uom = db.tUnitsOfMeasures.SingleOrDefault(x => x.UnitOfMeasure == value.unit);
                            if (uom == null)
                            {
                                uom = new tUnitsOfMeasure();
                                uom.UnitOfMeasure = value.unit;

                                db.tUnitsOfMeasures.Add(uom);
                            }

                            userVitals.tUnitsOfMeasure = uom;
                            userVitals.UOMID           = uom.ID;
                        }

                        db.tUserVitals.Add(userVitals);
                    }
                    else
                    {
                        //update

                        //Dates
                        DateTimeOffset dtoStart;
                        if (RESTfulBAL.Models.DynamoDB.Utilities.ConvertToDateTimeOffset(value.timestamp,
                                                                                         value.tzOffset,
                                                                                         out dtoStart))
                        {
                            userVitals.ResultDateTime = dtoStart;
                        }
                        else
                        {
                            userVitals.ResultDateTime = value.timestamp;
                        }


                        userVitals.Value = value.value;

                        //UOM
                        if (value.unit != null)
                        {
                            tUnitsOfMeasure uom = null;
                            uom = db.tUnitsOfMeasures.SingleOrDefault(x => x.UnitOfMeasure == value.unit);
                            if (uom == null)
                            {
                                uom = new tUnitsOfMeasure();
                                uom.UnitOfMeasure = value.unit;

                                db.tUnitsOfMeasures.Add(uom);
                            }

                            if (!uom.UnitOfMeasure.Equals(value.unit))
                            {
                                userVitals.tUnitsOfMeasure = uom;
                                userVitals.UOMID           = uom.ID;
                            }
                        }

                        userVitals.LastUpdatedDateTime = DateTime.Now;
                        userVitals.tUserSourceService  = userSourceServiceObj;
                    }

                    db.SaveChanges();

                    dbContextTransaction.Commit();

                    return(Ok(userVitals));
                }
                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));
                }
            }
        }
        public IHttpActionResult Post(BloodPressure value)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (value.source == null || value.humanId == 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      = 2; //Wellness
                        sourceServiceObj.SourceID    = 5; //HumanAPI

                        db.tSourceServices.Add(sourceServiceObj);
                    }

                    tUserSourceService userSourceServiceObj = null;

                    //Get credentials
                    tCredential credentialObj =
                        db.tCredentials.SingleOrDefault(x => x.SourceID == 5 && x.SourceUserID == value.humanId &&
                                                        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;
                            }
                        }
                    }

                    string[]          vitalNameArray  = { "Systolic Blood Pressure", "Diastolic Blood Pressure", "Heart Rate" };
                    List <tUserVital> userVitalsArray = new List <tUserVital>();

                    foreach (string vitalNameItem in vitalNameArray)
                    {
                        tUserVital userVital = null;
                        userVital = db.tUserVitals
                                    .SingleOrDefault(x => x.SourceObjectID == value.id && x.Name == vitalNameItem);

                        if (userVital == null)
                        {
                            userVital = new tUserVital();
                            userVital.tUserSourceService  = userSourceServiceObj;
                            userVital.UserID              = credentialObj.UserID;
                            userVital.SourceObjectID      = value.id;
                            userVital.UserSourceServiceID = sourceServiceObj.ID;
                            userVital.Name = vitalNameItem;

                            switch (vitalNameItem)
                            {
                            case "Systolic Blood Pressure":
                                userVital.Value = decimal.Parse(value.systolic);
                                userVital.UOMID = 470;    //mmHg
                                break;

                            case "Diastolic Blood Pressure":
                                userVital.Value = decimal.Parse(value.diastolic);
                                userVital.UOMID = 470;    //mmHg
                                break;

                            case "Heart Rate":
                                userVital.Value = decimal.Parse(value.heartRate);
                                userVital.UOMID = 30;    //bpm
                                break;
                            }

                            //Dates
                            DateTimeOffset dtoStart;
                            if (RESTfulBAL.Models.DynamoDB.Utilities.ConvertToDateTimeOffset(value.timestamp,
                                                                                             value.tzOffset,
                                                                                             out dtoStart))
                            {
                                userVital.ResultDateTime = dtoStart;
                            }
                            else
                            {
                                userVital.ResultDateTime = value.timestamp;
                            }

                            userVital.SystemStatusID = 1;

                            db.tUserVitals.Add(userVital);
                        }
                        else
                        {
                            userVital.Name = vitalNameItem;

                            switch (vitalNameItem)
                            {
                            case "Systolic Blood Pressure":
                                userVital.Value = decimal.Parse(value.systolic);
                                userVital.UOMID = 470;    //mm[Hg]
                                break;

                            case "Diastolic Blood Pressure":
                                userVital.Value = decimal.Parse(value.diastolic);
                                userVital.UOMID = 470;    //mm[Hg]
                                break;

                            case "Heart Rate":
                                userVital.Value = decimal.Parse(value.heartRate);
                                userVital.UOMID = 30;    //bpm
                                break;
                            }

                            //Dates
                            DateTimeOffset dtoStart;
                            if (RESTfulBAL.Models.DynamoDB.Utilities.ConvertToDateTimeOffset(value.timestamp,
                                                                                             value.tzOffset,
                                                                                             out dtoStart))
                            {
                                userVital.ResultDateTime = dtoStart;
                            }
                            else
                            {
                                userVital.ResultDateTime = value.timestamp;
                            }

                            userVital.LastUpdatedDateTime = DateTime.Now;
                            userVital.tUserSourceService  = userSourceServiceObj;
                        }
                        userVitalsArray.Add(userVital);
                    }

                    db.SaveChanges();

                    dbContextTransaction.Commit();

                    return(Ok(userVitalsArray));
                }
                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));
                }
            }
        }
示例#8
0
        public IHttpActionResult Post(Vitals value)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

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

            if (value.results == 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);
                    }

                    tProvider userApprovingProvider = null;
                    if (value.author != null)
                    {
                        userApprovingProvider =
                            db.tProviders.SingleOrDefault(x => x.Name == value.author && x.OrganizationID == userSourceOrganization.OrganizationID);

                        if (userApprovingProvider == null)
                        {
                            userApprovingProvider      = new tProvider();
                            userApprovingProvider.Name = value.author;

                            if (userSourceOrganization != null)
                            {
                                userApprovingProvider.tOrganization  = userSourceOrganization.tOrganization;
                                userApprovingProvider.OrganizationID = userSourceOrganization.tOrganization.ID;
                            }

                            db.tProviders.Add(userApprovingProvider);
                        }
                    }

                    List <tUserVital> userVitalsList = new List <tUserVital>();

                    //loop
                    foreach (var result in value.results)
                    {
                        tUserVital userVitals = null;
                        userVitals = db.tUserVitals
                                     .SingleOrDefault(x => x.SourceObjectID == value.Id && x.Name == result.name);

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

                            if (value.author != null)
                            {
                                userVitals.tProvider  = userApprovingProvider;
                                userVitals.ProviderID = userApprovingProvider.ID;
                            }

                            userVitals.Name           = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(result.name.ToLower());
                            userVitals.ResultDateTime = value.dateTime;
                            userVitals.SystemStatusID = 1;

                            //parse value
                            if (result.value == null)
                            {
                                userVitals.Value = 0M;
                            }
                            else
                            {
                                if (result.unit == null && result.value.Split(' ').Length == 2)
                                {
                                    StringParser sParse = FindUOM(result.value);
                                    if (sParse.matchCount == 1)
                                    {
                                        userVitals.Value = decimal.Parse(sParse.newValue);
                                        userVitals.UOMID = sParse.uomID;
                                        result.unit      = sParse.newUnit;
                                    }
                                    else
                                    {
                                        userVitals.Value = decimal.Parse(result.value);
                                    }
                                }
                                else
                                {
                                    userVitals.Value = decimal.Parse(result.value);
                                }
                            }

                            //UOM
                            if (result.unit != null)
                            {
                                tUnitsOfMeasure uom = null;
                                uom = db.tUnitsOfMeasures.SingleOrDefault(x => x.UnitOfMeasure == result.unit);
                                if (uom == null)
                                {
                                    uom = new tUnitsOfMeasure();
                                    uom.UnitOfMeasure = result.unit;

                                    db.tUnitsOfMeasures.Add(uom);
                                    db.SaveChanges();
                                }

                                userVitals.tUnitsOfMeasure = uom;
                                userVitals.UOMID           = uom.ID;
                            }

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

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

                                        tXrefUserVitalsCode userXrefVitalsCodes = null;
                                        userXrefVitalsCodes = db.tXrefUserVitalsCodes
                                                              .SingleOrDefault(x => x.CodeID == vitalCode.ID &&
                                                                               x.UserVitalsID == userVitals.ID);

                                        if (userXrefVitalsCodes == null)
                                        {
                                            userXrefVitalsCodes              = new tXrefUserVitalsCode();
                                            userXrefVitalsCodes.tUserVital   = userVitals;
                                            userXrefVitalsCodes.tCode        = vitalCode;
                                            userXrefVitalsCodes.CodeID       = vitalCode.ID;
                                            userXrefVitalsCodes.UserVitalsID = userVitals.ID;

                                            db.tXrefUserVitalsCodes.Add(userXrefVitalsCodes);
                                        }
                                    }
                                }
                            }

                            db.tUserVitals.Add(userVitals);
                        }
                        else
                        {
                            //update
                            if (value.author != null)
                            {
                                userVitals.tProvider  = userApprovingProvider;
                                userVitals.ProviderID = userApprovingProvider.ID;
                            }

                            userVitals.Name                = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(result.name.ToLower());
                            userVitals.ResultDateTime      = value.dateTime;
                            userVitals.tUserSourceService  = userSourceServiceObj;
                            userVitals.LastUpdatedDateTime = DateTime.Now;

                            //parse value
                            if (result.value == null)
                            {
                                userVitals.Value = 0M;
                            }
                            else
                            {
                                if (result.unit == null && result.value.Split(' ').Length == 2)
                                {
                                    StringParser sParse = FindUOM(result.value);
                                    if (sParse.matchCount == 1)
                                    {
                                        userVitals.Value = decimal.Parse(sParse.newValue);
                                        userVitals.UOMID = sParse.uomID;
                                        result.unit      = sParse.newUnit;
                                    }
                                    else
                                    {
                                        userVitals.Value = decimal.Parse(result.value);
                                    }
                                }
                                else
                                {
                                    userVitals.Value = decimal.Parse(result.value);
                                }
                            }

                            //UOM
                            if (result.unit != null)
                            {
                                tUnitsOfMeasure uom = null;
                                uom = db.tUnitsOfMeasures.SingleOrDefault(x => x.UnitOfMeasure == result.unit);
                                if (uom == null)
                                {
                                    uom = new tUnitsOfMeasure();
                                    uom.UnitOfMeasure = result.unit;

                                    db.tUnitsOfMeasures.Add(uom);
                                    db.SaveChanges();
                                }

                                userVitals.tUnitsOfMeasure = uom;
                                userVitals.UOMID           = uom.ID;
                            }

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

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

                                        tXrefUserVitalsCode userXrefVitalsCodes = null;
                                        userXrefVitalsCodes = db.tXrefUserVitalsCodes
                                                              .SingleOrDefault(x => x.CodeID == vitalCode.ID &&
                                                                               x.UserVitalsID == userVitals.ID);

                                        if (userXrefVitalsCodes == null)
                                        {
                                            userXrefVitalsCodes              = new tXrefUserVitalsCode();
                                            userXrefVitalsCodes.tUserVital   = userVitals;
                                            userXrefVitalsCodes.tCode        = vitalCode;
                                            userXrefVitalsCodes.CodeID       = vitalCode.ID;
                                            userXrefVitalsCodes.UserVitalsID = userVitals.ID;

                                            db.tXrefUserVitalsCodes.Add(userXrefVitalsCodes);
                                        }
                                    }
                                }
                            }
                        }
                        userVitalsList.Add(userVitals);
                    }

                    db.SaveChanges();

                    dbContextTransaction.Commit();

                    return(Ok(userVitalsList));
                }
                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));
                }
            }
        }
示例#9
0
        public async Task <IHttpActionResult> GetUserDataWithNotes(int categoryid, string category)
        {
            Models.UserData.UserDataWithNote _retval = new Models.UserData.UserDataWithNote();
            tUserDerivedNote _tUserDerivedNote       = null;

            switch (category)
            {
            case "Allergies":
                #region Allergies
                tUserAllergy _userAllergy = await db.tUserAllergies.FindAsync(categoryid);

                _tUserDerivedNote = db.tUserDerivedNotes.FirstOrDefault(a => a.fkObjectID == _userAllergy.ObjectID);
                _retval           = new Models.UserData.UserDataWithNote()
                {
                    ID            = _tUserDerivedNote != null ? _tUserDerivedNote.ID : -1,
                    ParentId      = _userAllergy.ID,
                    EndDateTime   = _userAllergy.EndDateTime,
                    StartDateTime = _userAllergy.StartDateTime,
                    AllergenID    = _userAllergy.AllergenID,
                    ReactionID    = _userAllergy.ReactionID,
                    SeverityID    = _userAllergy.SeverityID,
                    StatusID      = _userAllergy.StatusID,
                    Note          = _tUserDerivedNote != null ? _tUserDerivedNote.Note : string.Empty
                };
                #endregion
                break;

            case "Care Plans":
                #region Care Plans
                tUserCarePlan _userCarePlan = await db.tUserCarePlans.FindAsync(categoryid);

                _tUserDerivedNote = db.tUserDerivedNotes.FirstOrDefault(a => a.fkObjectID == _userCarePlan.ObjectID);
                _retval           = new Models.UserData.UserDataWithNote()
                {
                    ID                  = _tUserDerivedNote != null ? _tUserDerivedNote.ID : -1,
                    ParentId            = _userCarePlan.ID,
                    EndDateTime         = _userCarePlan.EndDateTime,
                    StartDateTime       = _userCarePlan.StartDateTime,
                    CarePlanTypeID      = _userCarePlan.TypeID,
                    CarePlanSpecialtyID = _userCarePlan.SpecialtyID,
                    CarePlanName        = _userCarePlan.Name,
                    CarePlanText        = _userCarePlan.Text,
                    Note                = _tUserDerivedNote != null ? _tUserDerivedNote.Note : string.Empty
                };
                #endregion
                break;

            case "Encounters":
                #region Encounters
                tUserEncounter _userEncounters = await db.tUserEncounters.FindAsync(categoryid);

                tUserInstruction _FollowUpIns = await db.tUserInstructions.FindAsync(_userEncounters.FollowUpInstructionID);

                tUserInstruction _PatientIns = await db.tUserInstructions.FindAsync(_userEncounters.PatientInstructionID);

                _tUserDerivedNote = db.tUserDerivedNotes.FirstOrDefault(a => a.fkObjectID == _userEncounters.ObjectID);
                _retval           = new Models.UserData.UserDataWithNote()
                {
                    ID                  = _tUserDerivedNote != null ? _tUserDerivedNote.ID : -1,
                    ParentId            = _userEncounters.ID,
                    EncounterDateTime   = _userEncounters.EncounterDateTime,
                    ProviderID          = _userEncounters.ProviderID,
                    VisitTypeID         = _userEncounters.VisitTypeID,
                    Note                = _tUserDerivedNote != null ? _tUserDerivedNote.Note : string.Empty,
                    FollowUpInstruction = _FollowUpIns,
                    PatientInstruction  = _PatientIns
                };
                #endregion
                break;

            case "Functional Statuses":
                #region Functional Statuses
                tUserFunctionalStatus _userFunctionalStatus = await db.tUserFunctionalStatuses.FindAsync(categoryid);

                _tUserDerivedNote = db.tUserDerivedNotes.FirstOrDefault(a => a.fkObjectID == _userFunctionalStatus.ObjectID);
                _retval           = new Models.UserData.UserDataWithNote()
                {
                    ID            = _tUserDerivedNote != null ? _tUserDerivedNote.ID : -1,
                    ParentId      = _userFunctionalStatus.ID,
                    EndDateTime   = _userFunctionalStatus.EndDateTime,
                    StartDateTime = _userFunctionalStatus.StartDateTime,
                    Name          = _userFunctionalStatus.Name,
                    Note          = _tUserDerivedNote != null ? _tUserDerivedNote.Note : string.Empty
                };
                #endregion
                break;

            case "Immunizations":
                #region Immunizations
                tUserImmunization _userImmunization = await db.tUserImmunizations.FindAsync(categoryid);

                _tUserDerivedNote = db.tUserDerivedNotes.FirstOrDefault(a => a.fkObjectID == _userImmunization.ObjectID);
                _retval           = new Models.UserData.UserDataWithNote()
                {
                    ID       = _tUserDerivedNote != null ? _tUserDerivedNote.ID : -1,
                    ParentId = _userImmunization.ID,
                    Name     = _userImmunization.Name,
                    Note     = _tUserDerivedNote != null ? _tUserDerivedNote.Note : string.Empty
                };
                #endregion
                break;

            case "Instructions":
                #region Instruction
                tUserInstruction _userInstruction = await db.tUserInstructions.FindAsync(categoryid);

                _tUserDerivedNote = db.tUserDerivedNotes.FirstOrDefault(a => a.fkObjectID == _userInstruction.ObjectID);
                _retval           = new Models.UserData.UserDataWithNote()
                {
                    ID                = _tUserDerivedNote != null ? _tUserDerivedNote.ID : -1,
                    ParentId          = _userInstruction.ID,
                    Name              = _userInstruction.Name,
                    Text              = _userInstruction.Text,
                    StartDateTime     = _userInstruction.StartDateTime,
                    EndDateTime       = _userInstruction.EndDateTime,
                    InstructionTypeID = _userInstruction.InstructionTypeID,
                    Note              = _tUserDerivedNote != null ? _tUserDerivedNote.Note : string.Empty
                };
                #endregion
                break;

            case "Narratives":
                #region Narratives
                tUserNarrative _userNarrative = await db.tUserNarratives.FindAsync(categoryid);

                _tUserDerivedNote = db.tUserDerivedNotes.FirstOrDefault(a => a.fkObjectID == _userNarrative.ObjectID);
                _retval           = new Models.UserData.UserDataWithNote()
                {
                    ID            = _tUserDerivedNote != null ? _tUserDerivedNote.ID : -1,
                    ParentId      = _userNarrative.ID,
                    ProviderID    = _userNarrative.ProviderID,
                    StartDateTime = _userNarrative.StartDateTime,
                    EndDateTime   = _userNarrative.EndDateTime,
                    Note          = _tUserDerivedNote != null ? _tUserDerivedNote.Note : string.Empty
                };
                #endregion
                break;

            case "Prescriptions":
                #region Prescriptions
                tUserPrescription _userPrescription = await db.tUserPrescriptions.FindAsync(categoryid);

                _tUserDerivedNote = db.tUserDerivedNotes.FirstOrDefault(a => a.fkObjectID == _userPrescription.ObjectID);
                _retval           = new Models.UserData.UserDataWithNote()
                {
                    ID                 = _tUserDerivedNote != null ? _tUserDerivedNote.ID : -1,
                    ParentId           = _userPrescription.ID,
                    ProviderID         = _userPrescription.ProviderID,
                    MedFormID          = _userPrescription.MedFormID,
                    FrequencyUOMID     = _userPrescription.FrequencyUOMID,
                    StrengthUOMID      = _userPrescription.StrengthUOMID,
                    RouteID            = _userPrescription.RouteID,
                    PharmacyID         = _userPrescription.PharmacyID,
                    Name               = _userPrescription.Name,
                    Instructions       = _userPrescription.Instructions,
                    ProductName        = _userPrescription.ProductName,
                    BrandName          = _userPrescription.BrandName,
                    DosageText         = _userPrescription.DosageText,
                    DosageValue        = _userPrescription.DosageValue,
                    FrequencyValue     = _userPrescription.FrequencyValue,
                    StrengthValue      = _userPrescription.StrengthValue,
                    RefillsRemaining   = _userPrescription.RefillsRemaining,
                    RefillsTotal       = _userPrescription.RefillsTotal,
                    ExpirationDateTime = _userPrescription.ExpirationDateTime,
                    StartDateTime      = _userPrescription.StartDateTime,
                    EndDateTime        = _userPrescription.EndDateTime,
                    Note               = _tUserDerivedNote != null ? _tUserDerivedNote.Note : string.Empty
                };
                #endregion
                break;

            case "Problems":
                #region Problems
                tUserProblem _userProblem = await db.tUserProblems.FindAsync(categoryid);

                _tUserDerivedNote = db.tUserDerivedNotes.FirstOrDefault(a => a.fkObjectID == _userProblem.ObjectID);
                _retval           = new Models.UserData.UserDataWithNote()
                {
                    ID            = _tUserDerivedNote != null ? _tUserDerivedNote.ID : -1,
                    Name          = _userProblem.Name,
                    ParentId      = _userProblem.ID,
                    StartDateTime = _userProblem.StartDateTime,
                    EndDateTime   = _userProblem.EndDateTime,
                    Note          = _tUserDerivedNote != null ? _tUserDerivedNote.Note : string.Empty
                };
                #endregion
                break;

            case "Procedures":
                #region Procedures
                tUserProcedure _userProcedure = await db.tUserProcedures.FindAsync(categoryid);

                _tUserDerivedNote = db.tUserDerivedNotes.FirstOrDefault(a => a.fkObjectID == _userProcedure.ObjectID);
                _retval           = new Models.UserData.UserDataWithNote()
                {
                    ID       = _tUserDerivedNote != null ? _tUserDerivedNote.ID : -1,
                    Name     = _userProcedure.Name,
                    ParentId = _userProcedure.ID,
                    PerformingOrganizationID = _userProcedure.PerformingOrganizationID,
                    DeviceID      = _userProcedure.DeviceID,
                    SpecimenID    = _userProcedure.SpecimenID,
                    StartDateTime = _userProcedure.StartDateTime,
                    EndDateTime   = _userProcedure.EndDateTime,
                    Note          = _tUserDerivedNote != null ? _tUserDerivedNote.Note : string.Empty
                };
                #endregion
                break;

            case "Test Results":
                #region Test Results
                tUserTestResult _userTestResult = await db.tUserTestResults.FindAsync(categoryid);

                _tUserDerivedNote = db.tUserDerivedNotes.FirstOrDefault(a => a.fkObjectID == _userTestResult.ObjectID);
                _retval           = new Models.UserData.UserDataWithNote()
                {
                    ID             = _tUserDerivedNote != null ? _tUserDerivedNote.ID : -1,
                    Name           = _userTestResult.Name,
                    Comments       = _userTestResult.Comments,
                    Narrative      = _userTestResult.Narrative,
                    Impression     = _userTestResult.Impression,
                    Transcriptions = _userTestResult.Transcriptions,
                    ParentId       = _userTestResult.ID,
                    ProviderID     = _userTestResult.OrderingProviderID,
                    StatusID       = _userTestResult.StatusID,
                    ResultDateTime = _userTestResult.ResultDateTime,
                    Note           = _tUserDerivedNote != null ? _tUserDerivedNote.Note : string.Empty
                };
                #endregion
                break;

            case "Vitals":
                #region Test Results
                tUserVital _userVital = await db.tUserVitals.FindAsync(categoryid);

                _tUserDerivedNote = db.tUserDerivedNotes.FirstOrDefault(a => a.fkObjectID == _userVital.ObjectID);
                _retval           = new Models.UserData.UserDataWithNote()
                {
                    ID             = _tUserDerivedNote != null ? _tUserDerivedNote.ID : -1,
                    Name           = _userVital.Name,
                    Value          = _userVital.Value,
                    ParentId       = _userVital.ID,
                    ProviderID     = _userVital.ProviderID,
                    UOMID          = _userVital.UOMID,
                    ResultDateTime = _userVital.ResultDateTime,
                    Note           = _tUserDerivedNote != null ? _tUserDerivedNote.Note : string.Empty
                };
                #endregion
                break;

            default:
                break;
            }
            return(Ok(_retval));
        }