示例#1
0
        public PatientMedSuppData SavePatientMedSupp(PostPatientMedSuppRequest request)
        {
            try
            {
                PatientMedSuppData result = null;
                IRestClient        client = new JsonServiceClient();
                //[Route("/{Context}/{Version}/{ContractNumber}/PatientMedSupp/Save", "PUT")]
                var url = Common.Helper.BuildURL(string.Format("{0}/{1}/{2}/{3}/PatientMedSupp/Save",
                                                               DDMedicationUrl,
                                                               "NG",
                                                               request.Version,
                                                               request.ContractNumber), request.UserId);
                PatientMedSuppData            data = Mapper.Map <PatientMedSuppData>(request.PatientMedSupp);
                PutPatientMedSuppDataResponse dataDomainResponse = client.Put <PutPatientMedSuppDataResponse>(url, new PutPatientMedSuppDataRequest
                {
                    Context            = "NG",
                    ContractNumber     = request.ContractNumber,
                    UserId             = request.UserId,
                    Version            = request.Version,
                    PatientMedSuppData = data,
                    Insert             = request.Insert
                } as object);

                if (dataDomainResponse != null)
                {
                    result = dataDomainResponse.PatientMedSuppData;
                }
                return(result);
            }
            catch (Exception ex) { throw ex; }
        }
示例#2
0
        public void SavePatientMedSupp_Test()
        {
            PatientMedSupp pms = new PatientMedSupp
            {
                //FamilyId = "54dd28e784ac0714f0cef2cb",
                CategoryId = 1,
                DeleteFlag = false,
                // Dosage = "Two",
                //EndDate = DateTime.UtcNow,
                //FreqHowOftenId = "545be059d43323224896663a",
                //FreqQuantity = "4",
                //   FreqWhenId = "545be126d433232248966643",
                Id       = "54dd2d63d43328283844e107",
                Name     = "ARMES",//"NICOTINE",
                Form     = "TABLET",
                Route    = "ORAL",
                Strength = "56 l",
                //NDCs = ,
                // Notes = "note for Acetomophine 2",
                PatientId = "54dd289384ac0511987c998e",
                //PharmClasses = ,
                //  PrescribedBy = "Dr Basu",
                // Reason = "Reason for Acetomophine 2",
                //SigCode = ,
                SourceId  = "544e9976d433231d9c0330ae",
                StartDate = DateTime.UtcNow,
                StatusId  = 1,
                //  SystemName = "Engage",
                TypeId = "545bdfa1d433232248966638"
            };

            PostPatientMedSuppRequest request = new PostPatientMedSuppRequest
            {
                ContractNumber = contractNumber,
                PatientMedSupp = pms,
                RecalculateNDC = false,
                Insert         = false,
                UserId         = userId,
                Version        = version
            };

            JsonServiceClient.HttpWebRequestFilter = x => x.Headers.Add(string.Format("{0}: {1}", "Token", token));
            //[Route("/{Version}/{ContractNumber}/PatientMedSupp/Save", "POST")]
            PostPatientMedSuppResponse response = client.Post <PostPatientMedSuppResponse>(
                string.Format("{0}/{1}/{2}/PatientMedSupp/Save", url, version, contractNumber), request);

            Assert.IsNotNull(response);
        }
示例#3
0
        public PostPatientMedSuppResponse Post(PostPatientMedSuppRequest request)
        {
            PostPatientMedSuppResponse response = new PostPatientMedSuppResponse();
            ValidateTokenResponse      result   = null;

            try
            {
                if (base.Request != null)
                {
                    request.Token = base.Request.Headers["Token"] as string;
                }
                result = Security.IsUserValidated(request.Version, request.Token, request.ContractNumber);
                if (result.UserId.Trim() != string.Empty)
                {
                    request.UserId          = result.UserId;
                    response.PatientMedSupp = MedicationManager.SavePatientMedSupp(request);
                }
                else
                {
                    throw new UnauthorizedAccessException();
                }
            }
            catch (Exception ex)
            {
                CommonFormatter.FormatExceptionResponse(response, base.Response, ex);
                if ((ex is WebServiceException) == false)
                {
                    MedicationManager.LogException(ex);
                }
            }
            finally
            {
                List <string> patientIds = null;
                if (request.PatientMedSupp != null)
                {
                    patientIds = new List <string>();
                    patientIds.Add(request.PatientMedSupp.PatientId);
                }
                if (result != null)
                {
                    string browser     = (base.Request != null) ? base.Request.UserAgent : unknownBrowserType;
                    string hostAddress = (base.Request != null) ? base.Request.UserHostAddress : unknownUserHostAddress;
                    AuditUtil.LogAuditData(request, result.SQLUserId, patientIds, browser, hostAddress, request.GetType().Name);
                }
            }
            return(response);
        }
