Changeset 24369 in main


Ignore:
Timestamp:
12/23/21 11:37:43 (8 months ago)
Author:
LoisHaggard_STG
Message:

NMBIS Backend qModules30 - committing all files

Location:
adopters/nm/trunk/src/main/backend_qModules/3.0
Files:
2 deleted
19 edited

Legend:

Unmodified
Added
Removed
  • adopters/nm/trunk/src/main/backend_qModules/3.0/_EPHT/cancer/NM_CA_GE50_AA100K.def

    r24355 r24369  
    273273        data tmp;
    274274                set tmp;
    275                 if ((0<n<6) and (.<popcount<5000)) then do;
     275                if ((0<n<6) and (popcount^=.)) then do;
    276276                        n = .A;
    277277                        rateper = .A;
  • adopters/nm/trunk/src/main/backend_qModules/3.0/_EPHT/cancer/NM_CA_LT15_AA1M.def

    r24355 r24369  
    273273        data tmp;
    274274                set tmp;
    275                 if ((0<n<6) and (.<popcount<5000)) then do;
     275                if ((0<n<6) and (popcount^=.)) then do;
    276276                        n = .A;
    277277                        rateper = .A;
  • adopters/nm/trunk/src/main/backend_qModules/3.0/_EPHT/cancer/NM_CA_LT15_AA1M_tract.def

    r24355 r24369  
    270270        data tmp;
    271271                set tmp;
    272                 if ((0<n<6) and (.<popcount<5000)) then do;
     272                if ((0<n<6) and (popcount^=.)) then do;
    273273                        n = .A;
    274274                        rateper = .A;
  • adopters/nm/trunk/src/main/backend_qModules/3.0/_EPHT/cancer/NM_CA_LT20_AA1M.def

    r24355 r24369  
    273273        data tmp;
    274274                set tmp;
    275                 if ((0<n<6) and (.<popcount<5000)) then do;
     275                if ((0<n<6) and (popcount^=.)) then do;
    276276                        n = .A;
    277277                        rateper = .A;
  • adopters/nm/trunk/src/main/backend_qModules/3.0/_EPHT/cancer/NM_CA_LT20_AA1M_tract.def

    r24355 r24369  
    270270        data tmp;
    271271                set tmp;
    272                 if ((0<n<6) and (.<popcount<5000)) then do;
     272                if ((0<n<6) and (popcount^=.)) then do;
    273273                        n = .A;
    274274                        rateper = .A;
  • adopters/nm/trunk/src/main/backend_qModules/3.0/_EPHT/cancer/NM_CA_LT50_AA100K.def

    r24355 r24369  
    272272        data tmp;
    273273                set tmp;
    274                 if ((0<n<6) and (.<popcount<5000)) then do;
     274                if ((0<n<6) and (popcount^=.)) then do;
    275275                        n = .A;
    276276                        rateper = .A;
  • adopters/nm/trunk/src/main/backend_qModules/3.0/_EPHT/cancer/NM_Count.def

    r24355 r24369  
    186186        data tmp;
    187187                set tmp;
    188                 if ((0<n<6) and (popcount<5000)) then do;
     188                if ((0<n<6) and (popcount^=.)) then do;
    189189                        n = .A;
    190190                        rateper = .A;
  • adopters/nm/trunk/src/main/backend_qModules/3.0/_EPHT/cancer/_CancerCnty17.cfg

    r22445 r24369  
    5656#value SASnumer_var dimension_name SASdenominator_var label type1 type2 length
    5757
    58 11 null YearProxy null CalendarYear num 10 8
    59 11 year Year year Year num 0 8
    60 10 year YearGrp3Yrs year YearofDiagnosis num 0 8
    61 10 year YearGrp5Yrs year YearofDiagnosis num 0 8
    62 #These 2 dims for sarea aggregated year selections
    63 10 year YearGrp3 year YearofDiag num 3 8
    64 10 year YearRangeAll year YearofDiag num 0 8
     5810 null YearProxy null Year num 0 8
     59#10 year Year year Year num 0 8
     6010 year YearRange5 year YearofDiag num 3 8
    6561
    666212 null CancerSiteProxy null CancerSite num 10 8
  • adopters/nm/trunk/src/main/backend_qModules/3.0/_EPHT/cancer/_CancerCnty18.cfg

    r22842 r24369  
    5858#value SASnumer_var dimension_name SASdenominator_var label type1 type2 length
    5959
    60 11 null YearProxy null CalendarYear num 10 8
    61 11 year Year year Year num 0 8
    62 10 year YearGrp3Yrs year YearofDiagnosis num 0 8
    63 10 year YearGrp5Yrs year YearofDiagnosis num 0 8
    64 #These 2 dims for sarea aggregated year selections
    65 10 year YearGrp3 year YearofDiag num 3 8
    66 10 year YearRangeAll year YearofDiag num 0 8
     6010 null YearProxy null Year num 0 8
     61#10 year Year year Year num 0 8
     6210 year YearRange5 year YearofDiag num 3 8
    6763
    686412 null CancerSiteProxy null CancerSite num 10 8
  • adopters/nm/trunk/src/main/backend_qModules/3.0/_EPHT/cancer/_CancerCntySecure17.cfg

    r24328 r24369  
    5757
    585810 null YearProxy null Year num 0 8
    59 10 year Year year Year num 0 8
    60 10 year YeaGrp3Yrs year YearofDiagnosis num 0 8
    61 10 year YeaGrp5Yrs year YearofDiagnosis num 0 8
    62 #These 2 dims for sarea aggregated year selections
    63 10 year YearGrp3 year YearofDiag num 3 8
    64 10 year YearRangeAll year YearofDiag num 0 8
     59#10 year Year year Year num 0 8
     6010 year YearRange5 year YearofDiag num 3 8
    6561
    666212 null CancerSiteProxy null CancerSite num 10 8
  • adopters/nm/trunk/src/main/backend_qModules/3.0/_EPHT/cancer/_cancerSarea14.cfg

    r21174 r24369  
    5757
    585810 null YearProxy null Year num 0 8
    59 10 year Year year Year num 0 8
    60 10 year YeaGrp3Yrs year YearofDiagnosis num 0 8
    61 10 year YeaGrp5Yrs year YearofDiagnosis num 0 8
    62 #These 2 dims for sarea aggregated year selections
    63 10 year YearGrp3 year YearofDiag num 3 8
    64 10 year YearRangeAll year YearofDiag num 0 8
     59#10 year Year year Year num 0 8
     6010 year YearRange5 year YearofDiag num 3 8
    6561
    666212 null CancerSiteProxy null CancerSite num 10 8
  • adopters/nm/trunk/src/main/backend_qModules/3.0/_EPHT/ed/NM_Count.def

    r24328 r24369  
    168168
    169169                 redflag = put('Suppressed', $12.);
     170                end;
     171                if popcount=. then redflag=put('', $12.);
    170172          end;
    171173
  • adopters/nm/trunk/src/main/backend_qModules/3.0/_EPHT/ed/NM_CountCOPD.def

    r23213 r24369  
    129129  LL=compress(LL);
    130130  UL=compress(UL);
    131   CI=LL || ' - ' || UL;
    132 
    133131
    134132/*************************************************/
     
    141139/*************************************************/
    142140
     141
     142if n > 0 then do;
    143143  rse=(stderr/rateper);
    144   if rse>.3 then redflag=1; *statistical stability – 1 red flag;
    145   if rse>.5 then redflag=2; *statistical stability - 2 red flags;
    146   if stderr=. then redflag=2; *no variance, n=1;
     144  if rse>.3 then redflag=put('Unstable', $12.);
     145  if rse>.5 then redflag=put('VeryUnstable', $12.);
     146  if stderr=. then redflag=put('Unstable', $12.);
     147end;
     148if n <= 0 then redflag=put('Unstable', $12.);
     149run;
    147150keep %cross1% %cross2% n popnum rate rateper LL UL rse redflag;
    148151proc print data=tmp; title2 'TMP AGAIN';
     
    162165 n = .A;
    163166 rate = .A;
    164  end;
     167LL = put('**', 8.0);
     168UL = put('**', 8.0);
     169
     170redflag = put('Suppressed', $12.);
     171end;
     172if popcount=. then redflag=put('', $12.);
     173end;
    165174proc print data=tmp; title2 'FINAL'; run;
    166175
     
    169178#################################################
    170179# definition for output file
    171 f xml_out_map_file XMLNumCopd.map
     180f xml_out_map_file XMLNumCOPD.map
    172181--------BoNdArY--------
    173182f out_detail lbl_not_used__see_xml_out_map_file
  • adopters/nm/trunk/src/main/backend_qModules/3.0/_EPHT/ed/NM_CrudeRate100K.def

    r24328 r24369  
    3232**************** 2. %data_frame% ***************;
    3333
     34
    3435        data frame;
    35                 set df_%cross1% %cross2%;
     36                set df_%cross1%%cross2% ;
    3637                run;
    3738        proc sort data=frame; by %cross1%
     
    197198  LCL 15.3
    198199  UCL 15.3
    199   redflag 15.0
    200 --------BoNdArY--------
    201 --------BoNdArY--------
    202 1 suppressed_variables 2
     200  redflag 12.0
     201--------BoNdArY--------
     202--------BoNdArY--------
     2031 suppressed_variables 5
    203204  rateper
    204205  n
    205 --------BoNdArY--------
     206  popcount
     207  LL
     208  UL
     209--------BoNdArY--------
  • adopters/nm/trunk/src/main/backend_qModules/3.0/_EPHT/ed/NM_CrudeRate10k.def

    r24328 r24369  
    1919         sum=number;
    2020
    21 proc sort data=tmp out=sorted; by %cross1%
     21proc sort data=tmp out=sorted;
     22  by %cross1%
    2223         ?cross2? %cross2%
    2324         ;
     
    3233**************** 2. %data_frame% ***************;
    3334
     35
    3436        data frame;
    35                 set df_%cross1% %cross2%;
     37                set df_%cross1%%cross2% ;
    3638                run;
    3739        proc sort data=frame; by %cross1%
     
    197199  LCL 15.3
    198200  UCL 15.3
    199   redflag 15.0
    200 --------BoNdArY--------
    201 --------BoNdArY--------
    202 1 suppressed_variables 2
     201  redflag 12.0
     202--------BoNdArY--------
     203--------BoNdArY--------
     2041 suppressed_variables 5
    203205  rateper
    204206  n
    205 --------BoNdArY--------
     207  popcount
     208  LL
     209  UL
     210--------BoNdArY--------
  • adopters/nm/trunk/src/main/backend_qModules/3.0/_EPHT/ed/NM_RateAA100K.def

    r21905 r24369  
    1 #NM_RateAA10K_data_frame.def
     1#NM_RateAA10K.def
    22#Calculates directly age-adjusted rates per 10,000 for
    33#  records that have been filtered by IBIS-Q (data=tmp)
     
    1515OPTION SPOOL;
    1616
     17        %LET MULTIPLIER=100000;
     18        %LET STDVAR=agepop;
     19        %LET NCAT=11;
    1720 ************************** 1. TMP ******************************;
    1821 * The dataset 'tmp' is the numerator dataset that has been read ;
    1922 * in already by ibis-q. Any filters have already been applied.  ;
    2023 * The proc summary counts deaths by agepop, cross1, and cross2. ;
    21  * The variable "x" must be in the dataset, it is set equal to 1.;
     24 * The variable "x" must be in the dataset, it is set equal to 1.;
     25 * Use SAS=3 in your query application URL to see the 'print' results at each step. ;
    2226 ****************************************************************;
    2327        proc summary data=tmp;
    2428                var x;
    25                 class agepop %cross1%
     29                class  &STDVAR. %cross1%
    2630                ?cross2? %cross2%
    2731                ;
    28                 output out=tmp sum=count;
    29         proc sort data=tmp; by agepop %cross1%
    30                 ?cross2? %cross2%
     32                output out=tmp (drop=_TYPE_ _FREQ_) sum=count;
     33
     34        proc sort data=tmp; 
     35                by %cross1% %cross2% &STDVAR.;
    3136                ; run;
    3237        proc print data=tmp noobs;
    3338                title1 '---------------------------------';
    34                 title2 '1. TMP - numerator dataset';
     39                title2 '1.   TMP - numerator dataset     ';
     40                title1 '---------------------------------';
    3541                run;
    3642
     
    4551                retain count 0;
    4652                do
    47                         agepop= 1 to 11 by 1 ;
     53                        &STDVAR.= 1 to &NCAT. by 1 ;
    4854                        output;
    4955                end;
     
    5561        * then crosses by sex), there will be a total row for the cross1 and cross2 values.  ;
    5662        * So in a later step, the new_frame dataset is sorted with a "nodupkey" option to    ;
    57         * remove the additional dimension total values.                                      ;
     63        * remove the additional dimension total values.;
    5864        *************************************************************************************;
     65
    5966        data crosstotalframe;
    6067                retain count 0;
     
    7683        quit;
    7784        proc sort data=new_frame nodupkey;
    78                 by %cross1%
    79                    ?cross2? %cross2%
    80                    agepop;
     85          by %cross1%
     86                 ?cross2? %cross2%
     87                 &STDVAR.;
    8188                run;
    8289        proc print data=new_frame noobs; title2 'new_frame, sorted with nodupkey'; run;
    83         proc sort data=tmp; by %cross1% %cross2% agepop; run;
    84         data newtmp;
    85                 merge new_frame tmp;  *must list frame dataset first, then tmp;
    86                 by %cross1% %cross2% agepop;
    87                 drop _TYPE_ _FREQ_ ;
     90        proc sort data=tmp out=sorted;
     91          by %cross1% %cross2% &STDVAR; run;
     92        data  newtmp;
     93        merge new_frame sorted;  * tmp, must list frame dataset first, then sorted tmp;
     94          by  %cross1% %cross2% &STDVAR.;
     95                  drop _TYPE_ _FREQ_ ;
    8896        run;
    8997
     
    100108 * cross1 and cross2 totals to -1.                               ;
    101109 ****************************************************************;
    102         data poptmp; format agepop %popcross1% %popcross2% 8.; set poptmp; run; 
     110        data poptmp; format &STDVAR %popcross1% %popcross2% 8.; set poptmp; run; 
    103111        proc summary data=poptmp;
    104112                var popcount;
    105                 class agepop  %popcross1% %popcross2%;
    106                 output out=pop sum=popcount;
     113                class &STDVAR.  %popcross1% %popcross2%;
     114                output out=pop (drop=_TYPE_ _FREQ_) sum=popcount;
    107115        run;
    108116        data pop;
     
    112120                   title2 '3. POP - denominator dataset';
    113121        run;
    114  
     122
    115123 *********************** 4. NUMBERS *****************************;
    116124 * Join tmp, pop.                                                ;
    117125 * -1 values are left of out NUMBERS because stdpop doesn't have ;
    118  * any -1 values.                                                ;
     126 * any -1 values.     ;
     127 * The popcross flag is not used here because the use of the age grouping variable   ;
     128 * allows for each of the following rows of the join statement to begin with "and".  ;
    119129 ****************************************************************;
    120130        proc sql;
     
    122132                select tmp.*, pop.*
    123133                from tmp left join pop
    124                 on tmp.agepop=pop.agepop
     134                on tmp.&STDVAR=pop.&STDVAR.
    125135                ?popcross1? and tmp.%cross1%=pop.%popcross1% 
    126136                ?popcross2? and tmp.%cross2%=pop.%popcross2%
     
    129139        data numbers;
    130140                set numbers;
    131                 if agepop^=.; *get rid of total rows to stop doubling from pop proc summary;
     141                if &STDVAR.^=.; *get rid of total rows to stop doubling from pop proc summary;
    132142                if %cross1%=. then %cross1%=-1;
    133143                ?cross2? if %cross2%=. then %cross2%=-1;
     
    153163 ****************************************************************;
    154164        data stdwgt;
     165                format agevar $12.;
    155166                informat stdwgt 7.6;
    156167                set pop.stdwgts;
    157168                *pop libname is set in .cfg file with the saspop statement;
    158                 if (stdvar='agepop'); *stdvar name is case-sensitive;
    159                 keep agepop stdwgt;
     169                if (stdvar="&STDVAR.");
     170                keep &STDVAR. stdwgt;
    160171        run;
    161172        proc print data=stdwgt noobs; 
     
    171182                select numbers.*, stdwgt.stdwgt
    172183                from numbers left join stdwgt
    173                 on numbers.agepop=stdwgt.agepop
     184                on numbers.&STDVAR.=stdwgt.&STDVAR.
    174185                ;
    175186        quit;
     
    199210                var ratewgt rate_var count popcount;
    200211                class %cross1% %cross2%;
    201                 output out=aarate sum(ratewgt rate_var count popcount)=aarate aarate_var count popcount;
    202         run;
    203         data aarate;
    204                 set aarate;
    205                 drop _TYPE_ _FREQ_ ;
    206                 run;
    207                 proc sort data=aarate; by %cross1% %cross2%; run;
     212                output out=aarate  (drop=_TYPE_ _FREQ_ )
     213                sum(ratewgt rate_var count popcount)=aarate aarate_var count popcount;
     214         run;
     215        proc sort data=aarate; by %cross1% %cross2%; run;
    208216        proc print data=aarate noobs;
    209                 title2 '8. AARATE - summed across weighted agepop cross-products to get AA rate and';
     217                title2 '8. AARATE - summed across weighted &STDVAR. cross-products to get AA rate and';
    210218                title3 'rate variance within each cross-by var';
    211219      run;
     
    216224 * coded back to '.' after this step.                            ;
    217225 ****************************************************************;
    218         data tmp;
     226
     227        data rate;
    219228                set aarate;
    220229                if %cross1%=-1 then %cross1%=.;         *Recode the statewide totals.;
     
    222231               
    223232                if (count>0) then do;
    224                                 rateper=(aarate*100000);
     233                                rateper=(aarate*&MULTIPLIER.);
    225234                                rate_se=sqrt(aarate_var);
    226                                 stderr=(rate_se*100000);
     235                                stderr=(rate_se*&MULTIPLIER.);
    227236                        end;
    228237                if (count<=0) then do;
     
    230239
    231240                                rateper=0;
    232                                 stderr=sqrt((3/popcount)*(1-(3/popcount))/popcount)*100000;
     241                                stderr=sqrt((3/popcount)*(1-(3/popcount))/popcount)*&MULTIPLIER.;
    233242                        end;
    234243                t1=(rateper-(1.96*stderr));
     
    247256 * (xslt\html\query\module\result\ResultPage.xslt, ...Values.xslt ;
    248257 *****************************************************************;
     258
    249259                if count>0 then do;
    250260                        rse=(stderr/rateper);
    251                         redflag=put('-', $14.);
    252                         if rse>.3 then redflag=put('Unstable', $14.);
    253                         if rse>.5 then redflag=put('Very Unstable', $14.);
    254                         if stderr=. then redflag=put('Unstable', $14.);
     261                        redflag=put(' ', $12.);
     262                        if rse>.3 then redflag=put('Unstable', $12.);
     263                        if rse>.5 then redflag=put('Very Unstable', $12.);
     264                        if stderr=. then redflag=put('Unstable', $12.);
    255265                end;
    256                 if count<=0 then redflag=put('Unstable', $14.);  *no variance, n=0, rse=div by zero;
     266                if count<=0 then redflag=put('Unstable', $12.);  *no variance, n=0, rse=div by zero;
    257267        run;
    258268
     
    269279 * code at the end of this file to work.                            ;
    270280 *******************************************************************;
     281
    271282        data tmp;
    272                 set tmp;
    273                 if ((0<n<4) and (popcount<5000)) then do;
     283                set rate;
     284                if ((0<n<4) and (.<popcount<5000)) then do;
    274285                        n = .A;
    275286                        rateper = .A;
    276287                        LL = put('**', 8.0);
    277288                        UL = put('**', 8.0);
     289                        *only 1 val attr allowed, over-write redflag if suppressed;
     290                        redflag = put('Suppressed', $12.);
    278291                end;
    279292        proc print data=tmp noobs;  title2 '11. TMP - final dataset to pass to IBIS View app';
     
    283296f out_variable
    284297# definition for output file
    285 f xml_out_map_file XMLRate100KNDLCLUCL.map
     298f xml_out_map_file XMLRate10KNDLCLUCL.map
    286299--------BoNdArY--------
    287300f out_detail lbl_not_used__see_xml_out_map_file
  • adopters/nm/trunk/src/main/backend_qModules/3.0/_EPHT/ed/NM_RateAA10K.def

    r24328 r24369  
    1515OPTION SPOOL;
    1616
    17         %LET MULTIPLIER=1000;
     17        %LET MULTIPLIER=10000;
    1818        %LET STDVAR=agepop;
    1919        %LET NCAT=11;
     
    2727        proc summary data=tmp;
    2828                var x;
    29                 class  &STDVAR  %cross1%
     29                class  &STDVAR.  %cross1%
    3030                ?cross2? %cross2%
    3131                ;
    3232                output out=tmp (drop=_TYPE_ _FREQ_) sum=count;
    3333
    34         proc sort data=tmp; by &STDVAR %cross1%
    35                 ?cross2? %cross2%
     34        proc sort data=tmp;
     35                by %cross1% %cross2% &STDVAR.;
    3636                ; run;
    3737        proc print data=tmp noobs;
    38                 title1 '---------------------------------';
    39                 title2 '1. TMP - numerator dataset';
    40                 run;
     38                 title1 '---------------------------------';
     39                 title2 '1.   TMP - numerator dataset     ';
     40                 title3 '---------------------------------';
     41          run;
    4142
    4243 ********************** 2. %data_frame% *************************;
     
    5051                retain count 0;
    5152                do
    52                         &STDVAR= 1 to &NCAT by 1 ;
     53                        &STDVAR. = 1 to &NCAT. by 1 ;
    5354                        output;
    5455                end;
     
    6263        * remove the additional dimension total values.;
    6364        *************************************************************************************;
    64        
     65
    6566        data crosstotalframe;
    6667                retain count 0;
     
    8485          by %cross1%
    8586                 ?cross2? %cross2%
    86                  &STDVAR;
    87                 run;
     87                 &STDVAR.;
     88          run;
    8889        proc print data=new_frame noobs; title2 'new_frame, sorted with nodupkey'; run;
    8990        proc sort data=tmp out=sorted;
    9091          by %cross1% %cross2% &STDVAR; run;
    9192        data  newtmp;
    92         merge new_frame sorted;  * tmp, must list frame dataset first, then tmp;
    93           by  %cross1% %cross2% &STDVAR;
     93        merge new_frame sorted;  * tmp, must list frame dataset first, then sorted tmp;
     94          by  %cross1% %cross2% &STDVAR.;
    9495                  drop _TYPE_ _FREQ_ ;
    9596        run;
     
    110111        proc summary data=poptmp;
    111112                var popcount;
    112                 class &STDVAR  %popcross1% %popcross2%;
     113                class &STDVAR.  %popcross1% %popcross2%;
    113114                output out=pop (drop=_TYPE_ _FREQ_) sum=popcount;
    114115        run;
     
    131132                select tmp.*, pop.*
    132133                from tmp left join pop
    133                 on tmp.&STDVAR=pop.&STDVAR
     134                on tmp.&STDVAR=pop.&STDVAR.
    134135                ?popcross1? and tmp.%cross1%=pop.%popcross1% 
    135136                ?popcross2? and tmp.%cross2%=pop.%popcross2%
     
    138139        data numbers;
    139140                set numbers;
    140                 if &STDVAR^=.; *get rid of total rows to stop doubling from pop proc summary;
     141                if &STDVAR.^=.; *get rid of total rows to stop doubling from pop proc summary;
    141142                if %cross1%=. then %cross1%=-1;
    142143                ?cross2? if %cross2%=. then %cross2%=-1;
     
    166167                set pop.stdwgts;
    167168                *pop libname is set in .cfg file with the saspop statement;
    168                 if (stdvar="&STDVAR");
    169                 keep &STDVAR stdwgt;
     169                if (stdvar="&STDVAR.");
     170                keep &STDVAR. stdwgt;
    170171        run;
    171172        proc print data=stdwgt noobs; 
     
    181182                select numbers.*, stdwgt.stdwgt
    182183                from numbers left join stdwgt
    183                 on numbers.&STDVAR=stdwgt.&STDVAR
     184                on numbers.&STDVAR.=stdwgt.&STDVAR.
    184185                ;
    185186        quit;
     
    207208 *****************************************************************;
    208209        proc summary data=agespecific nway;
    209                 var ratewgt rate_var count popcount;
    210                 class %cross1% %cross2%;
    211                 output out=aarate sum(ratewgt rate_var count popcount)=aarate aarate_var count popcount;
    212         run;
    213         data aarate;
    214                 set aarate;
    215                 drop _TYPE_ _FREQ_ ;
    216                 run;
    217                 proc sort data=aarate; by %cross1% %cross2%; run;
     210                 var ratewgt rate_var count popcount;
     211                 class %cross1% %cross2%;
     212                 output out=aarate  (drop=_TYPE_ _FREQ_ )
     213                 sum(ratewgt rate_var count popcount)=aarate aarate_var count popcount;
     214         run;
     215        proc sort data=aarate; by %cross1% %cross2%; run;
    218216        proc print data=aarate noobs;
    219                 title2 '8. AARATE - summed across weighted &STDVAR cross-products to get AA rate and';
     217                title2 "8. AARATE - summed across weighted &STDVAR. cross-products to get AA rate and";
    220218                title3 'rate variance within each cross-by var';
    221219      run;
     
    233231               
    234232                if (count>0) then do;
    235                                 rateper=(aarate*&MULTIPLIER);
     233                                rateper=(aarate*&MULTIPLIER.);
    236234                                rate_se=sqrt(aarate_var);
    237                                 stderr=(rate_se*&MULTIPLIER);
     235                                stderr=(rate_se*&MULTIPLIER.);
    238236                        end;
    239237                if (count<=0) then do;
     
    241239
    242240                                rateper=0;
    243                                 stderr=sqrt((3/popcount)*(1-(3/popcount))/popcount)*&MULTIPLIER;
     241                                stderr=sqrt((3/popcount)*(1-(3/popcount))/popcount)*&MULTIPLIER.;
    244242                        end;
    245243                t1=(rateper-(1.96*stderr));
  • adopters/nm/trunk/src/main/backend_qModules/3.0/_EPHT/ed/NM_RateAA10K_GE25.def

    r23695 r24369  
    1 #NM_RateAA10K_data_frame.def
     1#NM_RateAA10K_GE25.def
    22#Calculates directly age-adjusted rates per 10,000 for
    33#  records that have been filtered by IBIS-Q (data=tmp)
     
    1515OPTION SPOOL;
    1616
     17        %LET MULTIPLIER=10000;
     18        %LET STDVAR=agegrp18;
     19        %LET NCAT=18;
    1720 ************************** 1. TMP ******************************;
    1821 * The dataset 'tmp' is the numerator dataset that has been read ;
     
    2326        proc summary data=tmp;
    2427                var x; 
    25                 class agegrp18 %cross1%
     28                class &STDVAR. %cross1%
    2629                ?cross2? %cross2%
    2730                ;
    28                 output out=tmp sum=count;
    29         proc sort data=tmp; by agegrp18 %cross1%
    30                 ?cross2? %cross2%
    31                 ; run;
    32         /*
     31                output out=tmp (drop=_TYPE_ _FREQ_)
     32                sum=count;
     33        proc sort data=tmp;
     34                 by %cross1% %cross2% &STDVAR.;
     35          run;
    3336        proc print data=tmp noobs;
    34                 title1 '---------------------------------';
    35                 title2 '1. TMP - numerator dataset';
    36                 run;
    37         */
     37                 title1 '---------------------------------';
     38                 title2 '1.   TMP - numerator dataset     ';
     39                 title3 '---------------------------------';
     40          run;
     41
    3842 ********************** 2. %data_frame% *************************;
    3943 * %data_frame% is a dataset created by IBIS-Q. It consists of   ;
     
    4650                retain count 0;
    4751                do
    48                         agegrp18 = 1 to 18 by 1 ;
     52                        &STDVAR. = 1 to &NCAT. by 1 ;
    4953                        output;
    5054                end;
     
    7983        quit;
    8084        proc sort data=new_frame nodupkey;
    81                 by %cross1%
    82                    ?cross2? %cross2%
    83 
    84                    agegrp18;
    85                 run;
     85          by %cross1%
     86                 ?cross2? %cross2%
     87                 &STDVAR.;
     88          run;
    8689        /*
    8790        proc print data=new_frame noobs; title2 'new_frame, sorted with nodupkey'; run;
    88         proc sort data=tmp; by %cross1% %cross2% agegrp18; run;
     91        proc sort data=tmp; by %cross1% %cross2% &STDVAR.; run;
    8992        */
    90         data newtmp;
    91                 merge new_frame tmp;  *must list frame dataset first, then tmp;
    92                 by %cross1% %cross2% agegrp18;
     93        proc sort data=tmp out=sorted;
     94          by %cross1% %cross2% &STDVAR; run;
     95        data  newtmp;
     96        merge new_frame sorted;  * tmp, must list frame dataset first, then sorted tmp;
     97                by %cross1% %cross2% &STDVAR.;
    9398                drop _TYPE_ _FREQ_ ;
    9499        run;
    95         /*
     100
    96101        proc print data=newtmp noobs;
    97102                title2 '2. NEWTMP, after frame merged with tmp';
    98103                run;
    99         */
     104
    100105        data tmp;
    101106                set newtmp;
     
    107112 * cross1 and cross2 totals to -1.                               ;
    108113 ****************************************************************;
    109         data poptmp; format agegrp18 %popcross1% %popcross2% 8.; set poptmp; run; 
     114        data poptmp; format &STDVAR %popcross1% %popcross2% 8.;
     115         set poptmp; run; 
    110116        proc summary data=poptmp;
    111                 var popcount;
    112                 class agegrp18  %popcross1% %popcross2%;
    113                 output out=pop sum=popcount;
     117                 var popcount;
     118                 class &STDVAR.  %popcross1% %popcross2%;
     119                 output out=pop (drop=_TYPE_ _FREQ_) sum=popcount;
    114120        run;
    115121        data pop;
     
    118124                proc print data=pop noobs; 
    119125                   title2 '3. POP - denominator dataset';
    120         run; 
    121  
     126        run;
     127
    122128 *********************** 4. NUMBERS *****************************;
    123129 * Join tmp, pop.                                                ;
    124130 * -1 values are left of out NUMBERS because stdpop doesn't have ;
    125  * any -1 values.                                                ;
     131 * any -1 values.
    126132 ****************************************************************;
    127133        proc sql;
     
    129135                select tmp.*, pop.*
    130136                from tmp left join pop
    131                 on tmp.agegrp18=pop.agegrp18
     137                on tmp.&STDVAR.=pop.&STDVAR.
    132138                ?popcross1? and tmp.%cross1%=pop.%popcross1% 
    133139                ?popcross2? and tmp.%cross2%=pop.%popcross2%
     
    136142        data numbers;
    137143                set numbers;
    138                 if agegrp18^=.; *get rid of total rows to stop doubling from pop proc summary;
     144                if &STDVAR.^=.; *get rid of total rows to stop doubling from pop proc summary;
    139145                if %cross1%=. then %cross1%=-1;
    140146                ?cross2? if %cross2%=. then %cross2%=-1;
    141         /*
     147
    142148        proc print data=numbers noobs;
    143149                title2 '4. NUMBERS';
    144150                title3 ' ';
    145         run; 
    146         */
     151        run;
     152
    147153 ************************ 5. STDWGT *****************************;
    148154 * Select the appropriate records from the stdwgts  datafile.    ;
     
    164170                set pop.stdwgts;
    165171                *pop libname is set in .cfg file with the saspop statement;
    166                 if (stdvar='AgeGrp18GE25'); *stdvar name is case-sensitive;
    167                 keep agegrp18 stdwgt;
    168         run;
    169         /*
     172                if (stdvar="AgeGrp18GE25");
     173                keep &STDVAR. stdwgt;
     174        run;
     175 
    170176        proc print data=stdwgt noobs; 
    171177                title2 '5. STDWGT- std. pop. weights for direct age-adjustment';
    172178        run;
    173         */
     179
    174180 ******************** 6. NUMBERS2 *******************************;
    175181 * Adds the standard population weights to the numerator and     ;
     
    181187                select numbers.*, stdwgt.stdwgt
    182188                from numbers left join stdwgt
    183                 on numbers.agegrp18=stdwgt.agegrp18
     189                on numbers.&STDVAR.=stdwgt.&STDVAR.
    184190                ;
    185191        quit;
    186         ?8
     192
    187193        proc print data=numbers2 noobs;
    188194                title2 '6. NUMBERS2- Standard POP wgts merged onto dataset';
    189195        run;
    190         */
     196
    191197 *********************** 7. AGESPECIFIC *************************;
    192198 * Calculate age-specific rates & cross-products                 ;
     
    198204                * Montana method... rate_var=count*(stdwgt/popcount)**2;  * New formula from doh.wa.gov;
    199205                rate_var=(stdwgt**2)*((r*(1-r))/popcount);
    200         /*
     206
    201207        proc print data=agespecific noobs; 
    202208                title2 '7. AGESPECIFIC - combines numer and denom data, includes R (age-specific proportion),';
    203209                title3 'RATEWGT (weighted age-specific rate), and RATE_VAR (rate variance) vars';
    204210        run;
    205         */
     211
    206212 ************************ 8. AARATE ******************************;
    207213 * Sum the age-specific rates into aa rates, and merge wgtmax.    ;   
    208214 *****************************************************************;
    209215        proc summary data=agespecific nway;
    210                 var ratewgt rate_var count popcount;
    211                 class %cross1% %cross2%;
    212                 output out=aarate sum(ratewgt rate_var count popcount)=aarate aarate_var count popcount;
    213         run;
    214         data aarate;
    215                 set aarate;
    216                 drop _TYPE_ _FREQ_ ;
    217                 run;
    218                 proc sort data=aarate; by %cross1% %cross2%; run;
    219         /*
     216                 var ratewgt rate_var count popcount;
     217                 class %cross1% %cross2%;
     218                 output out=aarate  (drop=_TYPE_ _FREQ_ )
     219                 sum(ratewgt rate_var count popcount)=aarate aarate_var count popcount;
     220       
     221        run;
     222
     223        proc sort data=aarate; by %cross1% %cross2%; run;
     224
    220225        proc print data=aarate noobs;
    221                 title2 '8. AARATE - summed across weighted agepop cross-products to get AA rate and';
    222                 title3 'rate variance within each cross-by var';
    223      run; 
    224         */
     226                 title2 "8. AARATE - summed across weighted &STDVAR. cross-products to get AA rate and";
     227                 title3 'rate variance within each cross-by var';
     228     run;
     229
    225230 ******************* 9. TMP *************************************;
    226231 * Almost final IBIS output dataset.                             ;
     
    228233 * coded back to '.' after this step.                            ;
    229234 ****************************************************************;
    230         data tmp;
     235        data rate;
    231236                set aarate;
    232237                if %cross1%=-1 then %cross1%=.;         *Recode the statewide totals.;
     
    234239               
    235240                if (count>0) then do;
    236                                 rateper=(aarate*10000);
     241                                rateper=(aarate*&MULTIPLIER.);
    237242                                rate_se=sqrt(aarate_var);
    238                                 stderr=(rate_se*10000);
     243                                stderr=(rate_se*&MULTIPLIER.);
    239244                        end;
    240245                if (count<=0) then do;
     
    242247
    243248                                rateper=0;
    244                                 stderr=sqrt((3/popcount)*(1-(3/popcount))/popcount)*10000;
     249                                stderr=sqrt((3/popcount)*(1-(3/popcount))/popcount)*&MULTIPLIER.;
    245250                        end;
    246251                t1=(rateper-(1.96*stderr));
     
    262267                if count>0 then do;
    263268                        rse=(stderr/rateper);
    264                         redflag=put('-', $14.);
    265                         if rse>.3 then redflag=put('Unstable', $14.);
    266                         if rse>.5 then redflag=put('Very Unstable', $14.);
    267                         if stderr=. then redflag=put('Unstable', $14.);
     269                        redflag=put(' ', $12.);
     270                        if rse>.3 then redflag=put('Unstable', $12.);
     271                        if rse>.5 then redflag=put('Very Unstable', $12.);
     272                        if stderr=. then redflag=put('Unstable', $12.);
    268273                end;
    269                 if count<=0 then redflag=put('Unstable', $14.);  *no variance, n=0, rse=div by zero;
     274                if count<=0 then redflag=put('Unstable', $12.);  *no variance, n=0, rse=div by zero;
    270275        run;
    271276
     
    283288 *******************************************************************;
    284289        data tmp;
    285                 set tmp;
     290                set rate;
    286291                if ((0<n<4) and (popcount<5000)) then do;
    287292                        n = .A;
     
    289294                        LL = put('**', 8.0);
    290295                        UL = put('**', 8.0);
     296                        redflag = put('Suppressed', $12.);
    291297                end;
    292298
  • adopters/nm/trunk/src/main/backend_qModules/3.0/idepi/_COVID19Cnty.cfg

    r22879 r24369  
    1616
    1717r sasdata covid_ibis_cases
    18 d saspopdata popibiscnty90_19_20oct2020
     18d saspopdata popibiscnty90_20_04nov2021
    1919
    2020d sas_bin "C:\Program&Files\SASHome\SASFoundation\9.4\sas.exe"
Note: See TracChangeset for help on using the changeset viewer.