public async Task <ResultDto <Guid, MedicationCreateStatus> > Create(MedicationEntity request, string externalId)
        {
            try
            {
                var model = _mapper.Map <MedicationEntity, MedicationCreateRequest>(request);

                try
                {
                    var _model = _mapper.Map <MedicationCreateRequest, Medication>(model);
                    _model.ExternalId    = externalId;
                    _model.EffectiveDate = DateTime.UtcNow;

                    //convert frequency string to numbers
                    var(frequncyNum, frequncyTimings) = MedicationHelper.GetMedicationFrequentyInNumber(_model.Frenquency);
                    _model.FrenquencyInDay            = frequncyNum;
                    var result = await _repository.Create(_model);

                    return(result);
                }
                catch (DbUpdateConcurrencyException)
                {
                    return(new ResultDto <Guid, MedicationCreateStatus>(MedicationCreateStatus.InternalServerError));
                }
                catch (Exception ex)
                {
                    return(new ResultDto <Guid, MedicationCreateStatus>(MedicationCreateStatus.InternalServerError));
                }
            }
            catch (Exception ex)
            {
                return(new ResultDto <Guid, MedicationCreateStatus>(MedicationCreateStatus.InternalServerError));
            }
        }
Esempio n. 2
0
        private Quantity GetDosageQuantity(MedicationEntity entity)
        {
            Quantity result = new Quantity();

            try
            {
                var resultDuration = Regex.Match(entity.Dosage, @"\d+").Value;
                if (!string.IsNullOrEmpty(resultDuration))
                {
                    int intDuration;
                    var isvalid = int.TryParse(resultDuration, out intDuration);
                    if (isvalid)
                    {
                        result.Value = intDuration;
                    }
                }

                if (entity.Dosage.ToLower().Contains("mg"))
                {
                    result.Unit = "mg";
                }
                else if (entity.Dosage.ToLower().Contains("ml"))
                {
                    result.Unit = "ml";
                }
                result.System = "http://unitsofmeasure.org";
                return(result);
            }
            catch (System.Exception)
            {
                return(result);
            }
        }
Esempio n. 3
0
        public void UpdateMedications(IEnumerable <Medication> models, long orgRoleUserId)
        {
            using (var adapter = PersistenceLayer.GetDataAccessAdapter())
            {
                foreach (var medication in models)
                {
                    var entity = new MedicationEntity();
                    entity.ProprietaryName = medication.ProprietaryName;
                    entity.ServiceDate     = medication.ServiceDate;
                    entity.Dose            = medication.Dose;
                    entity.Unit            = medication.Unit;
                    entity.Frequency       = medication.Frequency;
                    entity.IsPrescribed    = medication.IsPrescribed;
                    entity.IsOtc           = medication.IsOtc;
                    entity.Indication      = medication.Indication;
                    entity.ModifiedBy      = orgRoleUserId;
                    entity.DateModified    = DateTime.Now;
                    entity.IsSynced        = medication.IsSynced;
                    //entity.IsManual = medication.IsManual;

                    var relationPredicateBucket = new RelationPredicateBucket((MedicationFields.Id == medication.Id));
                    adapter.UpdateEntitiesDirectly(entity, relationPredicateBucket);
                }
            }
        }
Esempio n. 4
0
        public bool UpdateMedication(long oldCustomerId, long newCustomerId)
        {
            using (var adapter = PersistenceLayer.GetDataAccessAdapter())
            {
                var medication = new MedicationEntity {
                    CustomerId = newCustomerId
                };
                var bucket = new RelationPredicateBucket(MedicationFields.CustomerId == oldCustomerId);

                adapter.UpdateEntitiesDirectly(medication, bucket);
            }
            return(true);
        }
Esempio n. 5
0
        private MedicationEntity GetMedicationEntity(Entity entity)
        {
            var medEntity = new MedicationEntity
            {
                BeginOffset = entity.BeginOffset,
                EndOffset   = entity.EndOffset,
                Id          = entity.Id,
                Type        = entity.Type.ToString(),
                Category    = entity.Category.ToString(),
                Text        = entity.Text,
                Score       = entity.Score
            };

            //extract attributes
            foreach (var attr in entity.Attributes)
            {
                if (attr.Type == EntitySubType.ROUTE_OR_MODE)
                {
                    medEntity.RouteOrMode = attr.Text;
                }
                else if (attr.Type == EntitySubType.STRENGTH)
                {
                    medEntity.Strength = attr.Text;
                }
                else if (attr.Type == EntitySubType.FORM)
                {
                    medEntity.Form = attr.Text;
                }
                else if (attr.Type == EntitySubType.FREQUENCY)
                {
                    medEntity.Frequency = attr.Text;
                }
                else if (attr.Type == EntitySubType.DURATION)
                {
                    medEntity.Duration = attr.Text;
                }
                else if (attr.Type == EntitySubType.DOSAGE)
                {
                    medEntity.Dosage = attr.Text;
                }
                else if (attr.Type == EntitySubType.RATE)
                {
                    medEntity.Rate = attr.Text;
                }
            }

            return(medEntity);
        }
        private MedicationEntity GetMedication(string value)
        {
            var item = new MedicationEntity();

            var splitMedicine = value.Split(" ", 2);

            if (splitMedicine.Count() >= 2)
            {
                item.Text   = splitMedicine[0];
                item.Dosage = splitMedicine[1];
            }
            else if (splitMedicine.Count() >= 1)
            {
                item.Text = splitMedicine[0];
            }
            return(item);
        }