示例#4
0
        public List <string> GetMedicationNDCs(PostPatientMedSuppRequest request)
        {
            try
            {
                List <string> result = null;
                IRestClient   client = new JsonServiceClient();
                //[Route("/{Context}/{Version}/{ContractNumber}/Medication/Search", "GET")]
                var url = Common.Helper.BuildURL(string.Format("{0}/{1}/{2}/{3}/Medication/Search",
                                                               DDMedicationUrl,
                                                               "NG",
                                                               request.Version,
                                                               request.ContractNumber), request.UserId);

                string strength = null;
                string unit     = null;
                NGUtils.GetMedStrengthAndUnit(request.PatientMedSupp.Strength, out strength, out unit);

                GetMedicationNDCsDataResponse dataDomainResponse = client.Post <GetMedicationNDCsDataResponse>(url, new GetMedicationNDCsDataRequest
                {
                    Context        = "NG",
                    ContractNumber = request.ContractNumber,
                    UserId         = request.UserId,
                    Version        = request.Version,
                    Name           = request.PatientMedSupp.Name,
                    Strength       = strength,
                    Unit           = unit,
                    Form           = request.PatientMedSupp.Form,
                    Route          = request.PatientMedSupp.Route
                } as object);

                if (dataDomainResponse != null)
                {
                    result = dataDomainResponse.NDCcodes;
                }
                return(result);
            }
            catch (WebServiceException ex)
            {
                throw new WebServiceException("AD:GetMedicationDetails()::" + ex.Message, ex.InnerException);
            }
        }
示例#5
0
        public void CalculateMedicationSigCode_Test()
        {
            var manager = new MedicationManager();

            manager.EndpointUtil = new MedicationEndpointUtil();
            PostPatientMedSuppRequest request = new PostPatientMedSuppRequest();

            request.ContractNumber = contractNumber;
            request.UserId         = userId;
            request.Version        = version;
            //request.Token = token;
            PatientMedSupp patientMedication = new PatientMedSupp {
                Id         = "55dce59e84ac092884e0960a",
                PatientId  = "5325d9f2d6a4850adcbba4ca",
                Name       = "YOUGREEN F",
                CategoryId = 1,
                DeleteFlag = false,
                NDCs       = new List <string>()
                {
                    "42361-043"
                },
                Notes      = "bla bla",
                Reason     = "the reason",
                SourceId   = "544e9976d433231d9c0330ae",
                StatusId   = 1,
                SystemName = "Engage",
                TypeId     = "545bdfa6d433232248966639",

                StartDate    = DateTime.Parse("2016-03-01T06:00:00.000Z"), //DateTime.Now,
                EndDate      = DateTime.Parse("2016-03-14T05:00:00.000Z"), //DateTime.Now.AddDays(10),
                Route        = "TOPICAL",
                Form         = "OINTMENT",
                Strength     = "7.5 g/30g",
                FreqQuantity = "12 bunches",
                FrequencyId  = "54fa11abd433230404046e6b", //Q4H (every 4 hours)
            };

            request.PatientMedSupp = patientMedication;
            string sigCode = manager.CalculateSigCode(request);

            Assert.IsNotNull(sigCode);
            Assert.IsTrue(sigCode.Length > 0);
            Console.WriteLine("sigCode = " + sigCode);

            patientMedication.FrequencyId = "56ddd57f84ac070fc8287596";  //a custom freq -
            sigCode = manager.CalculateSigCode(request);
            Assert.IsNotNull(sigCode);
            Assert.IsTrue(sigCode.Length > 0);
            Console.WriteLine("sigCode with custom frequency = " + sigCode);

            patientMedication.Route    = null;
            patientMedication.Form     = "";
            patientMedication.Strength = null;
            sigCode = manager.CalculateSigCode(request);
            Assert.IsNotNull(sigCode);
            Assert.IsTrue(sigCode.Length > 0);
            Console.WriteLine("sigCode with some empty values = " + sigCode);

            //daylight saving time tests:
            patientMedication.StartDate    = DateTime.Parse("2016-03-01T06:00:00.000Z");
            patientMedication.EndDate      = DateTime.Parse("2016-03-14T05:00:00.000Z");
            patientMedication.FreqQuantity = null;
            patientMedication.FrequencyId  = null;
            sigCode = manager.CalculateSigCode(request);
            Assert.IsNotNull(sigCode);
            Assert.IsTrue(sigCode.Length > 0);
            Console.WriteLine("sig code for dst w /specific dates: ");
            Console.WriteLine("sig code should be 13 days: " + sigCode);

            patientMedication.StartDate = DateTime.Parse("2016-03-13T06:00:00.0000000Z");
            patientMedication.EndDate   = DateTime.Parse("2016-03-14T05:00:00.0000000Z");
            sigCode = manager.CalculateSigCode(request);
            Assert.IsNotNull(sigCode);
            Assert.IsTrue(sigCode.Length > 0);
            Console.WriteLine("sig code should be 1 day: " + sigCode);

            patientMedication.StartDate = DateTime.Parse("2016-03-15T05:00:00.0000000Z");
            patientMedication.EndDate   = DateTime.Parse("2016-03-17T05:00:00.0000000Z");
            sigCode = manager.CalculateSigCode(request);
            Assert.IsNotNull(sigCode);
            Assert.IsTrue(sigCode.Length > 0);
            Console.WriteLine("sig code should be 2 days: " + sigCode);

            patientMedication.StartDate = DateTime.Parse("2016-04-01T05:00:00.0000000Z");
            patientMedication.EndDate   = DateTime.Parse("2017-01-01T06:00:00.0000000Z");
            sigCode = manager.CalculateSigCode(request);
            Assert.IsNotNull(sigCode);
            Assert.IsTrue(sigCode.Length > 0);
            Console.WriteLine("sig code should be 275 days: " + sigCode);
        }
