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