Esempio n. 7
0
        private List <Code <EventTiming> > GetFrequencyTimings(MedicationEntity entity)
        {
            try
            {
                var whenList    = new  List <Code <EventTiming> >();
                var fhirTimings = new List <FhirDateTime>();

                var(num, timings) = MedicationHelper.GetMedicationFrequentyInNumber(entity.Frequency);
                if (timings == null)
                {
                    return(null);
                }

                foreach (var item in timings)
                {
                    if (item.Equals("8 am", StringComparison.OrdinalIgnoreCase))
                    {
                        //  var fhirFrequency = DateTime.Now.AddHours(8);
                        //  fhirTimings.Add(new FhirDateTime(fhirFrequency));

                        whenList.Add(new Code <EventTiming>(EventTiming.MORN));
                    }
                    if (item.Equals("8 pm", StringComparison.OrdinalIgnoreCase))
                    {
                        whenList.Add(new Code <EventTiming>(EventTiming.NIGHT));

                        // var fhirFrequency = DateTime.Now.AddHours(20);
                        // fhirTimings.Add(new FhirDateTime(fhirFrequency));
                    }
                    if (item.Equals("12 pm", StringComparison.OrdinalIgnoreCase))
                    {
                        whenList.Add(new Code <EventTiming>(EventTiming.AFT));
                    }
                    if (item.Equals("5 pm", StringComparison.OrdinalIgnoreCase))
                    {
                        whenList.Add(new Code <EventTiming>(EventTiming.EVE));
                    }
                }
                return(whenList);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
Esempio n. 8
0
        private CodeableConcept GetRoute(MedicationEntity entity)
        {
            CodeableConcept result = new CodeableConcept();

            try
            {
                result.Coding = new List <Coding>();
                result.Coding.Add(new Coding
                {
                    Display = entity.RouteOrMode
                });
                return(result);
            }
            catch (System.Exception)
            {
                return(null);
            }
        }
Esempio n. 9
0
        private string GetMedicineDosageInstructionText(MedicationEntity entity)
        {
            var display = string.Empty;

            //   dosage.Text = $"{item.Dosage}, {item.RouteOrMode}, {item.Duration}, ";
            //     Text = "50 mg = 2 tab(s), PO, qDay, # 10 tab(s), 2 Refill(s)",

            if (!string.IsNullOrEmpty(entity.Dosage))
            {
                display = "," + entity.Dosage;
            }
            if (!string.IsNullOrEmpty(entity.Form))
            {
                display = display + "," + entity.Form;
            }
            if (!string.IsNullOrEmpty(entity.RouteOrMode))
            {
                display = display + "," + entity.RouteOrMode;
            }
            if (!string.IsNullOrEmpty(entity.Frequency))
            {
                display = display + "," + entity.Frequency;
            }
            if (!string.IsNullOrEmpty(entity.Duration))
            {
                display = display + "," + entity.Duration;
            }
            if (!string.IsNullOrEmpty(entity.Rate))
            {
                display = display + "," + entity.Rate;
            }
            if (!string.IsNullOrEmpty(entity.Strength))
            {
                display = display + "," + entity.Strength;
            }

            return(display);
        }
Esempio n. 10
0
        private Timing GetDosageTiming(MedicationEntity entity)
        {
            var timing = new Timing();

            timing.Repeat = new Timing.RepeatComponent();

            try
            {
                entity.Duration = entity.Duration == null ? "1" : entity.Duration;
                var resultDuration = Regex.Match(entity.Duration, @"\d+")?.Value;
                if (!string.IsNullOrEmpty(resultDuration))
                {
                    int intDuration;
                    var isvalid = int.TryParse(resultDuration, out intDuration);
                    if (isvalid)
                    {
                        timing.Repeat.Duration = intDuration;
                    }
                }
                if (entity.Duration.ToLower().Contains("day") || entity.Duration.ToLower().Contains("days"))
                {
                    timing.Repeat.DurationUnit = Timing.UnitsOfTime.D;
                }
                else if (entity.Duration.ToLower().Contains("week") || entity.Duration.ToLower().Contains("weeks"))
                {
                    timing.Repeat.DurationUnit = Timing.UnitsOfTime.Wk;
                }
                else
                {
                    timing.Repeat.DurationUnit = Timing.UnitsOfTime.D;
                }

                if (entity.FrenquencyInDay > 0)
                {
                    timing.Repeat.DurationUnit = Timing.UnitsOfTime.H;
                }

                // timing.Repeat.Count = 1;
                timing.Repeat.Frequency = entity.DurationInNumber;

                timing.Repeat.WhenElement = GetFrequencyTimings(entity);
                try
                {
                    if (timing.Repeat.WhenElement != null)
                    {
                        var intcount = timing.Repeat.WhenElement.Count;
                        timing.Repeat.Period = intcount;
                    }
                }
                catch (Exception)
                {
                    timing.Repeat.Period = 1;
                }
                // timing.EventElement =
                var objMedicineDuration = new Period();
                objMedicineDuration.StartElement = FhirDateTime.Now();
                objMedicineDuration.EndElement   = new FhirDateTime(DateTime.Now.AddDays(entity.DurationInNumber));
                timing.Repeat.Bounds             = objMedicineDuration;

                return(timing);
            }
            catch (System.Exception ex)
            {
                return(null);
            }
        }