Ejemplo n.º 1
0
        private void PrintGenericSection(PdfOutput output, def_Sections section, int indentLevel)
        {
            output.appendSectionBreak();
            double indent = .5 + labelIndent * (indentLevel - 1);

            output.appendWrappedText(section.identifier, indent, 8 - indent, 12);
            output.drawY -= .2;
            formsRepo.GetSectionItems(section);
            foreach (def_SectionItems si in section.def_SectionItems)
            {
                if (si.subSectionId.HasValue)
                {
                    PrintGenericSection(output, formsRepo.GetSubSectionById(si.subSectionId.Value), indentLevel + 1);
                }
                else
                {
                    def_Items itm = formsRepo.GetItemById(si.itemId);//si.def_Items;
                    indent = labelIndent * indentLevel;
                    output.appendWrappedText(itm.label, indent, 8 - indent, output.boldFont);
                    foreach (def_ItemVariables iv in itm.def_ItemVariables)
                    {
                        def_ResponseVariables rv = formsRepo.GetResponseVariablesByFormResultItemVarId(formResultId, iv.itemVariableId);
                        string s = (rv == null) ? "N/A" : rv.rspValue;
                        indent = valueIndent + labelIndent * (indentLevel - 1);
                        output.appendWrappedText(iv.identifier + ": " + s, indent, 8 - indent);
                    }
                    output.drawY -= .1;
                }
            }
        }
        /// <summary>
        /// Override of FormResultPdfReport.PrintGenericSection
        ///
        /// This will delegate to the special-case section printing methods above, or use the base PrintGenericSection implimentation
        /// </summary>
        /// <param name="output"></param>
        /// <param name="section"></param>
        /// <param name="indentLevel"></param>
        override protected void PrintGenericSection(PdfOutput output, def_Sections section, int indentLevel)
        {
            if (sectionsToSkip.Contains(section.identifier))
            {
                Debug.WriteLine("AdapPdfReport.PrintGenericSection  Skip it: " + section.identifier);
                return;
            }
            else if (specialCaseSections.ContainsKey(section.identifier))
            {
                if (output.drawY < 1.5)
                {
                    output.appendPageBreak();
                }

                if (indentLevel < 2)
                {
                    output.appendSectionBreak();
                }

                double sectionLabelIndent = .5 + labelIndent * (indentLevel - 1);
                double itemLabelIndent    = labelIndent * indentLevel;
                double responseIndent     = valueIndent + labelIndent * (indentLevel - 1);

                //print section content using special case handler
                specialCaseSections[section.identifier].Invoke(section, indentLevel, sectionLabelIndent, itemLabelIndent, responseIndent);
            }
            else
            {
                //print section header and content generically, excluding application comments except in the "finalCert" section
                Dictionary <string, string> responsesByItemVariable = GetResponsesByItemVariableIdentifierThroughLookupTables(section);
                if (section.identifier != "ADAP_finalCert")
                {
                    responsesByItemVariable.Remove("ADAP_Application_Comments_txt");
                }

                Debug.WriteLine("AdapPdfReport.base.PrintGenericSection: " + section.identifier);
                base.PrintGenericSection(output, section, indentLevel, responsesByItemVariable);
            }
        }
        protected void PrintGenericSection(
            PdfOutput output,
            def_Sections section,
            int indentLevel,
            Dictionary <string, string> responsesByItemVariable)
        {
            if (output.drawY < 1.5)
            {
                output.appendPageBreak();
            }

            if (indentLevel < 2)
            {
                output.appendSectionBreak();
            }

            //print section title + identifier
            double sectionLabelIndent = .5 + labelIndent * (indentLevel - 1);
            double itemLabelIndent    = labelIndent * indentLevel;
            double responseIndent     = valueIndent + labelIndent * (indentLevel - 1);

            output.appendWrappedText(buildSectionHeaderText(section),
                                     sectionLabelIndent, 8 - sectionLabelIndent, output.sectionHeaderFontSize);
            output.drawY -= .1;

            List <def_Items> ignoreList = new List <def_Items>();
            int singleBoolCount         = 0;

            formsRepo.GetSectionItems(section);

            //add items wtihout responses to the ignore list, count the number of single-boolean items
            Debug.WriteLine("FormResultPdfReport.PrintGenericSection section: " + section.identifier);
            foreach (def_SectionItems si in section.def_SectionItems.Where(si => !si.subSectionId.HasValue))
            {
                def_Items itm = formsRepo.GetItemById(si.itemId);
                Debug.WriteLine("   itm: " + itm.identifier);
                ICollection <def_ItemVariables> ivs = formsRepo.GetItemVariablesByItemId(itm.itemId);
                if (ivs.Any(iv => !responsesByItemVariable.ContainsKey(iv.identifier) || String.IsNullOrWhiteSpace(responsesByItemVariable[iv.identifier])))
                {
                    ignoreList.Add(itm);
                }

                if ((ivs.Count == 1) && (ivs.First().baseTypeId == 1))
                {
                    singleBoolCount++;
                }
            }

            //if there at least 4 boolean items in this section, ignore all labeled items with single negative boolean responses
            if (singleBoolCount >= 4)
            {
                foreach (def_SectionItems si in section.def_SectionItems.Where(si => !si.subSectionId.HasValue))
                {
                    def_Items itm = formsRepo.GetItemById(si.itemId);
                    ICollection <def_ItemVariables> ivs = formsRepo.GetItemVariablesByItemId(itm.itemId);
                    if (ignoreList.Contains(itm) || itm.label.Trim().Length == 0)
                    {
                        continue;
                    }

                    if (ivs.Count == 1)
                    {
                        def_ItemVariables iv = ivs.First();
                        if ((iv.baseTypeId == 1) && (!responsesByItemVariable.ContainsKey(iv.identifier) || responsesByItemVariable[iv.identifier].Equals("No")))
                        {
                            ignoreList.Add(itm);
                        }
                    }
                }
            }

            //iterate through section items, printing to pdf output
            foreach (def_SectionItems si in section.def_SectionItems)
            {
                if (si.subSectionId.HasValue)
                {
                    PrintGenericSection(output, formsRepo.GetSubSectionById(si.subSectionId.Value), indentLevel + 1);
                }
                else
                {
                    def_Items itm = formsRepo.GetItemById(si.itemId);
                    if (ignoreList.Where(x => x.itemId == itm.itemId).Any())
                    {
                        continue;
                    }

                    formsRepo.GetEnterpriseItems(new def_Items[] { itm }.ToList(), formResults.EnterpriseID.Value);
                    appendItemLabelAndResponses(itm, itemLabelIndent, responseIndent, responsesByItemVariable);
                }
            }
        }
