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