示例#6
0
        public string CalculateSigCode(PostPatientMedSuppRequest request)
        {
            DateTime?startDate      = request.PatientMedSupp.StartDate;
            DateTime?endDate        = request.PatientMedSupp.EndDate;
            string   quantity       = request.PatientMedSupp.FreqQuantity;
            string   strength       = request.PatientMedSupp.Strength;
            string   form           = request.PatientMedSupp.Form;
            string   route          = request.PatientMedSupp.Route;
            string   frequencyId    = request.PatientMedSupp.FrequencyId;
            string   patientId      = request.PatientMedSupp.PatientId;
            string   contractNumber = request.ContractNumber;
            string   token          = request.Token;
            string   userId         = request.UserId;
            double   version        = request.Version;

            string sigCode   = "";
            string dateRange = "";

            if (startDate != null && endDate != null)
            {
                startDate = (DateTime)startDate.Value.ToUniversalTime();
                endDate   = (DateTime)endDate.Value.ToUniversalTime();
                TimeSpan ts   = endDate.Value - startDate.Value;
                int      days = (int)Math.Round(ts.TotalDays); // daylight savings adjustments: just round it
                if (days > 0)
                {
                    dateRange = "for " + days.ToString() + (days == 1 ? " day" : " days");
                }
            }
            if (quantity == null)
            {
                quantity = "";
            }
            quantity = quantity.Trim();
            if (strength == null)
            {
                strength = "";
            }
            strength = strength.Trim();
            if (form == null)
            {
                form = "";
            }
            form = form.Trim();
            if (route == null)
            {
                route = "";
            }
            route = route.Trim();

            if (string.IsNullOrEmpty(quantity.Trim()) && string.IsNullOrEmpty(strength.Trim()) && string.IsNullOrEmpty(form.Trim()) &&
                string.IsNullOrEmpty(route.Trim()) && string.IsNullOrEmpty(frequencyId) && string.IsNullOrEmpty(dateRange))
            {
                sigCode = "-";
            }
            else
            {
                string howOften = "";
                if (!string.IsNullOrEmpty(frequencyId))
                {
                    //get the frequency name (how often) from frequencyId:


                    NGManager         ngManager         = new NGManager();
                    GetLookUpsRequest getLookupsRequest = new GetLookUpsRequest
                    {
                        ContractNumber = contractNumber,
                        Token          = token,
                        TypeName       = "Frequency",
                        UserId         = userId,
                        Version        = version
                    };
                    List <IdNamePair> frequencies = ngManager.GetLookUps(getLookupsRequest);

                    //GetLookUpDetailsRequest lookupRequest = new GetLookUpDetailsRequest
                    //{
                    //    ContractNumber = contractNumber,
                    //    Token = token,
                    //    TypeName = "Frequency",
                    //    UserId = userId,
                    //    Version = version
                    //};
                    //List<LookUpDetails> lookups = ngManager.GetLookUpDetails(lookupRequest); //this has error in the implementation code!
                    if (frequencies != null && frequencies.Count() > 0)
                    {
                        IdNamePair aLookup = frequencies.Where(l => l.Id.Equals(frequencyId)).FirstOrDefault();
                        if (aLookup != null)
                        {
                            howOften = aLookup.Name;
                        }
                        else
                        {
                            GetPatientMedFrequenciesRequest freqRequest = new GetPatientMedFrequenciesRequest();
                            freqRequest.PatientId      = request.PatientMedSupp.PatientId;
                            freqRequest.ContractNumber = contractNumber;
                            freqRequest.UserId         = userId;
                            freqRequest.Token          = token;
                            freqRequest.Version        = version;
                            List <PatientMedFrequency> patientFrequencies = GetPatientMedFrequencies(freqRequest);
                            if (frequencies != null && (frequencies.Count() > 0))
                            {
                                PatientMedFrequency theFrequency = patientFrequencies.Where(f => f.Id.Equals(frequencyId)).FirstOrDefault();
                                if (theFrequency != null)
                                {
                                    howOften = theFrequency.Name;
                                    howOften = howOften.Trim();
                                }
                            }
                        }
                    }
                }
                sigCode = AddSigSubCode(sigCode, quantity);
                sigCode = AddSigSubCode(sigCode, strength);
                sigCode = AddSigSubCode(sigCode, form);
                sigCode = AddSigSubCode(sigCode, route);
                sigCode = AddSigSubCode(sigCode, howOften);
                sigCode = AddSigSubCode(sigCode, dateRange);
            }
            return(sigCode);
        }