Ejemplo n.º 4
0
        protected void PrintProfilePage(PdfOutput output, int ageInYears)
        {
            List <def_Parts> prts = formsRepo.GetFormParts(form);
            def_Parts        part = prts[0];

            PdfOutput secondCol = output.getSecondColumnBranch();

            output.drawY -= .3;
            if (SessionHelper.LoginStatus.EnterpriseID == 44)
            {
                buildSubheaderWithResults(output, part, "Person Being Assessed",
                                          "itmNmeLst", "nmeFrst", "nmeMdl", "sis_cl_lang_item", "itmGender", "adrlne", "adrcty",
                                          "sis_cl_st1", "sis_cl_zip1", "sis_cl_phone_item",
                                          "sis_cl_dob_dt1", new LabelValuePair("Age", ageInYears.ToString()), "trkNum", new LabelValuePair("Medicaid Number", MaskMedicaidNumber(GetSingleResponse(formsRepo.GetItemByIdentifier("sis_cl_medicaidNum1")))),
                                          new LabelValuePair("SSN", MaskSSN(GetSingleResponse(formsRepo.GetItemByIdentifier("itmSsn")))));
            }
            else
            {
                buildSubheaderWithResults(output, part, "Person Being Assessed",
                                          "itmNmeLst", "nmeFrst", "nmeMdl", "sis_cl_lang_item", "itmGender", "adrlne", "adrcty",
                                          "sis_cl_st1", "sis_cl_zip1", "sis_cl_phone_item",
                                          "sis_cl_dob_dt1", new LabelValuePair("Age", ageInYears.ToString()), "trkNum", "sis_cl_medicaidNum1",
                                          new LabelValuePair("SSN", MaskSSN(GetSingleResponse(formsRepo.GetItemByIdentifier("itmSsn")))));
            }

            buildSubheaderWithResults(output, part, "Assessment Data", "intvwDate", "isp_begin_date_item", new LabelValuePair("SIS ID", formResults.formResultId.ToString()));
            secondCol.drawY -= .6;
            buildSubheaderWithResults(secondCol, part, "Interviewer Data",
                                      "sis_int_full_nm1", "sis_int_agency_nm1", "sis_int_addr_line11", "sis_int_city1",
                                      "sis_int_st1", "sis_int_zip", "sis_int_position_cd1", "sis_int_phone_num1",
                                      "sis_int_phone_num_ext1", "sis_int_email1");
            output.drawY -= .3;
            output.appendSectionBreak();
            output.appendSubHeader("Support Providers", "Essential supports for this individual are being provided by the following");
            buildTableWithItems(output, part, 4,
                                "sis_sup1_name_item", "sis_sup1_reln_item", "sis_sup1_phone_item", "sis_sup1_ext_item",
                                "sis_sup2_name_item", "sis_sup2_reln_item", "sis_sup2_phone_item", "sis_sup2_ext_item",
                                "sis_sup3_name_item", "sis_sup3_reln_item", "sis_sup3_phone_item", "sis_sup3_ext_item",
                                "sis_sup4_name_item", "sis_sup4_reln_item", "sis_sup4_phone_item", "sis_sup4_ext_item",
                                "sis_sup5_name_item", "sis_sup5_reln_item", "sis_sup5_phone_item", "sis_sup5_ext_item",
                                "sis_sup6_name_item", "sis_sup6_reln_item", "sis_sup6_phone_item", "sis_sup6_ext_item");
            output.drawY -= .3;
            output.appendSectionBreak();
            output.appendSubHeader("Respondent Data", "Information for the SIS ratings was provided by the following respondents:");
            //buildTableWithItems(output, part, 5,
            //    new string[] { "First Name", "Last Name", "Agency", "Email", "Language", },
            //    "sis_res1_firstn_item", "sis_res1_lastn_item", "sis_res1_agen_item", "sis_res1_email_item", "sis_res1_lang_item",
            //    "sis_res2_firstn_item", "sis_res2_lastn_item", "sis_res2_agen_item", "sis_res2_email_item", "sis_res2_lang_item",
            //    "sis_res3_firstn_item", "sis_res3_lastn_item", "sis_res3_agen_item", "sis_res3_email_item", "sis_res3_lang_item",
            //    "sis_res4_firstn_item", "sis_res4_lastn_item", "sis_res4_agen_item", "sis_res4_email_item", "sis_res4_lang_item",
            //    "sis_res5_firstn_item", "sis_res5_lastn_item", "sis_res5_agen_item", "sis_res5_email_item", "sis_res5_lang_item",
            //    "sis_res6_firstn_item", "sis_res6_lastn_item", "sis_res6_agen_item", "sis_res6_email_item", "sis_res6_lang_item",
            //    "sis_res7_firstn_item", "sis_res7_lastn_item", "sis_res7_agen_item", "sis_res7_email_item", "sis_res7_lang_item",
            //    "sis_res8_firstn_item", "sis_res8_lastn_item", "sis_res8_agen_item", "sis_res8_email_item", "sis_res8_lang_item",
            //    "sis_res9_firstn_item", "sis_res9_lastn_item", "sis_res9_agen_item", "sis_res9_email_item", "sis_res9_lang_item",
            //    "sis_res10_firstn_item", "sis_res10_lastn_item", "sis_res10_agen_item", "sis_res10_email_item", "sis_res10_lang_item");

            buildTableWithItems(output, part, 6,
                                new string[] { "First Name", "Last Name", "Relationship", "Agency", "Email", "Language", },
                                "sis_res1_firstn_item", "sis_res1_lastn_item", "sis_res1_reln_item", "sis_res1_agen_item", "sis_res1_email_item", "sis_res1_lang_item",
                                "sis_res2_firstn_item", "sis_res2_lastn_item", "sis_res2_reln_item", "sis_res2_agen_item", "sis_res2_email_item", "sis_res2_lang_item",
                                "sis_res3_firstn_item", "sis_res3_lastn_item", "sis_res3_reln_item", "sis_res3_agen_item", "sis_res3_email_item", "sis_res3_lang_item",
                                "sis_res4_firstn_item", "sis_res4_lastn_item", "sis_res4_reln_item", "sis_res4_agen_item", "sis_res4_email_item", "sis_res4_lang_item",
                                "sis_res5_firstn_item", "sis_res5_lastn_item", "sis_res5_reln_item", "sis_res5_agen_item", "sis_res5_email_item", "sis_res5_lang_item",
                                "sis_res6_firstn_item", "sis_res6_lastn_item", "sis_res6_reln_item", "sis_res6_agen_item", "sis_res6_email_item", "sis_res6_lang_item",
                                "sis_res7_firstn_item", "sis_res7_lastn_item", "sis_res7_reln_item", "sis_res7_agen_item", "sis_res7_email_item", "sis_res7_lang_item",
                                "sis_res8_firstn_item", "sis_res8_lastn_item", "sis_res8_reln_item", "sis_res8_agen_item", "sis_res8_email_item", "sis_res8_lang_item",
                                "sis_res9_firstn_item", "sis_res9_lastn_item", "sis_res9_reln_item", "sis_res9_agen_item", "sis_res9_email_item", "sis_res9_lang_item",
                                "sis_res10_firstn_item", "sis_res10_lastn_item", "sis_res10_reln_item", "sis_res10_agen_item", "sis_res10_email_item", "sis_res10_lang_item");


            output.drawY -= .3;

            output.appendSectionBreak();
            buildSubheaderWithResults(output, part, "Person who entered this information",
                                      "sis_entry_firstn_item", "sis_entry_lastn_item");

            if (options[OptionKey.includeComments])
            {
                output.appendSectionBreak();

                def_Items itm = formsRepo.GetItemByIdentifier("SIS-Prof1_PageNotes_item");
                if (itm == null)
                {
                    throw new Exception("could not find item with identifier " + "SIS-Prof1_PageNotes_item");
                }
                string rv = GetSingleResponse(itm);

                output.appendSubHeaderOnNewPageIfNecessary("Other Pertinent Information", rv);

                //BuildItemResults(output, part, "SIS-Prof1_PageNotes_item");
                output.drawY -= .3;
            }

            //output.appendWrappedText("Introduction to the SIS Report:", .36, 7.9, output.boldFont);
        }
