Esempio n. 1
0
        private PatientObservationRecordData GetProblem()
        {
            PatientObservationRecordData data = new PatientObservationRecordData
            {
                Id         = "5347051dd6a48504b497a186",
                DeleteFlag = true
            };

            return(data);
        }
Esempio n. 2
0
        internal static PatientObservationRecordData CreatePatientObservationRecord(PatientObservation po, ObservationValue ov)
        {
            try
            {
                PatientObservationRecordData pord = new PatientObservationRecordData
                {
                    GroupId          = po.GroupId,
                    StartDate        = po.StartDate,
                    TypeId           = po.TypeId,
                    Units            = po.Units,
                    DisplayId        = po.DisplayId,
                    StateId          = po.StateId,
                    DeleteFlag       = po.DeleteFlag,
                    DataSource       = po.DataSource,
                    ExternalRecordId = po.ExternalRecordId
                };

                // Populate Values for Labs and Vitals
                if (ov != null)
                {
                    pord.Id = ov.Id;
                    double dVal = 0;
                    if (double.TryParse(ov.Value, out dVal))
                    {
                        pord.Value = dVal;
                    }
                    else
                    {
                        pord.NonNumericValue = ov.Value;
                    }
                    // Set the End date to start date for Labs and Vitals
                    pord.EndDate = po.StartDate;
                }
                else //  Populate Values for Problems.
                {
                    pord.Id = po.Id;
                    // If the status for PatientObservation(problem) is changed to Resolved or Inactive, then set EndDate to Today.
                    if (IsResolvedOrInactivated(po.StateId))
                    {
                        pord.EndDate = DateTime.UtcNow;
                    }
                    else
                    {
                        pord.EndDate = po.EndDate;
                    }
                }

                return(pord);
            }
            catch (Exception ex)
            {
                throw new Exception("AD:CreatePatientObservationRecord()::" + ex.Message, ex.InnerException);
            }
        }
Esempio n. 3
0
        public void SavePatientObservations_Test()
        {
            // Arrange
            string userId         = "5325c821072ef705080d3488";
            string contractNumber = "InHealth001";
            string context        = "NG";
            string patientId      = "5325d9f3d6a4850adcbba4ce";
            List <PatientObservationRecordData> recordData = new List <PatientObservationRecordData>();

            PatientObservationRecordData data1 = new PatientObservationRecordData
            {
                DisplayId       = 1,
                EndDate         = DateTime.Now.AddDays(10),
                DeleteFlag      = false,
                Id              = "53e3ccb8d6a485134024f1c3",
                NonNumericValue = "22",
                Source          = "CM1",
                StartDate       = DateTime.Now,
                StateId         = 1,
                Units           = "%",
                Value           = 33.0
            };

            PatientObservationRecordData data2 = new PatientObservationRecordData
            {
                DisplayId       = 1,
                EndDate         = DateTime.Now.AddDays(15),
                DeleteFlag      = false,
                Id              = "53e3ccb8d6a485134024f1ce",
                NonNumericValue = "44",
                Source          = "CM2",
                StartDate       = DateTime.Now.AddDays(1),
                StateId         = 2,
                Units           = "ml",
                Value           = 44.0
            };

            recordData.Add(data1);
            recordData.Add(data2);
            PutUpdatePatientObservationsDataRequest request = new PutUpdatePatientObservationsDataRequest {
                PatientId = patientId, Context = context, ContractNumber = contractNumber, UserId = userId, Version = 1, PatientObservationsRecordData = recordData
            };

            PatientObservationDataManager cm = new PatientObservationDataManager {
                Factory = new PatientObservationRepositoryFactory()
            };
            PutUpdatePatientObservationsDataResponse response = cm.UpdatePatientObservations(request);

            Assert.IsNotNull(response);
        }
Esempio n. 4
0
        public PostUpdateObservationItemsResponse SavePatientObservations(PostUpdateObservationItemsRequest request)
        {
            try
            {
                PostUpdateObservationItemsResponse response = new PostUpdateObservationItemsResponse();

                List <PatientObservation> obsl = request.PatientObservations;

                //List<string> patientObservationIds = ObservationsUtil.GetPatientObservationIds(obsl);
                List <PatientObservationRecordData> poRecordDataList = new List <PatientObservationRecordData>();
                if (request.PatientObservations != null && request.PatientObservations.Count > 0)
                {
                    foreach (PatientObservation po in obsl)
                    {
                        PatientObservationRecordData pord = null;
                        if (po.Values != null && po.Values.Count > 0) // Labs and Vitals have values
                        {
                            foreach (ObservationValue ov in po.Values)
                            {
                                pord = ObservationsUtil.CreatePatientObservationRecord(po, ov);
                                //ObservationEndpointUtil.UpdatePatientObservation(request, pord);
                                poRecordDataList.Add(pord);
                            }
                        }
                        else // Problem does not have values
                        {
                            pord = ObservationsUtil.CreatePatientObservationRecord(po, null);
                            //ObservationEndpointUtil.UpdatePatientObservation(request, pord);
                            poRecordDataList.Add(pord);
                        }
                    }
                    response = ObservationEndpointUtil.UpdatePatientObservation(request, poRecordDataList);
                }
                response.Version = request.Version;
                return(response);
            }
            catch (Exception ex)
            {
                throw new Exception("AD:SavePatientObservations()::" + ex.Message, ex.InnerException);
            }
        }
