public void GenerateFunctionalStatusEntry(FunctionalStatus ptfunctionalStatus, int refid, III hl7III, Factory hl7factory)
        {
            var Entry = functionalStatus.Section.Entry.Append();

            Entry.AsObservation.MoodCode  = x_ActMoodDocumentObservation.EVN;
            Entry.AsObservation.ClassCode = "OBS";
            hl7III = Entry.AsObservation.TemplateId.Append();
            hl7III.Init("2.16.840.1.113883.10.20.22.4.68");
            hl7III = Entry.AsObservation.Id.Append();
            hl7III.Init(Guid.NewGuid().ToString());

            if (Convert.ToString(ptfunctionalStatus.Description).ToLower().Contains("finding"))
            {
                Entry.AsObservation.Code.Code = "404684003";
            }
            else if (Convert.ToString(ptfunctionalStatus.Description).ToLower().Contains("disease"))
            {
                Entry.AsObservation.Code.Code = "282291009";
            }
            else
            {
                Entry.AsObservation.Code.Code = "409586006";
            }
            Entry.AsObservation.Code.CodeSystem = "2.16.840.1.113883.6.96";
            if (Convert.ToString(ptfunctionalStatus.Description).ToLower().Contains("finding"))
            {
                Entry.AsObservation.Code.DisplayName = "Finding";
            }
            else if (Convert.ToString(ptfunctionalStatus.Description).ToLower().Contains("disease"))
            {
                Entry.AsObservation.Code.DisplayName = "Diagnosis";
            }
            else
            {
                Entry.AsObservation.Code.DisplayName = "Complaint";
            }
            IVXB_TS low = new IVXB_TS();

            low.Init(Convert.ToDateTime(ptfunctionalStatus.StatusDate));
            Entry.AsObservation.Code.OriginalText.Reference.Value = ("#fs" + (refid + 1));
            Entry.AsObservation.StatusCode.Code = "completed";
            Entry.AsObservation.EffectiveTime   = new IVL_TS().Init(low: low);


            //Entry.AsObservation.Code.Code = IIf(InStr(Convert.ToString(ptfunctionalStatus.Description).ToLower(), "finding"), "404684003", IIf(InStr(Convert.ToString(ptfunctionalStatus.Description).ToLower(), "disease"), "282291009", "409586006"));
            //Entry.AsObservation.Code.CodeSystem = "2.16.840.1.113883.6.96";
            //Entry.AsObservation.Code.DisplayName = IIf(InStr(Convert.ToString(ptfunctionalStatus.Description).ToLower(), "finding"), "Finding", IIf(InStr(Convert.ToString(ptfunctionalStatus.Description).ToLower(), "disease"), "Diagnosis", "Complaint"));
            //Entry.AsObservation.Code.OriginalText.Reference.Value = "#fs" + (refid + 1);
            //Entry.AsObservation.StatusCode.Code = "completed";
            //Entry.AsObservation.EffectiveTime.Init(low: new IVXB_TS().Init(ptfunctionalStatus.StatusDate));

            CD obsValueAsCD = new CD();

            obsValueAsCD.OriginalText.Reference.Value = "#fs" + (refid + 1);
            obsValueAsCD.Code           = ptfunctionalStatus.Code;
            obsValueAsCD.CodeSystem     = "2.16.840.1.113883.6.96";
            obsValueAsCD.CodeSystemName = "SNOMED CT";
            obsValueAsCD.DisplayName    = ptfunctionalStatus.Description;
            Entry.AsObservation.Value.Add(obsValueAsCD);
        }
        /// <summary>
        /// Patient Functional Status Information
        /// </summary>
        /// <param name="dataArr"></param>
        /// <returns></returns>
        public List <FunctionalStatus> GetFunctionalStatus(Dictionary <string, ArrayList> dataArr)
        {
            List <FunctionalStatus> functionalStatus = new List <FunctionalStatus>();

            if (dataArr.Count > 0)
            {
                for (int i = 0; i < dataArr.Count; i++)
                {
                    FunctionalStatus ptfunctionalStatus = new FunctionalStatus();
                    ArrayList        itemfunctional     = dataArr[i.ToString()];
                    ptfunctionalStatus.StatusDate  = itemfunctional[2].ToString() == "null" ? null : new DateTime?(Convert.ToDateTime(itemfunctional[2].ToString()));;
                    ptfunctionalStatus.Description = itemfunctional[1].ToString();
                    functionalStatus.Add(ptfunctionalStatus);
                }
            }
            return(functionalStatus);
        }
        public List <FunctionalStatus> FillFunctionalStatus(IEntryCollection entryCollection)
        {
            List <FunctionalStatus> functionalStatus = new List <FunctionalStatus>();

            foreach (IEntry entryitem in entryCollection)
            {
                IObservation     entryObservation = entryitem.AsObservation;
                IIVL_TS          effectiveDate    = entryObservation.EffectiveTime;
                IANY             functionalValue  = entryObservation.Value[0];
                ICD              cD = (ICD)functionalValue;
                FunctionalStatus ptfunctionalStatus = new FunctionalStatus();
                ptfunctionalStatus.StatusDate  = effectiveDate != null ? effectiveDate.Low != null ? effectiveDate.Low.Value != null ? new DateTime?(effectiveDate.Low.AsDateTime) : null : null : null;
                ptfunctionalStatus.Description = cD.DisplayName;
                ptfunctionalStatus.Code        = cD.Code;
                functionalStatus.Add(ptfunctionalStatus);
            }

            return(functionalStatus);
        }