94. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 3/21/2018 5:29:11 PM Eastern Daylight Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.

94.1 Files compared

# Location File Last Modified
1 Wed Mar 21 21:29:11 2018 UTC
2 AHOBPRe_v4.3.15_bld3.zip\DatabaseScripts\AHOBPR\Increment 2\Pre-Prod\Increment 2c - 20151005\AHOBPR_Database_1_0_52.zip Registry.AHOBPR.Database.Build.1.0.52.sql Mon Oct 5 18:44:12 2015 UTC

94.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 0 0
Changed 0 0
Inserted 1 2078
Removed 0 0

94.3 Comparison options

Whitespace
Character case Differences in character case are significant
Line endings Differences in line endings (CR and LF characters) are ignored
CR/LF characters Not shown in the comparison detail

94.4 Active regular expressions

No regular expressions were active.

94.5 Comparison detail

        1  
        2   :setvar Da tabaseName  "Registry QA"
        3   :setvar Ma jorRelease Number "1"
        4   :setvar Mi norRelease Number "0"
        5   :setvar Po intRelease Number "52 "
        6   :setvar De ployVersio n "2015100 2.1"
        7  
        8   PRINT ' 
        9   ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ------
        10   Registry.A HOBPR.Data base.Build .1.0.52.sq l
        11  
        12   Version Re lease $(Ma jorRelease Number).$( MinorRelea seNumber). $(PointRel easeNumber )
        13  
        14   Build $(De ployVersio n)
        15  
        16   ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ------
        17    ';
        18   PRINT 'Sta rted ' + C AST(GETDAT E() as var char(20))  + '.';
        19   PRINT ' 
        20   ********** ********** ********** ********** ********** *******
        21   NOTE: This  script mu st be run  with SQLCM D Mode tur ned on.
        22   ********** ********** ********** ********** ********** *******
        23  
        24   ';
        25   GO
        26   :on error  exit
        27   GO
        28   :setvar __ IsSqlCmdEn abled "Tru e"
        29   /*
        30   Detect SQL CMD mode a nd disable  script ex ecution if  SQLCMD mo de is not  supported.
        31   To re-enab le the scr ipt after  enabling S QLCMD mode , execute  the follow ing:
        32   SET NOEXEC  OFF; 
        33   */
        34   GO
        35   IF N'$(__I sSqlCmdEna bled)' NOT  LIKE N'Tr ue'
        36       BEGIN
        37           PR INT N'SQLC MD mode mu st be enab led to suc cessfully  execute th is script. ';
        38           SE T NOEXEC O N;
        39       END
        40  
        41   GO
        42  
        43   USE [$(Dat abaseName) ]
        44   GO
        45  
        46   PRINT 'CRE ATE TABLE  [AHOBPR].[ FORM_RESPO NSE_ANSWER _ETL]...';
        47   GO
        48  
        49   IF  NOT EX ISTS (SELE CT * FROM  sys.object s WHERE ob ject_id =  OBJECT_ID( N'[AHOBPR] .[FORM_RES PONSE_ANSW ER_ETL]')  AND type i n (N'U'))
        50   CREATE TAB LE [AHOBPR ].[FORM_RE SPONSE_ANS WER_ETL] (
        51       [FORM_ RESPONSE_A NSWER_ID]    INT             IDE NTITY (1,  1) NOT NUL L,
        52       [FORM_ RESPONSE_Q UESTION_ID ] INT             NOT  NULL,
        53       [STD_F ORM_ANSWER _ID]         INT             NOT  NULL,
        54       [ANSWE R_VALUE]                VARCHAR  (4000) NUL L,
        55       [CREAT EDBY]                   VARCHAR  (30)   NOT  NULL,
        56       [UPDAT EDBY]                   VARCHAR  (30)   NOT  NULL,
        57       [CREAT ED]                     DATETIME 2 (0)  NOT  NULL,
        58       [UPDAT ED]                     DATETIME 2 (0)  NOT  NULL,
        59       [ROW_V ERSION]                 ROWVERSI ON     NOT  NULL
        60   ) ON [AHOB PR];
        61  
        62   GO
        63  
        64   PRINT 'CRE ATE TABLE  [AHOBPR].[ FORM_RESPO NSE_QUESTI ON_ETL]... ';
        65   GO
        66  
        67   IF  NOT EX ISTS (SELE CT * FROM  sys.object s WHERE ob ject_id =  OBJECT_ID( N'[AHOBPR] .[FORM_RES PONSE_QUES TION_ETL]' ) AND type  in (N'U') )
        68   CREATE TAB LE [AHOBPR ].[FORM_RE SPONSE_QUE STION_ETL]  (
        69       [FORM_ RESPONSE_Q UESTION_ID ] INT            IDEN TITY (1, 1 ) NOT NULL ,
        70       [FORM_ RESPONSE_I D]           INT            NOT  NULL,
        71       [STD_F ORM_QUESTI ON_ID]       INT            NOT  NULL,
        72       [REGIS TRANT_DEPL OYMENT_ID]   INT            NULL ,
        73       [START ED_DATE]                DATETIME 2 (0) NOT  NULL,
        74       [COMPL ETED_DATE]              DATETIME 2 (0) NULL ,
        75       [CREAT EDBY]                   VARCHAR  (30)  NOT  NULL,
        76       [UPDAT EDBY]                   VARCHAR  (30)  NOT  NULL,
        77       [CREAT ED]                     DATETIME 2 (0) NOT  NULL,
        78       [UPDAT ED]                     DATETIME 2 (0) NOT  NULL,
        79       [ROW_V ERSION]                 ROWVERSI ON    NOT  NULL
        80   ) ON [AHOB PR];
        81  
        82  
        83   GO
        84  
        85   PRINT 'CRE ATE TABLE  [AHOBPR].[ JSON_QUEUE _STATUS] . ..';
        86   GO
        87  
        88    IF  NOT E XISTS (SEL ECT * FROM  sys.objec ts WHERE o bject_id =  OBJECT_ID (N'[AHOBPR ].[JSON_QU EUE_STATUS ]') AND ty pe in (N'U '))
        89   CREATE TAB LE [AHOBPR ].[JSON_QU EUE_STATUS ] (
        90       [JSON_ QUEUE_STAT US_ID]  IN T             IDENTIT Y (1, 1) N OT NULL,
        91       [JSON_ QUEUE_ID]          IN T             NOT NUL L,
        92       [REGIS TRANT_JSON _ID]    IN T             NOT NUL L,
        93       [PROCE SS_START_D ATE]    DA TETIME2 (0 )  NULL,
        94       [PROCE SS_COMPLET E_DATE] DA TETIME2 (0 )  NULL,
        95       [PROCE SS_STATUS]         VA RCHAR (100 )  NULL,
        96       [PROCE SS_ERROR]          VA RCHAR (400 0) NULL,
        97       [ROW_V ERSION]            RO WVERSION      NOT NUL L,
        98       [CREAT EDBY]              VA RCHAR (30)    NOT NUL L,
        99       [UPDAT EDBY]              VA RCHAR (30)    NOT NUL L,
        100       [CREAT ED]                DA TETIME2 (0 )  NOT NUL L,
        101       [UPDAT ED]                DA TETIME2 (0 )  NOT NUL L,
        102       CONSTR AINT [JSON _QUEUE_STA TUS_PK] PR IMARY KEY  CLUSTERED  ([JSON_QUE UE_STATUS_ ID] ASC) O N [AHOBPR]
        103   );
        104  
        105  
        106  
        107   GO
        108  
        109   PRINT 'CRE ATE TABLE  [AHOBPR].[ REGISTRANT _JSON_DATA FIX]...';
        110   GO
        111  
        112    IF  NOT E XISTS (SEL ECT * FROM  sys.objec ts WHERE o bject_id =  OBJECT_ID (N'[AHOBPR ].[REGISTR ANT_JSON_D ATAFIX]')  AND type i n (N'U'))
        113   CREATE TAB LE [AHOBPR ].[REGISTR ANT_JSON_D ATAFIX] (
        114       [REGIS TRANT_JSON _datafix_I D] INT            IDE NTITY (1,  1) NOT NUL L,
        115       [REGIS TRANT_JSON _ID]          INT            NOT  NULL,
        116       [OBJEC T_ID]                    VARCHAR  (256) NOT  NULL,
        117       [OBJEC T_TYPE]                  VARCHAR  (100) NOT  NULL,
        118       [JSON_ DATA]                    VARCHAR  (MAX) NOT  NULL,
        119       [CREAT EDBY]                    VARCHAR  (30)  NOT  NULL,
        120       [UPDAT EDBY]                    VARCHAR  (30)  NOT  NULL,
        121       [CREAT ED]                      DATETIM E2 (0) NOT  NULL,
        122       [UPDAT ED]                      DATETIM E2 (0) NOT  NULL,
        123       [RECOR D_CREATED]               DATETIM E2 (7) NOT  NULL,
        124       CONSTR AINT [REGI STRANT_JSO N_datafix_ PK] PRIMAR Y KEY CLUS TERED ([RE GISTRANT_J SON_datafi x_ID] ASC)  ON [AHOBP R]
        125   ) TEXTIMAG E_ON [AHOB PR];
        126  
        127  
        128  
        129   GO
        130  
        131   PRINT ' CR EATE TABLE  [AHOBPR]. [REGISTRAN T_JSON_H]. ..';
        132   GO
        133    IF  NOT E XISTS (SEL ECT * FROM  sys.objec ts WHERE o bject_id =  OBJECT_ID (N'[AHOBPR ].[REGISTR ANT_JSON_H ]') AND ty pe in (N'U '))
        134     CREATE T ABLE [AHOB PR].[REGIS TRANT_JSON _H](
        135              [REGISTRAN T_JSON_H_I D] [int] I DENTITY(1, 1) NOT NUL L,
        136              [REGISTRAN T_JSON_ID]  [int] NOT  NULL,
        137              [OBJECT_ID ] [varchar ](256) NOT  NULL,
        138              [OBJECT_TY PE] [varch ar](100) N OT NULL,
        139              [JSON_DATA ] [varchar ](max) NOT  NULL,
        140              [CREATEDBY ] [varchar ](30) NOT  NULL,
        141              [UPDATEDBY ] [varchar ](30) NOT  NULL,
        142              [CREATED]  [datetime2 ](0) NOT N ULL,
        143              [UPDATED]  [datetime2 ](0) NOT N ULL,
        144              [RECORD_CR EATED] [da tetime2](7 ) CONSTRAI NT DF_RegJ sonRecCrea ted DEFAUL T (getdate ())  NOT N ULL,
        145      CONSTRA INT [REGIS TRANT_JSON _H_PK] PRI MARY KEY C LUSTERED 
        146     (
        147              [REGISTRAN T_JSON_H_I D] ASC
        148     )WITH (P AD_INDEX   = OFF, STA TISTICS_NO RECOMPUTE   = OFF, IG NORE_DUP_K EY = OFF,  ALLOW_ROW_ LOCKS  = O N, ALLOW_P AGE_LOCKS   = ON) ON  [AHOBPR]
        149     ) ON [AH OBPR] TEXT IMAGE_ON [ AHOBPR]
        150  
        151   GO
        152  
        153  
        154   PRINT 'DRO P and CREA TE PROCEDU RE [AHOBPR ].[SP_GetJ sonQueue]. ..';
        155   GO
        156  
        157   IF  EXISTS  (SELECT *  FROM sys. objects WH ERE object _id = OBJE CT_ID(N'[A HOBPR].[SP _GetJsonQu eue]') AND  type in ( N'P', N'PC '))
        158   DROP PROCE DURE [AHOB PR].[SP_Ge tJsonQueue ]
        159   GO
        160  
        161   CREATE PRO CEDURE [AH OBPR].[SP_ GetJsonQue ue]
        162   AS
        163   /*
        164   SP_GetJson Queue 
        165   Get all th e items th at need to  be proces sed by JSO N_QUEUE_ID s:
        166   a.    Dele te the pre vious/old/ duplicated  records f rom REGIST RANT_JSON  table
        167   b.    Inse rt the new  records t o JSON_QUE UE table
        168   c.    Orde r the JSON _QUEUE_IDs  to be pro cessed by  object_typ e in the f ollowing o rder:  USE R, INFO, R ESPONSE 
        169   d.    Igno re any REG ISTRANT_JS ON records  that are  less than  30 minutes  old
        170   */
        171  
        172   BEGIN
        173  
        174     -- INSER T new REGI STRANT_JSO N rows to  [AHOBPR].[ REGISTRANT _JSON_H]
        175     WITH  Ma sterData
        176     AS    ( 
        177                SELECT R EGISTRANT_ JSON_ID
        178                         ,[OBJECT_I D]
        179                         ,[OBJECT_T YPE]
        180                         ,[JSON_DAT A]
        181                         ,[CREATEDB Y]
        182                         ,[UPDATEDB Y]
        183                         ,[CREATED]
        184                         ,[UPDATED]
        185                  FROM [ AHOBPR].[R EGISTRANT_ JSON] A
        186                  WHERE  NOT EXISTS  (SELECT ' X' FROM [A HOBPR].[JS ON_QUEUE] 
        187                                                 WHERE [R EGISTRANT_ JSON_ID] =  A.[REGIST RANT_JSON_ ID])
        188           )
        189     MERGE
        190       INTO   [AHOBPR].[ REGISTRANT _JSON_H] A S Tgt
        191       USING  MasterData  AS Src
        192       ON     Tgt.REGIST RANT_JSON_ ID = Src.R EGISTRANT_ JSON_ID
        193     WHEN  NO T MATCHED
        194       THEN   INSERT
        195           (R EGISTRANT_ JSON_ID,[O BJECT_ID], [OBJECT_TY PE],[JSON_ DATA],[CRE ATEDBY],[U PDATEDBY], [CREATED], [UPDATED])  
        196           VA LUES
        197           (S rc.REGISTR ANT_JSON_I D,Src.[OBJ ECT_ID],Sr c.[OBJECT_ TYPE],Src. [JSON_DATA ],Src.[CRE ATEDBY],Sr c.[UPDATED BY],Src.[C REATED],Sr c.[UPDATED ]);
        198  
        199     -- DELET E any dupl icate REGI STRANT_JSO N rows
        200     WITH 
        201       Ranked Row AS 
        202       (
        203         SELE CT [REGIST RANT_JSON_ ID]
        204                ,RANK()  OVER(PARTI TION BY [O BJECT_TYPE ], [OBJECT _ID]
        205                                  O RDER BY [R EGISTRANT_ JSON_ID] D ESC) AS Ro wRank
        206           FR OM 
        207                [AHOBPR] .[REGISTRA NT_JSON] W ITH (READP AST)--don' t bother w ith record s that are  locked
        208       )
        209     , Duplic ate AS
        210       (
        211          SEL ECT   [REG ISTRANT_JS ON_ID] 
        212            F ROM   Rank edRow
        213            W HERE  RowR ank > 1
        214       )
        215     DELETE 
        216       FROM [ AHOBPR].[R EGISTRANT_ JSON] WITH  (READPAST )--don't b other with  records t hat are lo cked
        217       WHERE  EXISTS  (  SELECT * 
        218                         FROM  Dupl icate
        219                         WHERE Dupl icate.REGI STRANT_JSO N_ID = REG ISTRANT_JS ON.REGISTR ANT_JSON_I D
        220                      );
        221                          
        222     -- Inser t the new  records in  the JSON_ QUEUE     
        223     -- Ignor e any REGI STRANT_JSO N records  that are l ess than 3 0 minutes  old
        224     DECLARE  @ThirtyMin utesAgo DA TETIME2(0)  = DATEADD (MINUTE, - 30, GETDAT E());
        225     WITH 
        226       Ranked Row AS --w e just del eted dupli cates abov e, but sin ce we used  READPAST  and since  there is n o
        227                     --g uarantee t hat new du p has not  been added  since we  take the p recaution  of ranking
        228                     --t hem again.
        229       ( SELE CT *
        230                ,RANK()  OVER(PARTI TION BY [O BJECT_TYPE ], [OBJECT _ID]
        231                                  O RDER BY [R EGISTRANT_ JSON_ID] D ESC) AS Ro wRank
        232          FRO M [AHOBPR] .[REGISTRA NT_JSON] W ITH (READP AST) --don 't bother  with recor ds that ar e locked
        233          WHE RE NOT EXI STS ( SELE CT  *
        234                               FROM     AHOBPR .JSON_QUEU E AS Q
        235                               WHER E   Q.REGI STRANT_JSO N_ID = [RE GISTRANT_J SON].REGIS TRANT_JSON _ID
        236                             )
        237           AN D UPDATED  < @ThirtyM inutesAgo
        238       )
        239     , Src AS
        240       ( SELE CT [REGIST RANT_JSON_ ID]
        241                ,[CREATE D]
        242                ,[UPDATE D]
        243                ,[CREATE DBY]
        244                ,[UPDATE DBY]
        245         FROM   RankedRo w
        246         WHER E RowRank  = 1      
        247       )
        248       MERGE 
        249         INTO   [AHOBPR] .[JSON_QUE UE] Tgt
        250         USIN G Src
        251           ON   Tgt.[REG ISTRANT_JS ON_ID] = S rc.[REGIST RANT_JSON_ ID]
        252          WHE N NOT MATC HED
        253          THE N INSERT  
        254                ( [REGIS TRANT_JSON _ID]
        255                , [CREAT ED]
        256                , [UPDAT ED]
        257                , [CREAT EDBY]
        258                , [UPDAT EDBY]
        259                )
        260                VALUES
        261                (  Src.[ REGISTRANT _JSON_ID]
        262                  ,Src.[ CREATED]
        263                  ,Src.[ UPDATED]
        264                  ,Src.[ CREATEDBY]
        265                  ,Src.[ UPDATEDBY]
        266                );
        267                
        268   -- Get the  IDs of th e queued J SON object s to be pa rsed
        269   -- Order t he JSON_QU EUE_IDs to  be proces sed by obj ect_type i n the foll owing orde r:  USER,  INFO, RESP ONSE 
        270  
        271   --Switched  to just p ull record s from the  JSON QUEU E table wh ere there  are NO
        272   --correspo nding reco rds in the  JSON_QUEU E_STATUS t able.  I.e ., only gr ab items
        273   --that hav e never be en tried b efore.  9/ 30/15 MW.
        274     SELECT J SON_QUEUE_ ID
        275       FROM A HOBPR.JSON _QUEUE Q
        276       JOIN A HOBPR.REGI STRANT_JSO N AS J ON  Q.REGISTRA NT_JSON_ID  = J.REGIS TRANT_JSON _ID
        277      WHERE N OT EXISTS( SELECT * F ROM AHOBPR .JSON_QUEU E_STATUS S  WHERE S.J SON_QUEUE_ ID = Q.JSO N_QUEUE_ID )
        278        AND J .OBJECT_TY PE != 'for m'
        279     ORDER
        280       BY     CASE J.OBJ ECT_TYPE   WHEN 'user ' THEN 1
        281                                    WHEN 'info ' THEN 2
        282                                    WHEN 'resp onses' THE N 3
        283                                    ELSE 99 -- should not  happen
        284                                                                  EN D;
        285  
        286     --WITH M ostRecent
        287     --AS(
        288     --    SE LECT MAX(J SON_QUEUE_ STATUS_ID)  AS MaxQue ueStatusId
        289     --           ,JSON_ QUEUE_ID
        290     --       FROM AHOBP R.JSON_QUE UE_STATUS
        291     --    GR OUP BY JSO N_QUEUE_ID
        292     --  )
        293     --,Failu res
        294     --AS (
        295     --    SE LECT MostR ecent.JSON _QUEUE_ID
        296     --       FROM AHOBP R.JSON_QUE UE_STATUS
        297     --       JOIN MostR ecent ON [ JSON_QUEUE _STATUS_ID ] = MaxQue ueStatusId
        298     --     W HERE PROCE SS_STATUS  = 'failed'
        299     --    )
        300     --SELECT  JSON_QUEU E_ID
        301     --  FROM  AHOBPR.JS ON_QUEUE Q
        302     --  JOIN  AHOBPR.RE GISTRANT_J SON AS J O N Q.REGIST RANT_JSON_ ID = J.REG ISTRANT_JS ON_ID
        303     -- WHERE  NOT EXIST S(SELECT *  FROM AHOB PR.JSON_QU EUE_STATUS  S WHERE S .JSON_QUEU E_ID = Q.J SON_QUEUE_ ID)
        304     --   AND  J.OBJECT_ TYPE != 'f orm'
        305     --UNION
        306     --SELECT  JSON_QUEU E_ID
        307     --  FROM  Failures;
        308  
        309  
        310  
        311  
        312     --SELECT   Q.JSON_Q UEUE_ID
        313     --FROM     
        314     --         AHOBPR.J SON_QUEUE  AS Q WITH  (READPAST)
        315     --INNER
        316     --JOIN     AHOBPR.R EGISTRANT_ JSON AS J  WITH (READ PAST)
        317     --  ON     Q.REGIST RANT_JSON_ ID = J.REG ISTRANT_JS ON_ID
        318     --WHERE   ISNULL(Q. PROCESS_ST ATUS,'fail ed') = 'fa iled'
        319     --  AND    J.OBJECT _TYPE      != 'form'
        320     --ORDER
        321     --  BY     CASE J.O BJECT_TYPE   WHEN 'us er' THEN 1
        322     --                               WHEN 'in fo' THEN 2
        323     --                               WHEN 're sponses' T HEN 3
        324     --                               ELSE 99  --should n ot happen
        325              --END
        326   END  -- 12  rows
        327   -- EXECUTE  [AHOBPR]. [SP_GetJso nQueue]
        328   --select *  from ahob pr.json_qu eue where  json_queue _id = 1116 3
        329   GO
        330  
        331  
        332   PRINT 'DRO P and CREA TE PROCEDU RE [AHOBPR ].[SP_GetJ sonQueueRo w]...';
        333   GO
        334  
        335   IF  EXISTS  (SELECT *  FROM sys. objects WH ERE object _id = OBJE CT_ID(N'[A HOBPR].[SP _GetJsonQu eueRow]')  AND type i n (N'P', N 'PC'))
        336   DROP PROCE DURE [AHOB PR].[SP_Ge tJsonQueue Row]
        337   GO
        338  
        339  
        340   CREATE PRO CEDURE [AH OBPR].[SP_ GetJsonQue ueRow]
        341           @j sonQueueId     INT
        342   AS
        343   BEGIN
        344           SE T NOCOUNT  ON;
        345  
        346           SE LECT JSON_ QUEUE_ID
        347                       ,  REGISTRAN T_JSON_ID
        348                       ,  PROCESS_S TART_DATE
        349                       ,  PROCESS_C OMPLETE_DA TE
        350                       ,  PROCESS_S TATUS
        351                       ,  PROCESS_E RROR
        352                       ,  CREATEDBY
        353                       ,  CREATED
        354                       ,  UPDATEDBY
        355                       ,  UPDATED
        356                       ,  ROW_VERSI ON
        357            F ROM AHOBPR .JSON_QUEU E
        358           WH ERE JSON_Q UEUE_ID =  @jsonQueue Id;
        359  
        360   END
        361   GO
        362  
        363  
        364   PRINT 'DRO P and CREA TE PROCEDU RE [AHOBPR ].[SP_GetR egistrantJ sonRow]... ';
        365   GO
        366  
        367   IF  EXISTS  (SELECT *  FROM sys. objects WH ERE object _id = OBJE CT_ID(N'[A HOBPR].[SP _GetRegist rantJsonRo w]') AND t ype in (N' P', N'PC') )
        368   DROP PROCE DURE [AHOB PR].[SP_Ge tRegistran tJsonRow]
        369   GO
        370  
        371  
        372   CREATE PRO CEDURE [AH OBPR].[SP_ GetRegistr antJsonRow ]
        373           @j sonId INT
        374   AS
        375   BEGIN
        376           SE T NOCOUNT  ON;
        377  
        378           SE LECT REGIS TRANT_JSON _ID
        379                       ,  OBJECT_ID
        380                       ,  OBJECT_TY PE
        381                       ,  JSON_DATA
        382                       ,  CREATEDBY
        383                       ,  UPDATEDBY
        384                       ,  CREATED
        385                       ,  UPDATED
        386                       ,  ROW_VERSI ON
        387            F ROM AHOBPR .REGISTRAN T_JSON
        388           WH ERE REGIST RANT_JSON_ ID = @json Id;
        389  
        390   END
        391   GO
        392  
        393  
        394   PRINT 'DRO P and CREA TE PROCEDU RE [AHOBPR ].[SP_Inse rtErrorLog ]...';
        395   GO
        396  
        397   IF  EXISTS  (SELECT *  FROM sys. objects WH ERE object _id = OBJE CT_ID(N'[A HOBPR].[SP _InsertErr orLog]') A ND type in  (N'P', N' PC'))
        398   DROP PROCE DURE [AHOB PR].[SP_In sertErrorL og]
        399   GO
        400  
        401   CREATE PRO CEDURE [AH OBPR].[SP_ InsertErro rLog]
        402           @c ompoType                VARCHAR( 100),
        403           @e rrorType                VARCHAR( 100),
        404           @e rrorSource     VARCHA R(200),
        405           @e rrorMessag e   VARCHA R(max),
        406           @c reated                    VARCHA R(30)
        407   AS
        408   BEGIN
        409           SE T NOCOUNT  ON;
        410  
        411           IN SERT INTO  AHOBPR.ERR OR_LOG (
        412                                                       CO MPONENT_TY PE
        413                                                 , ERROR_ TYPE
        414                                                 , ERROR_ SOURCE
        415                                                 , ERROR_ MESSAGE
        416                                                 , CREATE D
        417                                                 , UPDATE D
        418                                                 , CREATE DBY
        419                                                 , UPDATE DBY)
        420                    VALU ES (
        421                                                       @c ompoType
        422                                                 , @error Type
        423                                                 , @error Source
        424                                                 , @error Message
        425                                                 , GETDAT E()
        426                                                 , GETDAT E()
        427                                                 , @creat ed
        428                                                 , @creat ed);
        429                                                 
        430           SE LECT SCOPE _IDENTITY( );
        431  
        432   END
        433  
        434   GO
        435  
        436   PRINT 'DRO P and CREA TE PROCEDU RE [AHOBPR ].[SP_Inse rtJsonQueu e]...';
        437   GO
        438  
        439   IF  EXISTS  (SELECT *  FROM sys. objects WH ERE object _id = OBJE CT_ID(N'[A HOBPR].[SP _InsertJso nQueue]')  AND type i n (N'P', N 'PC'))
        440   DROP PROCE DURE [AHOB PR].[SP_In sertJsonQu eue]
        441   GO
        442  
        443   CREATE PRO CEDURE [AH OBPR].[SP_ InsertJson Queue]
        444           @j sonQueueId                    IN T,
        445           @r egistrantJ sonId                   INT,
        446           @p rocessStar tDate                   DATETIME 2(0) = nul l,
        447           @p rocessComp leteDate     DATETIME 2(0) = nul l,
        448           @p rocessStat us                      VARCHAR( 100),
        449           @p rocessErro r                         VARCHA R(4000),
        450           @c reatedBy                                      VARCHAR( 30)
        451   AS
        452   BEGIN
        453           SE T NOCOUNT  ON;
        454  
        455           IN SERT INTO  AHOBPR.JSO N_QUEUE_ST ATUS (
        456                                                          JSON_QUEUE _ID
        457                                                 , REGIST RANT_JSON_ ID
        458                                                 , PROCES S_START_DA TE
        459                                                 , PROCES S_COMPLETE _DATE
        460                                                 , PROCES S_STATUS
        461                                                 , PROCES S_ERROR
        462                                                 , CREATE DBY
        463                                                 , CREATE D
        464                                                 , UPDATE DBY
        465                                                 , UPDATE D)
        466           VA LUES (                  @jsonQue ueId
        467                                                 , @regis trantJsonI d
        468                                                 , @proce ssStartDat e
        469                                                 , @proce ssComplete Date
        470                                                 , @proce ssStatus
        471                                                 , @proce ssError
        472                                                 , @creat edBy
        473                                                 , GETDAT E()
        474                                                 , @creat edBy
        475                                                 , GETDAT E());
        476  
        477           SE LECT SCOPE _IDENTITY( );
        478  
        479   END
        480   GO
        481  
        482   PRINT 'DRO P and CREA TE PROCEDU RE [AHOBPR ].[SP_Inse rtRegistra ntFile]... ';
        483   GO
        484  
        485   IF  EXISTS  (SELECT *  FROM sys. objects WH ERE object _id = OBJE CT_ID(N'[A HOBPR].[SP _InsertReg istrantFil e]') AND t ype in (N' P', N'PC') )
        486   DROP PROCE DURE [AHOB PR].[SP_In sertRegist rantFile]
        487   GO
        488  
        489   CREATE PRO CEDURE [AH OBPR].[SP_ InsertRegi strantFile ]
        490           @f ileId                   VARCHAR( 256),
        491           @f ileType                 VARCHAR( 256),
        492           @f ileContent     VARBIN ARY(max),
        493           @c reatedBy                VARCHAR( 30)
        494   AS
        495   BEGIN
        496           SE T NOCOUNT  ON;
        497           
        498           DE CLARE @reg istrantFil eId        uniqueiden tifier;
        499           
        500           SE LECT  @reg istrantFil eId = regi strant_fil e_id
        501           FR OM    AHOB PR.REGISTR ANT_FILE
        502           WH ERE   FILE _ID = @fil eId AND
        503                             FILE_T YPE = @fil eType;
        504           
        505           IF  (@registr antFileId  is null)
        506                    BEGI N
        507                             INSERT  INTO AHOB PR.REGISTR ANT_FILE 
        508                                      (REGISTR ANT_FILE_I D,
        509                                       FILE_ID
        510                                       FILE_TY PE, 
        511                                       FILE_CO NTENT, 
        512                                       CREATED BY, 
        513                                       UPDATED BY, 
        514                                       CREATED
        515                                       UPDATED
        516                             VALUES
        517                                      (NEWID() ,
        518                                       @fileId ,
        519                                       @fileTy pe,
        520                                       @fileCo ntent,
        521                                       @create dBy,
        522                                       @create dBy,
        523                                       GETDATE (),
        524                                       GETDATE ());
        525                    END
        526           EL SE
        527                    BEGI N
        528                             UPDATE  AHOBPR.RE GISTRANT_F ILE
        529                             SET
        530                                      FILE_CON TENT = @fi leContent,
        531                                      UPDATEDB Y = @creat edBy,
        532                                      UPDATED  = GETDATE( )
        533                             WHERE  REGISTRANT _FILE_ID =  @registra ntFileId;
        534                    END
        535   END
        536   GO
        537  
        538   PRINT 'DRO P and CREA TE PROCEDU RE [AHOBPR ].[SP_Inse rtRegistra ntJson]... ';
        539   GO
        540  
        541   IF  EXISTS  (SELECT *  FROM sys. objects WH ERE object _id = OBJE CT_ID(N'[A HOBPR].[SP _InsertReg istrantJso n]') AND t ype in (N' P', N'PC') )
        542   DROP PROCE DURE [AHOB PR].[SP_In sertRegist rantJson]
        543   GO
        544  
        545  
        546   CREATE PRO CEDURE [AH OBPR].[SP_ InsertRegi strantJson ]
        547           @o bjectId          VARC HAR(256),
        548           @o bjectType      VARCHA R(100),
        549           @j sonData          VARC HAR(max),
        550           @c reatedBy       VARCHA R(30)
        551   AS
        552   BEGIN
        553           SE T NOCOUNT  ON;
        554  
        555           IN SERT INTO  AHOBPR.REG ISTRANT_JS ON (
        556                                                   OBJECT _ID
        557                                                 , OBJECT _TYPE
        558                                                 , JSON_D ATA
        559                                                 , CREATE D
        560                                                 , CREATE DBY
        561                                                 , UPDATE D
        562                                                 , UPDATE DBY)
        563           VA LUES (
        564                                                   @objec tId
        565                                                 , @objec tType
        566                                                 , @jsonD ata
        567                                                 , GETDAT E()
        568                                                 , @creat edBy
        569                                                 , GETDAT E()
        570                                                 , @creat edBy);
        571  
        572           SE LECT SCOPE _IDENTITY( );
        573  
        574   END
        575   GO
        576  
        577   PRINT 'DRO P and CREA TE PROCEDU RE [AHOBPR ].[SP_Json GetCurrent ]...';
        578   GO
        579  
        580   IF  EXISTS  (SELECT *  FROM sys. objects WH ERE object _id = OBJE CT_ID(N'[A HOBPR].[SP _JsonGetCu rrent]') A ND type in  (N'P', N' PC'))
        581   DROP PROCE DURE [AHOB PR].[SP_Js onGetCurre nt]
        582   GO
        583   CREATE PRO CEDURE [AH OBPR].[SP_ JsonGetCur rent]
        584   @ObjectTyp e VARCHAR( 100),
        585    @ObjectId  VARCHAR(2 56)
        586   AS
        587  
        588   BEGIN
        589  
        590   DECLARE @C urrentId I NT;
        591           
        592         -- G et the Mos t Current  JSON ID fo r the Type  and ID
        593         SELE CT @Curren tId = MAX( [REGISTRAN T_JSON_ID]
        594           FR OM [AHOBPR ].[REGISTR ANT_JSON] 
        595          WHE RE [OBJECT _TYPE] = @ ObjectType   
        596            A ND [OBJECT _ID] = @Ob jectId;
        597            
        598         -- G et the rec ord   
        599         SELE CT 
        600                         REGISTRANT _JSON_ID
        601                      ,  OBJECT_ID
        602                      ,  OBJECT_TYP E
        603                      ,  JSON_DATA
        604                      ,  CREATEDBY
        605                      ,  UPDATEDBY
        606                      ,  CREATED
        607                      ,  UPDATED
        608          FRO M [AHOBPR] .[REGISTRA NT_JSON] W ITH (NOLOC K)
        609          WHE RE [REGIST RANT_JSON_ ID] = @Cur rentId;
        610  
        611   END
        612   -- EXECUTE  AHOBPR.SP _JsonGetCu rrent 5187
        613  
        614   GO
        615   PRINT 'DRO P and CREA TE PROCEDU RE [AHOBPR ].[SP_Repo rtAdHocByI ndividual] ...';
        616   GO
        617  
        618   IF  EXISTS  (SELECT *  FROM sys. objects WH ERE object _id = OBJE CT_ID(N'[A HOBPR].[SP _ReportAdH ocByIndivi dual]') AN D type in  (N'P', N'P C'))
        619   DROP PROCE DURE [AHOB PR].[SP_Re portAdHocB yIndividua l]
        620   GO
        621  
        622   -- ======= ========== ========== ========== ========
        623   -- Author:                Debora h Barr
        624   -- Create  date: Nove mber 12, 2 014
        625   -- Descrip tion: Used  for the A HOBPR Ad H oc Report   
        626  
        627   -- Modific ation log
        628   -- 2014-12 -31 - Chan ged from F LAG to RES PONSE for  Health Con cerns and  REQUEST_SE EN, Reform atted stat ements for  readabili ty
        629   -- 2015-01 -05 - Chan ge Date Fo rmat to MM /DD/YYYY
        630   -- 2015-01 -14 - Sher ry Wang Ad d more par ameters: @ healthFact or, @formS tartFromDa te, @formS tartToDate , @subpopu lationFlag
        631   -- 2015-01 -14 - Sher ry Wang Ad d more par ameters: @ adminFlag,  @deployme ntAll, @de ploymentEx posure, @a dminFlagFr omDate, @a dminFlagTo Date
        632   -- 2015-01 -16 - Bruc e Clegg -  Fix parame ters and r emove NULL s from dis play where  possible
        633   -- 2015-02 -09 - Bruc e Clegg -  Change Hea lth Factor  Exists st atements t o use new  REGISTRANT _VISIT
        634   -- 2015-03 -30 - Bruc e Clegg -  Added Visn Id value o f NLA to f ind Null l ocations
        635   -- 2015-04 -27 - Bruc e Clegg -  Change to  LocationTy pe and Key , for both  Assigned  and Evalua ted Locati ons
        636   -- 2015-06 -04 - Bruc e Clegg -  Add more p arameters
        637   -- 2015-06 -18 - Bruc e Clegg -  Changed @s eparationT ype to an  Integer 
        638   -- 2015-07 -09 - Bruc e CLegg -  Rewrote as  Dynamic S QL for per formance
        639   -- ======= ========== ========== ========== ========
        640   CREATE PRO CEDURE [AH OBPR].[SP_ ReportAdHo cByIndivid ual]
        641          @st atus varch ar(100) =  NULL, -- M ultiple st atues, com ma-separat ed values  when not N ULL
        642          @du tyStatus v archar(100 ) = NULL,  -- Multipl e states,  comma-sepa rated valu es when no t NULL  
        643          @fo rmStartFro mDateText  varchar(10 0) = NULL,
        644          @fo rmStartToD ateText va rchar(100)  = NULL,
        645          @he althFactor  varchar(1 00) = NULL , -- Multi ple health  factor ID s, comma-s eparated v alues when  not NULL
        646          @fo rmCompleti onFromDate Text varch ar(100) =  NULL,
        647          @fo rmCompleti onToDateTe xt varchar (100) = NU LL,
        648          @qu estionNumb er varchar (100) = NU LL,
        649          @an swer varch ar(100) =  NULL,
        650          @he althConcer ns varchar (100) = 'A ll', 
        651          @re questToBeS een varcha r(100) = ' All',
        652          @As signedLoca tionType   VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        653          @As signedLoca tionKey    VARCHAR(50 ) = NULL,   -- 'V16',  'V01'     1000109,   1000089
        654          @Ev aluatedLoc ationType  VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        655          @Ev aluatedLoc ationKey   VARCHAR(50 ) = NULL,   -- 'V16',  'V01'     1000109,   1000089
        656          @su bpopulatio nFlag varc har (10) =  NULL, 
        657          @ad minFlag va rchar (10)  = NULL, 
        658          @de ploymentAl l varchar  (256) = NU LL, 
        659          @de ploymentEx posure var char (256)  = NULL, 
        660          @ad minFlagFro mDateText  varchar (2 0) = NULL,  
        661          @ad minFlagToD ateText va rchar (20)  = NULL,
        662          @ex cludeDead  varchar(1)  = 'N',
        663          @ge nder varch ar(50) = ' ',
        664          @ra ce varchar (50) = '',
        665          @et hnicity va rchar(50)  = '',
        666          @se parationTy pe INT = 0 ,
        667          @se parationFr omDateText  varchar ( 20) = NULL
        668          @se parationTo DateText v archar (20 ) = NULL, 
        669          @en rollmentSt atus varch ar(50) = ' '
        670   AS
        671  
        672   BEGIN
        673  
        674   -- Convert  date para meters fro m VARCHAR  to DATETIM E2(0)    
        675     DECLARE  @formStart FromDate D ATETIME2(0 ) = NULL,
        676              @formStart ToDate DAT ETIME2(0)  = NULL,
        677              @formCompl etionFromD ate DATETI ME2(0) = N ULL,
        678              @formCompl etionToDat e DATETIME 2(0) = NUL L,
        679              @adminFlag FromDate D ATETIME2(0 ) = NULL,
        680              @adminFlag ToDate DAT ETIME2(0)  = NULL,
        681              @separatio nFromDate  DATETIME2( 0) = NULL,
        682              @separatio nToDate DA TETIME2(0)  = NULL;
        683  
        684     DECLARE  @Query VAR CHAR(8000) ;                 
        685     DECLARE  @MainQuery  VARCHAR(8 000);                  
        686     DECLARE  @RegCriter ia VARCHAR (8000) = ' ';                 
        687     DECLARE  @AdminWith  VARCHAR(8 000);                  
        688     DECLARE  @SubPopWit h VARCHAR( 8000);                  
        689     DECLARE  @DeployWit h VARCHAR( 8000);                  
        690  
        691     SET @for mStartFrom Date = dbo .CleanDate (@formStar tFromDateT ext);
        692     SET @for mStartToDa te = dbo.A ddMaxTime( dbo.CleanD ate(@formS tartToDate Text));
        693     SET @for mCompletio nFromDate  = dbo.Clea nDate(@for mCompletio nFromDateT ext);
        694     SET @for mCompletio nToDate =  dbo.AddMax Time(dbo.C leanDate(@ formComple tionToDate Text));      
        695     SET @adm inFlagFrom Date = ISN ULL(dbo.Cl eanDate(@a dminFlagFr omDateText ),'1900010 1');
        696     SET @adm inFlagToDa te = dbo.A ddMaxTime( ISNULL(dbo .CleanDate (@adminFla gToDateTex t),GETDATE ())); 
        697           SE T @separat ionFromDat e = dbo.Cl eanDate(@s eparationF romDateTex t);
        698     SET @sep arationToD ate = dbo. AddMaxTime (dbo.Clean Date(@sepa rationToDa teText)); 
        699  
        700           DE CLARE @Adm inType INT  = (SELECT  STD_REGIS TRY_FLAG_T YPE_ID
        701                                          FROM  AHOBPR.ST D_REGISTRY _FLAG_TYPE  
        702                                         WHERE  REGISTRY_ FLAG_TYPE  = 'Adminis trative Fl ag');
        703                                         
        704           DE CLARE @Sub PopType IN T = (SELEC T STD_REGI STRY_FLAG_ TYPE_ID
        705                                          FROM  AHOBPR.ST D_REGISTRY _FLAG_TYPE  
        706                                         WHERE  REGISTRY_ FLAG_TYPE  = 'SubPopu lation Fla g');                                  
        707                                              
        708   -- Set Ins titutionID  values if  needed.
        709   DECLARE @A ssignedIns titutionId  INT = 0,
        710           @E valuatedIn stitutionI d INT = 0;
        711  
        712   IF @Assign edLocation Type IN (' Base','Ins titution')  
        713   AND ISNUME RIC(@Assig nedLocatio nKey) = 1
        714     SET @Ass ignedInsti tutionId =  CONVERT(I NT,@Assign edLocation Key);
        715     
        716   IF @Evalua tedLocatio nType IN ( 'Base','In stitution'
        717   AND ISNUME RIC(@Evalu atedLocati onKey) = 1
        718     SET @Eva luatedInst itutionId  = CONVERT( INT,@Evalu atedLocati onKey);
        719  
        720     --Concat enate one  or more Su b-populati on flags f or Registr ants with  flags
        721     SET @Sub PopWith =  'WITH SubP op AS ( SE LECT a.REG ISTRANT_ID , '+
        722                                                    'STUF F((SELECT  '', '' + c .REGISTRY_ FLAG_NAME  ' +
        723                                                             ' FROM  AHOBPR.REG ISTRANT_RE GISTRY_FLA G b ' +
        724                                                             ' JOIN  AHOBPR.STD _REGISTRY_ FLAG c ON  b.STD_REGI STRY_FLAG_ ID = c.STD _REGISTRY_ FLAG_ID '  +
        725                                                            ' WHERE  a.REGISTRA NT_ID = b. REGISTRANT _ID ' +
        726                                                            '   AND  c.STD_REGI STRY_FLAG_ TYPE_ID =  ' + CONVER T(VARCHAR( 3),@SubPop Type) +
        727                                                              ' FOR  XML PATH(' ''')), 1,  1, '''') A S [REGISTR Y_FLAG_NAM E] ' +
        728                                           ' F ROM AHOBPR .REGISTRAN T a ' +
        729                                           'WH ERE 1 = 1  ';
        730                                           
        731     --Concat enate one  or more Ad min flags  for Regist rants with  flags
        732     SET @Adm inWith = ' , Admin AS  (  SELECT  a.REGISTR ANT_ID, '  +
        733                                       ' STUFF ((SELECT ' ', '' + c. REGISTRY_F LAG_NAME '  +
        734                                                '  FROM A HOBPR.REGI STRANT_REG ISTRY_FLAG  b ' +
        735                                                '  JOIN A HOBPR.STD_ REGISTRY_F LAG c ON b .STD_REGIS TRY_FLAG_I D = c.STD_ REGISTRY_F LAG_ID ' +
        736                                                ' WHERE a .REGISTRAN T_ID = b.R EGISTRANT_ ID ' +
        737                                                '   AND c .STD_REGIS TRY_FLAG_T YPE_ID = '  + CONVERT (VARCHAR(3 ),@AdminTy pe) +
        738                                                '   AND b .CREATED B ETWEEN '''  + CONVERT (VARCHAR(2 0),@adminF lagFromDat e,121) + 
        739                                                                   ' '' AND '''  + CONVERT (VARCHAR(2 0),@adminF lagToDate, 121) + ''' ' + 
        740                                                '   FOR X ML PATH('' '')), 1, 1 , '''') AS  [REGISTRY _FLAG_NAME ] ' +
        741                                     '  FROM A HOBPR.REGI STRANT a '  +
        742                                    '  WHERE 1  = 1 ';
        743  
        744     --Concat enate one  or more De ployment C ountries f or Registr ants with  Deployment s
        745     SET @Dep loyWith =  ', Deploy  AS (SELECT  a.REGISTR ANT_ID,  '  +
        746                                             '  STUFF((SE LECT '', ' ' + b.DEPL OYMENT_COU NTRY ' + 
        747                                                      '   FROM AHOBP R.REGISTRA NT_DEPLOYM ENT b ' +
        748                                                     '  W HERE a.REG ISTRANT_ID  = b.REGIS TRANT_ID '  +
        749                                                     '     FOR XML P ATH('''')) , 1, 1, '' '') AS DEP LOYMENT_CO UNTRY ' +
        750                                        ' FROM  AHOBPR.RE GISTRANT a  ' +
        751                                      '  WHERE  1 = 1 ';
        752  
        753     SET @Mai nQuery = '   SELECT D ISTINCT a. REGISTRANT _ID ' +
        754                                 ', (a.LAST_NA ME + '', ' ' + a.FIRS T_NAME) AS  Name ' +
        755                                 ', b.REGISTRA NT_STATUS  AS Status  ' +
        756                                 ', c.SERVICE_ STATUS AS  DutyStatus  ' +
        757                                 ', e.QUESTION NAIRE_STAR TED_DATE A S Question StartDate  ' +
        758                                 ', e.QUESTION NAIRE_COMP LETED_DATE  AS Questi onComplete Date ' +
        759                                 ', ISNULL(CON VERT(VARCH AR(10), e. QUESTIONNA IRE_STARTE D_DATE, 10 1),'''') A S Question StartDateD isplay ' +
        760                                 ', ISNULL(CON VERT(VARCH AR(10), e. QUESTIONNA IRE_COMPLE TED_DATE,  101),'''')  AS Questi onComplete DateDispla y ';
        761   --Decide w hich query  to run de pending on  if a ques tion was s elected as  a paramet er for the  report
        762     IF ISNUL L(@questio nNumber, ' ') = ''
        763       SET @M ainQuery =  @MainQuer y + ',''''  AS Questi onNumber '  +
        764                                        ',''''  AS Answer  '
        765     ELSE                                     
        766       SET @M ainQuery =  @MainQuer y + ','''  + @questio nNumber +  ''' AS Que stionNumbe r ' +
        767                                        ',STUF F((SELECT  '', '' + s tdAnswer.T EXT ' +
        768                                                 '  FROM  AHOBPR.FOR M_RESPONSE _ANSWER an swer ' + 
        769                                                 '  JOIN  AHOBPR.STD _FORM_ANSW ER stdAnsw er ON answ er.STD_FOR M_ANSWER_I D = stdAns wer.STD_FO RM_ANSWER_ ID ' +
        770                                                 ' WHERE  formQuesti on.FORM_RE SPONSE_QUE STION_ID =  answer.FO RM_RESPONS E_QUESTION _ID ' +
        771                                                 ' FOR XM L PATH(''' ')), 1, 1,  '''') AS  Answer ' ;                    
        772       
        773     SET @Mai nQuery = @ MainQuery  + ',ISNULL (a.HEALTH_ CONCERNS_R ESPONSE,'' '') AS Hea lthConcern s ' +
        774                                      ',ISNULL (a.REQUEST _SEEN_RESP ONSE,'''')   AS Reque stBeSeen   ' +
        775                                      ',RTRIM( LTRIM(ISNU LL(SubPop. REGISTRY_F LAG_NAME,' '''))) AS  Subpopulat ionFlag  '  +
        776                                      ',RTRIM( LTRIM(ISNU LL(Admin.R EGISTRY_FL AG_NAME,'' ''))) AS A dminFlag   ' +
        777                                      ',ISNULL (Deploy.DE PLOYMENT_C OUNTRY,''' ') AS Depl oymentCoun try             ' +
        778                                                   ',a.BI RTH_DATE A S BirthDat e  ' +
        779                                                   ',CONV ERT(VARCHA R(10), a.B IRTH_DATE,  101) AS B irthDateDi splay ' +
        780                                      'FROM AH OBPR.REGIS TRANT a '
        781                                      
        782     SET @Mai nQuery = @ MainQuery  + ' JOIN A HOBPR.STD_ REGISTRANT _STATUS b  ON a.STD_R EGISTRANT_ STATUS_ID  = b.STD_RE GISTRANT_S TATUS_ID '  +
        783                                            '  JOIN AHOBP R.STD_SERV ICE_STATUS  c ON a.ST D_SERVICE_ STATUS_ID  = c.STD_SE RVICE_STAT US_ID ' +
        784                                                   ' LEFT  JOIN AHOB PR.FORM_RE SPONSE d O N a.REGIST RANT_ID =   d.REGISTR ANT_ID ' +
        785                                                   ' LEFT  JOIN AHOB PR.FORM_RE SPONSE_STA TUS e ON d .FORM_RESP ONSE_ID =  e.FORM_RES PONSE_ID '  +
        786                                                   ' LEFT  JOIN SubP op  ON a.R EGISTRANT_ ID = SubPo p.REGISTRA NT_ID ' +
        787                                                   ' LEFT  JOIN Admi n   ON a.R EGISTRANT_ ID = Admin .REGISTRAN T_ID ' +
        788                                                   ' LEFT  JOIN Depl oy  ON a.R EGISTRANT_ ID = Deplo y.REGISTRA NT_ID ';
        789  
        790     IF ISNUL L(@questio nNumber, ' ') != ''
        791       SET @M ainQuery =  @MainQuer y + ' JOIN  AHOBPR.FO RM_RESPONS E_QUESTION  formQuest ion ON d.F ORM_RESPON SE_ID = fo rmQuestion .FORM_RESP ONSE_ID '  +
        792                                        ' JOIN  AHOBPR.ST D_FORM_QUE STION stdQ uestion ON  formQuest ion.STD_FO RM_QUESTIO N_ID = std Question.S TD_FORM_QU ESTION_ID  ';
        793  
        794     SET @Mai nQuery = @ MainQuery  + ' WHERE  1 = 1 ';
        795  
        796     -- Quest ion Number  and Answe r criteria  are only  used again st Main Qu ery                  
        797     IF ISNUL L(@questio nNumber, ' ') > ''
        798              SET @MainQ uery = @Ma inQuery +  ' AND stdQ uestion.FO RM_QUESTIO N_UNIQUE_I D = ''' +  @questionN umber + '' ' ';
        799             
        800     IF ISNUL L(@answer, '') != '' 
        801       SET @M ainQuery =  @MainQuer y +  ' AND  EXISTS(SE LECT fr.RE GISTRANT_I D FROM AHO BPR.FORM_R ESPONSE_AN SWER ra ' 
        802                                          'JOI N AHOBPR.F ORM_RESPON SE_QUESTIO N rq ON rq .FORM_RESP ONSE_QUEST ION_ID = r a.FORM_RES PONSE_QUES TION_ID  '  + 
        803                                          'JOI N AHOBPR.F ORM_RESPON SE fr ON f r.FORM_RES PONSE_ID =  rq.FORM_R ESPONSE_ID   ' + 
        804                                          'JOI N AHOBPR.S TD_FORM_AN SWER A1 ON  A1.STD_FO RM_ANSWER_ ID = ra.ST D_FORM_ANS WER_ID ' +  
        805                                          'JOI N AHOBPR.S TD_FORM_QU ESTION Q1  ON Q1.STD_ FORM_QUEST ION_ID = r q.STD_FORM _QUESTION_ ID ' + 
        806                                          'JOI N AHOBPR.S TD_FORM_QU ESTION Q2  ON Q2.FORM _QUESTION_ UNIQUE_ID  = Q1.FORM_ QUESTION_U NIQUE_ID '  + 
        807                                          'JOI N AHOBPR.S TD_FORM_AN SWER A2 ON  A2.STD_FO RM_QUESTIO N_ID = Q2. STD_FORM_Q UESTION_ID  ' + 
        808                                          ' AN D A1.BRP_F ORM_ANSWER _ID = A2.B RP_FORM_AN SWER_ID ' 
        809                                        ' WHER E A2.STD_F ORM_ANSWER _ID IN ('  + @answer  + ') AND f r.REGISTRA NT_ID = a. REGISTRANT _ID )';                                                         
        810  
        811     IF @form StartFromD ate IS NOT  NULL                       
        812        SET @ MainQuery  = @MainQue ry + ' AND  e.QUESTIO NNAIRE_STA RTED_DATE  >= ''' + C ONVERT(VAR CHAR(20),@ formStartF romDate,12 1) + '''';
        813        
        814     IF @form StartToDat e IS NOT N ULL                       
        815        SET @ MainQuery  = @MainQue ry + ' AND  e.QUESTIO NNAIRE_STA RTED_DATE  <= ''' + C ONVERT(VAR CHAR(20),@ formStartT oDate,121)  + '''';
        816       
        817     IF @form Completion FromDate I S NOT NULL                        
        818        SET @ MainQuery  = @MainQue ry + ' AND  e.QUESTIO NNAIRE_COM PLETED_DAT E >= ''' +  CONVERT(V ARCHAR(20) ,@formComp letionFrom Date,121)  + '''';
        819  
        820     IF @form Completion ToDate IS  NOT NULL                       
        821        SET @ MainQuery  = @MainQue ry + ' AND  e.QUESTIO NNAIRE_COM PLETED_DAT E <= ''' +  CONVERT(V ARCHAR(20) ,@formComp letionToDa te,121) +  '''';
        822  
        823     IF ISNUL L(@subpopu lationFlag ,'') != ''
        824       SET @M ainQuery =  @MainQuer y + ' AND  EXISTS(SEL ECT * FROM  AHOBPR.RE GISTRANT_R EGISTRY_FL AG subpop  ' +
        825                                            '  WHERE subp op.STD_REG ISTRY_FLAG _ID IN ('  + @subpopu lationFlag  + ') ' +
        826                                               ' AND subp op.REGISTR ANT_ID = a .REGISTRAN T_ID ) ';
        827  
        828           IF  ISNULL(@a dminFlag,' ') != ''
        829       SET @M ainQuery =  @MainQuer y + ' AND  EXISTS(SEL ECT * FROM  AHOBPR.RE GISTRANT_R EGISTRY_FL AG adminfl ag ' +
        830                             ' WHER E adminfla g.STD_REGI STRY_FLAG_ ID IN (' +  @adminFla g + ') ' +
        831                               ' AN D adminfla g.REGISTRA NT_ID = a. REGISTRANT _ID ' +
        832                               ' AN D adminfla g.CREATED  BETWEEN '' ' + CONVER T(VARCHAR( 20),@admin FlagFromDa te,121) + 
        833                                                          ''' AND '' ' + CONVER T(VARCHAR( 20),@admin FlagToDate ,121) + '' ' ) ';  
        834                                                     
        835     IF ISNUL L(@deploym entAll,'')  != '' 
        836       SET @M ainQuery =  @MainQuer y + 'AND E XISTS (SEL ECT depl.R EGISTRANT_ ID FROM AH OBPR.REGIS TRANT_DEPL OYMENT dep l ' +
        837                                                          ' WHERE a. REGISTRANT _ID = depl .REGISTRAN T_ID
        838                                                              AND de pl.DEPLOYM ENT_COUNTR Y = ''' +  @deploymen tAll + ''' ) ' ;
        839                                                            
        840     IF ISNUL L(@healthF actor,'')  != ''
        841       SET @M ainQuery =  @MainQuer y + ' AND  EXISTS (SE LECT re.RE GISTRANT_I D FROM AHO BPR.REGIST RANT_VISIT  re ' +
        842                                               ' JOIN AHO BPR.REGIST RANT_HEALT H_FACTOR h f ON re.RE GISTRANT_V ISIT_ID =  hf.REGISTR ANT_VISIT_ ID ' +
        843                                             '  WHERE a.R EGISTRANT_ ID = re.RE GISTRANT_I D AND re.E VALUATION_ FLAG = ''Y '' ' +
        844                                             '    AND hf. STD_HEALTH _FACTOR_ID  IN (' + @ healthFact or + ') )  '
        845  
        846    
        847     IF ISNUL L(@deploym entExposur e,'') != '
        848       SET @M ainQuery =  @MainQuer y + ' AND  EXISTS(SEL ECT deploy mentExposu re.REGISTR ANT_ID FRO M AHOBPR.R EGISTRANT_ DEPLOYMENT  deploymen tExposure  ' +
        849                                               '  JOIN AH OBPR.FORM_ RESPONSE_Q UESTION ex posure ON  deployment Exposure.R EGISTRANT_ DEPLOYMENT _ID = expo sure.REGIS TRANT_DEPL OYMENT_ID  ' +
        850                                               '  JOIN AH OBPR.STD_F ORM_QUESTI ON quest O N exposure .STD_FORM_ QUESTION_I D = quest. STD_FORM_Q UESTION_ID  ' +
        851                                               ' WHERE qu est.FORM_Q UESTION_UN IQUE_ID =  ''1.2.A''  ' +
        852                                               '   AND de ploymentEx posure.DEP LOYMENT_CO UNTRY = '' ' + @deplo ymentExpos ure + ''''  + 
        853                                               '   AND de ploymentEx posure.REG ISTRANT_ID  = a.REGIS TRANT_ID )  ';
        854                                                              
        855     
        856    -- The re st of the  criteria w ill be app lied to Ma in Query a nd With st atememts 
        857     IF @stat us IS NOT  NULL
        858       SET @R egCriteria  = @RegCri teria + '  AND a.STD_ REGISTRANT _STATUS_ID  IN (' + @ status + ' )';
        859  
        860     IF ISNUL L(@dutySta tus,'') >  ''
        861       SET @R egCriteria  = @RegCri teria + '  AND a.STD_ SERVICE_ST ATUS_ID IN  (' + @dut yStatus +  ')';
        862             
        863     IF @heal thConcerns  != 'All'
        864       SET @R egCriteria  = @RegCri teria + '  AND a.HEAL TH_CONCERN S_RESPONSE  = ''' + @ healthConc erns + ''' '; 
        865     
        866     IF @requ estToBeSee n != 'All'
        867       SET @R egCriteria  = @RegCri teria + '  AND a.REQU EST_SEEN_R ESPONSE =  ''' + @req uestToBeSe en  + '''' ;
        868                                                                             
        869     IF ISNUL L(@exclude Dead,'N')  = 'Y'
        870       SET @R egCriteria  = @RegCri teria + '  AND a.DECE ASED_FLAG  = 0 ';
        871     
        872     IF ISNUL L(@gender, '') != ''
        873       SET @R egCriteria  = @RegCri teria + '  AND ''' +  @gender +  ''' = ISNU LL(a.GENDE R,''No Dat a Availabl e'') ';
        874       
        875     IF ISNUL L(@ethnici ty,'') !=  ''
        876       SET @R egCriteria  = @RegCri teria + '  AND ''' +  @ethnicity  + ''' = I SNULL(a.ET HNICITY,'' No Data Av ailable'')  ';
        877     
        878     IF ISNUL L(@separat ionType,0)  != 0
        879       SET @R egCriteria  = @RegCri teria + '  AND ''' +  @separatio nType + '  = ISNULL(a .STD_SEPAR ATION_REAS ON_ID_CURR ENT,0) ';
        880  
        881     IF @sepa rationFrom Date IS NO T NULL 
        882       SET @R egCriteria  = @RegCri teria + '  AND a.SEPA RATION_DAT E_CURRENT  >= ''' + C ONVERT(VAR CHAR(20),@ separation FromDate,1 21) + '''' ;
        883     
        884     IF @sepa rationToDa te IS NOT  NULL 
        885       SET @R egCriteria  = @RegCri teria + '  AND  a.SEP ARATION_DA TE_CURRENT  <= ''' +  CONVERT(VA RCHAR(20), @separatio nToDate,12 1) + '''';
        886     
        887     IF ISNUL L(@race,'' ) != ''
        888       SET @R egCriteria  = @RegCri teria + '  AND ''' +  @race + '' ' =  ISNUL L(a.RACE , ''No Data  Available' ') ';
        889       
        890     IF ISNUL L(@enrollm entStatus, '') != ''
        891       SET @R egCriteria  = @RegCri teria + '  AND ''' +  @enrollmen tStatus +  ''' = ISNU LL(a.ENROL LMENT_STAT US,''No Da ta Availab le'') ';
        892  
        893     IF @Assi gnedLocati onType IS  NOT NULL
        894       BEGIN
        895         IF @ AssignedLo cationType  = 'NLA' 
        896           SE T @RegCrit eria = @Re gCriteria  + ' AND a. STD_INSTIT UTION_ID I S NULL ' ;
        897         ELSE
        898         IF @ AssignedLo cationType  = 'VISN' 
        899           SE T @RegCrit eria = @Re gCriteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.VIEW _FACILITY_ LOOKUP ins t ' +
        900                                                                      ' WHERE i nst.ID = a .STD_INSTI TUTION_ID  ' + 
        901                                                                      '   AND i nst.VisnID  = ''' + @ AssignedLo cationKey  + ''') ';
        902         ELSE
        903         IF @ AssignedLo cationType  = 'Base' 
        904           SE T @RegCrit eria = @Re gCriteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.VIEW _FACILITY_ LOOKUP ins t ' +
        905                                                              ' WHER E inst.ID  = a.STD_IN STITUTION_ ID ' +
        906                                                              '   AN D inst.BAS E_ID = ' +  CONVERT(V ARCHAR(20) ,@Assigned Institutio nId) + ')  '
        907         ELSE
        908         IF @ AssignedLo cationType  = 'Instit ution' 
        909           SE T @RegCrit eria = @Re gCriteria  + ' AND a. STD_INSTIT UTION_ID =  ' + CONVE RT(VARCHAR (20),@Assi gnedInstit utionId);
        910      END;
        911      
        912     IF @Eval uatedLocat ionType IS  NOT NULL
        913       BEGIN
        914         IF @ EvaluatedL ocationTyp e = 'NLA' 
        915           SE T @RegCrit eria = @Re gCriteria  + ' AND NO T EXISTS(  SELECT * F ROM AHOBPR .REGISTRAN T_VISIT ev al ' +
        916                                                                   '  WHERE eva l.REGISTRA NT_VISIT_I D = a.REGI STRANT_ID  ' +
        917                                                                   '    AND eva l.EVALUATI ON_FLAG =  ''Y'') ' ;  
        918         ELSE
        919         IF @ EvaluatedL ocationTyp e = 'VISN'  
        920           SE T @RegCrit eria = @Re gCriteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.REGI STRANT_VIS IT eval '  +
        921                                                               ' JOI N AHOBPR.V IEW_FACILI TY_LOOKUP  inst ON in st.ID = ev al.STD_INS TITUTION_I D ' +
        922                                                              ' WHER E eval.REG ISTRANT_VI SIT_ID = a .REGISTRAN T_ID ' +
        923                                                                ' AN D eval.EVA LUATION_FL AG = ''Y''  ' +
        924                                                                ' AN D inst.Vis nID = '''  + @Evaluat edLocation Key + ''')  '; 
        925         ELSE
        926         IF @ EvaluatedL ocationTyp e = 'Base'  
        927           SE T @RegCrit eria = @Re gCriteria  +  ' AND E XISTS(SELE CT * FROM  AHOBPR.REG ISTRANT_VI SIT eval '  +
        928                                                               ' JOI N AHOBPR.V IEW_FACILI TY_LOOKUP  inst ON in st.ID = ev al.STD_INS TITUTION_I D ' +
        929                                                              ' WHER E eval.REG ISTRANT_VI SIT_ID = a .REGISTRAN T_ID ' +
        930                                                                ' AN D eval.EVA LUATION_FL AG = ''Y''  ' +
        931                                                                ' AN D inst.BAS E_ID = ' +  CONVERT(V ARCHAR(20) ,@Evaluate dInstituti onId) + ')  ';
        932         ELSE
        933         IF @ EvaluatedL ocationTyp e = 'Insti tution' 
        934           SE T @RegCrit eria = @Re gCriteria  +  ' AND E XISTS(SELE CT * FROM  AHOBPR.REG ISTRANT_VI SIT eval '  +
        935                                                               ' JOI N AHOBPR.V IEW_FACILI TY_LOOKUP  inst ON in st.ID = ev al.STD_INS TITUTION_I D ' +
        936                                                              ' WHER E eval.REG ISTRANT_VI SIT_ID = a .REGISTRAN T_ID ' +
        937                                                                ' AN D eval.EVA LUATION_FL AG = ''Y''  ' +
        938                                                                ' AN D eval.STD _INSTITUTI ON_ID = '  + CONVERT( VARCHAR(20 ),@Evaluat edInstitut ionId)  +  ') '; 
        939       END;
        940       
        941   -- Add cri teria and  Close With  Statement
        942     SET @Dep loyWith =  @DeployWit h + @RegCr iteria + '  GROUP BY  a.REGISTRA NT_ID ) ' 
        943     SET @Sub PopWith =  @SubPopWit h + @RegCr iteria + '  GROUP BY  a.REGISTRA NT_ID ) ' 
        944     SET @Adm inWith =   @AdminWith   + @RegCr iteria + '  GROUP BY  a.REGISTRA NT_ID ) ' 
        945  
        946     SET @Que ry =  @Sub PopWith +   @AdminWit h + @Deplo yWith +  @ MainQuery  + @RegCrit eria;             
        947  
        948     PRINT  @ Query;
        949     
        950    EXECUTE ( @Query);  
        951   END;
        952  
        953  
        954  
        955   -- Test Ca ses
        956   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] 
        957   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ status = ' 6,7'
        958   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ dutyStatus  = '1,2'
        959   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ formStartF romDateTex t  = '2001 0101'
        960   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ formStartT oDateText  = '2014123 1'
        961   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ healthFact or = '44,4 5,46,47' 
        962   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ formComple tionFromDa teText  =  '20010101'
        963   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ formComple tionToDate Text  = '2 0141231'
        964   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ healthConc erns = 'Ye s'     , 
        965   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ requestToB eSeen = 'Y es
        966   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ subpopulat ionFlag =  '64,65,66, 67'
        967   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ deployment All = 'Egy pt'
        968   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ deployment Exposure   = 'Iraq'
        969   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ adminFlag  = '59,60'  ,@adminFla gFromDateT ext = '201 50101' , @ adminFlagT oDateText  = '2015020 1'
        970   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ questionNu mber = '5. 4.A'  , @a nswer = '2 221'
        971   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual]
        972   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Ass ignedLocat ionType =  'NLA'
        973   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Ass ignedLocat ionType =  'VISN', @A ssignedLoc ationKey =  'V16'
        974   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Ass ignedLocat ionType =  'Base', @A ssignedLoc ationKey =  '1000089'
        975   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Ass ignedLocat ionType =  'Instituti on', @Assi gnedLocati onKey = '1 000089'
        976   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual]  @et hnicity =  'JEWISH'
        977   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Eva luatedLoca tionType =  'NLA'
        978   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Eva luatedLoca tionType =  'VISN', @ EvaluatedL ocationKey  = 'V16'
        979   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Eva luatedLoca tionType =  'Base', @ EvaluatedL ocationKey  = '100008 9'
        980   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Eva luatedLoca tionType =  'Institut ion', @Eva luatedLoca tionKey =  '1000089'
        981  
        982   GO
        983   PRINT 'DRO P and CREA TE PROCEDU RE [AHOBPR ].[SP_Repo rtAdHocByL ocation].. .';
        984   GO
        985  
        986   IF  EXISTS  (SELECT *  FROM sys. objects WH ERE object _id = OBJE CT_ID(N'[A HOBPR].[SP _ReportAdH ocByLocati on]') AND  type in (N 'P', N'PC' ))
        987   DROP PROCE DURE [AHOB PR].[SP_Re portAdHocB yLocation]
        988   GO
        989  
        990   -- ======= ========== ========== ========== ========
        991   -- Author:                Debora h Barr
        992   -- Create  date: Nove mber 12, 2 014
        993   -- Descrip tion: Used  for the A HOBPR Ad H oc Report   
        994  
        995   -- Modific ation log
        996   -- 2014-12 -31 - Chan ged from F LAG to RES PONSE for  Health Con cerns and  REQUEST_SE EN, Reform atted stat ements for  readabili ty
        997   -- 2015-01 -05 - Chan ge Date Fo rmat to MM /DD/YYYY
        998   -- 2015-01 -14 - Sher ry Wang Ad d more par ameters: @ healthFact or, @formS tartFromDa te, @formS tartToDate , @subpopu lationFlag
        999   -- 2015-01 -14 - Sher ry Wang Ad d more par ameters: @ adminFlag,  @deployme ntAll, @de ploymentEx posure, @a dminFlagFr omDate, @a dminFlagTo Date
        1000   -- 2015-01 -16 - Bruc e Clegg -  Fix parame ters, Add  distinct a nd outer q uery to gr oup counts .
        1001   -- 2015-02 -09 - Bruc e Clegg -  Change Hea lth Factor  Exists st atements t o use new  REGISTRANT _VISIT
        1002   -- 2015-05 -07 - Bruc e Clegg -  Change Fac ility name  from "Oth er" to "No  Facitilty  Assigned"  when not  found
        1003   -- 2015-06 -04 - Bruc e Clegg -  Add more p arameters
        1004   -- 2015-06 -18 - Bruc e Clegg -  Changed @s eparationT ype to an  Integer 
        1005   -- 2015-07 -09 - Bruc e Clegg -  Rewrote as  Dynamic S QL for per formance
        1006   -- 2015-08 -05 - Bruc e Clegg -  Fix bug wi th AdminFl ag - Set F rom and To  date defa ults
        1007   -- ======= ========== ========== ========== ========
        1008   CREATE PRO CEDURE [AH OBPR].[SP_ ReportAdHo cByLocatio n]
        1009          @st atus varch ar(100) =  NULL, -- M ultiple st atues, com ma-separat ed values  when not N ULL
        1010          @du tyStatus v archar(100 ) = NULL,  -- Multipl e states,  comma-sepa rated valu es when no t NULL  
        1011          @fo rmStartFro mDateText  varchar(10 0) = NULL,
        1012          @fo rmStartToD ateText va rchar(100)  = NULL,
        1013          @he althFactor  varchar(1 00) = NULL , -- Multi ple health  factor ID s, comma-s eparated v alues when  not NULL
        1014          @fo rmCompleti onFromDate Text varch ar(100) =  NULL,
        1015          @fo rmCompleti onToDateTe xt varchar (100) = NU LL,
        1016          @qu estionNumb er varchar (100) = NU LL,
        1017          @an swer varch ar(100) =  NULL,
        1018          @he althConcer ns varchar (10) = 'Al l', 
        1019          @re questToBeS een varcha r(10) = 'A ll',
        1020          @gr oupBy VARC HAR(50) =  '',                   -- 'VISN'  or 'Facili ty'   
        1021          @su bpopulatio nFlag varc har (10) =  NULL, 
        1022          @ad minFlag va rchar (10)  = NULL, 
        1023          @de ploymentAl l varchar  (256) = NU LL, 
        1024          @de ploymentEx posure var char (256)  = NULL, 
        1025          @ad minFlagFro mDateText  varchar (2 0) = NULL,  
        1026          @ad minFlagToD ateText va rchar (20)  = NULL,
        1027          @ex cludeDead  varchar(1)  = 'N',
        1028          @ge nder varch ar(50) = ' ',
        1029          @ra ce varchar (50) = '',
        1030          @et hnicity va rchar(50)  = '',
        1031          @se parationTy pe INT = 0 ,
        1032          @se parationFr omDateText  varchar ( 20) = NULL
        1033          @se parationTo DateText v archar (20 ) = NULL, 
        1034          @en rollmentSt atus varch ar(50) = ' '
        1035   AS
        1036  
        1037   BEGIN
        1038  
        1039     DECLARE  @formStart FromDate D ATETIME2(0 ) = NULL,
        1040              @formStart ToDate DAT ETIME2(0)  = NULL,
        1041              @formCompl etionFromD ate DATETI ME2(0) = N ULL,
        1042              @formCompl etionToDat e DATETIME 2(0) = NUL L,
        1043              @adminFlag FromDate D ATETIME2(0 ) = NULL,
        1044              @adminFlag ToDate DAT ETIME2(0)  = NULL,
        1045              @separatio nFromDate  DATETIME2( 0) = NULL,
        1046              @separatio nToDate DA TETIME2(0)  = NULL;
        1047             
        1048     DECLARE  @Query VAR CHAR(8000) ;      
        1049  
        1050     -- Conve rt date pa rameters       
        1051  
        1052     SET @for mStartFrom Date = dbo .CleanDate (@formStar tFromDateT ext);
        1053     SET @for mStartToDa te = dbo.A ddMaxTime( dbo.CleanD ate(@formS tartToDate Text));
        1054     SET @for mCompletio nFromDate  = dbo.Clea nDate(@for mCompletio nFromDateT ext);
        1055     SET @for mCompletio nToDate =  dbo.AddMax Time(dbo.C leanDate(@ formComple tionToDate Text));      
        1056     SET @adm inFlagFrom Date = ISN ULL(dbo.Cl eanDate(@a dminFlagFr omDateText ),'1900010 1');
        1057     SET @adm inFlagToDa te = dbo.A ddMaxTime( ISNULL(dbo .CleanDate (@adminFla gToDateTex t),GETDATE ())); 
        1058     SET @sep arationFro mDate = db o.CleanDat e(@separat ionFromDat eText);
        1059     SET @sep arationToD ate = dbo. AddMaxTime (dbo.Clean Date(@sepa rationToDa teText));    
        1060  
        1061     -- Build  Src TDE
        1062     SET @Que ry = ' WIT H Src 
        1063       AS( SE LECT a.REG ISTRANT_ID , a.STD_IN STITUTION_ ID FROM AH OBPR.REGIS TRANT a WH ERE 1 = 1  ';
        1064     
        1065     IF @stat us IS NOT  NULL
        1066       SET @Q uery = @Qu ery + ' AN D a.STD_RE GISTRANT_S TATUS_ID I N (' + @st atus + ')' ;
        1067  
        1068     IF ISNUL L(@dutySta tus,'') >  ''
        1069       SET @Q uery = @Qu ery + ' AN D a.STD_SE RVICE_STAT US_ID IN ( ' + @dutyS tatus + ') ';
        1070             
        1071     IF @heal thConcerns  != 'All'
        1072       SET @Q uery = @Qu ery + ' AN D a.HEALTH _CONCERNS_ RESPONSE =  ''' + @he althConcer ns + '''';  
        1073     
        1074     IF @requ estToBeSee n != 'All'
        1075       SET @Q uery = @Qu ery + ' AN D a.REQUES T_SEEN_RES PONSE = '' ' + @reque stToBeSeen   + '''';
        1076       
        1077     IF @form StartFromD ate IS NOT  NULL OR @ formStartT oDate IS N OT NULL 
        1078     OR @form Completion FromDate I S NOT NULL  OR @formC ompletionT oDate IS N OT NULL
        1079       BEGIN
        1080         SET  @Query = @ Query + '  AND EXISTS ( SELECT d .REGISTRAN T_ID FROM  AHOBPR.FOR M_RESPONSE  d 
        1081                                               JOIN AHOBP R.FORM_RES PONSE_STAT US e ON d. FORM_RESPO NSE_ID = e .FORM_RESP ONSE_ID   
        1082                                             W HERE a.REG ISTRANT_ID  = d.REGIS TRANT_ID ' ;
        1083                      IF  @formStar tFromDate  IS NOT NUL L                       
        1084                          SET @Quer y = @Query  + ' AND e .QUESTIONN AIRE_START ED_DATE >=  ''' + CON VERT(VARCH AR(20),@fo rmStartFro mDate,121)  + '''';
        1085                      IF  @formStar tToDate IS  NOT NULL                       
        1086                          SET @Quer y = @Query  + ' AND e .QUESTIONN AIRE_START ED_DATE <=  ''' + CON VERT(VARCH AR(20),@fo rmStartToD ate,121) +  '''';
        1087                      IF  @formComp letionFrom Date IS NO T NULL                       
        1088                          SET @Quer y = @Query  + ' AND e .QUESTIONN AIRE_COMPL ETED_DATE  >= ''' + C ONVERT(VAR CHAR(20),@ formComple tionFromDa te,121) +  '''';
        1089                      IF  @formComp letionToDa te IS NOT  NULL                       
        1090                          SET @Quer y = @Query  + ' AND e .QUESTIONN AIRE_COMPL ETED_DATE  <= ''' + C ONVERT(VAR CHAR(20),@ formComple tionToDate ,121) + '' '';
        1091                       S ET @Query  = @Query +  ' ) ' --  Close Exis its statem ent
        1092       END     
        1093       
        1094     IF ISNUL L(@answer, '') != '' 
        1095       --SET  @Query = @ Query + '  AND EXISTS (SELECT fr .REGISTRAN T_ID FROM  AHOBPR.FOR M_RESPONSE _ANSWER ra  ' +
        1096       --                        'J OIN AHOBPR .FORM_RESP ONSE_QUEST ION rq ON  rq.FORM_RE SPONSE_QUE STION_ID =  ra.FORM_R ESPONSE_QU ESTION_ID  ' +
        1097       --                        'J OIN AHOBPR .FORM_RESP ONSE fr ON  fr.FORM_R ESPONSE_ID  = rq.FORM _RESPONSE_ ID ' +
        1098       --                      ' WH ERE ra.STD _FORM_ANSW ER_ID IN ( ' + @answe r + ') AND  fr.REGIST RANT_ID =  a.REGISTRA NT_ID )';
        1099                             
        1100     SET @Que ry = @Quer y + ' AND  EXISTS(SEL ECT fr.REG ISTRANT_ID  FROM AHOB PR.FORM_RE SPONSE_ANS WER ra ' +  
        1101                             'JOIN  AHOBPR.FOR M_RESPONSE _QUESTION  rq ON rq.F ORM_RESPON SE_QUESTIO N_ID = ra. FORM_RESPO NSE_QUESTI ON_ID  ' +  
        1102                             'JOIN  AHOBPR.FOR M_RESPONSE  fr ON fr. FORM_RESPO NSE_ID = r q.FORM_RES PONSE_ID   ' + 
        1103                             'JOIN  AHOBPR.STD _FORM_ANSW ER A1 ON A 1.STD_FORM _ANSWER_ID  = ra.STD_ FORM_ANSWE R_ID ' + 
        1104                             'JOIN  AHOBPR.STD _FORM_QUES TION Q1 ON  Q1.STD_FO RM_QUESTIO N_ID = rq. STD_FORM_Q UESTION_ID  ' + 
        1105                             'JOIN  AHOBPR.STD _FORM_QUES TION Q2 ON  Q2.FORM_Q UESTION_UN IQUE_ID =  Q1.FORM_QU ESTION_UNI QUE_ID ' +  
        1106                             'JOIN  AHOBPR.STD _FORM_ANSW ER A2 ON A 2.STD_FORM _QUESTION_ ID = Q2.ST D_FORM_QUE STION_ID '  + 
        1107                             ' AND  A1.BRP_FOR M_ANSWER_I D = A2.BRP _FORM_ANSW ER_ID ' + 
        1108                           ' WHERE  A2.STD_FOR M_ANSWER_I D IN (' +  @answer +  ') AND fr. REGISTRANT _ID = a.RE GISTRANT_I D )';                           
        1109                             
        1110     
        1111     IF ISNUL L(@subpopu lationFlag ,'') != ''
        1112       SET @Q uery = @Qu ery + ' AN D EXISTS(S ELECT * FR OM AHOBPR. REGISTRANT _REGISTRY_ FLAG subpo p ' +
        1113                                            '  WHERE subp op.STD_REG ISTRY_FLAG _ID IN ('  + @subpopu lationFlag  + ') ' +
        1114                                               ' AND subp op.REGISTR ANT_ID = a .REGISTRAN T_ID ) ';
        1115  
        1116           IF  ISNULL(@a dminFlag,' ') != ''
        1117       SET @Q uery = @Qu ery + ' AN D EXISTS(S ELECT * FR OM AHOBPR. REGISTRANT _REGISTRY_ FLAG admin flag ' +
        1118                             ' WHER E adminfla g.STD_REGI STRY_FLAG_ ID IN (' +  @adminFla g + ') ' +
        1119                               ' AN D adminfla g.REGISTRA NT_ID = a. REGISTRANT _ID ' +
        1120                               ' AN D adminfla g.CREATED  BETWEEN '' ' + CONVER T(VARCHAR( 20),@admin FlagFromDa te,121) + 
        1121                                                          ''' AND '' ' + CONVER T(VARCHAR( 20),@admin FlagToDate ,121) + '' ' ) ';  
        1122                                 
        1123     IF ISNUL L(@healthF actor,'')  != ''
        1124       SET @Q uery = @Qu ery + ' AN D EXISTS ( SELECT re. REGISTRANT _ID FROM A HOBPR.REGI STRANT_VIS IT re ' +
        1125                                               ' JOIN AHO BPR.REGIST RANT_HEALT H_FACTOR h f ON re.RE GISTRANT_V ISIT_ID =  hf.REGISTR ANT_VISIT_ ID ' +
        1126                                             '  WHERE a.R EGISTRANT_ ID = re.RE GISTRANT_I D AND re.E VALUATION_ FLAG = ''Y '' ' +
        1127                                             '    AND hf. STD_HEALTH _FACTOR_ID  IN (' + @ healthFact or + ') )  '
        1128  
        1129     IF ISNUL L(@deploym entAll,'')  != '' 
        1130       SET @Q uery = @Qu ery + ' AN D EXISTS ( SELECT dep l.REGISTRA NT_ID FROM  AHOBPR.RE GISTRANT_D EPLOYMENT  depl ' +
        1131                                             '  WHERE a.R EGISTRANT_ ID = depl. REGISTRANT _ID
        1132                                                  AND dep l.DEPLOYME NT_COUNTRY  = ''' + @ deployment All + ''')  ' ;
        1133  
        1134     IF ISNUL L(@deploym entExposur e,'') != '
        1135       SET @Q uery = @Qu ery + ' AN D EXISTS(S ELECT depl oymentExpo sure.REGIS TRANT_ID F ROM AHOBPR .REGISTRAN T_DEPLOYME NT deploym entExposur e ' +
        1136                                               '  JOIN AH OBPR.FORM_ RESPONSE_Q UESTION ex posure ON  deployment Exposure.R EGISTRANT_ DEPLOYMENT _ID = expo sure.REGIS TRANT_DEPL OYMENT_ID  ' +
        1137                                               '  JOIN AH OBPR.STD_F ORM_QUESTI ON quest O N exposure .STD_FORM_ QUESTION_I D = quest. STD_FORM_Q UESTION_ID  ' +
        1138                                               ' WHERE qu est.FORM_Q UESTION_UN IQUE_ID =  ''1.2.A''  ' +
        1139                                               '   AND de ploymentEx posure.DEP LOYMENT_CO UNTRY = '' ' + @deplo ymentExpos ure + ''''  + 
        1140                                               '   AND de ploymentEx posure.REG ISTRANT_ID  = a.REGIS TRANT_ID )  ';
        1141     IF ISNUL L(@exclude Dead,'N')  = 'Y'
        1142       SET @Q uery = @Qu ery + ' AN D a.DECEAS ED_FLAG =  0 ';
        1143     
        1144     IF ISNUL L(@gender, '') != ''
        1145       SET @Q uery = @Qu ery + ' AN D ''' + @g ender + '' ' = ISNULL (a.GENDER, ''No Data  Available' ') ';
        1146       
        1147     IF ISNUL L(@ethnici ty,'') !=  ''
        1148       SET @Q uery = @Qu ery + ' AN D ''' + @e thnicity +  ''' = ISN ULL(a.ETHN ICITY,''No  Data Avai lable'') ' ;
        1149     
        1150     IF ISNUL L(@separat ionType,0)  != 0
        1151       SET @Q uery = @Qu ery + ' AN D ''' + @s eparationT ype + '''  = ISNULL(a .STD_SEPAR ATION_REAS ON_ID_CURR ENT,0) ';
        1152  
        1153     IF @sepa rationFrom Date IS NO T NULL 
        1154       SET @Q uery = @Qu ery + ' AN D a.SEPARA TION_DATE_ CURRENT >=  ''' + CON VERT(VARCH AR(20),@se parationFr omDate,121 ) + '''';
        1155     
        1156     IF @sepa rationToDa te IS NOT  NULL 
        1157       SET @Q uery = @Qu ery + ' AN D  a.SEPAR ATION_DATE _CURRENT < = ''' + CO NVERT(VARC HAR(20),@s eparationT oDate,121)  + '''';
        1158     
        1159     IF ISNUL L(@race,'' ) != ''
        1160       SET @Q uery = @Qu ery + ' AN D ''' + @r ace + '''  =  ISNULL( a.RACE ,'' No Data Av ailable'')  ';
        1161       
        1162     IF ISNUL L(@enrollm entStatus, '') != ''
        1163       SET @Q uery = @Qu ery + ' AN D ''' + @e nrollmentS tatus + '' ' = ISNULL (a.ENROLLM ENT_STATUS ,''No Data  Available '') ';
        1164  
        1165     -- Add S ummary TDE                     
        1166     SET @Que ry = @Quer y + '  )     ,Summary   AS( ' + 
        1167                             ' SELE CT Src.STD _INSTITUTI ON_ID, COU NT(*) AS T otalRegist rants FROM  Src ' +
        1168                             ' GROU P BY STD_I NSTITUTION _ID ) ';
        1169   -- By Faci lity 
        1170           IF  @groupBy  = 'Facilit y'
        1171              SET @Query  = @Query  + ' SELECT  inst.Name  AS Locati on, ' +
        1172                                               ' ISNULL(C ONVERT(VAR CHAR(10),S ummary.STD _INSTITUTI ON_ID),''- 1'') AS Lo cationId,  ' +
        1173                                         '  SU M(TotalReg istrants)  AS TotalRe gistrants  FROM Summa ry ' +                         
        1174                                       '  JOIN  AHOBPR.VI EW_INSTITU TION_NAME  inst ON in st.ID = IS NULL(Summa ry.STD_INS TITUTION_I D,-1) ' +
        1175                                       ' GROUP  BY inst.N ame,STD_IN STITUTION_ ID ' +
        1176                                           ' O PTION (OPT IMIZE FOR  UNKNOWN);' ;
        1177     
        1178   -- By VISN
        1179           IF  @groupBy  = 'VISN'
        1180               SET @Quer y = @Query  + ' ,Visn Summary AS  ( ' +
        1181                     ' S ELECT ISNU LL(inst.Vi snID,''NLA '') AS Loc ation, ' +
        1182                            '  ISNU LL(inst.Vi snID, ''-1 '') AS Loc ationId, '  +
        1183                            '  SUM( TotalRegis trants) AS  TotalRegi strants '  +                 
        1184                     '    FROM Summ ary ' +   
        1185                     '    LEFT JOIN  AHOBPR.VI EW_FACILIT Y_LOOKUP i nst ON ins t.ID = ISN ULL(Summar y.STD_INST ITUTION_ID ,-1) ' +  
        1186                     '    GROUP BY  inst.VisnI D  ) ' +
        1187                     ' S ELECT REPL ACE(Locati on,''NLA'' ,''No Faci tilty Assi gned'') AS  Location,  ' +
        1188                     '         CONV ERT(VARCHA R(10),Loca tionId) AS  LocationI d, TotalRe gistrants  ' +
        1189                     '    FROM Visn Summary  '  +
        1190                     '   ORDER BY L ocation ' 
        1191                     '   OPTION (OP TIMIZE FOR  UNKNOWN);  ' ;
        1192           
        1193     PRINT @Q uery;          
        1194                                           
        1195     EXECUTE  (@Query);                                                  
        1196   END
        1197   -- Paramet ers
        1198     --@statu s, @dutySt atus ,@que stionnaire StartDate,  @question naireCompl eteDate, 
        1199     --@quest ionNumber,  @answer,  @healthCon cerns= 'Al l', @reque stToBeSeen  = 'All',
        1200     --@regis tryFlag,@I nstitution Id = 0, @V isnId = ''  
        1201   -- Test Ca ses
        1202   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @st atus = '6, 7'
        1203   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @du tyStatus =  '1,2'
        1204   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @fo rmStartFro mDateText   = '200101 01'
        1205   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @fo rmStartToD ateText =  '20141231'
        1206   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @he althFactor  = '44,45, 46,47' 
        1207   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @fo rmCompleti onFromDate Text  = '2 0010101'
        1208   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @fo rmCompleti onToDateTe xt  = '201 41231'
        1209   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @he althConcer ns = 'Yes'  
        1210   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @re questToBeS een = 'Yes '
        1211   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @su bpopulatio nFlag = '6 4,65,66,67 '
        1212   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @de ploymentAl l = 'Iraq'     -- 'Eg ypt'
        1213   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @de ploymentEx posure  =  'Iraq'
        1214   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @ad minFlag =  '59,60' ,@ adminFlagF romDateTex t = '20150 101' , @ad minFlagToD ateText =  '20150201'
        1215   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @an swer = '22 21'
        1216   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy =  ' Facility'  , @status  = '6,7' ,@ answer = ' 2346,1571, 17'   -- ' 20,795,157 0' 
        1217   GO
        1218  
        1219   PRINT 'DRO P and CREA TE PROCEDU RE [AHOBPR ].[SP_Repo rtParticip ation]...' ;
        1220   GO
        1221  
        1222   IF  EXISTS  (SELECT *  FROM sys. objects WH ERE object _id = OBJE CT_ID(N'[A HOBPR].[SP _ReportPar ticipation ]') AND ty pe in (N'P ', N'PC'))
        1223   DROP PROCE DURE [AHOB PR].[SP_Re portPartic ipation]
        1224   GO
        1225  
        1226   -- ======= ========== ========== ========== ========
        1227   -- Author:                Bruce  Clegg
        1228   -- Create  date: Dec  30, 2014
        1229   -- Descrip tion: Used  for the A HOBPR Part icipation  Report        -- exec  [AHOBPR]. [SP_Report Participat ion] 
        1230   -- 2015033 0 - Bruce  Clegg - Ad ded VisnId  value of  NLA to fin d Null loc ations
        1231   -- 2015042 7 - Bruce  Clegg - Ch ange to Lo cationType  and Key,  for both A ssigned an d Evaluate d Location s
        1232   -- 2015071 0 - Bruce  Clegg - Re write usin g Dynamic  SQL for Pe rformance
        1233   -- 2015091 0 - Bruce  Clegg - Re moved sele ction for  Question 1 .2.A for D eployments
        1234   -- 2015091 5 - Bruce  Clegg - Ad d Max Time  to End da te paramet er
        1235   -- ======= ========== ========== ========== ========
        1236   CREATE PRO CEDURE [AH OBPR].[SP_ ReportPart icipation]
        1237          @St artDate DA TETIME2(0)  = NULL,  
        1238          @En dDate   DA TETIME2(0)  = NULL,
        1239          @As signedLoca tionType   VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        1240          @As signedLoca tionKey    VARCHAR(50 ) = NULL,   -- 'V16',  'V01'     1000109,   1000089
        1241          @Ev aluatedLoc ationType  VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        1242          @Ev aluatedLoc ationKey   VARCHAR(50 ) = NULL    -- 'V16',  'V01'     1000109,   1000089
        1243   AS
        1244   BEGIN
        1245  
        1246     SET @Sta rtDate = I SNULL(@Sta rtDate,'19 900802');  -- Desert  Storm star t date
        1247     SET @End Date = ISN ULL(@EndDa te, GETDAT E());
        1248       
        1249     SET @End Date = dbo .AddMaxTim e(@EndDate );
        1250     
        1251     DECLARE  @ConsentSt atusCount  INT = 0,
        1252              @EligibleS tatusCount  INT = 0,
        1253              @Participa ntStatusCo unt INT =  0,
        1254              @HealthCon cernsCount  INT = 0,
        1255              @NoHealthC oncernsCou nt INT = 0 ,
        1256              @RequestSe enCount IN T = 0,
        1257              @NoRequest SeenCount  INT = 0,
        1258              @DoNotKnow RequestSee nCount INT  = 0,
        1259              @VeteranSe rviceStatu sCount INT  = 0,
        1260              @ActiveDut yServiceSt atusCount  INT = 0,
        1261              @RetireeSe rviceStatu sCount INT  = 0,
        1262              @Afgh911Co unt INT =  0,
        1263              @Iraq911Co unt INT =  0,
        1264              @SWA911Cou nt INT = 0 ,
        1265              @Pre911Cou nt INT = 0 ,
        1266              @Djibouti9 11Count IN T = 0,
        1267              @MedianDay sToPartici pant DECIM AL(9,2) =  0;    
        1268     
        1269     DECLARE  @AssignedI nstitution Id INT = 0 ,
        1270           @E valuatedIn stitutionI d INT = 0;
        1271  
        1272     DECLARE  @Query NVA RCHAR(MAX) ;
        1273     DECLARE  @Criteria  VARCHAR(20 00) = '';
        1274  
        1275   IF @Assign edLocation Type IN (' Base','Ins titution')  
        1276   AND ISNUME RIC(@Assig nedLocatio nKey) = 1
        1277     SET @Ass ignedInsti tutionId =  CONVERT(I NT,@Assign edLocation Key);
        1278     
        1279   IF @Evalua tedLocatio nType IN ( 'Base','In stitution'
        1280   AND ISNUME RIC(@Evalu atedLocati onKey) = 1
        1281     SET @Eva luatedInst itutionId  = CONVERT( INT,@Evalu atedLocati onKey);
        1282  
        1283     --  Buil d Criteria  string
        1284  
        1285     SET @Cri teria = '  AND respon seStat.QUE STIONNAIRE _COMPLETED _DATE BETW EEN ''' +  CONVERT(VA RCHAR(20), @StartDate ,121) +
        1286                                                                             '' ' AND '''  + CONVERT( VARCHAR(20 ),@EndDate ,121) + '' ' ' ;
        1287     IF @Assi gnedLocati onType = ' NLA' 
        1288       SET @C riteria =  @Criteria  + ' AND re g.STD_INST ITUTION_ID  IS NULL ' ;
        1289  
        1290     IF @Assi gnedLocati onType = ' VISN' 
        1291       SET @C riteria =  @Criteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.VIEW _FACILITY_ LOOKUP ins t ' +
        1292                                            '  WHERE inst .ID = reg. STD_INSTIT UTION_ID '  +
        1293                                                'AND inst .VisnID =  ''' + @Ass ignedLocat ionKey + ' '') ';
        1294           
        1295     IF @Assi gnedLocati onType = ' Base' 
        1296       SET @C riteria =  @Criteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.VIEW _FACILITY_ LOOKUP ins t ' +
        1297                                             ' WHERE inst .ID = reg. STD_INSTIT UTION_ID '  +
        1298                                                'AND inst .BASE_ID =  ' + CONVE RT(VARCHAR (20),@Assi gnedInstit utionId) +  ' ) ';
        1299                    
        1300     IF @Assi gnedLocati onType = ' Institutio n' 
        1301       SET @C riteria =  @Criteria  + ' AND re g.STD_INST ITUTION_ID  = ' + CON VERT(VARCH AR(20),@As signedInst itutionId)  + ' '    
        1302     
        1303     IF @Eval uatedLocat ionType =  'NLA' 
        1304       SET @C riteria =  @Criteria  + ' AND NO T EXISTS(  SELECT * F ROM AHOBPR .REGISTRAN T_VISIT ev al ' +
        1305                                                   'WHERE  eval.REGI STRANT_ID  = Reg.REGI STRANT_ID  ' +
        1306                                                      'AN D eval.EVA LUATION_FL AG = ''Y''  ) ';
        1307             
        1308     IF @Eval uatedLocat ionType =  'VISN' 
        1309       SET @C riteria =  @Criteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.REGI STRANT_VIS IT eval '  +
        1310                                                      'JO IN AHOBPR. VIEW_FACIL ITY_LOOKUP  inst ON i nst.ID = e val.STD_IN STITUTION_ ID ' +
        1311                                                    ' WHE RE eval.RE GISTRANT_I D = Reg.RE GISTRANT_I D ' +
        1312                                                       'A ND inst.Vi snID = '''  +  @Evalu atedLocati onKey + '' ' ' +
        1313                                                       'A ND eval.EV ALUATION_F LAG = ''Y' ') ' ; 
        1314                    
        1315     IF @Eval uatedLocat ionType =  'Base' 
        1316       SET @C riteria =  @Criteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.REGI STRANT_VIS IT eval '  +
        1317                                                      'JO IN AHOBPR. VIEW_FACIL ITY_LOOKUP  inst ON i nst.ID = e val.STD_IN STITUTION_ ID ' +
        1318                                                    ' WHE RE eval.RE GISTRANT_I D = Reg.RE GISTRANT_I D ' +
        1319                                               ' AND inst .BASE_ID =  ' + CONVE RT(VARCHAR (20),@Eval uatedInsti tutionId) 
        1320                                                 ' AND ev al.EVALUAT ION_FLAG =  ''Y'') ';  
        1321     IF @Eval uatedLocat ionType =  'Instituti on' 
        1322       SET @C riteria =  @Criteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.REGI STRANT_VIS IT eval '  +
        1323                                            '  WHERE eval .REGISTRAN T_ID = Reg .REGISTRAN T_ID '+
        1324                                               ' AND eval .STD_INSTI TUTION_ID  = ' + CONV ERT(VARCHA R(20),@Eva luatedInst itutionId)  +
        1325                                               ' AND eval .EVALUATIO N_FLAG = ' 'Y'') '; 
        1326  
        1327     --  @Par ticipantSt atusCount
        1328     SET @Que ry = ' SEL ECT @Parti cipantStat usCount =  COUNT(*) '  +
        1329                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1330                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1331                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1332                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID '  
        1333                  + @Cri teria     
        1334                  + '  A ND stat.RE GISTRANT_S TATUS = '' Participan t'' '; 
        1335                    
        1336     PRINT @Q uery;
        1337     EXEC sp_ executesql  @Query,   N'@Partici pantStatus Count INT  OUTPUT',     @Partici pantStatus Count OUTP UT;
        1338  
        1339      
        1340       --  @H ealthConce rnsCount
        1341     SET @Que ry = ' SEL ECT @Healt hConcernsC ount = COU NT(*) ' +
        1342                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1343                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1344                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1345                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID '  
        1346                  + ' WH ERE reg.HE ALTH_CONCE RNS_RESPON SE = ''Yes '' '
        1347                  + @Cri teria; 
        1348                    
        1349     PRINT @Q uery;
        1350     EXEC sp_ executesql  @Query,   N'@HealthC oncernsCou nt INT OUT PUT',    @ HealthConc ernsCount  OUTPUT;
        1351  
        1352     --  @NoH ealthConce rnsCount
        1353     SET @Que ry = ' SEL ECT @NoHea lthConcern sCount = C OUNT(*) '  +
        1354                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1355                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1356                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1357                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID '  
        1358                  + ' WH ERE reg.HE ALTH_CONCE RNS_RESPON SE IS NULL  '
        1359                  + @Cri teria; 
        1360                    
        1361     PRINT @Q uery;
        1362     EXEC sp_ executesql  @Query,   N'@NoHealt hConcernsC ount INT O UTPUT',     @NoHealth ConcernsCo unt OUTPUT ;
        1363                                
        1364  
        1365     --  @Req uestSeenCo unt
        1366     SET @Que ry = ' SEL ECT @Reque stSeenCoun t = COUNT( *) ' +
        1367                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1368                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1369                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1370                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID '  
        1371                  + ' WH ERE reg.RE QUEST_SEEN _RESPONSE  = ''Yes''  '
        1372                  + @Cri teria;
        1373                    
        1374     PRINT @Q uery;
        1375     EXEC sp_ executesql  @Query,   N'@Request SeenCount  INT OUTPUT ',    @Req uestSeenCo unt OUTPUT ;
        1376                                                             
        1377     --  @NoR equestSeen Count
        1378     SET @Que ry = ' SEL ECT @NoReq uestSeenCo unt = COUN T(*) ' +
        1379                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1380                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1381                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1382                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID '  
        1383                  + ' WH ERE reg.RE QUEST_SEEN _RESPONSE  = ''No'' '
        1384                  + @Cri teria;
        1385                    
        1386     PRINT @Q uery;
        1387     EXEC sp_ executesql  @Query,   N'@NoReque stSeenCoun t INT OUTP UT',    @N oRequestSe enCount OU TPUT;
        1388                                                                                                    
        1389     --  @DoN otKnowRequ estSeenCou nt
        1390     SET @Que ry = ' SEL ECT @DoNot KnowReques tSeenCount  = COUNT(* ) ' +
        1391                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1392                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1393                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1394                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID '  
        1395                  + ' WH ERE ISNULL (reg.REQUE ST_SEEN_RE SPONSE,''' ') NOT IN  (''Yes'',' 'No'') '
        1396                  + @Cri teria;
        1397                    
        1398     PRINT @Q uery;
        1399     EXEC sp_ executesql  @Query,   N'@DoNotKn owRequestS eenCount I NT OUTPUT' , @DoNotKn owRequestS eenCount O UTPUT;       
        1400                                                           
        1401     --  @Act iveDutySer viceStatus Count
        1402     SET @Que ry = ' SEL ECT @Activ eDutyServi ceStatusCo unt = COUN T(*) ' +
        1403                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1404                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1405                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1406                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID ' +
        1407                    '  J OIN AHOBPR .STD_SERVI CE_STATUS  svc  ON sv c.STD_SERV ICE_STATUS _ID = reg. STD_SERVIC E_STATUS_I D '
        1408                  + ' WH ERE svc.SE RVICE_STAT US = ''Act ive Duty''  '
        1409                  + @Cri teria;
        1410                    
        1411     PRINT @Q uery;
        1412     EXEC sp_ executesql  @Query,   N'@ActiveD utyService StatusCoun t INT OUTP UT', @Acti veDutyServ iceStatusC ount OUTPU T;        
        1413            
        1414      
        1415     --  @Vet eranServic eStatusCou nt
        1416     SET @Que ry = ' SEL ECT @Veter anServiceS tatusCount  = COUNT(* ) ' +
        1417                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1418                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1419                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1420                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID ' +
        1421                    '  J OIN AHOBPR .STD_SERVI CE_STATUS  svc  ON sv c.STD_SERV ICE_STATUS _ID = reg. STD_SERVIC E_STATUS_I D '
        1422                  + ' WH ERE svc.SE RVICE_STAT US = ''Sep arated'' '
        1423                  + @Cri teria;
        1424                    
        1425     PRINT @Q uery;
        1426     EXEC sp_ executesql  @Query,   N'@Veteran ServiceSta tusCount I NT OUTPUT' , @Veteran ServiceSta tusCount O UTPUT;                      
        1427    
        1428     --  @Ret ireeServic eStatusCou nt
        1429     SET @Que ry = ' SEL ECT @Retir eeServiceS tatusCount  = COUNT(* ) ' +
        1430                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1431                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1432                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1433                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID ' +
        1434                    '  J OIN AHOBPR .STD_SERVI CE_STATUS  svc  ON sv c.STD_SERV ICE_STATUS _ID = reg. STD_SERVIC E_STATUS_I D '
        1435                  + ' WH ERE svc.SE RVICE_STAT US = ''Ret iree'' '
        1436                  + @Cri teria;
        1437                    
        1438     PRINT @Q uery;
        1439     EXEC sp_ executesql  @Query,   N'@Retiree ServiceSta tusCount I NT OUTPUT' , @Retiree ServiceSta tusCount O UTPUT;                      
        1440    
        1441        
        1442                                                                 
        1443   -- Deploym ent Counts   
        1444     SET @Que ry = 'WITH  Deploymen ts
        1445     AS ( 
        1446       SELECT  
        1447           dp ly.REGISTR ANT_ID ,
        1448         CASE  WHEN (SUM (CASE WHEN  [DEPLOYME NT_COUNTRY ] = ''Iraq '' 
        1449                                AND  [DEPLOYME NT_START_D ATE] > ''2 0010911'' 
        1450                                THE N 1 ELSE 0  END) )> 0  
        1451               THEN 1 EL SE 0 END A S Iraq911C ount,
        1452         CASE  WHEN (SUM (CASE WHEN  [DEPLOYME NT_COUNTRY ] = ''Afgh anistan''   
        1453                                AND  [DEPLOYME NT_START_D ATE] > ''2 0010911'' 
        1454                               THEN  1 ELSE 0  END)) > 0
        1455               THEN 1 EL SE 0 END A S Afgh911C ount,               
        1456         CASE  WHEN (SUM (CASE WHEN  [DEPLOYME NT_COUNTRY ] = ''Djib outi''  
        1457                                AND  [DEPLOYME NT_START_D ATE] > ''2 0010911'' 
        1458                               THEN  1 ELSE 0  END)) > 0
        1459               THEN 1 EL SE 0 END A S Djibouti 911Count,                
        1460         CASE  WHEN (SUM (CASE WHEN  [DEPLOYME NT_COUNTRY ] IN (''Ku wait'',''S audi Arabi a'',''Bahr ain'', ''G ulf of Ade n'', ''Gul f of Oman' ', ''Oman' ', ''Qatar '', ''Unit ed Arab Em irates'',  ''Persian  Gulf'', '' Arabian Se a'', ''Red  Sea'')
        1461                                AND  [DEPLOYME NT_START_D ATE] > ''2 0010911'' 
        1462                                THE N 1 ELSE 0  END)) > 0
        1463               THEN 1 EL SE 0 END A S SWA911Co unt,
        1464         CASE  WHEN (SUM (CASE WHEN  ([DEPLOYM ENT_START_ DATE] BETW EEN ''1990 0802'' AND  ''2001091 1'' ) 
        1465                                AND   [DEPLOYM ENT_COUNTR Y] IN (''I raq'',''Ku wait'',''S audi Arabi a'',''Bahr ain'', ''G ulf of Ade n'', ''Gul f of Oman' ', ''Oman' ', ''Qatar '', ''Unit ed Arab Em irates'',  ''Persian  Gulf'', '' Arabian Se a'', ''Red  Sea'')
        1466                               THEN  1 ELSE 0  END)) > 0
        1467               THEN 1 EL SE 0 END   AS Pre911C ount
        1468       FROM [ AHOBPR].[R EGISTRANT_ DEPLOYMENT ] dply
        1469           JO IN AHOBPR. REGISTRANT  Reg ON Re g.REGISTRA NT_ID = dp ly.REGISTR ANT_ID
        1470           JO IN AHOBPR. FORM_RESPO NSE resp O N resp.REG ISTRANT_ID  = dply.RE GISTRANT_I D
        1471           JO IN AHOBPR. FORM_RESPO NSE_STATUS  responseS tat ON res ponseStat. FORM_RESPO NSE_ID = r esp.FORM_R ESPONSE_ID    
        1472                 WHERE 1  = 1 ' +
        1473                 @Criter ia +                 
        1474       ' GROU P BY dply. REGISTRANT _ID 
        1475        )
        1476        SELEC T @Afgh911 Count =  S UM(ISNULL( Deployment s.Afgh911C ount,0))  
        1477               ,@Iraq911 Count =  S UM(ISNULL( Deployment s.Iraq911C ount,0))
        1478               ,@SWA911C ount = SUM (ISNULL(De ployments. SWA911Coun t,0))
        1479               ,@Pre911C ount =   S UM(ISNULL( Deployment s.Pre911Co unt,0))
        1480               ,@Djibout i911Count  = SUM(ISNU LL(Deploym ents.Djibo uti911Coun t,0))
        1481         FROM  Deploymen ts' ;
        1482         
        1483     PRINT @Q uery;
        1484     EXEC sp_ executesql  @Query,  
        1485          N'@ Afgh911Cou nt INT OUT PUT, @Iraq 911Count I NT OUTPUT,  @SWA911Co unt INT OU TPUT, @Pre 911Count I NT OUTPUT,  @Djibouti 911Count I NT OUTPUT'
        1486         , @A fgh911Coun t OUTPUT,  @Iraq911Co unt OUTPUT , @SWA911C ount OUTPU T, @Pre911 Count OUTP UT, @Djibo uti911Coun t OUTPUT;              
        1487  
        1488     
        1489        CREAT E TABLE #D aysToParti cipant(DAY S INT);
        1490      
        1491       -- Med ian Days f rom Eligib le to Part icipant St atus    
        1492       -- Not e that onl y Registra nts with B oth values  and DateP articipant  > DateEli gible will  be counte d for eith er Numerat or or Deno minator
        1493  
        1494       SET @Q uery = 'WI TH eligibl
        1495         AS (  
        1496              SELECT [RE GISTRANT_I D],MIN([CR EATED]) AS  DateEligi ble
        1497                FROM [AH OBPR].[PRO CESS_METRI CS]
        1498               WHERE [PR OCESS_METR ICS_VALUE]  = ''Eligi ble''
        1499               GROUP BY  [REGISTRAN T_ID]
        1500            ) ,
        1501         part icipant 
        1502         AS (
        1503            S ELECT [REG ISTRANT_ID ],MAX([CRE ATED]) AS  DatePartic ipant
        1504               FROM [AHO BPR].[PROC ESS_METRIC S]
        1505              WHERE [PRO CESS_METRI CS_VALUE]  = ''Partic ipant''   
        1506               GROUP BY  [REGISTRAN T_ID]
        1507              )
        1508        INSER T INTO #Da ysToPartic ipant(DAYS )
        1509       SELECT  
        1510         CASE  WHEN Date Participan t > DateEl igible THE N DATEDIFF (Day,DateE ligible,Da teParticip ant) ELSE  0 END AS D aysDiffere nce
        1511         FROM  [AHOBPR]. [REGISTRAN T] reg
        1512         JOIN  eligible  ON reg.REG ISTRANT_ID  = eligibl e.REGISTRA NT_ID
        1513         JOIN  participa nt ON reg. REGISTRANT _ID = part icipant.RE GISTRANT_I D   
        1514         JOIN  AHOBPR.FO RM_RESPONS E resp ON  resp.REGIS TRANT_ID =  reg.REGIS TRANT_ID
        1515         JOIN  AHOBPR.FO RM_RESPONS E_STATUS r esponseSta t ON respo nseStat.FO RM_RESPONS E_ID = res p.FORM_RES PONSE_ID '  +
        1516       'WHERE  1 = 1 '   + @Criteri a +  
        1517      ' ORDER  BY DaysDi fference';
        1518  
        1519     PRINT @Q uery;
        1520     EXECUTE( @Query);
        1521        
        1522       WITH C ounts AS
        1523       (
        1524          SEL ECT c=COUN T(*)
        1525          FRO M #DaysToP articipant
        1526       )
        1527       SELECT  @MedianDa ysToPartic ipant = AV G(0. + DAY S)
        1528       FROM C ounts a
        1529       CROSS  APPLY
        1530       (
        1531          SEL ECT TOP((( a.c - 1) /  2) + (1 +  (1 - a.c  % 2)))
        1532              DAYS, r=RO W_NUMBER()  OVER (ORD ER BY DAYS )
        1533          FRO M #DaysToP articipant  b
        1534          ORD ER BY DAYS
        1535       ) p
        1536       WHERE  r BETWEEN  ((a.c - 1)  / 2) + 1  AND (((a.c  - 1) / 2)  + (1 + (1  - a.c % 2 ))); 
        1537            
        1538       DROP   TABLE #Day sToPartici pant;                     
        1539    
        1540    -- Return  Results
        1541      SELECT  ISNULL(@Pa rticipantS tatusCount ,0) AS Par ticipantSt atusCount,
        1542              ISNULL(@He althConcer nsCount,0)  AS Report edHealthCo ncernsCoun t,
        1543              ISNULL(@No HealthConc ernsCount, 0) AS  NoR eportedHea lthConcern sCount,
        1544              ISNULL(@Re questSeenC ount,0) AS  RequestSe enCount,
        1545              ISNULL(@No RequestSee nCount,0)  AS NoReque stSeenCoun t,
        1546              ISNULL(@Do NotKnowReq uestSeenCo unt,0) AS  DoNotKnowR equestSeen Count,
        1547              ISNULL(@Ve teranServi ceStatusCo unt,0) AS  VeteranSer viceStatus Count ,
        1548              ISNULL(@Ac tiveDutySe rviceStatu sCount,0)  AS  Active DutyServic eStatusCou nt,
        1549              ISNULL(@Re tireeServi ceStatusCo unt,0) AS  RetireeSer viceStatus Count,
        1550              ISNULL(@Af gh911Count ,0) AS  Af gh911Count ,
        1551              ISNULL(@Ir aq911Count ,0) AS Ira q911Count,
        1552              ISNULL(@SW A911Count, 0) AS  Sou thWestAsia 911Count,
        1553              ISNULL(@Pr e911Count, 0) AS  Pre 911Count,
        1554              ISNULL(@Me dianDaysTo Participan t,0.0) AS  MedianDays ToParticip ant,
        1555              ISNULL(@Dj ibouti911C ount,0) AS  Djibouti9 11Count ;
        1556  
        1557   END
        1558  
        1559   -- exec [A HOBPR].[SP _ReportPar ticipation ] @StartDa te = '2015 0901'
        1560   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Assigne dLocationT ype = 'NLA '
        1561   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Assigne dLocationT ype = 'VIS N', @Assig nedLocatio nKey = 'V1 6'
        1562   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Assigne dLocationT ype = 'Bas e', @Assig nedLocatio nKey = '10 00089'
        1563   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Assigne dLocationT ype = 'Ins titution',  @Assigned LocationKe y = '10000 89'
        1564   -- exec [A HOBPR].[SP _ReportPar ticipation ]
        1565   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Evaluat edLocation Type = 'NL A'
        1566   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Evaluat edLocation Type = 'VI SN', @Eval uatedLocat ionKey = ' V16'
        1567   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Evaluat edLocation Type = 'Ba se', @Eval uatedLocat ionKey = ' 1000089'
        1568   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Evaluat edLocation Type = 'In stitution' , @Evaluat edLocation Key = '100 0089'
        1569  
        1570  
        1571  
        1572  
        1573   ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
        1574   GO
        1575  
        1576   PRINT 'DRO P and CREA TE PROCEDU RE [AHOBPR ].[SP_Repo rtRegistra ntContact] ...';
        1577   GO
        1578  
        1579   IF  EXISTS  (SELECT *  FROM sys. objects WH ERE object _id = OBJE CT_ID(N'[A HOBPR].[SP _ReportReg istrantCon tact]') AN D type in  (N'P', N'P C'))
        1580   DROP PROCE DURE [AHOB PR].[SP_Re portRegist rantContac t]
        1581   GO
        1582  
        1583  
        1584   -- ======= ========== ========== ========== ========
        1585   -- Author:                Bruce  Clegg
        1586   -- Create  date: Jan  12, 2015
        1587   -- Descrip tion: Used  for the A HOBPR Cont act Report   -- exec  [AHOBPR].[ SP_ReportR egistrantC ontact]     (More opt ions at bo ttom)
        1588   -- 2015-02 -23 - Cleg g - provid e individu al field n ames
        1589   -- 2015033 0 - Bruce  Clegg - Ad ded VisnId  value of  NLA to fin d Null loc ations
        1590   -- 2015042 7 - Bruce  Clegg - Ch ange to Lo cationType  and Key,  for both A ssigned an d Evaluate d Location s
        1591   -- 2015042 9 - Bruce  Clegg - Ad ded Email  column (ag ain)
        1592   -- 2015061 7 - D. Bar r - Added  state para meter
        1593   -- 2015072 2 - Bruce  Clegg - Fi x bug with  @Evaluate dLocationT ype = 'Bas e'
        1594   -- 2015090 1 - Bruce  Clegg Fix  Main phone .  TYPE is  not NULL  so old way  does not  work
        1595   -- ======= ========== ========== ========== ========
        1596   CREATE PRO CEDURE [AH OBPR].[SP_ ReportRegi strantCont act]
        1597          @Re gistrantSt atus       VARCHAR(50 ) = '',     -- '1,2,3 ,4,5,6,7,8 '
        1598          @Sv cStatus               VARCHAR(50 ) = '',     -- '1,2,3 '
        1599          @Ad minFlagId             INT = 0,               -- 60
        1600          @Ad minFromDat eText      VARCHAR(50 ) = NULL,
        1601          @Ad minToDateT ext        VARCHAR(50 ) = NULL,
        1602          @Su bPopulatio nFlagId    INT = 0,               -- 65
        1603          @As signedLoca tionType   VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        1604          @As signedLoca tionKey    VARCHAR(50 ) = NULL,   -- 'V16',  'V01'     1000109,   1000089
        1605          @Ev aluatedLoc ationType  VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        1606          @Ev aluatedLoc ationKey   VARCHAR(50 ) = NULL,   -- 'V16',  'V01'     1000109,   1000089
        1607          @Co mpletedFro mDateText  VARCHAR(50 ) = NULL,
        1608          @Co mpletedToD ateText    VARCHAR(50 ) = NULL,
        1609          @st ate varcha r(8000) =  NULL -- Mu ltiple sta tes, comma -separated  values wh en not NUL
        1610   AS
        1611   BEGIN
        1612  
        1613   DECLARE @A dminFromDa te DATETIM E2(0) = IS NULL(dbo.C leanDate(@ AdminFromD ateText),' 19000101')
        1614   DECLARE @A dminToDate    DATETIM E2(0) = db o.AddMaxTi me(ISNULL( dbo.CleanD ate(@Admin ToDateText ),GETDATE( ))); 
        1615   DECLARE @C ompletedFr omDate DAT ETIME2(0)  = ISNULL(d bo.CleanDa te(@Comple tedFromDat eText),'19 000101')
        1616   DECLARE @C ompletedTo Date   DAT ETIME2(0)  = dbo.AddM axTime(ISN ULL(dbo.Cl eanDate(@C ompletedTo DateText), GETDATE()) ); 
        1617  
        1618   --PRINT @A ssignedLoc ationType;
        1619   --PRINT @A ssignedLoc ationKey;
        1620  
        1621   DECLARE @A ssignedIns titutionId  INT = 0,
        1622           @E valuatedIn stitutionI d INT = 0;
        1623  
        1624   IF @Assign edLocation Type IN (' Base','Ins titution')  
        1625   AND ISNUME RIC(@Assig nedLocatio nKey) = 1
        1626     SET @Ass ignedInsti tutionId =  CONVERT(I NT,@Assign edLocation Key);
        1627     
        1628   IF @Evalua tedLocatio nType IN ( 'Base','In stitution'
        1629   AND ISNUME RIC(@Evalu atedLocati onKey) = 1
        1630     SET @Eva luatedInst itutionId  = CONVERT( INT,@Evalu atedLocati onKey);
        1631  
        1632   WITH addr 
        1633   AS (     
        1634       SELECT  REGISTRAN T_ID,
        1635                            ISNULL( STREET1,'' )  AS STRE ET1, 
        1636                            ISNULL( STREET2,'' )  AS STRE ET2,
        1637                            ISNULL( CITY,'')      AS CITY ,
        1638                            ISNULL( [STATE],'' )  AS [STA TE],
        1639                            ISNULL( COUNTRY,'' )  AS COUN TRY,
        1640                            ISNULL( ZIP,'')       AS ZIP
        1641                      FR OM  AHOBPR .[REGISTRA NT_ADDRESS ]
        1642       )  
        1643   ,phone1 
        1644   AS (     
        1645       SELECT  REGISTRAN T_ID,                      
        1646                            ISNULL( PHONE_NUMB ER,'') AS  PHONE_NUMB ER_Main
        1647         FROM  AHOBPR.RE GISTRANT_P HONE      
        1648        WHERE  ISNULL(TY PE,'') !=  'Mobile'
        1649       )        
        1650   ,phone2 
        1651   AS (     
        1652       SELECT  REGISTRAN T_ID,                      
        1653                            ISNULL( PHONE_NUMB ER,'') AS  PHONE_NUMB ER_Mobile
        1654         FROM  AHOBPR.RE GISTRANT_P HONE      
        1655        WHERE  TYPE = 'M obile'
        1656       )
        1657   ,email 
        1658   AS (     
        1659       SELECT  REGISTRAN T_ID,                      
        1660                            ISNULL( EMAIL,'')  AS EMAIL
        1661         FROM  AHOBPR.RE GISTRANT_E MAIL      
        1662       )
        1663   ,Pref    
        1664   AS(
        1665         SELE CT fr.REGI STRANT_ID 
        1666               ,ans.TEXT  AS Contac tPreferenc e
        1667           FR OM  AHOBPR .FORM_RESP ONSE fr
        1668           JO IN AHOBPR. FORM_RESPO NSE_QUESTI ON rQst ON  fr.FORM_R ESPONSE_ID  = rQst.FO RM_RESPONS E_ID
        1669           JO IN AHOBPR. STD_FORM_Q UESTION qs t ON rQst. STD_FORM_Q UESTION_ID  = qst.STD _FORM_QUES TION_ID
        1670           JO IN AHOBPR. FORM_RESPO NSE_ANSWER  rAns ON r Qst.FORM_R ESPONSE_QU ESTION_ID  = rAns.FOR M_RESPONSE _QUESTION_ ID
        1671           JO IN AHOBPR. STD_FORM_A NSWER ans  ON ans.STD _FORM_ANSW ER_ID = rA ns.STD_FOR M_ANSWER_I D
        1672          WHE RE qst.STD _FORM_ID =  fr.STD_FO RM_ID
        1673            A ND qst.FOR M_QUESTION _UNIQUE_ID  = '8.A'
        1674    )            
        1675           SE LECT 
        1676                  reg.RE GISTRANT_I D,
        1677                           ISNULL(r eg.LAST_NA ME,'') AS   LAST_NAME ,
        1678              ISNULL(reg .FIRST_NAM E,'') AS   FIRST_NAME
        1679              ISNULL(Pre f.ContactP reference, '') AS  Co ntactPrefe rence,
        1680                           ISNULL(S TREET1,'')  AS  STREE T1, 
        1681                           ISNULL(S TREET2,'')  AS  STREE T2,
        1682                           ISNULL(C ITY,'') AS   CITY,
        1683                           ISNULL([ STATE],'')  AS  [STAT E],
        1684                           ISNULL(C OUNTRY,'')  AS  COUNT RY,
        1685                           ISNULL(Z IP,'') AS   ZIP,
        1686                           ISNULL(p hone1.PHON E_NUMBER_M ain,'') AS   PHONE_NU MBER_Main,
        1687                           ISNULL(p hone2.PHON E_NUMBER_M obile,'')  AS  PHONE_ NUMBER_Mob ile,
        1688              ISNULL(ema il.EMAIL,' ') AS EMAI L       
        1689              FROM AHOBP R.REGISTRA NT reg    
        1690              LEFT JOIN  addr  
        1691                      ON  reg.REGIS TRANT_ID =  addr.REGI STRANT_ID       
        1692              LEFT JOIN  phone1  
        1693                      ON  reg.REGIS TRANT_ID =  phone1.RE GISTRANT_I D                       
        1694              LEFT JOIN  phone2  
        1695                      ON  reg.REGIS TRANT_ID =  phone2.RE GISTRANT_I D            
        1696              LEFT JOIN  email  
        1697                      ON  reg.REGIS TRANT_ID =  email.REG ISTRANT_ID                               
        1698              LEFT JOIN  Pref  
        1699                      ON  reg.REGIS TRANT_ID =  Pref.REGI STRANT_ID                                         
        1700            W HERE (reg. STD_REGIST RANT_STATU S_ID IN (S ELECT * FR OM fncSpli t(@Registr antStatus,  ',')) 
        1701                    OR I SNULL(@Reg istrantSta tus,'') =  '')
        1702               AND (reg. STD_SERVIC E_STATUS_I D IN (SELE CT * FROM  fncSplit(@ SvcStatus,  ',')) 
        1703                    OR I SNULL(@Svc Status,'')  = '')
        1704        AND ( @AssignedL ocationTyp e IS NULL
        1705              OR (@Assig nedLocatio nType = 'N LA' 
        1706                  AND re g.STD_INST ITUTION_ID  IS NULL)
        1707              OR (@Assig nedLocatio nType = 'V ISN' 
        1708                   AND E XISTS(SELE CT * FROM  AHOBPR.VIE W_FACILITY _LOOKUP in st
        1709                                        WHERE  inst.ID =  reg.STD_IN STITUTION_ ID
        1710                                          AND  inst.VisnI D = @Assig nedLocatio nKey)
        1711                 )  
        1712              OR (@Assig nedLocatio nType = 'B ase' 
        1713                   AND E XISTS(SELE CT * FROM  AHOBPR.VIE W_FACILITY _LOOKUP in st
        1714                                        WHERE  inst.ID =  reg.STD_IN STITUTION_ ID
        1715                                          AND  inst.BASE_ ID = @Assi gnedInstit utionId)
        1716                 )  
        1717              OR (@Assig nedLocatio nType = 'I nstitution
        1718                   AND r eg.STD_INS TITUTION_I D = @Assig nedInstitu tionId)      
        1719              )
        1720        AND ( @Evaluated LocationTy pe IS NULL
        1721              OR (@Evalu atedLocati onType = ' NLA' 
        1722                  AND NO T EXISTS(  SELECT * F ROM AHOBPR .REGISTRAN T_VISIT ev al
        1723                                     WHERE eva l.REGISTRA NT_ID = Re g.REGISTRA NT_ID 
        1724                                       AND eva l.EVALUATI ON_FLAG =  'Y') 
        1725                 )
        1726              OR (@Evalu atedLocati onType = ' VISN' 
        1727                   AND E XISTS(SELE CT * FROM  AHOBPR.REG ISTRANT_VI SIT eval
        1728                                         JOIN  AHOBPR.VIE W_FACILITY _LOOKUP in st ON inst .ID = eval .STD_INSTI TUTION_ID
        1729                                        WHERE  eval.REGIS TRANT_ID =  Reg.REGIS TRANT_ID
        1730                                          AND  inst.VisnI D = @Evalu atedLocati onKey
        1731                                          AND  eval.EVALU ATION_FLAG  = 'Y') 
        1732                 )  
        1733              OR (@Evalu atedLocati onType = ' Base' 
        1734                   AND E XISTS(SELE CT * FROM  AHOBPR.REG ISTRANT_VI SIT eval
        1735                                         JOIN  AHOBPR.VIE W_FACILITY _LOOKUP in st ON inst .ID = eval .STD_INSTI TUTION_ID
        1736                                        WHERE  eval.REGIS TRANT_ID =  Reg.REGIS TRANT_ID
        1737                                          AND  inst.BASE_ ID = @Eval uatedInsti tutionId
        1738                                          AND  eval.EVALU ATION_FLAG  = 'Y' )     
        1739                 )  
        1740              OR (@Evalu atedLocati onType = ' Institutio n' 
        1741                   AND E XISTS(SELE CT * FROM  AHOBPR.REG ISTRANT_VI SIT eval
        1742                                        WHERE  eval.REGIS TRANT_ID =  Reg.REGIS TRANT_ID
        1743                                          AND  eval.STD_I NSTITUTION _ID = @Eva luatedInst itutionId
        1744                                          AND  eval.EVALU ATION_FLAG  = 'Y') 
        1745                 )  
        1746              )           
        1747        AND ( ISNULL(@Su bPopulatio nFlagId, 0 ) = 0 
        1748              OR EXISTS( SELECT [RE GISTRANT_I D] FROM AH OBPR.REGIS TRANT_REGI STRY_FLAG  popFlag
        1749                          WHERE pop Flag.REGIS TRANT_ID =  reg.REGIS TRANT_ID
        1750                            AND pop Flag.STD_R EGISTRY_FL AG_ID = @S ubPopulati onFlagId))
        1751        AND ( ISNULL(@Ad minFlagId,  0) = 0 
        1752              OR EXISTS( SELECT [RE GISTRANT_I D] FROM AH OBPR.REGIS TRANT_REGI STRY_FLAG  adminFlag
        1753                          WHERE adm inFlag.REG ISTRANT_ID  = reg.REG ISTRANT_ID
        1754                            AND adm inFlag.STD _REGISTRY_ FLAG_ID =  @AdminFlag Id
        1755                            AND adm inFlag.CRE ATED BETWE EN @AdminF romDate AN D @AdminTo Date))   
        1756        AND ( (ISNULL(@C ompletedFr omDateText ,'') = ''  AND ISNULL (@Complete dToDateTex t,'') = ''  )
        1757            O R EXISTS(S ELECT resp .REGISTRAN T_ID, stat .QUESTIONN AIRE_COMPL ETED_DATE
        1758                          FROM AHOB PR.FORM_RE SPONSE_STA TUS stat
        1759                          JOIN AHOB PR.FORM_RE SPONSE res p
        1760                            ON resp .FORM_RESP ONSE_ID =  stat.FORM_ RESPONSE_I D
        1761                         WHERE resp .REGISTRAN T_ID = reg .REGISTRAN T_ID
        1762                           AND stat .QUESTIONN AIRE_COMPL ETED_DATE  BETWEEN @C ompletedFr omDate AND  @Complete dToDate))
        1763       AND (I SNULL(@sta te,'') = ' '
        1764                   OR EX ISTS(SELEC T DISTINCT  addr.REGI STRANT_ID 
        1765                                FRO M AHOBPR.R EGISTRANT_ ADDRESS ad dr 
        1766                               WHER E addr.REG ISTRANT_ID  = reg.REG ISTRANT_ID  
        1767                                 AN D addr.STA TE  IN (SE LECT * FRO M fncSplit (@state, ' ,'))))
        1768         ;
        1769                                                                                                                          
        1770   END
        1771   -- exec [A HOBPR].[SP _ReportReg istrantCon tact]
        1772   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Ass ignedLocat ionType =  'NLA'
        1773   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Ass ignedLocat ionType =  'VISN', @A ssignedLoc ationKey =  'V16'
        1774   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Ass ignedLocat ionType =  'Base', @A ssignedLoc ationKey =  '1000089'
        1775   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Ass ignedLocat ionType =  'Instituti on', @Assi gnedLocati onKey = '1 000089'
        1776   -- exec [A HOBPR].[SP _ReportReg istrantCon tact]
        1777   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Eva luatedLoca tionType =  'NLA'
        1778   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Eva luatedLoca tionType =  'VISN', @ EvaluatedL ocationKey  = 'V16'
        1779   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Eva luatedLoca tionType =  'Base', @ EvaluatedL ocationKey  = '100008 9'
        1780   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Eva luatedLoca tionType =  'Institut ion', @Eva luatedLoca tionKey =  '1000089'
        1781  
        1782  
        1783          --@ AssignedLo cationType   VARCHAR( 10) = NULL ,  -- 'VIS N', 'Base' , 'Institu tion', 'NL A' = No Lo cation Ass igned
        1784          --@ AssignedLo cationKey    VARCHAR( 50) = NULL ,  -- 'V16 ', 'V01'     1000109,   1000089
        1785    --exec [A HOBPR].[SP _ReportReg istrantCon tact] '5,6 ,7', NULL,  0, NULL,  NULL, 0, 0 , NULL  @E valuatedLo cationType
        1786    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , '2', 0,  NULL, NULL , 0, 0, NU LL
        1787    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , NULL, 60 , NULL, '2 0141204',  0, 0, NULL
        1788    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , NULL, 60 , '12/04/2 014', NULL , 0, 0, NU LL
        1789    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , NULL, 60 , '12/03/2 014', '12/ 12/2014',  0, 0, NULL
        1790    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , NULL, 0,  NULL, NUL L, 65, 0,  NULL
        1791    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , NULL, 0,  NULL, NUL L, 0, 1000 109, NULL
        1792    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , NULL, 0,  NULL, NUL L, 0, 0, ' NLA' --'V0 1'
        1793    --exec [A HOBPR].[SP _ReportReg istrantCon tact] @Com pletedFrom DateText =  '08/13/20 14'
        1794    --exec [A HOBPR].[SP _ReportReg istrantCon tact] @Com pletedToDa teText = ' 08/13/2014 '
        1795    --exec [A HOBPR].[SP _ReportReg istrantCon tact] @Com pletedFrom DateText =  '08/13/20 14', @Comp letedToDat eText = '0 8/13/2014'
        1796  
        1797  
        1798   GO
        1799  
        1800   PRINT 'DRO P and CREA TE PROCEDU RE [AHOBPR ].[SP_Repo rtParticip antDetails ]...';
        1801   GO
        1802  
        1803   IF  EXISTS  (SELECT *  FROM sys. objects WH ERE object _id = OBJE CT_ID(N'[A HOBPR].[SP _ReportPar ticipantDe tails]') A ND type in  (N'P', N' PC'))
        1804   DROP PROCE DURE [AHOB PR].[SP_Re portPartic ipantDetai ls]
        1805   GO
        1806  
        1807  
        1808   -- ======= ========== ========== ========== ========
        1809   -- Author:                Bruce  Clegg
        1810   -- Create  date: Jan  5, 2015
        1811   -- Descrip tion: Used  for the A HOBPR Part icipation  Report Dri lldown  --  exec [AHO BPR].[SP_R eportParti cipantDeta ils]    (M ore option s at botto m)
        1812   -- 2015033 0 - Bruce  Clegg - Ad ded VisnId  value of  NLA to fin d Null loc ations
        1813   -- 2015042 7 - Bruce  Clegg - Ch ange to Lo cationType  and Key,  for both A ssigned an d Evaluate d Location s
        1814   -- 2015050 4 - Bruce  Clegg - Fi x @Request Seen selec tion logic  to match  Participat ion Report
        1815   -- 2015071 0 - Bruce  Clegg - Re write usin g Dynamic  SQL for Pe rformance
        1816   -- 2015091 0 - Bruce  Clegg - Re moved sele ction for  Question 1 .2.A for D eployments
        1817   -- 2015091 6 - Bruce  Clegg - Re place Elig able with  Questionai re start d ate
        1818   -- ======= ========== ========== ========== ========
        1819   CREATE PRO CEDURE [AH OBPR].[SP_ ReportPart icipantDet ails]
        1820          @St artDate DA TETIME2(0)  = NULL,  
        1821          @En dDate DATE TIME2(0) =  NULL,
        1822          @Re gistrantSt atus  VARC HAR(50) =  '',  -- 'P articipant ', 'Review  - Not Eli gible', 'E ligible',  'No Consen t', 'Conse nt', 'Revi ew'
        1823          @Sv cStatus  V ARCHAR(50)  = '',          -- 'V eteran', ' Retiree',  'Active Du ty'
        1824          @Re questSeen   VARCHAR(5 0) = '',        -- 'Y es', 'No',  'Unknown'
        1825          @He althConcer n  VARCHAR (50) = '',      -- 'Y es', 'No'
        1826          @De ploymentGr oup VARCHA R(50) = '' ,    -- 'A fgh911', ' Iraq911',  'Southwest AsiaAfter9 11', 'Pre9 11',  'Dji boutiAfter 911'
        1827          @As signedLoca tionType   VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        1828          @As signedLoca tionKey    VARCHAR(50 ) = NULL,   -- 'V16',  'V01'     1000109,   1000089
        1829          @Ev aluatedLoc ationType  VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        1830          @Ev aluatedLoc ationKey   VARCHAR(50 ) = NULL    -- 'V16',  'V01'     1000109,   1000089
        1831   AS
        1832   BEGIN
        1833  
        1834     SET @Sta rtDate = I SNULL(@Sta rtDate,'19 900802');   -- Desert  Storm sta rt date
        1835     SET @End Date = ISN ULL(@EndDa te, GetDat e());
        1836     SET @End Date = dbo .AddMaxTim e(@EndDate );  -- Add s 23:59:59  to criter ia paramet er
        1837  
        1838     DECLARE  @AssignedI nstitution Id INT = 0 ,
        1839              @Evaluated Institutio nId INT =  0;
        1840     DECLARE  @Query NVA RCHAR(MAX) ;
        1841  
        1842     IF @Assi gnedLocati onType IN  ('Base','I nstitution ') 
        1843     AND ISNU MERIC(@Ass ignedLocat ionKey) =  1
        1844       SET @A ssignedIns titutionId  = CONVERT (INT,@Assi gnedLocati onKey);
        1845     
        1846     IF @Eval uatedLocat ionType IN  ('Base',' Institutio n') 
        1847     AND ISNU MERIC(@Eva luatedLoca tionKey) =  1
        1848       SET @E valuatedIn stitutionI d = CONVER T(INT,@Eva luatedLoca tionKey);
        1849  
        1850     --Temp t able for D eployments
        1851     CREATE T ABLE #Depl oyments
        1852     (
        1853               [REGISTRA NT_ID] INT
        1854     ); 
        1855     
        1856     -- INSER T Registra nts if the y are in t he Deploym ent Group
        1857     SET @Que ry = ' INS ERT INTO # Deployment s([REGISTR ANT_ID]) '  +
        1858                   ' SEL ECT DISTIN CT deploym ent.REGIST RANT_ID '  +
        1859                   '   F ROM AHOBPR .REGISTRAN T_DEPLOYME NT deploym ent  ' +
        1860                   '  WH ERE 1 = 1  ';
        1861     IF @Depl oymentGrou p = 'Afgh9 11'    
        1862        SET @ Query =  @ Query + '  AND [DEPLO YMENT_COUN TRY] = ''A fghanistan '' ' + 
        1863                                 '  AND [DEPLO YMENT_STAR T_DATE] >  ''20010911 '' ';
        1864     ELSE
        1865     IF @Depl oymentGrou p = 'Iraq9 11'
        1866         SET  @Query =   @Query + '  AND [DEPL OYMENT_COU NTRY] = '' Iraq'' ' +  
        1867                                    'AND [DEPL OYMENT_STA RT_DATE] >  ''2001091 1'' '; 
        1868     ELSE
        1869     IF @Depl oymentGrou p = 'Djibo utiAfter91 1'
        1870         SET  @Query =   @Query + '  AND [DEPL OYMENT_COU NTRY] = '' Djibouti''  ' + 
        1871                                    'AND [DEPL OYMENT_STA RT_DATE] >  ''2001091 1'' '; 
        1872     ELSE
        1873     IF @Depl oymentGrou p = 'South westAsiaAf ter911'
        1874         SET  @Query =   @Query + '  AND [DEPL OYMENT_COU NTRY] IN ( ''Kuwait'' ,''Saudi A rabia'','' Bahrain'',  ''Gulf of  Aden'', ' 'Gulf of O man'', ''O man'', ''Q atar'', '' United Ara b Emirates '', ''Pers ian Gulf'' , ''Arabia n Sea'', ' 'Red Sea'' ) ' +
        1875                                  ' AND [DEPLO YMENT_STAR T_DATE] >  ''20010911 ''  ';
        1876     ELSE
        1877     IF @Depl oymentGrou p = 'Pre91 1'
        1878         SET  @Query =   @Query + '  AND [DEPL OYMENT_COU NTRY] IN ( ''Iraq'',' 'Kuwait'', ''Saudi Ar abia'',''B ahrain'',  ''Gulf of  Aden'', '' Gulf of Om an'', ''Om an'', ''Qa tar'', ''U nited Arab  Emirates' ', ''Persi an Gulf'',  ''Arabian  Sea'', '' Red Sea'')  ' +     
        1879                                  '  AND [DEPL OYMENT_STA RT_DATE] B ETWEEN ''1 9900802''  AND ''2001 0911''  ';
        1880     IF ISNUL L(@Deploym entGroup,' ') > ''
        1881       EXECUT E(@Query);
        1882      
        1883     SET @Que ry = '
        1884       WITH p articipant  
        1885         AS (
        1886            S ELECT [REG ISTRANT_ID ], CONVERT (DATE,MAX( [CREATED]) ) AS DateP articipant
        1887               FROM [AHO BPR].[PROC ESS_METRIC S]
        1888              WHERE [PRO CESS_METRI CS_VALUE]  = ''Partic ipant''   
        1889              GROUP BY [ REGISTRANT _ID]
        1890              )        
        1891           SE LECT reg.R EGISTRANT_ ID
        1892                          ,(reg.LAS T_NAME + ' ', '' + re g.FIRST_NA ME) AS Nam e
        1893                          ,stat.REG ISTRANT_ST ATUS
        1894                          ,svc.SERV ICE_STATUS
        1895                          ,QUESTION NAIRE_COMP LETED_DATE
        1896                          ,ISNULL(r eg.REQUEST _SEEN_RESP ONSE, ''Un known'') A S REQUEST_ SEEN_RESPO NSE
        1897                          ,ISNULL(r eg.HEALTH_ CONCERNS_R ESPONSE,'' No'') AS H EALTH_CONC ERNS_RESPO NSE
        1898                          ,ISNULL(i nst.Name,' ''') AS In stitutionN ame
        1899                          ,CONVERT( VARCHAR(10 ), respons eStat.QUES TIONNAIRE_ COMPLETED_ DATE, 101)  AS QUESTI ONNAIRE_CO MPLETED_Di splay
        1900                          ,CASE WHE N DatePart icipant >  QUESTIONNA IRE_STARTE D_DATE THE N DATEDIFF (Day,QUEST IONNAIRE_S TARTED_DAT E,DatePart icipant) E LSE 0 END  AS DaysEli gibleToPar ticipant
        1901            , reg.BIRTH_ DATE AS Bi rthDate
        1902            , CONVERT(VA RCHAR(10),  reg.BIRTH _DATE, 101 ) AS Birth DateDispla y
        1903              FROM AHOBP R.REGISTRA NT reg
        1904                    JOIN  AHOBPR.ST D_REGISTRA NT_STATUS  stat 
        1905                      ON  reg.STD_R EGISTRANT_ STATUS_ID  = stat.STD _REGISTRAN T_STATUS_I D
        1906                    JOIN  AHOBPR.ST D_SERVICE_ STATUS svc
        1907                      ON  svc.STD_S ERVICE_STA TUS_ID = r eg.STD_SER VICE_STATU S_ID
        1908                    JOIN  AHOBPR.FO RM_RESPONS E resp 
        1909                      ON  resp.REGI STRANT_ID  = reg.REGI STRANT_ID
        1910                    JOIN  AHOBPR.FO RM_RESPONS E_STATUS r esponseSta t
        1911                      ON  responseS tat.FORM_R ESPONSE_ID  = resp.FO RM_RESPONS E_ID
        1912       JOIN p articipant  
        1913         ON r eg.REGISTR ANT_ID = p articipant .REGISTRAN T_ID                      
        1914                    LEFT  JOIN AHOB PR.VIEW_FA CILITY_LOO KUP inst
        1915                      ON  inst.ID =  reg.STD_I NSTITUTION _ID
        1916            W HERE respo nseStat.QU ESTIONNAIR E_COMPLETE D_DATE BET WEEN ''' +  CONVERT(V ARCHAR(20) , @StartDa te,121) + 
        1917                                                           ''' AND ' '' + CONVE RT(VARCHAR (20), @End Date,121)  + ''' ';
        1918  
        1919     IF ISNUL L(@Registr antStatus, '') > ''
        1920              SET @Query  = @Query  + ' AND st at.REGISTR ANT_STATUS  = ''' + @ Registrant Status + ' '' ';
        1921  
        1922     IF ISNUL L(@SvcStat us,'') > ' '
        1923       IF @Sv cStatus =  'Veteran'
        1924              SET @Query  = @Query  + ' AND sv c.SERVICE_ STATUS = ' 'Separated '' ';
        1925           EL SE
        1926                SET @Que ry = @Quer y + ' AND  svc.SERVIC E_STATUS =  ''' +  @S vcStatus +  ''' ';
        1927  
        1928     IF ISNUL L(@HealthC oncern,'')  > ''
        1929              SET @Query  = @Query  + ' AND IS NULL(reg.H EALTH_CONC ERNS_RESPO NSE,''No'' ) = ''' +   @HealthCo ncern + '' ' ';
        1930  
        1931     IF ISNUL L(@Request Seen,'') >  ''
        1932       IF @Re questSeen  = 'Yes' OR  @RequestS een = 'No'  
        1933                 SET @Qu ery = @Que ry + 'AND  reg.REQUES T_SEEN_RES PONSE = '' ' + @Reque stSeen + ' '' ';
        1934       ELSE
        1935                 SET @Qu ery = @Que ry + 'AND  reg.REQUES T_SEEN_RES PONSE NOT  IN ( ''Yes '', ''No'' )  ';
        1936                 
        1937  
        1938     IF ISNUL L(@Deploym entGroup,' ') > ''
        1939              SET @Query  = @Query  + 'AND EXI STS(SELECT  * FROM #D eployments  WHERE #De ployments. REGISTRANT _ID = reg. REGISTRANT _ID) ';
        1940  
        1941     IF @Assi gnedLocati onType = ' NLA' 
        1942       SET @Q uery = @Qu ery + ' AN D reg.STD_ INSTITUTIO N_ID IS NU LL ' ;
        1943  
        1944     IF @Assi gnedLocati onType = ' VISN' 
        1945       SET @Q uery = @Qu ery + ' AN D EXISTS(S ELECT * FR OM AHOBPR. VIEW_FACIL ITY_LOOKUP  inst ' +
        1946                                                                  '  WHERE inst .ID = reg. STD_INSTIT UTION_ID '  + 
        1947                                                                  '    AND inst .VisnID =  ''' + @Ass ignedLocat ionKey + ' '') ';
        1948    
        1949     IF @Assi gnedLocati onType = ' Base' 
        1950       SET @Q uery = @Qu ery + ' AN D EXISTS(S ELECT * FR OM AHOBPR. VIEW_FACIL ITY_LOOKUP  inst ' +
        1951                                                          ' WHERE in st.ID = re g.STD_INST ITUTION_ID  ' +
        1952                                                          '   AND in st.BASE_ID  = ' + CON VERT(VARCH AR(20),@As signedInst itutionId)  + ') '
        1953    
        1954     IF @Assi gnedLocati onType = ' Institutio n' 
        1955       SET @Q uery = @Qu ery + ' AN D reg.STD_ INSTITUTIO N_ID = ' +  CONVERT(V ARCHAR(20) ,@Assigned Institutio nId);
        1956  
        1957     IF @Eval uatedLocat ionType =  'NLA' 
        1958       SET @Q uery = @Qu ery + ' AN D NOT EXIS TS( SELECT  * FROM AH OBPR.REGIS TRANT_VISI T eval ' +
        1959                                                                ' WH ERE eval.R EGISTRANT_ VISIT_ID =  reg.REGIS TRANT_ID '  +
        1960                                                                '    AND eval.E VALUATION_ FLAG = ''Y '') ' ; 
        1961    
        1962     IF @Eval uatedLocat ionType =  'VISN' 
        1963       SET @Q uery = @Qu ery + ' AN D EXISTS(S ELECT * FR OM AHOBPR. REGISTRANT _VISIT eva l ' +
        1964                                                            ' JOIN A HOBPR.VIEW _FACILITY_ LOOKUP ins t ON inst. ID = eval. STD_INSTIT UTION_ID '  +
        1965                                                          ' WHERE ev al.REGISTR ANT_VISIT_ ID = reg.R EGISTRANT_ ID ' +
        1966                                                            ' AND ev al.EVALUAT ION_FLAG =  ''Y'' ' +
        1967                                                            ' AND in st.VisnID  = ''' + @E valuatedLo cationKey  + ''') '; 
        1968    
        1969     IF @Eval uatedLocat ionType =  'Base' 
        1970       SET @Q uery = @Qu ery +  ' A ND EXISTS( SELECT * F ROM AHOBPR .REGISTRAN T_VISIT ev al ' +
        1971                                                            ' JOIN A HOBPR.VIEW _FACILITY_ LOOKUP ins t ON inst. ID = eval. STD_INSTIT UTION_ID '  +
        1972                                                          ' WHERE ev al.REGISTR ANT_VISIT_ ID = reg.R EGISTRANT_ ID ' +
        1973                                                            ' AND ev al.EVALUAT ION_FLAG =  ''Y'' ' +
        1974                                                            ' AND in st.BASE_ID  = ' + CON VERT(VARCH AR(20),@Ev aluatedIns titutionId ) + ') ';
        1975     
        1976     IF @Eval uatedLocat ionType =  'Instituti on' 
        1977       SET @Q uery = @Qu ery +  ' A ND EXISTS( SELECT * F ROM AHOBPR .REGISTRAN T_VISIT ev al ' +
        1978                                                            ' JOIN A HOBPR.VIEW _FACILITY_ LOOKUP ins t ON inst. ID = eval. STD_INSTIT UTION_ID '  +
        1979                                                          ' WHERE ev al.REGISTR ANT_VISIT_ ID = reg.R EGISTRANT_ ID ' +
        1980                                                            ' AND ev al.EVALUAT ION_FLAG =  ''Y'' ' +
        1981                                                            ' AND ev al.STD_INS TITUTION_I D = ' + CO NVERT(VARC HAR(20),@E valuatedIn stitutionI d)  + ') '
        1982  
        1983     SET @Que ry = @Quer y + ' ORDE R BY respo nseStat.QU ESTIONNAIR E_COMPLETE D_DATE ';
        1984  
        1985     PRINT @Q uery;
        1986     
        1987     EXECUTE( @Query);
        1988         
        1989     DROP TAB LE #Deploy ments;                                                                                                                 
        1990   END
        1991  
        1992   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] '20 150901'
        1993   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] '20 140101', ' 20150101',  NULL, NUL L, 
        1994   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @Re questSeen  = 'sdf'
        1995   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, ' Participan t'
        1996   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, 'Sepa rated'
        1997   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  'Yes'
        1998   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  'No'
        1999   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  'Unknown'
        2000   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, 'Ye s'
        2001   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, 'No '
        2002   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, NUL L, 'Afgh91 1'
        2003   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, NUL L, 'Iraq91 1'
        2004   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, NUL L, 'Southw estAsiaAft er911'
        2005   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, NUL L, 'Djibou tiAfter911 '
        2006   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, NUL L, 'Pre911 '
        2007  
        2008   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails]
        2009   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @As signedLoca tionType =  'NLA'
        2010   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @As signedLoca tionType =  'VISN', @ AssignedLo cationKey  = 'V16'
        2011   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @As signedLoca tionType =  'Base', @ AssignedLo cationKey  = '1000089 '
        2012   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @As signedLoca tionType =  'Institut ion', @Ass ignedLocat ionKey = ' 1000089'
        2013   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails]
        2014   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @Ev aluatedLoc ationType  = 'NLA'
        2015   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @Ev aluatedLoc ationType  = 'VISN',  @Evaluated LocationKe y = 'V16'
        2016   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @Ev aluatedLoc ationType  = 'Base',  @Evaluated LocationKe y = '10000 89'
        2017   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @Ev aluatedLoc ationType  = 'Institu tion', @Ev aluatedLoc ationKey =  '1000089'
        2018  
        2019  
        2020   GO
        2021  
        2022   PRINT 'INS ERT RECORD S TO [AHOB PR].[JSON_ QUEUE_STAT US]...';
        2023  
        2024   INSERT INT O [AHOBPR] .[JSON_QUE UE_STATUS]
        2025               ([JSON_QU EUE_ID]
        2026               ,[REGISTR ANT_JSON_I D]
        2027               ,[PROCESS _START_DAT E]
        2028               ,[PROCESS _COMPLETE_ DATE]
        2029               ,[PROCESS _STATUS]
        2030               ,[PROCESS _ERROR]
        2031               ,[CREATED BY]
        2032               ,[UPDATED BY]
        2033               ,[CREATED ]
        2034               ,[UPDATED ])
        2035   select [JS ON_QUEUE_I D]
        2036               ,[REGISTR ANT_JSON_I D]
        2037               ,[PROCESS _START_DAT E]
        2038               ,[PROCESS _COMPLETE_ DATE]
        2039               ,[PROCESS _STATUS]
        2040               ,[PROCESS _ERROR]
        2041               ,[CREATED BY]
        2042               ,[UPDATED BY]
        2043               ,[CREATED ]
        2044               ,[UPDATED ]        
        2045   from ahobp r.JSON_QUE UE a
        2046   where not  exists (se lect 'x' f rom ahobpr .JSON_QUEU E_STATUS w here a.JSO N_QUEUE_ID  = JSON_QU EUE_ID)
        2047   AND A.PROC ESS_COMPLE TE_DATE IS  NOT NULL
        2048  
        2049   GO
        2050  
        2051   INSERT INT O [dbo].[D atabaseCha ngeLog]
        2052               ([MajorRe leaseNumbe r]
        2053               ,[MinorRe leaseNumbe r]
        2054               ,[PointRe leaseNumbe r]
        2055               ,[Hotfix]
        2056               ,[ScriptN ame]
        2057               ,[ScriptD escription ]
        2058               ,[TargetR egistry]
        2059               ,[DateApp lied])
        2060        VALUE S
        2061               ('$(Major ReleaseNum ber)'
        2062               ,'$(Minor ReleaseNum ber)'
        2063               ,'$(Point ReleaseNum ber)'
        2064               ,0
        2065               ,'Registr y.AHOBPR.D atabase.Bu ild.1.0.52 .sql'
        2066                            ,'Regis try.AHOBPR .Database. Build.1.0. 52.sql Scr ipt'
        2067               ,'AHOBPR'
        2068               ,GETDATE( ));
        2069   GO
        2070  
        2071   PRINT '';
        2072   PRINT 'Reg istry.AHOB PR.Databas e.Build.1. 0.52.sql S cript Comp lete.';
        2073   PRINT '';
        2074   PRINT 'Com pleted ' +  CAST(GETD ATE() AS v archar(20) ) + '.';
        2075  
        2076   ---------- ---------- ---------- ---
        2077   -- END OF  GENERATED  DEPLOYMENT  --
        2078   ---------- ---------- ---------- ---