示例#7
0
        public PatientMedSupp SavePatientMedSupp(PostPatientMedSuppRequest request)
        {
            PatientMedSupp patientMedSupp = null;

            try
            {
                if (request.PatientMedSupp != null)
                {
                    string name     = string.IsNullOrEmpty(request.PatientMedSupp.Name) ? string.Empty : request.PatientMedSupp.Name.ToUpper();
                    string form     = string.IsNullOrEmpty(request.PatientMedSupp.Form) ? string.Empty : request.PatientMedSupp.Form.ToUpper();
                    string route    = string.IsNullOrEmpty(request.PatientMedSupp.Route) ? string.Empty : request.PatientMedSupp.Route.ToUpper();
                    string strength = string.IsNullOrEmpty(request.PatientMedSupp.Strength) ? string.Empty : request.PatientMedSupp.Strength;

                    #region Search MedicationMap
                    // Search if any record exists with the given combination of name, strength, route and form.
                    GetMedicationMapsRequest mmRequest = new GetMedicationMapsRequest
                    {
                        Name           = name,
                        Route          = route,
                        Form           = form,
                        Strength       = strength,
                        ContractNumber = request.ContractNumber,
                        UserId         = request.UserId,
                        Version        = request.Version
                    };
                    List <MedicationMapData> list = EndpointUtil.SearchMedicationMap(mmRequest);
                    #endregion
                    if (list == null)
                    {
                        MedicationMapData medData = null;
                        if (string.IsNullOrEmpty(request.PatientMedSupp.FamilyId))
                        {
                            #region Insert MedicationMap
                            PostMedicationMapRequest insertReq = new PostMedicationMapRequest
                            {
                                MedicationMap = new DTO.MedicationMap
                                {
                                    FullName      = name,
                                    SubstanceName = string.Empty,
                                    Strength      = strength,
                                    Route         = route,
                                    Form          = form,
                                    Custom        = true,
                                    Verified      = false
                                },
                                ContractNumber = request.ContractNumber,
                                UserId         = request.UserId,
                                Version        = request.Version
                            };
                            medData = EndpointUtil.InsertMedicationMap(insertReq);
                            #endregion
                        }
                        else
                        {
                            #region Update MedicationMap
                            // This saves the initialized medicine map
                            PutMedicationMapRequest req = new PutMedicationMapRequest
                            {
                                MedicationMap = new DTO.MedicationMap
                                {
                                    Id            = request.PatientMedSupp.FamilyId,
                                    FullName      = name,
                                    SubstanceName = string.Empty,
                                    Strength      = strength,
                                    Route         = route,
                                    Form          = form,
                                    Custom        = true,
                                    Verified      = false
                                },
                                ContractNumber = request.ContractNumber,
                                UserId         = request.UserId,
                                Version        = request.Version
                            };
                            medData = EndpointUtil.UpdateMedicationMap(req);
                            #endregion
                        }
                        RegisterMedication(request, medData);
                    }
                    #region Calculate NDC codes.
                    bool calculateNDC = false;
                    if (request.Insert)
                    {
                        calculateNDC = true;
                        request.PatientMedSupp.SystemName = Constants.SystemName;
                    }
                    else
                    {
                        // On update, check for ReCalculateNDC flag.
                        if (request.RecalculateNDC)
                        {
                            calculateNDC = true;
                        }
                    }
                    if (calculateNDC)
                    {
                        request.PatientMedSupp.NDCs = EndpointUtil.GetMedicationNDCs(request);
                    }
                    #endregion

                    string sigCode = CalculateSigCode(request);
                    if (!string.IsNullOrEmpty(sigCode))
                    {
                        request.PatientMedSupp.SigCode = sigCode;
                    }
                    PatientMedSuppData data = EndpointUtil.SavePatientMedSupp(request);
                    if (data != null)
                    {
                        patientMedSupp = Mapper.Map <PatientMedSupp>(data);
                    }
                }
                return(patientMedSupp);
            }
            catch (Exception ex) { throw ex; }
        }