private List <CustomAttributeDTO> getCustomAttributes(PatientMedication patientMedication) { var extendable = (IExtendable)patientMedication; var customAttributes = unitOfWork.Repository <PVIMS.Core.Entities.CustomAttributeConfiguration>() .Queryable() .Where(ca => ca.ExtendableTypeName == typeof(PatientMedication).Name) .ToList(); return(customAttributes.Select(c => new CustomAttributeDTO { CustomAttributeConfigId = c.Id, AttributeName = c.AttributeKey, AttributeTypeName = c.CustomAttributeType.ToString(), Category = c.Category, EntityName = c.ExtendableTypeName, currentValue = GetCustomAttributeVale(extendable, c), lastUpdated = extendable.CustomAttributes.GetUpdatedDate(c.AttributeKey), lastUpdatedUser = extendable.GetUpdatedByUser(c.AttributeKey), Required = c.IsRequired, NumericMaxValue = c.NumericMaxValue, NumericMinValue = c.NumericMinValue, StringMaxLength = c.StringMaxLength, FutureDateOnly = c.FutureDateOnly, PastDateOnly = c.PastDateOnly, }) .ToList()); }
public async Task <List <ConsultationSummary> > getCarePLan(string caseId) { try { List <ConsultationSummary> ConsultationSummary = new List <ConsultationSummary>(); ConsultationSummary model = new ConsultationSummary(); PatientMedication medication = new PatientMedication(); PatientRadiologyOrder radiology = new PatientRadiologyOrder(); PatientLabOrder lab = new PatientLabOrder(); PatientSpecialTest st = new PatientSpecialTest(); PatientTherapy pt = new PatientTherapy(); PatientReferralOrder pr = new PatientReferralOrder(); PatientProcedure pp = new PatientProcedure(); PatientEncounter encounter = new PatientEncounter(); encounter.CaseId = caseId; model.listPatientMedication = medication.getPatientOrder(null, null, null, null, DateTime.MinValue, DateTime.MinValue, false, null, caseId).Result.ToList(); model.listPatientRadiologyOrder = radiology.getPatientOrder(null, null, null, null, DateTime.MinValue, DateTime.MinValue, false, null, caseId).Result.ToList(); model.listPatientLabOrder = lab.getPatientOrder(null, null, null, null, DateTime.MinValue, DateTime.MinValue, false, null, caseId).Result.ToList(); model.listPatientSpecialTest = st.getPatientOrder(null, null, null, null, DateTime.MinValue, DateTime.MinValue, false, "", caseId).Result.ToList(); model.listPatientTherapy = pt.getPatientOrder(null, null, null, null, DateTime.MinValue, DateTime.MinValue, false, null, caseId).Result.ToList(); model.listPatientReferral = pr.getPatientOrder(null, null, null, null, DateTime.MinValue, DateTime.MinValue, false, null, caseId).Result.ToList(); model.listPatientProcedure = pp.getPatientOrder(null, null, null, null, DateTime.MinValue, DateTime.MinValue, false, null, caseId).Result.ToList(); ConsultationSummary.Add(model); return(ConsultationSummary); } catch (Exception ex) { throw ex; } }
public static async Task <int> CallMedicationService() { var service = new MedicationServiceClient(); var header = new MessageHeader() { MessageID = "101", TransactionID = "101", SenderID = "101", SenderApplication = "Debug", ReceiverID = "101", ReceiverApplication = "Effica", CharacterSet = "UTF-16" }; var common = new LisCommon() { ContractKey = ContractKey, UserId = UserId, CallingSystem = CallingSystem, CallingUserId = UserId }; var medicationReq = new MedicationReq() { Area = new Code() { CodeSetName = "Effica/Lifecare", CodeValue = "pth" }, Organisation = new Code { CodeSetName = "Effica/Lifecare", CodeValue = "317" }, PatientId = new PatientId() { Identifier = "010101-0101" } }; // Structures for return data var patientMedication = new PatientMedication[1]; try { service.GetOpenCareMedicationData(ref header, common, medicationReq, out patientMedication); } catch (Exception e) { Debug.Write(e.Message); } return(0); }
public async Task <IActionResult> AddMeds(int id, PatientMedication patientmeds) { if (ModelState.IsValid) { _context.Add(patientmeds); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } PatientEditAddMeds viewModel = new PatientEditAddMeds(_context); return(View(viewModel)); }
public List <PatientMedication> FillMedication(IEntryCollection entryCollection) { List <PatientMedication> Medication = new List <PatientMedication>(); foreach (IEntry entryitem in entryCollection) { ISubstanceAdministration entrySubstanceAdministration = entryitem.AsSubstanceAdministration; foreach (var timeitem in entrySubstanceAdministration.EffectiveTime) { var obj = timeitem.GetType(); string objname = obj.Name; switch (objname) { case "IVL_TS": datetime = (IIVL_TS)timeitem; break; case "PIVL_TS": timeduration = (IPIVL_TS)timeitem; break; } } IIVL_PQ doseQuantity = entrySubstanceAdministration.DoseQuantity; IIVL_PQ rateQuantity = entrySubstanceAdministration.RateQuantity; ICE meterialCode = entrySubstanceAdministration.Consumable.ManufacturedProduct.AsMaterial.Code; IEntryRelationship entryRelationShip = entrySubstanceAdministration.EntryRelationship.Where(e => e.TypeCode.ToString() == "RSON").FirstOrDefault(); if (entryRelationShip != null) { IANY entryvalue = entryRelationShip.AsObservation.Value.FirstOrDefault(); ICE valueCollection = (ICE)entryvalue; } PatientMedication ptMedication = new PatientMedication(); ptMedication.Medication = meterialCode.Translation.FirstOrDefault() != null?meterialCode.Translation.FirstOrDefault().DisplayName : meterialCode.DisplayName != null ? meterialCode.DisplayName : null; ptMedication.RxNorm = meterialCode.Code != null ? meterialCode.Code : null; ptMedication.Frequency = timeduration != null ? timeduration.Value != null?timeduration.Value.ToString() : null : null; ptMedication.doseUnit = doseQuantity.Value.ToString() + " " + doseQuantity.Unit != null?doseQuantity.Unit.ToString() : ""; ptMedication.StartDate = datetime.Low != null ? datetime.Low.Value != null ? new DateTime?(datetime.Low.AsDateTime) : null : null; ptMedication.EndDate = datetime.High != null ? datetime.High.Value != null ? new DateTime?(datetime.High.AsDateTime) : null : null; Medication.Add(ptMedication); } return(Medication); }
/*Save Patient Meditation, supplement, hospitalization etc.. info*/ public static string SavePatientInfo(string key, string title, Guid _pkey) { GuruETCEntities _etc = new GuruETCEntities(); long? ParentId = _etc.PatientProfiles.Where(d => d.UserGuid == _pkey).Select(d => d.Id).FirstOrDefault(); long? ExamId = _etc.PatientExams.Where(d => d.PatientId == ParentId).OrderByDescending(d => d.ExamId).Select(d => d.ExamId).FirstOrDefault(); long? PhealthId = _etc.PatientResultQuestions.Where(d => d.ExamId == ExamId).Select(d => d.PHealthId).FirstOrDefault(); string Result = string.Empty; switch (key) { case "1": PatientMedication _pmedi = new PatientMedication(); _pmedi.Title = title; _pmedi.PHealthId = PhealthId; //By default 1 change it dynamically _pmedi.DateAdded = DateTime.Now; _etc.AddToPatientMedications(_pmedi); _etc.SaveChanges(); Result = _pmedi.MedicationId.ToString(); break; case "2": PatientSupplement _psup = new PatientSupplement(); _psup.Title = title; _psup.PHealthId = PhealthId; //By default 1 change it dynamically _psup.DateAdded = DateTime.Now; _etc.AddToPatientSupplements(_psup); _etc.SaveChanges(); Result = _psup.SupplementId.ToString(); break; case "3": PatientHospitalized _phos = new PatientHospitalized(); _phos.Title = title; _phos.PHealthId = PhealthId; //By default 1 change it dynamically _phos.DateAdded = DateTime.Now; _etc.AddToPatientHospitalizeds(_phos); _etc.SaveChanges(); Result = _phos.HospitalizationId.ToString(); break; } return(Result); }
private void PopulateMetaTables() { Patient patient = new Patient(); ProcessInsertEntity(patient, "Patient"); patient = null; PatientMedication patientMedication = new PatientMedication(); ProcessInsertEntity(patientMedication, "PatientMedication"); patientMedication = null; PatientClinicalEvent patientClinicalEvent = new PatientClinicalEvent(); ProcessInsertEntity(patientClinicalEvent, "PatientClinicalEvent"); patientClinicalEvent = null; PatientCondition patientCondition = new PatientCondition(); ProcessInsertEntity(patientCondition, "PatientCondition"); patientCondition = null; PatientLabTest patientLabTest = new PatientLabTest(); ProcessInsertEntity(patientLabTest, "PatientLabTest"); patientLabTest = null; Encounter encounter = new Encounter(patient); ProcessInsertEntity(encounter, "Encounter"); encounter = null; CohortGroupEnrolment cohortGroupEnrolment = new CohortGroupEnrolment(); ProcessInsertEntity(cohortGroupEnrolment, "CohortGroupEnrolment"); cohortGroupEnrolment = null; PatientFacility patientFacility = new PatientFacility(); ProcessInsertEntity(patientFacility, "PatientFacility"); patientFacility = null; _summary += String.Format("<li>INFO: All meta data seeded...</li>"); }
private void CheckColumnsExist() { Patient patient = new Patient(); ProcessEntity(patient, "Patient"); patient = null; PatientMedication patientMedication = new PatientMedication(); ProcessEntity(patientMedication, "PatientMedication"); patientMedication = null; PatientClinicalEvent patientClinicalEvent = new PatientClinicalEvent(); ProcessEntity(patientClinicalEvent, "PatientClinicalEvent"); patientClinicalEvent = null; PatientCondition patientCondition = new PatientCondition(); ProcessEntity(patientCondition, "PatientCondition"); patientCondition = null; PatientLabTest patientLabTest = new PatientLabTest(); ProcessEntity(patientLabTest, "PatientLabTest"); patientLabTest = null; Encounter encounter = new Encounter(patient); ProcessEntity(encounter, "Encounter"); encounter = null; CohortGroupEnrolment cohortGroupEnrolment = new CohortGroupEnrolment(); ProcessEntity(cohortGroupEnrolment, "CohortGroupEnrolment"); cohortGroupEnrolment = null; PatientFacility patientFacility = new PatientFacility(); ProcessEntity(patientFacility, "PatientFacility"); patientFacility = null; _summary += String.Format("<li>INFO: All columns checked and verified...</li>"); }
public static string DeletePatientInfo(string key, string delId) { GuruETCEntities _etc = new GuruETCEntities(); long GetId = int.Parse(delId); string Result = string.Empty; switch (key) { case "1": PatientMedication _pmedi = _etc.PatientMedications.Where(d => d.MedicationId == GetId).FirstOrDefault(); if (_pmedi != null) { _etc.DeleteObject(_pmedi); _etc.SaveChanges(); } Result = "Success"; break; case "2": PatientSupplement _psup = _etc.PatientSupplements.Where(d => d.SupplementId == GetId).FirstOrDefault(); if (_psup != null) { _etc.DeleteObject(_psup); _etc.SaveChanges(); } Result = "Success"; break; case "3": PatientHospitalized _phos = _etc.PatientHospitalizeds.Where(d => d.HospitalizationId == GetId).FirstOrDefault(); if (_phos != null) { _etc.DeleteObject(_phos); _etc.SaveChanges(); } Result = "Success"; break; } return(Result); }
public async Task <HttpResponseMessage> deleteMedicationDose(PatientMedication patientMedication) { bool data = false; try { ApiResponseModel <bool> model = new ApiResponseModel <bool>() { }; var client = ServiceFactory.GetService(typeof(PatientMedication)); data = await client.deleteMedicationDose(patientMedication.Id); model.data.records = data; return(Response.Success <bool>(model)); } catch (Exception ex) { return(Response.Exception(ex)); } }
public async Task <HttpResponseMessage> AddMedicationOrder(PatientMedication inputmodel) { string data = string.Empty; try { ApiResponseModel <string> model = new ApiResponseModel <string>() { }; var client = ServiceFactory.GetService(typeof(PatientMedication)); data = await client.addPatientOrder(inputmodel); model.data.records = data; return(Response.Success <string>(model)); } catch (Exception ex) { return(Response.Exception(ex)); } }
/// <summary> /// Patient Medication Information /// </summary> /// <param name="dataArr"></param> /// <returns></returns> public List <PatientMedication> GetMedication(Dictionary <string, ArrayList> dataArr) { List <PatientMedication> Medication = new List <PatientMedication>(); if (dataArr.Count > 0) { for (int i = 0; i < dataArr.Count; i++) { PatientMedication ptMedication = new PatientMedication(); ArrayList itemMedication = dataArr[i.ToString()]; ptMedication.Medication = itemMedication[4].ToString(); ptMedication.doseUnit = itemMedication[5].ToString(); ptMedication.RxNorm = itemMedication[0].ToString(); ptMedication.TakingCurrent = itemMedication[1].ToString() == "Active" ? true : false; ptMedication.StartDate = itemMedication[2].ToString() == "null" ? null : new DateTime?(Convert.ToDateTime(itemMedication[2].ToString()));; ptMedication.EndDate = itemMedication[3].ToString() == "null" ? null : new DateTime?(Convert.ToDateTime(itemMedication[3].ToString())); Medication.Add(ptMedication); } } return(Medication); }
public async Task <HttpResponseMessage> updateMedicationOrder(PatientMedication patientMedication) { //string data = string.Empty; bool data = false; try { ApiResponseModel <bool> model = new ApiResponseModel <bool>() { }; var client = ServiceFactory.GetService(typeof(PatientMedication)); data = await client.updatePatientOrder(patientMedication); model.data.records = data; return(Response.Success <bool>(model)); } catch (Exception ex) { return(Response.Exception(ex)); } }
private async Task CustomMapAsync(PatientMedication patientMedicationFromRepo, PatientMedicationDetailDto dto) { IExtendable patientMedicationExtended = patientMedicationFromRepo; // Map all custom attributes dto.MedicationAttributes = _modelExtensionBuilder.BuildModelExtension(patientMedicationExtended) .Select(h => new AttributeValueDto() { Id = h.Id, Key = h.AttributeKey, Value = h.TransformValueToString(), Category = h.Category, SelectionValue = GetSelectionValue(h.Type, h.AttributeKey, h.Value.ToString()) }).Where(s => (s.Value != "0" && !String.IsNullOrWhiteSpace(s.Value)) || !String.IsNullOrWhiteSpace(s.SelectionValue)).ToList(); dto.IndicationType = await _customAttributeService.GetCustomAttributeValueAsync("PatientMedication", "Type of Indication", patientMedicationExtended); dto.ReasonForStopping = await _customAttributeService.GetCustomAttributeValueAsync("PatientMedication", "Reason For Stopping", patientMedicationExtended); dto.ClinicianAction = await _customAttributeService.GetCustomAttributeValueAsync("PatientMedication", "Clinician action taken with regard to medicine if related to AE", patientMedicationExtended); dto.ChallengeEffect = await _customAttributeService.GetCustomAttributeValueAsync("PatientMedication", "Effect OF Dechallenge (D) & Rechallenge (R)", patientMedicationExtended); }
/// <summary> /// Adds a PatientMedication to the Repository. /// </summary> /// <param name="entity">The PatientMedication to add to the Repository.</param> public void Add(PatientMedication entity) { Session.Save(entity); }
public HttpResponseMessage Post(JObject items) { if (items == null) { return(Request.CreateResponse(HttpStatusCode.NoContent, "No records to process ")); } dynamic json = items; List <PatientMedication> synchedPatientMedications = new List <PatientMedication>(); IList <PatientMedicationDTO> patientMedications = ((JArray)json.items) .Select(t => new PatientMedicationDTO { PatientMedicationIdentifier = ((dynamic)t).PatientMedicationIdentifier, PatientId = ((dynamic)t).PatientId, PatientMedicationId = ((dynamic)t).PatientMedicationId, MedicationId = ((dynamic)t).MedicationId, StartDate = ((dynamic)t).StartDate, EndDate = ((dynamic)t).EndDate, Dose = ((dynamic)t).Dose, DoseFrequency = ((dynamic)t).DoseFrequency, DoseUnit = ((dynamic)t).DoseUnit, CustomAttributes = ((dynamic)t).CustomAttributes == null ? null : ((JArray)(((dynamic)t).CustomAttributes)) .Select(x => new CustomAttributeDTO { CustomAttributeConfigId = ((dynamic)x).CustomAttributeConfigId, AttributeTypeName = ((dynamic)x).AttributeTypeName, AttributeName = ((dynamic)x).AttributeName, Category = ((dynamic)x).Category, EntityName = ((dynamic)x).EntityName, currentValue = ((dynamic)x).currentValue, lastUpdated = ((dynamic)x).lastUpdated != "" ? ((dynamic)x).lastUpdated : null, lastUpdatedUser = ((dynamic)x).lastUpdatedUser, Required = ((dynamic)x).Required, NumericMaxValue = ((dynamic)x).NumericMaxValue != "" ? ((dynamic)x).NumericMaxValue : null, NumericMinValue = ((dynamic)x).NumericMinValue != "" ? ((dynamic)x).NumericMinValue : null, StringMaxLength = ((dynamic)x).StringMaxLength != "" ? ((dynamic)x).StringMaxLength : null, FutureDateOnly = ((dynamic)x).FutureDateOnly != "" ? ((dynamic)x).FutureDateOnly : null, PastDateOnly = ((dynamic)x).PastDateOnly != "" ? ((dynamic)x).PastDateOnly : null }).ToList() }).ToList(); // Load entities depedency List <Medication> medications = unitOfWork.Repository <Medication>().Queryable().ToList(); foreach (PatientMedicationDTO patientMedication in patientMedications) { PatientMedication obj = unitOfWork.Repository <PatientMedication>() .Queryable() .SingleOrDefault(e => e.PatientMedicationGuid == patientMedication.PatientMedicationIdentifier); if (obj == null) { obj = new PatientMedication { PatientMedicationGuid = patientMedication.PatientMedicationIdentifier, //Id = patientMedication.PatientMedicationId, Patient = unitOfWork.Repository <Patient>().Queryable().SingleOrDefault(e => e.Id == patientMedication.PatientId), DateStart = patientMedication.StartDate, DateEnd = patientMedication.EndDate, Dose = patientMedication.Dose, DoseFrequency = patientMedication.DoseFrequency, DoseUnit = patientMedication.DoseUnit, Medication = medications.Find(x => x.Id == patientMedication.MedicationId) }; setCustomAttributes(patientMedication.CustomAttributes, obj); if (obj.Patient == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Can't find the patient for patient Medication record " + obj.PatientMedicationGuid)); } unitOfWork.Repository <PatientMedication>().Save(obj); synchedPatientMedications.Add(obj); } else // update record { obj.DateStart = patientMedication.StartDate; obj.DateEnd = patientMedication.EndDate; obj.Dose = patientMedication.Dose; obj.DoseFrequency = patientMedication.DoseFrequency; obj.DoseUnit = patientMedication.DoseUnit; obj.Medication = medications.Find(x => x.Id == patientMedication.MedicationId); setCustomAttributes(patientMedication.CustomAttributes, obj); synchedPatientMedications.Add(obj); unitOfWork.Repository <PatientMedication>().Update(obj); } } unitOfWork.Complete(); var insertedObjs = synchedPatientMedications.Select(p => new PatientMedicationDTO { PatientMedicationIdentifier = p.PatientMedicationGuid, PatientMedicationId = p.Id, PatientId = p.Patient.Id, MedicationId = p.Medication != null? p.Medication.Id: default(int), StartDate = p.DateStart, EndDate = p.DateEnd, Dose = p.Dose, DoseFrequency = p.DoseFrequency, DoseUnit = p.DoseUnit, CustomAttributes = getCustomAttributes(p) }).ToArray(); return(Request.CreateResponse(HttpStatusCode.OK, insertedObjs)); }
private void setCustomAttributes(IEnumerable <CustomAttributeDTO> customAttributes, PatientMedication patientMedication) { if (customAttributes != null) { var patientMedicaationConditionExtended = (IExtendable)patientMedication; foreach (var customAttribute in customAttributes) { switch (customAttribute.AttributeTypeName) { case "Numeric": decimal number = 0M; if (decimal.TryParse(customAttribute.currentValue, out number)) { patientMedicaationConditionExtended.SetAttributeValue(customAttribute.AttributeName, number, User.Identity.Name); } break; case "Selection": Int32 selection = 0; if (Int32.TryParse(customAttribute.currentValue, out selection)) { patientMedicaationConditionExtended.SetAttributeValue(customAttribute.AttributeName, selection, User.Identity.Name); } break; case "DateTime": DateTime parsedDate = DateTime.MinValue; if (DateTime.TryParse(customAttribute.currentValue, out parsedDate)) { patientMedicaationConditionExtended.SetAttributeValue(customAttribute.AttributeName, parsedDate, User.Identity.Name); } break; case "String": default: patientMedicaationConditionExtended.SetAttributeValue(customAttribute.AttributeName, customAttribute.currentValue ?? string.Empty, User.Identity.Name); break; } } } }
/// <summary> /// Removes a PatientMedication from the Repository. /// </summary> /// <param name="entity">The PatientMedication to remove from the Repository.</param> public void Remove(PatientMedication entity) { Session.Delete(entity); }
public void GenerateMedicationEntry(PatientMedication patientMedication, int Index, III hl7III, Factory hl7Factory) { IEntry Entry = functionalStatus.Section.Entry.Append(); var substance = hl7Factory.CreateSubstanceAdministration(); substance.ClassCode = "SBADM"; //substance.MoodCode = "1"; hl7III = substance.TemplateId.Append(); hl7III.Init("2.16.840.1.113883.10.20.22.4.16"); hl7III = substance.Id.Append(); hl7III.Init(Guid.NewGuid().ToString()); substance.Text.Reference.Value = "#" + "medication" + Index; if (patientMedication.TakingCurrent) { substance.StatusCode.Code = "Active"; } else { substance.StatusCode.Code = "Inactive"; } var low = new IVXB_TS(); var high = new IVXB_TS(); if (!string.IsNullOrEmpty((patientMedication.StartDate).ToString())) { low.Init(Convert.ToDateTime(patientMedication.StartDate)); } else { low.NullFlavor = "UNK"; } if (!string.IsNullOrEmpty((patientMedication.StartDate).ToString())) { high.Init(Convert.ToDateTime(patientMedication.StartDate)); } else { high.NullFlavor = "UNK"; } substance.EffectiveTime.Add(new IVL_TS().Init(low: low, high: high)); var et = new PIVL_TS(); et.Operator = 0; et.InstitutionSpecified = true; et.Period.Value = 24; et.Period.Unit = "h"; substance.EffectiveTime.Add(et); if (!string.IsNullOrEmpty(patientMedication.doseUnit) && !string.IsNullOrEmpty(patientMedication.Dose)) { substance.DoseQuantity.Unit = patientMedication.doseUnit.Replace(" ", "").Replace(" ", "").Replace(" ", ""); substance.DoseQuantity.Value = Convert.ToDouble(patientMedication.Dose.ToString().Replace(" ", "").Replace(" ", "").Replace(" ", "")); } else { substance.DoseQuantity.NullFlavor = "UNK"; } substance.RateQuantity.NullFlavor = "UNK"; var Consumable = hl7Factory.CreateConsumable(); var manufacturedProduct = hl7Factory.CreateManufacturedProduct(); manufacturedProduct.ClassCode = 0; hl7III = manufacturedProduct.TemplateId.Append(); hl7III.Init("2.16.840.1.113883.10.20.22.4.23"); var material = hl7Factory.CreateMaterial(); material.Code.Code = patientMedication.RxNorm; material.Code.CodeSystem = "2.16.840.1.113883.6.88"; material.Code.CodeSystemName = "RxNorm"; material.Code.DisplayName = patientMedication.Medication; material.Code.OriginalText.Reference.Value = "#" + "medication" + Index; manufacturedProduct.AsMaterial = material; Consumable.ManufacturedProduct = manufacturedProduct; substance.Consumable = Consumable; Entry.AsSubstanceAdministration = substance; }
public async Task <List <PatientPrescription> > getPrescriptions(string patientId) { List <PatientPrescription> prescriptions = new List <PatientPrescription>(); QueryExpression query = new QueryExpression(xrm.mzk_prescription.EntityLogicalName); query.Criteria.AddCondition("mzk_patient", ConditionOperator.Equal, new Guid(patientId)); FilterExpression childFilter = query.Criteria.AddFilter(LogicalOperator.Or); //childFilter.AddCondition("mzk_prescriptionstatus", ConditionOperator.Equal, 275380000);//Received childFilter.AddCondition("mzk_prescriptionstatus", ConditionOperator.Equal, 275380001); //Verified childFilter.AddCondition("mzk_prescriptionstatus", ConditionOperator.Equal, 275380004); //Ready query.ColumnSet = new ColumnSet("mzk_prescriptionid", "mzk_prescriber", "mzk_contract", "mzk_startdate", "mzk_enddate", "mzk_pharmacist", "mzk_patient", "mzk_prescribercomments"); LinkEntity link1 = new LinkEntity(xrm.mzk_prescription.EntityLogicalName, xrm.mzk_patientorder.EntityLogicalName, "mzk_prescriptionid", "mzk_prescription", JoinOperator.LeftOuter) { Columns = new ColumnSet("mzk_patientorderid", "mzk_productid", "mzk_dosevalue", "mzk_unitid", "mzk_routeid", "mzk_frequencyid", "mzk_medicationtype", "mzk_deliveredquantity", "mzk_remainingorders", "mzk_totalsupplyqty", "mzk_startdate", "mzk_enddate"), LinkCriteria = new FilterExpression(LogicalOperator.And) { Conditions = { new ConditionExpression("mzk_patientorderid", ConditionOperator.NotNull)//None } }, EntityAlias = "MedicationOrder" }; query.LinkEntities.Add(link1); SoapEntityRepository repo = SoapEntityRepository.GetService(); EntityCollection entityCollection = repo.GetEntityCollection(query); var groupedPrescriptions = entityCollection.Entities.GroupBy(item => (item.GetAttributeValue <Guid>("mzk_prescriptionid"))); foreach (var groupedPrescriptionsCurrent in groupedPrescriptions) { PatientPrescription prescription = new PatientPrescription(); prescription.medicationOrder = new List <PatientMedication>(); foreach (Entity entity in groupedPrescriptionsCurrent) { PatientMedication medication = new PatientMedication(); if (entity.Attributes.Contains("mzk_prescriptionid")) { prescription.prescriptionId = entity["mzk_prescriptionid"].ToString(); } if (entity.Attributes.Contains("mzk_prescriber")) { prescription.prescriber = (entity["mzk_prescriber"] as EntityReference).Name; } if (entity.Attributes.Contains("mzk_contract")) { prescription.contract = (entity["mzk_contract"] as EntityReference).Name; } if (entity.Attributes.Contains("mzk_startdate")) { prescription.startDate = (DateTime)entity["mzk_startdate"]; } if (entity.Attributes.Contains("mzk_enddate")) { prescription.endDate = (DateTime)entity["mzk_enddate"]; } if (entity.Attributes.Contains("mzk_pharmacist")) { prescription.pharmacist = (entity["mzk_pharmacist"] as EntityReference).Name; } if (entity.Attributes.Contains("mzk_patient")) { prescription.patient = (entity["mzk_patient"] as EntityReference).Name; } if (entity.Attributes.Contains("mzk_prescribercomments")) { prescription.prescriberComments = entity["mzk_prescribercomments"].ToString(); } if (entity.Attributes.Contains("MedicationOrder.mzk_patientorderid")) { medication.MedicationOrderId = entity.GetAttributeValue <AliasedValue>("MedicationOrder.mzk_patientorderid").Value.ToString(); } if (entity.Attributes.Contains("MedicationOrder.mzk_productid")) { medication.ProductId = (entity.GetAttributeValue <AliasedValue>("MedicationOrder.mzk_productid").Value as EntityReference).Id.ToString(); medication.MedicationName = (entity.GetAttributeValue <AliasedValue>("MedicationOrder.mzk_productid").Value as EntityReference).Name; } if (entity.Attributes.Contains("MedicationOrder.mzk_medicationtype")) { medication.MedicationInstructions = new List <string>(); if (entity.GetAttributeValue <AliasedValue>("MedicationOrder.mzk_medicationtype").Value.Equals(new OptionSetValue(275380000))) { if (entity.Attributes.Contains("MedicationOrder.mzk_dosevalue") && entity.Attributes.Contains("MedicationOrder.mzk_unitid") && entity.Attributes.Contains("MedicationOrder.mzk_routeid") && entity.Attributes.Contains("MedicationOrder.mzk_frequencyid") && entity.Attributes.Contains("MedicationOrder.mzk_startdate") && entity.Attributes.Contains("MedicationOrder.mzk_enddate") ) { medication.MedicationInstructions.Add("Use " + entity.GetAttributeValue <AliasedValue>("MedicationOrder.mzk_dosevalue").Value.ToString() + " " + (entity.GetAttributeValue <AliasedValue>("MedicationOrder.mzk_unitid").Value as EntityReference).Name + " " + (entity.GetAttributeValue <AliasedValue>("MedicationOrder.mzk_routeid").Value as EntityReference).Name + " " + (entity.GetAttributeValue <AliasedValue>("MedicationOrder.mzk_frequencyid").Value as EntityReference).Name + " from " + Convert.ToDateTime(entity.GetAttributeValue <AliasedValue>("MedicationOrder.mzk_startdate").Value).ToShortDateString() + " to " + Convert.ToDateTime(entity.GetAttributeValue <AliasedValue>("MedicationOrder.mzk_enddate").Value).ToShortDateString()); } } if (entity.GetAttributeValue <AliasedValue>("MedicationOrder.mzk_medicationtype").Value.Equals(new OptionSetValue(275380003))) { if (!string.IsNullOrEmpty(medication.MedicationOrderId)) { medication.MedicationInstructions = getMedicationInstructions(medication.MedicationOrderId); } } if (entity.Attributes.Contains("MedicationOrder.mzk_deliveredquantity")) { medication.deliveredQuantity = Convert.ToInt32(entity.GetAttributeValue <AliasedValue>("MedicationOrder.mzk_deliveredquantity").Value); } if (entity.Attributes.Contains("MedicationOrder.mzk_remainingorders")) { medication.remainingQuantity = Convert.ToInt32(entity.GetAttributeValue <AliasedValue>("MedicationOrder.mzk_remainingorders").Value); } if (entity.Attributes.Contains("MedicationOrder.mzk_totalsupplyqty")) { medication.totalQuantity = Convert.ToInt32(entity.GetAttributeValue <AliasedValue>("MedicationOrder.mzk_totalsupplyqty").Value); } prescription.medicationOrder.Add(medication); } } prescriptions.Add(prescription); } return(prescriptions); }