/****************************************************************\

PROGRAM:       C:\MEPS\PROG\EXAMPLE07.SAS

DESCRIPTION:  	THIS EXAMPLE SHOWS HOW TO COMPUTE PERSON-LEVEL
               PRESCRIBED MEDICINE EXPENDITURES FOR PERSONS
               WITH AT LEAST ONE PMED EVENT.

INPUT FILES:  	C:\MEPS\DATA\H77A.SAS7BDAT (2003 PMED EVENTS FILE)
               C:\MEPS\DATA\H79.SAS7BDAT (2003 FULL-YEAR DATA FILE)

\****************************************************************/

FOOTNOTE 'PROGRAM: C:\MEPS\PROG\PMED\EXAMPLE07.SAS';

LIBNAME CDATA V8 'C:\MEPS\DATA';

TITLE1 'AHRQ MEPS DATA USERS WORKSHOP -- JULY 2006';
TITLE2 'PERSON LEVEL PRESCRIBED MEDICINE EXPENDITURES';

PROC FORMAT;
	VALUE AGECAT 
	.='TOTAL'
	1='UNDER 18'
	2='18 - 64'
	3='65 AND OLDER'
	;
	VALUE RACETHN
	1 = 'HISPANIC'
	2 = 'BLACK'
	3 = 'ASIAN'
	4 = 'OTHER';
   VALUE INSCOV
   1 = 'ANY PRIVATE'
   2 = 'PUBLIC ONLY'
   3 = 'UNINSURED';
RUN;

/***** USE THE PMED EVENTS FILE (HC-077A) TO IDENTIFY *****/
/***** PERSON WITH AT LEAST ONE PMED EVENT.           *****/

PROC SORT DATA= CDATA.H77A (KEEP= DUPERSID) OUT= PUF77A NODUPKEY;
   BY DUPERSID;
RUN;
 
DATA PUF79 ; 
	SET CDATA.H79 (KEEP= DUPERSID AGE: RX: RACETHNX 
	                PERWT03F VAR: INSCOV03);
	IF AGE03X>=0 THEN AGE=AGE03X;
	ELSE IF AGE53X>=0 THEN AGE=AGE53X;
	ELSE IF AGE42X>=0 THEN AGE=AGE42X;
	ELSE IF AGE31X>=0 THEN AGE=AGE31X;
	ELSE AGE=AGE03X;
	IF 0<= AGE <18 THEN AGECAT=1;
	ELSE IF 18 <= AGE <65 THEN AGECAT=2;
	ELSE IF AGE>=65 THEN AGECAT=3;
	OTHER=(RXEXP03-(RXMCD03+RXMCR03+RXPRV03+RXSLF03));
	RXEXP03X=RXEXP03/1000;
	RXMCD03X=RXMCD03/1000;
	RXMCR03X=RXMCR03/1000;
	RXPRV03X=RXPRV03/1000;
	RXSLF03X=RXSLF03/1000;
	OTHERX=OTHER/1000;
	LABEL 	AGECAT='AGE IN YEARS'
	         RACETHNX='RACE/ETHNICITY'
	         INSCOV03='INSURANCE STATUS'
	         RXEXP03='TOTAL PMED EXP'
	         RXMCD03='MEDICAID'
	         RXMCR03='MEDICARE'
	         RXPRV03='PRIVATE'
	         RXSLF03='OUT-OF-POCKET'
	         OTHER='OTHER'
	         RXEXP03X='TOTAL PMED EXP'
	         RXMCD03X='MEDICAID'
	         RXMCR03X='MEDICARE'
	         RXPRV03X='PRIVATE'
	         RXSLF03X='OUT-OF-POCKET'
	         OTHERX='OTHER';
RUN;

PROC SORT DATA= PUF79;
   BY DUPERSID;
RUN;

/***** USE FILE MERGE AS A FILTER, KEEP ONLY PERSONS *****/
/***** ON THE PMED EVENT FILE.                       *****/

DATA PUF79;
   MERGE PUF77A (IN= A) PUF79;
   BY DUPERSID;
   IF A;
RUN;

PROC SURVEYMEANS DATA= PUF79 MEAN STDERR SUM STD;
   VAR RXEXP03;
   STRATA VARSTR;
   CLUSTER VARPSU;
   WEIGHT PERWT03F;
RUN;   

TITLE3 'DOLLARS IN THOUSANDS';

PROC TABULATE DATA=PUF79 MISSING FORMAT=DOLLAR12.0 ;
	CLASS AGECAT RACETHNX INSCOV03;
	VAR   RXEXP03X RXSLF03X RXPRV03X RXMCR03X RXMCD03X OTHERX;
	FORMAT AGECAT AGECAT. RACETHNX RACETHN. INSCOV03 INSCOV. ;  
	TABLE  ALL='TOTAL' AGECAT RACETHNX INSCOV03 , 
		RXEXP03X*SUM RXSLF03X*SUM RXPRV03X*SUM RXMCR03X*SUM
		RXMCD03X*SUM OTHERX*SUM
		/RTS=24 BOX='2003 TOTAL PMED EXPENDITURES'; 
	WEIGHT PERWT03F;
RUN;

TITLE3 'MEAN EXPENDITURES';

PROC TABULATE DATA=PUF79 MISSING FORMAT=DOLLAR12.0 ;
	CLASS AGECAT  RACETHNX INSCOV03 ;
	VAR   RXEXP03 RXSLF03 RXPRV03 RXMCR03 RXMCD03 OTHER;
	FORMAT AGECAT AGECAT. RACETHNX RACETHN. INSCOV03 INSCOV. ;  
	TABLE  ALL='TOTAL' AGECAT RACETHNX INSCOV03, 
		RXEXP03*MEAN RXSLF03*MEAN RXPRV03*MEAN RXMCR03*MEAN
		RXMCD03*MEAN OTHER*MEAN
		/RTS=24 BOX='2003 MEAN PMED EXPENDITURES'; 
	WEIGHT PERWT03F;
RUN;