Ejemplo n.º 5
0
        //this is for the sections in the "Exceptional medical... needs" part
        private void PrintExceptMedNeedsTable(def_Parts part, PdfOutput output, def_Sections sct)
        {
            int nCols = 4;

            string[] headers = { sct.title, "", "Score", "Important \"To\" or \"For\"" };
            double[] indents = { .5, .75, 5.6, 6.75 };

            //headers
            output.drawY -= .1;
            for (int i = 0; i < nCols; i++)
            {
                output.DrawText(output.boldFont, output.fontSize, indents[i], output.drawY, headers[i]);
            }
            output.drawY += .13; output.appendSectionBreak();
            output.drawY -= PdfOutput.itemSpacing;

            indents = new double[] { .5, .75, 5.73, 6.75 };
            List <def_Items> itms = new List <def_Items>();

            formsRepo.SortSectionItems(sct);
            foreach (def_SectionItems si in sct.def_SectionItems)
            {
                if (si.subSectionId == null)    // NOTE: this case probably never occurs for this Part
                {
                    itms.Add(formsRepo.GetItemById(si.itemId));
                }
                else
                {
                    def_Sections sctn = formsRepo.GetSubSectionById(si.subSectionId);
                    formsRepo.SortSectionItems(sctn);
                    foreach (def_SectionItems ssi in sctn.def_SectionItems)
                    {
                        if (ssi.subSectionId == null)
                        {
                            itms.Add(formsRepo.GetItemById(ssi.itemId));
                        }
                    }
                }
            }
            int nRows = itms.Count() + 1;

            // Load the Values
            for (int row = 0; row < itms.Count; row++)
            {
                def_Items itm = itms[row];
                formsRepo.GetItemResultByFormResItem(formResultId, itm.itemId);
                def_ItemResults itmResults = itm.def_ItemResults.SingleOrDefault(ir => (ir.formResultId == formResultId));
                formsRepo.GetItemResultsResponseVariables(itmResults);
                foreach (def_ResponseVariables rv in itmResults.def_ResponseVariables)
                {
                    rv.def_ItemVariables = formsRepo.GetItemVariableById(rv.itemVariableId);
                }

                output.drawY -= .1;
                for (int col = 0; col < nCols; col++)
                {
                    string s = "ERROR";
                    switch (col)
                    {
                    case 0:
                        s = (row + 1).ToString();
                        break;

                    case 1:
                        s = itm.label;
                        break;

                    case 2:
                        def_ResponseVariables rv = itmResults.def_ResponseVariables.SingleOrDefault(r => r.def_ItemVariables.identifier.EndsWith("_ExMedSupport"));
                        s = ((rv == null) ? "" : rv.rspValue);
                        break;

                    case 3:
                        s = String.Empty;
                        break;
                    }
                    output.DrawText(output.contentFont, output.fontSize, indents[col], output.drawY, s);
                }
                output.drawY -= PdfOutput.itemSpacing * 2.5;
                if (output.drawY < 1)
                {
                    output.appendPageBreak();
                }
            }

            output.drawY -= .1;
            output.DrawText(output.boldFont, output.fontSize, indents[1], output.drawY, "Page Notes:");
            output.drawY -= PdfOutput.itemSpacing * 4;
            if (output.drawY < 1)
            {
                output.appendPageBreak();
            }
        }
