コード例 #1
0
        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());
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
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));
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        /*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);
        }
コード例 #7
0
        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>");
        }
コード例 #8
0
        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>");
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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));
            }
        }
コード例 #11
0
        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));
            }
        }
コード例 #12
0
        /// <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);
        }
コード例 #13
0
        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));
            }
        }
コード例 #14
0
        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);
        }
コード例 #15
0
 /// <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);
 }
コード例 #16
0
        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));
        }
コード例 #17
0
        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;
                    }
                }
            }
        }
コード例 #18
0
 /// <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);
 }
コード例 #19
0
        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;
        }
コード例 #20
0
        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);
        }