Esempio n. 5
0
        public PutUpdateObservationDataResponse UpdatePatientProblem(string patientId, string userId, string elementId, PatientObservation pod, bool _active, IAppDomainRequest request)
        {
            try
            {
                //register call to remote serivce.
                IRestClient client = new JsonServiceClient();

                string url = Common.Helper.BuildURL(string.Format("{0}/{1}/{2}/{3}/Patient/{4}/Observation/Update",
                                                                  DDPatientObservationServiceUrl,
                                                                  "NG",
                                                                  request.Version,
                                                                  request.ContractNumber,
                                                                  patientId), request.UserId);

                PatientObservationRecordData pdata = new PatientObservationRecordData
                {
                    Id         = pod.Id,
                    StateId    = pod.StateId,
                    DeleteFlag = false
                };

                PutUpdateObservationDataRequest purequest = new PutUpdateObservationDataRequest
                {
                    PatientObservationData = pdata,
                    Context        = "NG",
                    ContractNumber = request.ContractNumber,
                    UserId         = request.UserId,
                };

                PutUpdateObservationDataResponse dataDomainResponse =
                    client.Put <PutUpdateObservationDataResponse>(
                        url, purequest as object);

                return(dataDomainResponse);
            }
            catch (Exception ex)
            {
                throw new Exception("AD:PlanElementEndpointUtil:UpdatePatientProblem()::" + ex.Message, ex.InnerException);
            }
        }
        object IRepository.Update(object entity)
        {
            bool result = false;
            PutUpdateObservationDataRequest odr  = (PutUpdateObservationDataRequest)entity;
            PatientObservationRecordData    pord = odr.PatientObservationData;

            try
            {
                using (PatientObservationMongoContext ctx = new PatientObservationMongoContext(_dbName))
                {
                    var q = MB.Query <MEPatientObservation> .EQ(b => b.Id, ObjectId.Parse(pord.Id));

                    var uv = new List <MB.UpdateBuilder>();
                    uv.Add(MB.Update.Set(MEPatientObservation.DeleteFlagProperty, pord.DeleteFlag));
                    if (pord.DeleteFlag)
                    {
                        uv.Add(MB.Update.Set(MEPatientObservation.TTLDateProperty, System.DateTime.UtcNow.AddDays(_expireDays)));
                    }
                    else
                    {
                        uv.Add(MB.Update.Set(MEPatientObservation.TTLDateProperty, BsonNull.Value));
                    }
                    uv.Add(MB.Update.Set(MEPatientObservation.UpdatedByProperty, ObjectId.Parse(this.UserId)));
                    uv.Add(MB.Update.Set(MEPatientObservation.LastUpdatedOnProperty, System.DateTime.UtcNow));
                    uv.Add(MB.Update.Set(MEPatientObservation.VersionProperty, odr.Version));

                    if (pord.NonNumericValue != null)
                    {
                        uv.Add(MB.Update.Set(MEPatientObservation.NonNumericValueProperty, pord.NonNumericValue));
                    }
                    if (pord.Value != null)
                    {
                        uv.Add(MB.Update.Set(MEPatientObservation.NumericValueProperty, BsonDouble.Create(pord.Value)));
                    }
                    if (pord.Units != null)
                    {
                        uv.Add(MB.Update.Set(MEPatientObservation.UnitsProperty, pord.Units));
                    }
                    if (pord.StartDate != null)
                    {
                        uv.Add(MB.Update.Set(MEPatientObservation.StartDateProperty, pord.StartDate));
                    }
                    else
                    {
                        uv.Add(MB.Update.Set(MEPatientObservation.StartDateProperty, BsonNull.Value));
                    }
                    if (pord.EndDate != null)
                    {
                        uv.Add(MB.Update.Set(MEPatientObservation.EndDateProperty, pord.EndDate));
                    }
                    else
                    {
                        uv.Add(MB.Update.Set(MEPatientObservation.EndDateProperty, BsonNull.Value));
                    }
                    if (pord.DisplayId != 0)
                    {
                        uv.Add(MB.Update.Set(MEPatientObservation.DisplayProperty, pord.DisplayId));
                    }
                    if (pord.StateId != 0)
                    {
                        uv.Add(MB.Update.Set(MEPatientObservation.ObservationStateProperty, pord.StateId));
                    }
                    if (pord.Source != null)
                    {
                        uv.Add(MB.Update.Set(MEPatientObservation.SourceProperty, pord.Source));
                    }

                    if (pord.DataSource != null)
                    {
                        uv.Add(MB.Update.Set(MEPatientObservation.DataSourceProperty, pord.DataSource));
                    }
                    else
                    {
                        uv.Add(MB.Update.Set(MEPatientObservation.DataSourceProperty, BsonNull.Value));
                    }

                    if (pord.ExternalRecordId != null)
                    {
                        uv.Add(MB.Update.Set(MEPatientObservation.ExternalRecordIdProperty, pord.ExternalRecordId));
                    }
                    else
                    {
                        uv.Add(MB.Update.Set(MEPatientObservation.ExternalRecordIdProperty, BsonNull.Value));
                    }

                    IMongoUpdate update = MB.Update.Combine(uv);
                    ctx.PatientObservations.Collection.Update(q, update);
                    AuditHelper.LogDataAudit(this.UserId,
                                             MongoCollectionName.PatientObservation.ToString(),
                                             pord.Id,
                                             Common.DataAuditType.Update,
                                             odr.ContractNumber);

                    result = true;
                }
                return(result as object);
            }
            catch (Exception ex) { throw new Exception("PatientObservationDD:MongoPatientBarrierRepository:Update()::" + ex.Message, ex.InnerException); }
        }