Ejemplo n.º 6
0
        // This is for the sets of items that have 3 numerical response values
        private void BuildDetailedResponseTable(def_Parts part, PdfOutput output, def_Sections sct)
        {
            int nCols = 6;

            string[] headers = { sct.title, "", "Freq", "Time", "Type", "Important \"To\" or \"For\"" };
            double[] indents = { .5, .75, 5.3, 5.6, 5.95, 6.75 };

            //headers
            output.drawY -= .1;
            for (int i = 0; i < nCols; i++)
            {
                output.DrawText(output.boldFont, output.fontSize, indents[i], output.drawY, headers[i]);
            }
            output.drawY += .13; output.appendSectionBreak();
            output.drawY -= PdfOutput.itemSpacing;

            indents = new double[] { .5, .75, 5.38, 5.73, 6.05, 6.75 };
            List <def_Items> itms = formsRepo.GetSectionItems(sct);

            // Values
            for (int row = 0; row < itms.Count; row++)
            {
                def_Items       itm        = itms[row];
                def_ItemResults itmResults = formsRepo.GetItemResultByFormResItem(formResultId, itm.itemId);
                formsRepo.GetItemResultsResponseVariables(itmResults);
                foreach (def_ResponseVariables rv in itmResults.def_ResponseVariables)
                {
                    rv.def_ItemVariables = formsRepo.GetItemVariableById(rv.itemVariableId);
                }

                output.drawY -= .1;
                for (int col = 0; col < nCols; col++)
                {
                    string s = "ERROR";
                    switch (col)
                    {
                    case 0:
                        s = (row + 1).ToString();
                        break;

                    case 1:
                        s = itm.label;
                        break;

                    case 2:
                    case 3:
                    case 4:
                        s = null;
                        string suffix = SupportNeedsColumnSuffixes[col - 2];
                        try
                        {
                            //Debug.WriteLine("\titemvariableId= " + ivEnum.Current.itemVariableId);
                            s = itmResults.def_ResponseVariables.SingleOrDefault(rv => rv.def_ItemVariables.identifier.EndsWith(suffix)).rspValue;
                        }
                        catch (System.NullReferenceException ex)
                        {
                            Debug.Print("for itemId " + itm.itemId + ", could not find responseVariable linked to itemVariableIdentifier with suffix \"" + suffix + "\"");
                            Debug.Print("   NullReferenceException: " + ex.Message);
                        }
                        s = String.IsNullOrEmpty(s) ? "N/A" : s;
                        break;

                    case 5:
                        s = String.Empty;
                        break;
                    }
                    output.DrawText(output.contentFont, output.fontSize, indents[col], output.drawY, s);
                }
                output.drawY -= PdfOutput.itemSpacing * 2.5;
                if (output.drawY < 1)
                {
                    output.appendPageBreak();
                }
            }

            output.drawY -= .1;
            output.DrawText(output.boldFont, output.fontSize, indents[1], output.drawY, "Page Notes:");
            output.drawY -= PdfOutput.itemSpacing * 4;
            if (output.drawY < 1)
            {
                output.appendPageBreak();
            }
        }