Hi Cynthia, I appologize it's taken me so long to respond back. I have this issue resolved. This issue took a bit to figure out as I am still new to ODS. One of our SAS Consultants was able to direct me to a solution and with other Online Documents, gave me what I was looking for. Hope this helps others as well. My Code for the PDF.. /******************************************/ /* MACRO: CREATE DATA FOR REPORT PDF */ /******************************************/ %MACRO mGroup_Info( xST_CD, xST_CAT_CD, xGRP_ID, xSPCLTY ); /******************************************/ /* Create Cost_Quality Compliance Data */ /******************************************/ PROC SQL; CREATE TABLE Work.Cst_Qlty_Cmplnc AS ( SELECT DISTINCT . . . FROM WHERE xGrp.ST_CD = "&xST_CD." AND xGrp.ST_CATEGORY_CD = "&xST_CAT_CD." AND xGrp.GRP_ID = "&xGRP_ID." AND xGrp.SPECIALTY = "&xSPCLTY." ); QUIT; DATA Work.Cst_Qlty_Cmplnc; SET Work.Cst_Qlty_Cmplnc; FORMAT NCQABTE $10.; FORMAT RHICmplnc $10.; FORMAT QltyCmplnc $10.; FORMAT CstCmplnc $10.; /* this field is NCQA/BTE External Recognition quality */ IF EXTERNAL_REC = 'Y' THEN NCQABTE = 'YES'; ELSE NCQABTE = 'NO'; /* this field is rhi quality */ IF CI_MET = 'Y' THEN RHICmplnc = 'YES'; ELSE IF CI_MET = 'N' THEN RHICmplnc = 'NO'; ELSE IF CI_MET = 'DK' THEN RHICmplnc = 'DK'; ELSE RHICmplnc = 'NO DATA'; /* this field is final quality */ IF QUALITY = 'Y' THEN QltyCmplnc = 'YES'; ELSE QltyCmplnc = 'NO'; /* this field is Cost Compliance */ IF FLAG30_OE_RATIO = 'DK' THEN CstCmplnc = 'DK'; ELSE IF FLAG30_OE_RATIO = 'A' THEN CstCmplnc = 'YES'; ELSE IF FLAG30_OE_RATIO = 'B' THEN CstCmplnc = 'YES'; ELSE IF FLAG30_OE_RATIO = 'C' THEN CstCmplnc = 'YES'; ELSE IF FLAG30_OE_RATIO = 'D' THEN CstCmplnc = 'NO'; ELSE IF FLAG30_OE_RATIO = 'E' THEN CstCmplnc = 'NO'; ELSE CstCmplnc = 'NO DATA'; KEEP NCQABTE RHICmplnc QltyCmplnc CstCmplnc ; RUN; /******************************************/ /* OTHER SAS Data */ /******************************************/ . . . . . . . . . . . . %MEND mGroup_Info; /******************************/ /* MACRO: Create Dummy Table */ /******************************/ %MACRO mGroup_Dummy; DATA Work.Cost_Summary_Dummy; Cost_Summary = 'NO DATA'; RUN; /******************************************/ /* OTHER SAS Data */ /******************************************/ . . . . . . . . . . . . %MEND mGroup_Dummy; /************************************/ /* TITLE for New York Report */ /************************************/ %MACRO TITLE2( xST_CAT_CD ); TITLE2 JUSTIFY = CENTER '^S={FONT_FACE=Arial FONT_SIZE=12pt FONT_WEIGHT=BOLD FONT_STYLE=ROMAN JUST=CENTER}New York - ' "&xST_CAT_CD."; %MEND TITLE2; /************************************/ /* PDF REPORT OUTPUT */ /************************************/ %MACRO GRP_SMRY_Rprt( xST_CD, xST_CAT_CD, xGRP_ID, xSPCLTY, xGRP_NM, xLogo, xTITLE );; /* Modify the PDF page properties */ OPTIONS PAPERSIZE=LEGAL ORIENTATION=LANDSCAPE LEFTMARGIN="0.2cm" RIGHTMARGIN="0.2cm" TOPMARGIN="0.5cm" BOTTOMMARGIN="0.5cm"; /* Close the LISTING destination */ ODS LISTING CLOSE; /* Reset the graphics options */ GOPTIONS RESET=ALL NODISPLAY; GOPTIONS NOBORDER DEVICE=SASPRTC; /* No Dates or Notes for PDF */ OPTIONS NONOTES NODATE; /* No Results returned to SAS */ ODS NORESULTS; /* PDF output Destination */ ODS PDF FILE = "&xExport_Path./&xPGM_MSRMNT_YEAR_NBR._&xPGM_CD._&xPGM_PRD_CD._&xRPT_LVL_CD._&xRPT_TYPE_CD._&xENCRYPTN_CD._&xRPT_NM_CD._&xRPT_GNRTN_DT._&xST_CD._&xSPCLTY._&xGRP_ID._&xTPAI_ID._&xTPAI_TYPE_CD..pdf" STYLE=Journal NOTOC STARTPAGE=NEVER COMPRESS=9; /************************************/ /* Used for PDF and should be */ /* something distinct that would */ /* not be in existing data. */ /* A unique character */ /************************************/ ODS ESCAPECHAR='^'; /************************************/ /* Logo and Title for Report */ /************************************/ TITLE1 JUSTIFY = LEFT '^S={PREIMAGE="&xLogo_Path.&xLogo..jpg"}' JUSTIFY = CENTER '^S={FONT_FACE=Arial FONT_SIZE=14pt FONT_WEIGHT=BOLD FONT_STYLE=ROMAN JUST=CENTER}GROUP REPORT'; /************************************/ /* Check if State is New York and */ /* add addition to Title. */ /************************************/ %IF &xST_CD. = 'NY' %THEN %TITLE2( &xST_CAT_CD. ); /************************************/ /* Add addition to Title. */ /************************************/ TITLE3 JUSTIFY = CENTER '^S={FONT_FACE=Arial FONT_SIZE=10pt FONT_WEIGHT=BOLD FONT_STYLE=ROMAN JUST=CENTER}' "&xGRP_ID." ' - ' "&xGRP_NM." ' - ' "&xSPCLTY." JUSTIFY = CENTER '^S={FONT_FACE=Arial FONT_SIZE=10pt FONT_WEIGHT=BOLD FONT_STYLE=ROMAN JUST=CENTER}' "&xPGM_CD." ' Claims Incurred Date: ' "&CLM_PRD_STRT_DT." ' - ' "&CLM_PRD_END_DT."; /************************************/ /* Add Footnote to PDF. */ /************************************/ FOOTNOTE JUSTIFY = LEFT '^S={FONT_FACE=Arial FONT_SIZE=8pt FONT_WEIGHT=BOLD FONT_STYLE=ROMAN JUST=LEFT}The Blue Cross and Blue Shield names and symbols are registered marks of the Blue Cross and Blue Shield Association.' JUSTIFY = LEFT '^S={FONT_FACE=Arial FONT_SIZE=8pt FONT_WEIGHT=BOLD FONT_STYLE=ROMAN JUST=LEFT}Blue Cross and Blue Shield Association. ® ANTHEM is a registered trademark of Anthem Insurance Companies, Inc. ' JUSTIFY = LEFT '^S={FONT_FACE=Arial FONT_SIZE=8pt FONT_WEIGHT=BOLD FONT_STYLE=ROMAN JUST=LEFT}Anthem Blue Cross and Blue Shield is the trade name of Anthem Health Plans, Inc. Independent licensee of the '; ODS PDF STARTPAGE=NOW; PROC REPORT DATA = Work.Cst_Qlty_Cmplnc CENTER MISSING style(report)={FONT_FACE = "Arial" FONT_SIZE = 10pt FONT_WEIGHT = LIGHT FONT_STYLE = ROMAN } style(header)={FONT_FACE = "Arial" FONT_SIZE = 10pt FONT_WEIGHT = BOLD FONT_STYLE = ROMAN } style(column)={FONT_FACE = "Arial" FONT_SIZE = 10pt FONT_WEIGHT = LIGHT FONT_STYLE = ROMAN }; /*************************************/ /* First Column is the Report Header */ /*************************************/ COLUMN ('^S={FONT_FACE=Arial FONT_SIZE=12pt FONT_WEIGHT=BOLD FONT_STYLE=ROMAN JUST=CENTER}Group Quality and Efficiency Designation' CstCmplnc NCQABTE RHICmplnc QltyCmplnc); DEFINE CstCmplnc / CENTER 'Cost Recognition'; DEFINE NCQABTE / CENTER 'Quality NCQA-BTE Recognition'; DEFINE RHICmplnc / CENTER 'Quality RHI Recognition'; DEFINE QltyCmplnc / CENTER 'Quality Recognition'; RUN; ODS TEXT = '^{NEWLINE 2}'; PROC REPORT DATA = Work.Cst_Qlty_Wghtd_Lwr_Upr CENTER MISSING style(report)={FONT_FACE = "Arial" FONT_SIZE = 10pt FONT_WEIGHT = LIGHT FONT_STYLE = ROMAN } style(header)={FONT_FACE = "Arial" FONT_SIZE = 10pt FONT_WEIGHT = BOLD FONT_STYLE = ROMAN } style(column)={FONT_FACE = "Arial" FONT_SIZE = 10pt FONT_WEIGHT = LIGHT FONT_STYLE = ROMAN }; /*************************************/ /* First Column is the Report Header */ /*************************************/ COLUMN ('^S={FONT_FACE=Arial FONT_SIZE=12pt FONT_WEIGHT=BOLD FONT_STYLE=ROMAN JUST=CENTER}Weighted Mean ETG Cost Index & Quality Confidence Intervals' Weighted_Mean_ETG_Index Cst_Lower_CnfdncIntrvl_90prcnt Cst_Upper_CnfdncIntrvl_90prcnt GroupScore Qlty_Lower_CnfdncIntrvl_90prcnt Qlty_Upper_CnfdncIntrvl_90prcnt); DEFINE Weighted_Mean_ETG_Index / FORMAT=8.2 CENTER 'Weighted Mean ETG Index' ; DEFINE Cst_Lower_CnfdncIntrvl_90prcnt / FORMAT=8.2 CENTER 'Cost 90% Lower Confidence Limit' ; DEFINE Cst_Upper_CnfdncIntrvl_90prcnt / FORMAT=8.2 CENTER 'Cost 90% Upper Confidence Limit' ; DEFINE GroupScore / FORMAT=8.2 CENTER 'Quality Score' ; DEFINE Qlty_Lower_CnfdncIntrvl_90prcnt / FORMAT=8.2 CENTER 'Quality 90% Lower Confidence Limit' ; DEFINE Qlty_Upper_CnfdncIntrvl_90prcnt / FORMAT=8.2 CENTER 'Quality 90% Upper Confidence Limit' ; RUN; /*************************************/ /* Add Footnote to Report */ /*************************************/ ODS TEXT = '^{NEWLINE 1}'; ODS TEXT = '^S={FONT_FACE=Arial FONT_SIZE=8pt FONT_WEIGHT=BOLD FONT_STYLE=ROMAN} Quality Compliance:'; ODS TEXT = '^S={FONT_FACE=Arial FONT_SIZE=8pt FONT_WEIGHT=LIGHT FONT_STYLE=ROMAN} 1) A Group must have at least 10 qualifying events (member-measures) to receive a quality compliance score.'; ODS TEXT = '^S={FONT_FACE=Arial FONT_SIZE=8pt FONT_WEIGHT=LIGHT FONT_STYLE=ROMAN} If the quality 90 percent upper confidence limit is greater than or equal to 0.7, then quality designation = Yes '; ODS TEXT = '^S={FONT_FACE=Arial FONT_SIZE=8pt FONT_WEIGHT=LIGHT FONT_STYLE=ROMAN} 2) Additionally, if the group has received a relevant NCQA or BTE designation, quality designation = Yes'; ODS TEXT = '^{NEWLINE 1}'; ODS TEXT = '^S={FONT_FACE=Arial FONT_SIZE=8pt FONT_WEIGHT=BOLD FONT_STYLE=ROMAN} Cost Compliance:'; ODS TEXT = '^S={FONT_FACE=Arial FONT_SIZE=8pt FONT_WEIGHT=LIGHT FONT_STYLE=ROMAN} 1) If lower confidence limit <= 0.95 then cost compliance = Yes'; ODS TEXT = '^S={FONT_FACE=Arial FONT_SIZE=8pt FONT_WEIGHT=LIGHT FONT_STYLE=ROMAN} 2) If lower confidence limit > 0.95 then cost compliance = No'; ODS TEXT = '^S={FONT_FACE=Arial FONT_SIZE=8pt FONT_WEIGHT=LIGHT FONT_STYLE=ROMAN} 3) If cost ETG index and confidence limits are not calculated due'; ODS TEXT = '^S={FONT_FACE=Arial FONT_SIZE=8pt FONT_WEIGHT=LIGHT FONT_STYLE=ROMAN} to low volume then cost compliance = DK (Dont Know)'; ODS TEXT = '^S={FONT_FACE=Arial FONT_SIZE=8pt FONT_WEIGHT=LIGHT FONT_STYLE=ROMAN} 4) The group weighted mean ETG index is calculated in a two-step process:'; ODS TEXT = '^S={FONT_FACE=Arial FONT_SIZE=8pt FONT_WEIGHT=LIGHT FONT_STYLE=ROMAN} First, compute the weighted ETG index for each base ETG = (volume for base ETG x ETG index)'; ODS TEXT = '^S={FONT_FACE=Arial FONT_SIZE=8pt FONT_WEIGHT=LIGHT FONT_STYLE=ROMAN} Second, sum and average the results = (Sum of all weighted ETG indices / total volume for group)'; ODS PDF STARTPAGE=NOW; PROC SQL NOPRINT; SELECT COUNT(*) INTO :Rpt_Cnt FROM WORK.Cost_Summary; QUIT; /*************************************/ /* Check Data Exist for this report */ /*************************************/ %IF &Rpt_Cnt > 0 %THEN %DO; PROC REPORT DATA = WORK.Cost_Summary MISSING style(report)={FONT_FACE = "Arial" FONT_SIZE = 10pt FONT_WEIGHT = LIGHT FONT_STYLE = ROMAN } style(header)={FONT_FACE = "Arial" FONT_SIZE = 10pt FONT_WEIGHT = BOLD FONT_STYLE = ROMAN } style(column)={FONT_FACE = "Arial" FONT_SIZE = 10pt FONT_WEIGHT = LIGHT FONT_STYLE = ROMAN }; /*************************************/ /* First Column is the Report Header */ /*************************************/ COLUMN ('^S={FONT_FACE=Arial FONT_SIZE=12pt FONT_WEIGHT=BOLD FONT_STYLE=ROMAN JUST=CENTER}Group Cost Summary' Physician_Id Physician_Name Episode_Vol SRT_CST Ttl_Dlrs_Allwd Expctd_Dlrs_Allwd Allwd_Dlrs_per_Epsd Expctd_Alwd_Dlrs_per_Epsd Prfrmnc_Ratio_Cmptd); /***************************************/ /* Order by is seperated and not shown */ /***************************************/ DEFINE Physician_Id / FORMAT=$100. 'Physician ID' ; DEFINE Physician_Name / FORMAT=$100. 'Physician Name' ; DEFINE Episode_Vol / FORMAT=COMMA10. ANALYSIS SUM 'Episode Vol' ; DEFINE SRT_CST / ORDER ORDER=INTERNAL DESCENDING NOPRINT; DEFINE Ttl_Dlrs_Allwd / FORMAT=COMMA10. ANALYSIS SUM 'Total $ Allowed' ; DEFINE Expctd_Dlrs_Allwd / FORMAT=COMMA10. ANALYSIS SUM 'Expected $ Allowed' ; DEFINE Allwd_Dlrs_per_Epsd / FORMAT=COMMA10. COMPUTED 'Allowed $ per Episode' ; DEFINE Expctd_Alwd_Dlrs_per_Epsd / FORMAT=COMMA10. COMPUTED 'Expected $ per Episode' ; DEFINE Prfrmnc_Ratio_Cmptd / FORMAT=8.2 COMPUTED 'ETG Index' ; COMPUTE Allwd_Dlrs_per_Epsd; Allwd_Dlrs_per_Epsd = Ttl_Dlrs_Allwd.SUM / Episode_Vol.SUM ; ENDCOMP; COMPUTE Expctd_Alwd_Dlrs_per_Epsd; Expctd_Alwd_Dlrs_per_Epsd = Expctd_Dlrs_Allwd.SUM / Episode_Vol.SUM; ENDCOMP; COMPUTE Prfrmnc_Ratio_Cmptd; Prfrmnc_Ratio_Cmptd = Ttl_Dlrs_Allwd.SUM / Expctd_Dlrs_Allwd.SUM; ENDCOMP; RBREAK AFTER /SUMMARIZE; RUN; %END; %ELSE %DO; /***********************************************/ /* PRINT NO_DATA_FOUND ON REPORT */ /***********************************************/ PROC REPORT DATA = WORK.Cost_Summary; /*************************************/ /* First Column is the Report Header */ /*************************************/ COLUMN ('^S={FONT_FACE=Arial FONT_SIZE=12pt FONT_WEIGHT=BOLD FONT_STYLE=ROMAN JUST=CENTER}Group Cost Summary' Cost_Summary); DEFINE Cost_Summary / CENTER 'Cost Summary' STYLE(COLUMN)=[CELLWIDTH=100 JUST=CENTER]; RUN; %END; /*****************************/ /* Close the PDF destination */ /*****************************/ ODS PDF CLOSE; /*****************************/ /* Open the LISTING */ /*****************************/ ODS LISTING; /******************************/ /* Reset the graphics options */ /******************************/ GOPTIONS RESET=ALL; /******************************/ /* Reset the RESULTS; NOTES; */ /******************************/ ODS RESULTS; OPTIONS NOTES; %MEND GRP_SMRY_Rprt; /******************************/ /* Set OBS for Sample Run */ /******************************/ option obs=15; /************************************/ /* Create Group Summary Temp Table */ /* This already exclude Providers */ /* with No Data */ /************************************/ PROC SQL; CREATE TABLE WORK.Group_Temp AS ( SELECT DISTINCT TRIM(ST_CD) AS ST_CD, TRIM(ST_CATEGORY_CD) AS ST_CATEGORY_CD, TRIM(GRP_ID) AS GRP_ID, TRIM(SPECIALTY) AS SPECIALTY, TRIM(GRP_NM) AS GRP_NM, TRIM( CASE WHEN TRIM(ST_CD) = 'CA' THEN 'Clfrna_Logo' WHEN TRIM(ST_CD) = 'GA' THEN 'Gorgia_Logo' WHEN TRIM(ST_CD) = 'NY' THEN 'Empire_Logo' ELSE 'Anthem_Logo' END) AS xLogo FROM xOut.GROUP_ID WHERE ST_CD = 'CT' ); QUIT; /******************************/ /* ReSet OBS for MAX ROWS */ /******************************/ option obs=max; /***********************/ /* Create Dummy Data */ /***********************/ %mGroup_Dummy; DATA _NULL_; SET WORK.Group_Temp ; BY ST_CD ST_CATEGORY_CD GRP_ID SPECIALTY; /************************/ /* Create file to store */ /* Macro and Values */ /************************/ FILE "&xExport_Path.mGroup_Info_Mcro.sas"; /* For Data */ stmt = CATS('%mGroup_Info(xST_CD=',ST_CD, ', xST_CAT_CD=',ST_CATEGORY_CD, ', xGRP_ID=',GRP_ID, ', xSPCLTY=',SPECIALTY,");"); /**************************/ /* store Macro and Values */ /**************************/ PUT stmt; /* For PDF */ stmt = CATS('%GRP_SMRY_Rprt(xST_CD=',ST_CD, ', xST_CAT_CD=',ST_CATEGORY_CD, ', xGRP_ID=',GRP_ID, ', xSPCLTY=',SPECIALTY, ', xGRP_NM=',GRP_NM, ', xLogo=',xLogo,");"); /**************************/ /* store Macro and Values */ /**************************/ PUT stmt; RUN; /******************************************/ /* Open and Execute File Macro and Values */ /******************************************/ %INCLUDE "&xExport_Path.mGroup_Info_Mcro.sas"; /***************************/ /* Drop all Tempory Tables */ /***************************/ PROC SQL; DROP TABLE Work.Group_Temp; DROP TABLE Work.Cst_Qlty_Cmplnc; . . . . . . QUIT;
... View more