95. 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.

95.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.Rollback.sql Sat Oct 3 03:24:30 2015 UTC

95.2 Comparison summary

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

95.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

95.4 Active regular expressions

No regular expressions were active.

95.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.Rollb ack.sql
        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           FR OM [AHOBPR ].[REGISTR ANT_JSON]  WITH (NOLO CK)
        601          WHE RE [REGIST RANT_JSON_ ID] = @Cur rentId;
        602  
        603   END
        604   -- EXECUTE  AHOBPR.SP _JsonGetCu rrent 5187
        605  
        606   GO
        607   PRINT 'DRO P and CREA TE PROCEDU RE [AHOBPR ].[SP_Repo rtAdHocByI ndividual] ...';
        608   GO
        609  
        610   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'))
        611   DROP PROCE DURE [AHOB PR].[SP_Re portAdHocB yIndividua l]
        612   GO
        613  
        614   -- ======= ========== ========== ========== ========
        615   -- Author:                Debora h Barr
        616   -- Create  date: Nove mber 12, 2 014
        617   -- Descrip tion: Used  for the A HOBPR Ad H oc Report   
        618  
        619   -- Modific ation log
        620   -- 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
        621   -- 2015-01 -05 - Chan ge Date Fo rmat to MM /DD/YYYY
        622   -- 2015-01 -14 - Sher ry Wang Ad d more par ameters: @ healthFact or, @formS tartFromDa te, @formS tartToDate , @subpopu lationFlag
        623   -- 2015-01 -14 - Sher ry Wang Ad d more par ameters: @ adminFlag,  @deployme ntAll, @de ploymentEx posure, @a dminFlagFr omDate, @a dminFlagTo Date
        624   -- 2015-01 -16 - Bruc e Clegg -  Fix parame ters and r emove NULL s from dis play where  possible
        625   -- 2015-02 -09 - Bruc e Clegg -  Change Hea lth Factor  Exists st atements t o use new  REGISTRANT _VISIT
        626   -- 2015-03 -30 - Bruc e Clegg -  Added Visn Id value o f NLA to f ind Null l ocations
        627   -- 2015-04 -27 - Bruc e Clegg -  Change to  LocationTy pe and Key , for both  Assigned  and Evalua ted Locati ons
        628   -- 2015-06 -04 - Bruc e Clegg -  Add more p arameters
        629   -- 2015-06 -18 - Bruc e Clegg -  Changed @s eparationT ype to an  Integer 
        630   -- 2015-07 -09 - Bruc e CLegg -  Rewrote as  Dynamic S QL for per formance
        631   -- ======= ========== ========== ========== ========
        632   CREATE PRO CEDURE [AH OBPR].[SP_ ReportAdHo cByIndivid ual]
        633          @st atus varch ar(100) =  NULL, -- M ultiple st atues, com ma-separat ed values  when not N ULL
        634          @du tyStatus v archar(100 ) = NULL,  -- Multipl e states,  comma-sepa rated valu es when no t NULL  
        635          @fo rmStartFro mDateText  varchar(10 0) = NULL,
        636          @fo rmStartToD ateText va rchar(100)  = NULL,
        637          @he althFactor  varchar(1 00) = NULL , -- Multi ple health  factor ID s, comma-s eparated v alues when  not NULL
        638          @fo rmCompleti onFromDate Text varch ar(100) =  NULL,
        639          @fo rmCompleti onToDateTe xt varchar (100) = NU LL,
        640          @qu estionNumb er varchar (100) = NU LL,
        641          @an swer varch ar(100) =  NULL,
        642          @he althConcer ns varchar (100) = 'A ll', 
        643          @re questToBeS een varcha r(100) = ' All',
        644          @As signedLoca tionType   VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        645          @As signedLoca tionKey    VARCHAR(50 ) = NULL,   -- 'V16',  'V01'     1000109,   1000089
        646          @Ev aluatedLoc ationType  VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        647          @Ev aluatedLoc ationKey   VARCHAR(50 ) = NULL,   -- 'V16',  'V01'     1000109,   1000089
        648          @su bpopulatio nFlag varc har (10) =  NULL, 
        649          @ad minFlag va rchar (10)  = NULL, 
        650          @de ploymentAl l varchar  (256) = NU LL, 
        651          @de ploymentEx posure var char (256)  = NULL, 
        652          @ad minFlagFro mDateText  varchar (2 0) = NULL,  
        653          @ad minFlagToD ateText va rchar (20)  = NULL,
        654          @ex cludeDead  varchar(1)  = 'N',
        655          @ge nder varch ar(50) = ' ',
        656          @ra ce varchar (50) = '',
        657          @et hnicity va rchar(50)  = '',
        658          @se parationTy pe INT = 0 ,
        659          @se parationFr omDateText  varchar ( 20) = NULL
        660          @se parationTo DateText v archar (20 ) = NULL, 
        661          @en rollmentSt atus varch ar(50) = ' '
        662   AS
        663  
        664   BEGIN
        665  
        666   -- Convert  date para meters fro m VARCHAR  to DATETIM E2(0)    
        667     DECLARE  @formStart FromDate D ATETIME2(0 ) = NULL,
        668              @formStart ToDate DAT ETIME2(0)  = NULL,
        669              @formCompl etionFromD ate DATETI ME2(0) = N ULL,
        670              @formCompl etionToDat e DATETIME 2(0) = NUL L,
        671              @adminFlag FromDate D ATETIME2(0 ) = NULL,
        672              @adminFlag ToDate DAT ETIME2(0)  = NULL,
        673              @separatio nFromDate  DATETIME2( 0) = NULL,
        674              @separatio nToDate DA TETIME2(0)  = NULL;
        675  
        676     DECLARE  @Query VAR CHAR(8000) ;                 
        677     DECLARE  @MainQuery  VARCHAR(8 000);                  
        678     DECLARE  @RegCriter ia VARCHAR (8000) = ' ';                 
        679     DECLARE  @AdminWith  VARCHAR(8 000);                  
        680     DECLARE  @SubPopWit h VARCHAR( 8000);                  
        681     DECLARE  @DeployWit h VARCHAR( 8000);                  
        682  
        683     SET @for mStartFrom Date = dbo .CleanDate (@formStar tFromDateT ext);
        684     SET @for mStartToDa te = dbo.A ddMaxTime( dbo.CleanD ate(@formS tartToDate Text));
        685     SET @for mCompletio nFromDate  = dbo.Clea nDate(@for mCompletio nFromDateT ext);
        686     SET @for mCompletio nToDate =  dbo.AddMax Time(dbo.C leanDate(@ formComple tionToDate Text));      
        687     SET @adm inFlagFrom Date = ISN ULL(dbo.Cl eanDate(@a dminFlagFr omDateText ),'1900010 1');
        688     SET @adm inFlagToDa te = dbo.A ddMaxTime( ISNULL(dbo .CleanDate (@adminFla gToDateTex t),GETDATE ())); 
        689           SE T @separat ionFromDat e = dbo.Cl eanDate(@s eparationF romDateTex t);
        690     SET @sep arationToD ate = dbo. AddMaxTime (dbo.Clean Date(@sepa rationToDa teText)); 
        691  
        692           DE CLARE @Adm inType INT  = (SELECT  STD_REGIS TRY_FLAG_T YPE_ID
        693                                          FROM  AHOBPR.ST D_REGISTRY _FLAG_TYPE  
        694                                         WHERE  REGISTRY_ FLAG_TYPE  = 'Adminis trative Fl ag');
        695                                         
        696           DE CLARE @Sub PopType IN T = (SELEC T STD_REGI STRY_FLAG_ TYPE_ID
        697                                          FROM  AHOBPR.ST D_REGISTRY _FLAG_TYPE  
        698                                         WHERE  REGISTRY_ FLAG_TYPE  = 'SubPopu lation Fla g');                                  
        699                                              
        700   -- Set Ins titutionID  values if  needed.
        701   DECLARE @A ssignedIns titutionId  INT = 0,
        702           @E valuatedIn stitutionI d INT = 0;
        703  
        704   IF @Assign edLocation Type IN (' Base','Ins titution')  
        705   AND ISNUME RIC(@Assig nedLocatio nKey) = 1
        706     SET @Ass ignedInsti tutionId =  CONVERT(I NT,@Assign edLocation Key);
        707     
        708   IF @Evalua tedLocatio nType IN ( 'Base','In stitution'
        709   AND ISNUME RIC(@Evalu atedLocati onKey) = 1
        710     SET @Eva luatedInst itutionId  = CONVERT( INT,@Evalu atedLocati onKey);
        711  
        712     --Concat enate one  or more Su b-populati on flags f or Registr ants with  flags
        713     SET @Sub PopWith =  'WITH SubP op AS ( SE LECT a.REG ISTRANT_ID , '+
        714                                                    'STUF F((SELECT  '', '' + c .REGISTRY_ FLAG_NAME  ' +
        715                                                             ' FROM  AHOBPR.REG ISTRANT_RE GISTRY_FLA G b ' +
        716                                                             ' JOIN  AHOBPR.STD _REGISTRY_ FLAG c ON  b.STD_REGI STRY_FLAG_ ID = c.STD _REGISTRY_ FLAG_ID '  +
        717                                                            ' WHERE  a.REGISTRA NT_ID = b. REGISTRANT _ID ' +
        718                                                            '   AND  c.STD_REGI STRY_FLAG_ TYPE_ID =  ' + CONVER T(VARCHAR( 3),@SubPop Type) +
        719                                                              ' FOR  XML PATH(' ''')), 1,  1, '''') A S [REGISTR Y_FLAG_NAM E] ' +
        720                                           ' F ROM AHOBPR .REGISTRAN T a ' +
        721                                           'WH ERE 1 = 1  ';
        722                                           
        723     --Concat enate one  or more Ad min flags  for Regist rants with  flags
        724     SET @Adm inWith = ' , Admin AS  (  SELECT  a.REGISTR ANT_ID, '  +
        725                                       ' STUFF ((SELECT ' ', '' + c. REGISTRY_F LAG_NAME '  +
        726                                                '  FROM A HOBPR.REGI STRANT_REG ISTRY_FLAG  b ' +
        727                                                '  JOIN A HOBPR.STD_ REGISTRY_F LAG c ON b .STD_REGIS TRY_FLAG_I D = c.STD_ REGISTRY_F LAG_ID ' +
        728                                                ' WHERE a .REGISTRAN T_ID = b.R EGISTRANT_ ID ' +
        729                                                '   AND c .STD_REGIS TRY_FLAG_T YPE_ID = '  + CONVERT (VARCHAR(3 ),@AdminTy pe) +
        730                                                '   AND b .CREATED B ETWEEN '''  + CONVERT (VARCHAR(2 0),@adminF lagFromDat e,121) + 
        731                                                                   ' '' AND '''  + CONVERT (VARCHAR(2 0),@adminF lagToDate, 121) + ''' ' + 
        732                                                '   FOR X ML PATH('' '')), 1, 1 , '''') AS  [REGISTRY _FLAG_NAME ] ' +
        733                                     '  FROM A HOBPR.REGI STRANT a '  +
        734                                    '  WHERE 1  = 1 ';
        735  
        736     --Concat enate one  or more De ployment C ountries f or Registr ants with  Deployment s
        737     SET @Dep loyWith =  ', Deploy  AS (SELECT  a.REGISTR ANT_ID,  '  +
        738                                             '  STUFF((SE LECT '', ' ' + b.DEPL OYMENT_COU NTRY ' + 
        739                                                      '   FROM AHOBP R.REGISTRA NT_DEPLOYM ENT b ' +
        740                                                     '  W HERE a.REG ISTRANT_ID  = b.REGIS TRANT_ID '  +
        741                                                     '     FOR XML P ATH('''')) , 1, 1, '' '') AS DEP LOYMENT_CO UNTRY ' +
        742                                        ' FROM  AHOBPR.RE GISTRANT a  ' +
        743                                      '  WHERE  1 = 1 ';
        744  
        745     SET @Mai nQuery = '   SELECT D ISTINCT a. REGISTRANT _ID ' +
        746                                 ', (a.LAST_NA ME + '', ' ' + a.FIRS T_NAME) AS  Name ' +
        747                                 ', b.REGISTRA NT_STATUS  AS Status  ' +
        748                                 ', c.SERVICE_ STATUS AS  DutyStatus  ' +
        749                                 ', e.QUESTION NAIRE_STAR TED_DATE A S Question StartDate  ' +
        750                                 ', e.QUESTION NAIRE_COMP LETED_DATE  AS Questi onComplete Date ' +
        751                                 ', ISNULL(CON VERT(VARCH AR(10), e. QUESTIONNA IRE_STARTE D_DATE, 10 1),'''') A S Question StartDateD isplay ' +
        752                                 ', ISNULL(CON VERT(VARCH AR(10), e. QUESTIONNA IRE_COMPLE TED_DATE,  101),'''')  AS Questi onComplete DateDispla y ';
        753   --Decide w hich query  to run de pending on  if a ques tion was s elected as  a paramet er for the  report
        754     IF ISNUL L(@questio nNumber, ' ') = ''
        755       SET @M ainQuery =  @MainQuer y + ',''''  AS Questi onNumber '  +
        756                                        ',''''  AS Answer  '
        757     ELSE                                     
        758       SET @M ainQuery =  @MainQuer y + ','''  + @questio nNumber +  ''' AS Que stionNumbe r ' +
        759                                        ',STUF F((SELECT  '', '' + s tdAnswer.T EXT ' +
        760                                                 '  FROM  AHOBPR.FOR M_RESPONSE _ANSWER an swer ' + 
        761                                                 '  JOIN  AHOBPR.STD _FORM_ANSW ER stdAnsw er ON answ er.STD_FOR M_ANSWER_I D = stdAns wer.STD_FO RM_ANSWER_ ID ' +
        762                                                 ' WHERE  formQuesti on.FORM_RE SPONSE_QUE STION_ID =  answer.FO RM_RESPONS E_QUESTION _ID ' +
        763                                                 ' FOR XM L PATH(''' ')), 1, 1,  '''') AS  Answer ' ;                    
        764       
        765     SET @Mai nQuery = @ MainQuery  + ',ISNULL (a.HEALTH_ CONCERNS_R ESPONSE,'' '') AS Hea lthConcern s ' +
        766                                      ',ISNULL (a.REQUEST _SEEN_RESP ONSE,'''')   AS Reque stBeSeen   ' +
        767                                      ',RTRIM( LTRIM(ISNU LL(SubPop. REGISTRY_F LAG_NAME,' '''))) AS  Subpopulat ionFlag  '  +
        768                                      ',RTRIM( LTRIM(ISNU LL(Admin.R EGISTRY_FL AG_NAME,'' ''))) AS A dminFlag   ' +
        769                                      ',ISNULL (Deploy.DE PLOYMENT_C OUNTRY,''' ') AS Depl oymentCoun try             ' +
        770                                                   ',a.BI RTH_DATE A S BirthDat e  ' +
        771                                                   ',CONV ERT(VARCHA R(10), a.B IRTH_DATE,  101) AS B irthDateDi splay ' +
        772                                      'FROM AH OBPR.REGIS TRANT a '
        773                                      
        774     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 '  +
        775                                            '  JOIN AHOBP R.STD_SERV ICE_STATUS  c ON a.ST D_SERVICE_ STATUS_ID  = c.STD_SE RVICE_STAT US_ID ' +
        776                                                   ' LEFT  JOIN AHOB PR.FORM_RE SPONSE d O N a.REGIST RANT_ID =   d.REGISTR ANT_ID ' +
        777                                                   ' LEFT  JOIN AHOB PR.FORM_RE SPONSE_STA TUS e ON d .FORM_RESP ONSE_ID =  e.FORM_RES PONSE_ID '  +
        778                                                   ' LEFT  JOIN SubP op  ON a.R EGISTRANT_ ID = SubPo p.REGISTRA NT_ID ' +
        779                                                   ' LEFT  JOIN Admi n   ON a.R EGISTRANT_ ID = Admin .REGISTRAN T_ID ' +
        780                                                   ' LEFT  JOIN Depl oy  ON a.R EGISTRANT_ ID = Deplo y.REGISTRA NT_ID ';
        781  
        782     IF ISNUL L(@questio nNumber, ' ') != ''
        783       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 '  +
        784                                        ' 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  ';
        785  
        786     SET @Mai nQuery = @ MainQuery  + ' WHERE  1 = 1 ';
        787  
        788     -- Quest ion Number  and Answe r criteria  are only  used again st Main Qu ery                  
        789     IF ISNUL L(@questio nNumber, ' ') > ''
        790              SET @MainQ uery = @Ma inQuery +  ' AND stdQ uestion.FO RM_QUESTIO N_UNIQUE_I D = ''' +  @questionN umber + '' ' ';
        791             
        792     IF ISNUL L(@answer, '') != '' 
        793       SET @M ainQuery =  @MainQuer y +  ' AND  EXISTS(SE LECT fr.RE GISTRANT_I D FROM AHO BPR.FORM_R ESPONSE_AN SWER ra ' 
        794                                          '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  '  + 
        795                                          'JOI N AHOBPR.F ORM_RESPON SE fr ON f r.FORM_RES PONSE_ID =  rq.FORM_R ESPONSE_ID   ' + 
        796                                          'JOI N AHOBPR.S TD_FORM_AN SWER A1 ON  A1.STD_FO RM_ANSWER_ ID = ra.ST D_FORM_ANS WER_ID ' +  
        797                                          'JOI N AHOBPR.S TD_FORM_QU ESTION Q1  ON Q1.STD_ FORM_QUEST ION_ID = r q.STD_FORM _QUESTION_ ID ' + 
        798                                          'JOI N AHOBPR.S TD_FORM_QU ESTION Q2  ON Q2.FORM _QUESTION_ UNIQUE_ID  = Q1.FORM_ QUESTION_U NIQUE_ID '  + 
        799                                          'JOI N AHOBPR.S TD_FORM_AN SWER A2 ON  A2.STD_FO RM_QUESTIO N_ID = Q2. STD_FORM_Q UESTION_ID  ' + 
        800                                          ' AN D A1.BRP_F ORM_ANSWER _ID = A2.B RP_FORM_AN SWER_ID ' 
        801                                        ' WHER E A2.STD_F ORM_ANSWER _ID IN ('  + @answer  + ') AND f r.REGISTRA NT_ID = a. REGISTRANT _ID )';                                                         
        802  
        803     IF @form StartFromD ate IS NOT  NULL                       
        804        SET @ MainQuery  = @MainQue ry + ' AND  e.QUESTIO NNAIRE_STA RTED_DATE  >= ''' + C ONVERT(VAR CHAR(20),@ formStartF romDate,12 1) + '''';
        805        
        806     IF @form StartToDat e IS NOT N ULL                       
        807        SET @ MainQuery  = @MainQue ry + ' AND  e.QUESTIO NNAIRE_STA RTED_DATE  <= ''' + C ONVERT(VAR CHAR(20),@ formStartT oDate,121)  + '''';
        808       
        809     IF @form Completion FromDate I S NOT NULL                        
        810        SET @ MainQuery  = @MainQue ry + ' AND  e.QUESTIO NNAIRE_COM PLETED_DAT E >= ''' +  CONVERT(V ARCHAR(20) ,@formComp letionFrom Date,121)  + '''';
        811  
        812     IF @form Completion ToDate IS  NOT NULL                       
        813        SET @ MainQuery  = @MainQue ry + ' AND  e.QUESTIO NNAIRE_COM PLETED_DAT E <= ''' +  CONVERT(V ARCHAR(20) ,@formComp letionToDa te,121) +  '''';
        814  
        815     IF ISNUL L(@subpopu lationFlag ,'') != ''
        816       SET @M ainQuery =  @MainQuer y + ' AND  EXISTS(SEL ECT * FROM  AHOBPR.RE GISTRANT_R EGISTRY_FL AG subpop  ' +
        817                                            '  WHERE subp op.STD_REG ISTRY_FLAG _ID IN ('  + @subpopu lationFlag  + ') ' +
        818                                               ' AND subp op.REGISTR ANT_ID = a .REGISTRAN T_ID ) ';
        819  
        820           IF  ISNULL(@a dminFlag,' ') != ''
        821       SET @M ainQuery =  @MainQuer y + ' AND  EXISTS(SEL ECT * FROM  AHOBPR.RE GISTRANT_R EGISTRY_FL AG adminfl ag ' +
        822                             ' WHER E adminfla g.STD_REGI STRY_FLAG_ ID IN (' +  @adminFla g + ') ' +
        823                               ' AN D adminfla g.REGISTRA NT_ID = a. REGISTRANT _ID ' +
        824                               ' AN D adminfla g.CREATED  BETWEEN '' ' + CONVER T(VARCHAR( 20),@admin FlagFromDa te,121) + 
        825                                                          ''' AND '' ' + CONVER T(VARCHAR( 20),@admin FlagToDate ,121) + '' ' ) ';  
        826                                                     
        827     IF ISNUL L(@deploym entAll,'')  != '' 
        828       SET @M ainQuery =  @MainQuer y + 'AND E XISTS (SEL ECT depl.R EGISTRANT_ ID FROM AH OBPR.REGIS TRANT_DEPL OYMENT dep l ' +
        829                                                          ' WHERE a. REGISTRANT _ID = depl .REGISTRAN T_ID
        830                                                              AND de pl.DEPLOYM ENT_COUNTR Y = ''' +  @deploymen tAll + ''' ) ' ;
        831                                                            
        832     IF ISNUL L(@healthF actor,'')  != ''
        833       SET @M ainQuery =  @MainQuer y + ' AND  EXISTS (SE LECT re.RE GISTRANT_I D FROM AHO BPR.REGIST RANT_VISIT  re ' +
        834                                               ' JOIN AHO BPR.REGIST RANT_HEALT H_FACTOR h f ON re.RE GISTRANT_V ISIT_ID =  hf.REGISTR ANT_VISIT_ ID ' +
        835                                             '  WHERE a.R EGISTRANT_ ID = re.RE GISTRANT_I D AND re.E VALUATION_ FLAG = ''Y '' ' +
        836                                             '    AND hf. STD_HEALTH _FACTOR_ID  IN (' + @ healthFact or + ') )  '
        837  
        838    
        839     IF ISNUL L(@deploym entExposur e,'') != '
        840       SET @M ainQuery =  @MainQuer y + ' AND  EXISTS(SEL ECT deploy mentExposu re.REGISTR ANT_ID FRO M AHOBPR.R EGISTRANT_ DEPLOYMENT  deploymen tExposure  ' +
        841                                               '  JOIN AH OBPR.FORM_ RESPONSE_Q UESTION ex posure ON  deployment Exposure.R EGISTRANT_ DEPLOYMENT _ID = expo sure.REGIS TRANT_DEPL OYMENT_ID  ' +
        842                                               '  JOIN AH OBPR.STD_F ORM_QUESTI ON quest O N exposure .STD_FORM_ QUESTION_I D = quest. STD_FORM_Q UESTION_ID  ' +
        843                                               ' WHERE qu est.FORM_Q UESTION_UN IQUE_ID =  ''1.2.A''  ' +
        844                                               '   AND de ploymentEx posure.DEP LOYMENT_CO UNTRY = '' ' + @deplo ymentExpos ure + ''''  + 
        845                                               '   AND de ploymentEx posure.REG ISTRANT_ID  = a.REGIS TRANT_ID )  ';
        846                                                              
        847     
        848    -- The re st of the  criteria w ill be app lied to Ma in Query a nd With st atememts 
        849     IF @stat us IS NOT  NULL
        850       SET @R egCriteria  = @RegCri teria + '  AND a.STD_ REGISTRANT _STATUS_ID  IN (' + @ status + ' )';
        851  
        852     IF ISNUL L(@dutySta tus,'') >  ''
        853       SET @R egCriteria  = @RegCri teria + '  AND a.STD_ SERVICE_ST ATUS_ID IN  (' + @dut yStatus +  ')';
        854             
        855     IF @heal thConcerns  != 'All'
        856       SET @R egCriteria  = @RegCri teria + '  AND a.HEAL TH_CONCERN S_RESPONSE  = ''' + @ healthConc erns + ''' '; 
        857     
        858     IF @requ estToBeSee n != 'All'
        859       SET @R egCriteria  = @RegCri teria + '  AND a.REQU EST_SEEN_R ESPONSE =  ''' + @req uestToBeSe en  + '''' ;
        860                                                                             
        861     IF ISNUL L(@exclude Dead,'N')  = 'Y'
        862       SET @R egCriteria  = @RegCri teria + '  AND a.DECE ASED_FLAG  = 0 ';
        863     
        864     IF ISNUL L(@gender, '') != ''
        865       SET @R egCriteria  = @RegCri teria + '  AND ''' +  @gender +  ''' = ISNU LL(a.GENDE R,''No Dat a Availabl e'') ';
        866       
        867     IF ISNUL L(@ethnici ty,'') !=  ''
        868       SET @R egCriteria  = @RegCri teria + '  AND ''' +  @ethnicity  + ''' = I SNULL(a.ET HNICITY,'' No Data Av ailable'')  ';
        869     
        870     IF ISNUL L(@separat ionType,0)  != 0
        871       SET @R egCriteria  = @RegCri teria + '  AND ''' +  @separatio nType + '  = ISNULL(a .STD_SEPAR ATION_REAS ON_ID_CURR ENT,0) ';
        872  
        873     IF @sepa rationFrom Date IS NO T NULL 
        874       SET @R egCriteria  = @RegCri teria + '  AND a.SEPA RATION_DAT E_CURRENT  >= ''' + C ONVERT(VAR CHAR(20),@ separation FromDate,1 21) + '''' ;
        875     
        876     IF @sepa rationToDa te IS NOT  NULL 
        877       SET @R egCriteria  = @RegCri teria + '  AND  a.SEP ARATION_DA TE_CURRENT  <= ''' +  CONVERT(VA RCHAR(20), @separatio nToDate,12 1) + '''';
        878     
        879     IF ISNUL L(@race,'' ) != ''
        880       SET @R egCriteria  = @RegCri teria + '  AND ''' +  @race + '' ' =  ISNUL L(a.RACE , ''No Data  Available' ') ';
        881       
        882     IF ISNUL L(@enrollm entStatus, '') != ''
        883       SET @R egCriteria  = @RegCri teria + '  AND ''' +  @enrollmen tStatus +  ''' = ISNU LL(a.ENROL LMENT_STAT US,''No Da ta Availab le'') ';
        884  
        885     IF @Assi gnedLocati onType IS  NOT NULL
        886       BEGIN
        887         IF @ AssignedLo cationType  = 'NLA' 
        888           SE T @RegCrit eria = @Re gCriteria  + ' AND a. STD_INSTIT UTION_ID I S NULL ' ;
        889         ELSE
        890         IF @ AssignedLo cationType  = 'VISN' 
        891           SE T @RegCrit eria = @Re gCriteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.VIEW _FACILITY_ LOOKUP ins t ' +
        892                                                                      ' WHERE i nst.ID = a .STD_INSTI TUTION_ID  ' + 
        893                                                                      '   AND i nst.VisnID  = ''' + @ AssignedLo cationKey  + ''') ';
        894         ELSE
        895         IF @ AssignedLo cationType  = 'Base' 
        896           SE T @RegCrit eria = @Re gCriteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.VIEW _FACILITY_ LOOKUP ins t ' +
        897                                                              ' WHER E inst.ID  = a.STD_IN STITUTION_ ID ' +
        898                                                              '   AN D inst.BAS E_ID = ' +  CONVERT(V ARCHAR(20) ,@Assigned Institutio nId) + ')  '
        899         ELSE
        900         IF @ AssignedLo cationType  = 'Instit ution' 
        901           SE T @RegCrit eria = @Re gCriteria  + ' AND a. STD_INSTIT UTION_ID =  ' + CONVE RT(VARCHAR (20),@Assi gnedInstit utionId);
        902      END;
        903      
        904     IF @Eval uatedLocat ionType IS  NOT NULL
        905       BEGIN
        906         IF @ EvaluatedL ocationTyp e = 'NLA' 
        907           SE T @RegCrit eria = @Re gCriteria  + ' AND NO T EXISTS(  SELECT * F ROM AHOBPR .REGISTRAN T_VISIT ev al ' +
        908                                                                   '  WHERE eva l.REGISTRA NT_VISIT_I D = a.REGI STRANT_ID  ' +
        909                                                                   '    AND eva l.EVALUATI ON_FLAG =  ''Y'') ' ;  
        910         ELSE
        911         IF @ EvaluatedL ocationTyp e = 'VISN'  
        912           SE T @RegCrit eria = @Re gCriteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.REGI STRANT_VIS IT eval '  +
        913                                                               ' JOI N AHOBPR.V IEW_FACILI TY_LOOKUP  inst ON in st.ID = ev al.STD_INS TITUTION_I D ' +
        914                                                              ' WHER E eval.REG ISTRANT_VI SIT_ID = a .REGISTRAN T_ID ' +
        915                                                                ' AN D eval.EVA LUATION_FL AG = ''Y''  ' +
        916                                                                ' AN D inst.Vis nID = '''  + @Evaluat edLocation Key + ''')  '; 
        917         ELSE
        918         IF @ EvaluatedL ocationTyp e = 'Base'  
        919           SE T @RegCrit eria = @Re gCriteria  +  ' AND E XISTS(SELE CT * FROM  AHOBPR.REG ISTRANT_VI SIT eval '  +
        920                                                               ' JOI N AHOBPR.V IEW_FACILI TY_LOOKUP  inst ON in st.ID = ev al.STD_INS TITUTION_I D ' +
        921                                                              ' WHER E eval.REG ISTRANT_VI SIT_ID = a .REGISTRAN T_ID ' +
        922                                                                ' AN D eval.EVA LUATION_FL AG = ''Y''  ' +
        923                                                                ' AN D inst.BAS E_ID = ' +  CONVERT(V ARCHAR(20) ,@Evaluate dInstituti onId) + ')  ';
        924         ELSE
        925         IF @ EvaluatedL ocationTyp e = 'Insti tution' 
        926           SE T @RegCrit eria = @Re gCriteria  +  ' AND E XISTS(SELE CT * FROM  AHOBPR.REG ISTRANT_VI SIT eval '  +
        927                                                               ' JOI N AHOBPR.V IEW_FACILI TY_LOOKUP  inst ON in st.ID = ev al.STD_INS TITUTION_I D ' +
        928                                                              ' WHER E eval.REG ISTRANT_VI SIT_ID = a .REGISTRAN T_ID ' +
        929                                                                ' AN D eval.EVA LUATION_FL AG = ''Y''  ' +
        930                                                                ' AN D eval.STD _INSTITUTI ON_ID = '  + CONVERT( VARCHAR(20 ),@Evaluat edInstitut ionId)  +  ') '; 
        931       END;
        932       
        933   -- Add cri teria and  Close With  Statement
        934     SET @Dep loyWith =  @DeployWit h + @RegCr iteria + '  GROUP BY  a.REGISTRA NT_ID ) ' 
        935     SET @Sub PopWith =  @SubPopWit h + @RegCr iteria + '  GROUP BY  a.REGISTRA NT_ID ) ' 
        936     SET @Adm inWith =   @AdminWith   + @RegCr iteria + '  GROUP BY  a.REGISTRA NT_ID ) ' 
        937  
        938     SET @Que ry =  @Sub PopWith +   @AdminWit h + @Deplo yWith +  @ MainQuery  + @RegCrit eria;             
        939  
        940     PRINT  @ Query;
        941     
        942    EXECUTE ( @Query);  
        943   END;
        944  
        945  
        946  
        947   -- Test Ca ses
        948   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] 
        949   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ status = ' 6,7'
        950   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ dutyStatus  = '1,2'
        951   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ formStartF romDateTex t  = '2001 0101'
        952   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ formStartT oDateText  = '2014123 1'
        953   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ healthFact or = '44,4 5,46,47' 
        954   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ formComple tionFromDa teText  =  '20010101'
        955   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ formComple tionToDate Text  = '2 0141231'
        956   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ healthConc erns = 'Ye s'     , 
        957   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ requestToB eSeen = 'Y es
        958   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ subpopulat ionFlag =  '64,65,66, 67'
        959   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ deployment All = 'Egy pt'
        960   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ deployment Exposure   = 'Iraq'
        961   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ adminFlag  = '59,60'  ,@adminFla gFromDateT ext = '201 50101' , @ adminFlagT oDateText  = '2015020 1'
        962   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ questionNu mber = '5. 4.A'  , @a nswer = '2 221'
        963   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual]
        964   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Ass ignedLocat ionType =  'NLA'
        965   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Ass ignedLocat ionType =  'VISN', @A ssignedLoc ationKey =  'V16'
        966   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Ass ignedLocat ionType =  'Base', @A ssignedLoc ationKey =  '1000089'
        967   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Ass ignedLocat ionType =  'Instituti on', @Assi gnedLocati onKey = '1 000089'
        968   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual]  @et hnicity =  'JEWISH'
        969   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Eva luatedLoca tionType =  'NLA'
        970   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Eva luatedLoca tionType =  'VISN', @ EvaluatedL ocationKey  = 'V16'
        971   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Eva luatedLoca tionType =  'Base', @ EvaluatedL ocationKey  = '100008 9'
        972   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Eva luatedLoca tionType =  'Institut ion', @Eva luatedLoca tionKey =  '1000089'
        973  
        974   GO
        975   PRINT 'DRO P and CREA TE PROCEDU RE [AHOBPR ].[SP_Repo rtAdHocByL ocation].. .';
        976   GO
        977  
        978   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' ))
        979   DROP PROCE DURE [AHOB PR].[SP_Re portAdHocB yLocation]
        980   GO
        981  
        982   -- ======= ========== ========== ========== ========
        983   -- Author:                Debora h Barr
        984   -- Create  date: Nove mber 12, 2 014
        985   -- Descrip tion: Used  for the A HOBPR Ad H oc Report   
        986  
        987   -- Modific ation log
        988   -- 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
        989   -- 2015-01 -05 - Chan ge Date Fo rmat to MM /DD/YYYY
        990   -- 2015-01 -14 - Sher ry Wang Ad d more par ameters: @ healthFact or, @formS tartFromDa te, @formS tartToDate , @subpopu lationFlag
        991   -- 2015-01 -14 - Sher ry Wang Ad d more par ameters: @ adminFlag,  @deployme ntAll, @de ploymentEx posure, @a dminFlagFr omDate, @a dminFlagTo Date
        992   -- 2015-01 -16 - Bruc e Clegg -  Fix parame ters, Add  distinct a nd outer q uery to gr oup counts .
        993   -- 2015-02 -09 - Bruc e Clegg -  Change Hea lth Factor  Exists st atements t o use new  REGISTRANT _VISIT
        994   -- 2015-05 -07 - Bruc e Clegg -  Change Fac ility name  from "Oth er" to "No  Facitilty  Assigned"  when not  found
        995   -- 2015-06 -04 - Bruc e Clegg -  Add more p arameters
        996   -- 2015-06 -18 - Bruc e Clegg -  Changed @s eparationT ype to an  Integer 
        997   -- 2015-07 -09 - Bruc e Clegg -  Rewrote as  Dynamic S QL for per formance
        998   -- 2015-08 -05 - Bruc e Clegg -  Fix bug wi th AdminFl ag - Set F rom and To  date defa ults
        999   -- ======= ========== ========== ========== ========
        1000   CREATE PRO CEDURE [AH OBPR].[SP_ ReportAdHo cByLocatio n]
        1001          @st atus varch ar(100) =  NULL, -- M ultiple st atues, com ma-separat ed values  when not N ULL
        1002          @du tyStatus v archar(100 ) = NULL,  -- Multipl e states,  comma-sepa rated valu es when no t NULL  
        1003          @fo rmStartFro mDateText  varchar(10 0) = NULL,
        1004          @fo rmStartToD ateText va rchar(100)  = NULL,
        1005          @he althFactor  varchar(1 00) = NULL , -- Multi ple health  factor ID s, comma-s eparated v alues when  not NULL
        1006          @fo rmCompleti onFromDate Text varch ar(100) =  NULL,
        1007          @fo rmCompleti onToDateTe xt varchar (100) = NU LL,
        1008          @qu estionNumb er varchar (100) = NU LL,
        1009          @an swer varch ar(100) =  NULL,
        1010          @he althConcer ns varchar (10) = 'Al l', 
        1011          @re questToBeS een varcha r(10) = 'A ll',
        1012          @gr oupBy VARC HAR(50) =  '',                   -- 'VISN'  or 'Facili ty'   
        1013          @su bpopulatio nFlag varc har (10) =  NULL, 
        1014          @ad minFlag va rchar (10)  = NULL, 
        1015          @de ploymentAl l varchar  (256) = NU LL, 
        1016          @de ploymentEx posure var char (256)  = NULL, 
        1017          @ad minFlagFro mDateText  varchar (2 0) = NULL,  
        1018          @ad minFlagToD ateText va rchar (20)  = NULL,
        1019          @ex cludeDead  varchar(1)  = 'N',
        1020          @ge nder varch ar(50) = ' ',
        1021          @ra ce varchar (50) = '',
        1022          @et hnicity va rchar(50)  = '',
        1023          @se parationTy pe INT = 0 ,
        1024          @se parationFr omDateText  varchar ( 20) = NULL
        1025          @se parationTo DateText v archar (20 ) = NULL, 
        1026          @en rollmentSt atus varch ar(50) = ' '
        1027   AS
        1028  
        1029   BEGIN
        1030  
        1031     DECLARE  @formStart FromDate D ATETIME2(0 ) = NULL,
        1032              @formStart ToDate DAT ETIME2(0)  = NULL,
        1033              @formCompl etionFromD ate DATETI ME2(0) = N ULL,
        1034              @formCompl etionToDat e DATETIME 2(0) = NUL L,
        1035              @adminFlag FromDate D ATETIME2(0 ) = NULL,
        1036              @adminFlag ToDate DAT ETIME2(0)  = NULL,
        1037              @separatio nFromDate  DATETIME2( 0) = NULL,
        1038              @separatio nToDate DA TETIME2(0)  = NULL;
        1039             
        1040     DECLARE  @Query VAR CHAR(8000) ;      
        1041  
        1042     -- Conve rt date pa rameters       
        1043  
        1044     SET @for mStartFrom Date = dbo .CleanDate (@formStar tFromDateT ext);
        1045     SET @for mStartToDa te = dbo.A ddMaxTime( dbo.CleanD ate(@formS tartToDate Text));
        1046     SET @for mCompletio nFromDate  = dbo.Clea nDate(@for mCompletio nFromDateT ext);
        1047     SET @for mCompletio nToDate =  dbo.AddMax Time(dbo.C leanDate(@ formComple tionToDate Text));      
        1048     SET @adm inFlagFrom Date = ISN ULL(dbo.Cl eanDate(@a dminFlagFr omDateText ),'1900010 1');
        1049     SET @adm inFlagToDa te = dbo.A ddMaxTime( ISNULL(dbo .CleanDate (@adminFla gToDateTex t),GETDATE ())); 
        1050     SET @sep arationFro mDate = db o.CleanDat e(@separat ionFromDat eText);
        1051     SET @sep arationToD ate = dbo. AddMaxTime (dbo.Clean Date(@sepa rationToDa teText));    
        1052  
        1053     -- Build  Src TDE
        1054     SET @Que ry = ' WIT H Src 
        1055       AS( SE LECT a.REG ISTRANT_ID , a.STD_IN STITUTION_ ID FROM AH OBPR.REGIS TRANT a WH ERE 1 = 1  ';
        1056     
        1057     IF @stat us IS NOT  NULL
        1058       SET @Q uery = @Qu ery + ' AN D a.STD_RE GISTRANT_S TATUS_ID I N (' + @st atus + ')' ;
        1059  
        1060     IF ISNUL L(@dutySta tus,'') >  ''
        1061       SET @Q uery = @Qu ery + ' AN D a.STD_SE RVICE_STAT US_ID IN ( ' + @dutyS tatus + ') ';
        1062             
        1063     IF @heal thConcerns  != 'All'
        1064       SET @Q uery = @Qu ery + ' AN D a.HEALTH _CONCERNS_ RESPONSE =  ''' + @he althConcer ns + '''';  
        1065     
        1066     IF @requ estToBeSee n != 'All'
        1067       SET @Q uery = @Qu ery + ' AN D a.REQUES T_SEEN_RES PONSE = '' ' + @reque stToBeSeen   + '''';
        1068       
        1069     IF @form StartFromD ate IS NOT  NULL OR @ formStartT oDate IS N OT NULL 
        1070     OR @form Completion FromDate I S NOT NULL  OR @formC ompletionT oDate IS N OT NULL
        1071       BEGIN
        1072         SET  @Query = @ Query + '  AND EXISTS ( SELECT d .REGISTRAN T_ID FROM  AHOBPR.FOR M_RESPONSE  d 
        1073                                               JOIN AHOBP R.FORM_RES PONSE_STAT US e ON d. FORM_RESPO NSE_ID = e .FORM_RESP ONSE_ID   
        1074                                             W HERE a.REG ISTRANT_ID  = d.REGIS TRANT_ID ' ;
        1075                      IF  @formStar tFromDate  IS NOT NUL L                       
        1076                          SET @Quer y = @Query  + ' AND e .QUESTIONN AIRE_START ED_DATE >=  ''' + CON VERT(VARCH AR(20),@fo rmStartFro mDate,121)  + '''';
        1077                      IF  @formStar tToDate IS  NOT NULL                       
        1078                          SET @Quer y = @Query  + ' AND e .QUESTIONN AIRE_START ED_DATE <=  ''' + CON VERT(VARCH AR(20),@fo rmStartToD ate,121) +  '''';
        1079                      IF  @formComp letionFrom Date IS NO T NULL                       
        1080                          SET @Quer y = @Query  + ' AND e .QUESTIONN AIRE_COMPL ETED_DATE  >= ''' + C ONVERT(VAR CHAR(20),@ formComple tionFromDa te,121) +  '''';
        1081                      IF  @formComp letionToDa te IS NOT  NULL                       
        1082                          SET @Quer y = @Query  + ' AND e .QUESTIONN AIRE_COMPL ETED_DATE  <= ''' + C ONVERT(VAR CHAR(20),@ formComple tionToDate ,121) + '' '';
        1083                       S ET @Query  = @Query +  ' ) ' --  Close Exis its statem ent
        1084       END     
        1085       
        1086     IF ISNUL L(@answer, '') != '' 
        1087       --SET  @Query = @ Query + '  AND EXISTS (SELECT fr .REGISTRAN T_ID FROM  AHOBPR.FOR M_RESPONSE _ANSWER ra  ' +
        1088       --                        'J OIN AHOBPR .FORM_RESP ONSE_QUEST ION rq ON  rq.FORM_RE SPONSE_QUE STION_ID =  ra.FORM_R ESPONSE_QU ESTION_ID  ' +
        1089       --                        'J OIN AHOBPR .FORM_RESP ONSE fr ON  fr.FORM_R ESPONSE_ID  = rq.FORM _RESPONSE_ ID ' +
        1090       --                      ' WH ERE ra.STD _FORM_ANSW ER_ID IN ( ' + @answe r + ') AND  fr.REGIST RANT_ID =  a.REGISTRA NT_ID )';
        1091                             
        1092     SET @Que ry = @Quer y + ' AND  EXISTS(SEL ECT fr.REG ISTRANT_ID  FROM AHOB PR.FORM_RE SPONSE_ANS WER ra ' +  
        1093                             'JOIN  AHOBPR.FOR M_RESPONSE _QUESTION  rq ON rq.F ORM_RESPON SE_QUESTIO N_ID = ra. FORM_RESPO NSE_QUESTI ON_ID  ' +  
        1094                             'JOIN  AHOBPR.FOR M_RESPONSE  fr ON fr. FORM_RESPO NSE_ID = r q.FORM_RES PONSE_ID   ' + 
        1095                             'JOIN  AHOBPR.STD _FORM_ANSW ER A1 ON A 1.STD_FORM _ANSWER_ID  = ra.STD_ FORM_ANSWE R_ID ' + 
        1096                             'JOIN  AHOBPR.STD _FORM_QUES TION Q1 ON  Q1.STD_FO RM_QUESTIO N_ID = rq. STD_FORM_Q UESTION_ID  ' + 
        1097                             'JOIN  AHOBPR.STD _FORM_QUES TION Q2 ON  Q2.FORM_Q UESTION_UN IQUE_ID =  Q1.FORM_QU ESTION_UNI QUE_ID ' +  
        1098                             'JOIN  AHOBPR.STD _FORM_ANSW ER A2 ON A 2.STD_FORM _QUESTION_ ID = Q2.ST D_FORM_QUE STION_ID '  + 
        1099                             ' AND  A1.BRP_FOR M_ANSWER_I D = A2.BRP _FORM_ANSW ER_ID ' + 
        1100                           ' WHERE  A2.STD_FOR M_ANSWER_I D IN (' +  @answer +  ') AND fr. REGISTRANT _ID = a.RE GISTRANT_I D )';                           
        1101                             
        1102     
        1103     IF ISNUL L(@subpopu lationFlag ,'') != ''
        1104       SET @Q uery = @Qu ery + ' AN D EXISTS(S ELECT * FR OM AHOBPR. REGISTRANT _REGISTRY_ FLAG subpo p ' +
        1105                                            '  WHERE subp op.STD_REG ISTRY_FLAG _ID IN ('  + @subpopu lationFlag  + ') ' +
        1106                                               ' AND subp op.REGISTR ANT_ID = a .REGISTRAN T_ID ) ';
        1107  
        1108           IF  ISNULL(@a dminFlag,' ') != ''
        1109       SET @Q uery = @Qu ery + ' AN D EXISTS(S ELECT * FR OM AHOBPR. REGISTRANT _REGISTRY_ FLAG admin flag ' +
        1110                             ' WHER E adminfla g.STD_REGI STRY_FLAG_ ID IN (' +  @adminFla g + ') ' +
        1111                               ' AN D adminfla g.REGISTRA NT_ID = a. REGISTRANT _ID ' +
        1112                               ' AN D adminfla g.CREATED  BETWEEN '' ' + CONVER T(VARCHAR( 20),@admin FlagFromDa te,121) + 
        1113                                                          ''' AND '' ' + CONVER T(VARCHAR( 20),@admin FlagToDate ,121) + '' ' ) ';  
        1114                                 
        1115     IF ISNUL L(@healthF actor,'')  != ''
        1116       SET @Q uery = @Qu ery + ' AN D EXISTS ( SELECT re. REGISTRANT _ID FROM A HOBPR.REGI STRANT_VIS IT re ' +
        1117                                               ' JOIN AHO BPR.REGIST RANT_HEALT H_FACTOR h f ON re.RE GISTRANT_V ISIT_ID =  hf.REGISTR ANT_VISIT_ ID ' +
        1118                                             '  WHERE a.R EGISTRANT_ ID = re.RE GISTRANT_I D AND re.E VALUATION_ FLAG = ''Y '' ' +
        1119                                             '    AND hf. STD_HEALTH _FACTOR_ID  IN (' + @ healthFact or + ') )  '
        1120  
        1121     IF ISNUL L(@deploym entAll,'')  != '' 
        1122       SET @Q uery = @Qu ery + ' AN D EXISTS ( SELECT dep l.REGISTRA NT_ID FROM  AHOBPR.RE GISTRANT_D EPLOYMENT  depl ' +
        1123                                             '  WHERE a.R EGISTRANT_ ID = depl. REGISTRANT _ID
        1124                                                  AND dep l.DEPLOYME NT_COUNTRY  = ''' + @ deployment All + ''')  ' ;
        1125  
        1126     IF ISNUL L(@deploym entExposur e,'') != '
        1127       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 ' +
        1128                                               '  JOIN AH OBPR.FORM_ RESPONSE_Q UESTION ex posure ON  deployment Exposure.R EGISTRANT_ DEPLOYMENT _ID = expo sure.REGIS TRANT_DEPL OYMENT_ID  ' +
        1129                                               '  JOIN AH OBPR.STD_F ORM_QUESTI ON quest O N exposure .STD_FORM_ QUESTION_I D = quest. STD_FORM_Q UESTION_ID  ' +
        1130                                               ' WHERE qu est.FORM_Q UESTION_UN IQUE_ID =  ''1.2.A''  ' +
        1131                                               '   AND de ploymentEx posure.DEP LOYMENT_CO UNTRY = '' ' + @deplo ymentExpos ure + ''''  + 
        1132                                               '   AND de ploymentEx posure.REG ISTRANT_ID  = a.REGIS TRANT_ID )  ';
        1133     IF ISNUL L(@exclude Dead,'N')  = 'Y'
        1134       SET @Q uery = @Qu ery + ' AN D a.DECEAS ED_FLAG =  0 ';
        1135     
        1136     IF ISNUL L(@gender, '') != ''
        1137       SET @Q uery = @Qu ery + ' AN D ''' + @g ender + '' ' = ISNULL (a.GENDER, ''No Data  Available' ') ';
        1138       
        1139     IF ISNUL L(@ethnici ty,'') !=  ''
        1140       SET @Q uery = @Qu ery + ' AN D ''' + @e thnicity +  ''' = ISN ULL(a.ETHN ICITY,''No  Data Avai lable'') ' ;
        1141     
        1142     IF ISNUL L(@separat ionType,0)  != 0
        1143       SET @Q uery = @Qu ery + ' AN D ''' + @s eparationT ype + '''  = ISNULL(a .STD_SEPAR ATION_REAS ON_ID_CURR ENT,0) ';
        1144  
        1145     IF @sepa rationFrom Date IS NO T NULL 
        1146       SET @Q uery = @Qu ery + ' AN D a.SEPARA TION_DATE_ CURRENT >=  ''' + CON VERT(VARCH AR(20),@se parationFr omDate,121 ) + '''';
        1147     
        1148     IF @sepa rationToDa te IS NOT  NULL 
        1149       SET @Q uery = @Qu ery + ' AN D  a.SEPAR ATION_DATE _CURRENT < = ''' + CO NVERT(VARC HAR(20),@s eparationT oDate,121)  + '''';
        1150     
        1151     IF ISNUL L(@race,'' ) != ''
        1152       SET @Q uery = @Qu ery + ' AN D ''' + @r ace + '''  =  ISNULL( a.RACE ,'' No Data Av ailable'')  ';
        1153       
        1154     IF ISNUL L(@enrollm entStatus, '') != ''
        1155       SET @Q uery = @Qu ery + ' AN D ''' + @e nrollmentS tatus + '' ' = ISNULL (a.ENROLLM ENT_STATUS ,''No Data  Available '') ';
        1156  
        1157     -- Add S ummary TDE                     
        1158     SET @Que ry = @Quer y + '  )     ,Summary   AS( ' + 
        1159                             ' SELE CT Src.STD _INSTITUTI ON_ID, COU NT(*) AS T otalRegist rants FROM  Src ' +
        1160                             ' GROU P BY STD_I NSTITUTION _ID ) ';
        1161   -- By Faci lity 
        1162           IF  @groupBy  = 'Facilit y'
        1163              SET @Query  = @Query  + ' SELECT  inst.Name  AS Locati on, ' +
        1164                                               ' ISNULL(C ONVERT(VAR CHAR(10),S ummary.STD _INSTITUTI ON_ID),''- 1'') AS Lo cationId,  ' +
        1165                                         '  SU M(TotalReg istrants)  AS TotalRe gistrants  FROM Summa ry ' +                         
        1166                                       '  JOIN  AHOBPR.VI EW_INSTITU TION_NAME  inst ON in st.ID = IS NULL(Summa ry.STD_INS TITUTION_I D,-1) ' +
        1167                                       ' GROUP  BY inst.N ame,STD_IN STITUTION_ ID ' +
        1168                                           ' O PTION (OPT IMIZE FOR  UNKNOWN);' ;
        1169     
        1170   -- By VISN
        1171           IF  @groupBy  = 'VISN'
        1172               SET @Quer y = @Query  + ' ,Visn Summary AS  ( ' +
        1173                     ' S ELECT ISNU LL(inst.Vi snID,''NLA '') AS Loc ation, ' +
        1174                            '  ISNU LL(inst.Vi snID, ''-1 '') AS Loc ationId, '  +
        1175                            '  SUM( TotalRegis trants) AS  TotalRegi strants '  +                 
        1176                     '    FROM Summ ary ' +   
        1177                     '    LEFT JOIN  AHOBPR.VI EW_FACILIT Y_LOOKUP i nst ON ins t.ID = ISN ULL(Summar y.STD_INST ITUTION_ID ,-1) ' +  
        1178                     '    GROUP BY  inst.VisnI D  ) ' +
        1179                     ' S ELECT REPL ACE(Locati on,''NLA'' ,''No Faci tilty Assi gned'') AS  Location,  ' +
        1180                     '         CONV ERT(VARCHA R(10),Loca tionId) AS  LocationI d, TotalRe gistrants  ' +
        1181                     '    FROM Visn Summary  '  +
        1182                     '   ORDER BY L ocation ' 
        1183                     '   OPTION (OP TIMIZE FOR  UNKNOWN);  ' ;
        1184           
        1185     PRINT @Q uery;          
        1186                                           
        1187     EXECUTE  (@Query);                                                  
        1188   END
        1189   -- Paramet ers
        1190     --@statu s, @dutySt atus ,@que stionnaire StartDate,  @question naireCompl eteDate, 
        1191     --@quest ionNumber,  @answer,  @healthCon cerns= 'Al l', @reque stToBeSeen  = 'All',
        1192     --@regis tryFlag,@I nstitution Id = 0, @V isnId = ''  
        1193   -- Test Ca ses
        1194   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @st atus = '6, 7'
        1195   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @du tyStatus =  '1,2'
        1196   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @fo rmStartFro mDateText   = '200101 01'
        1197   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @fo rmStartToD ateText =  '20141231'
        1198   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @he althFactor  = '44,45, 46,47' 
        1199   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @fo rmCompleti onFromDate Text  = '2 0010101'
        1200   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @fo rmCompleti onToDateTe xt  = '201 41231'
        1201   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @he althConcer ns = 'Yes'  
        1202   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @re questToBeS een = 'Yes '
        1203   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @su bpopulatio nFlag = '6 4,65,66,67 '
        1204   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @de ploymentAl l = 'Iraq'     -- 'Eg ypt'
        1205   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @de ploymentEx posure  =  'Iraq'
        1206   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @ad minFlag =  '59,60' ,@ adminFlagF romDateTex t = '20150 101' , @ad minFlagToD ateText =  '20150201'
        1207   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @an swer = '22 21'
        1208   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy =  ' Facility'  , @status  = '6,7' ,@ answer = ' 2346,1571, 17'   -- ' 20,795,157 0' 
        1209   GO
        1210  
        1211   PRINT 'DRO P and CREA TE PROCEDU RE [AHOBPR ].[SP_Repo rtParticip ation]...' ;
        1212   GO
        1213  
        1214   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'))
        1215   DROP PROCE DURE [AHOB PR].[SP_Re portPartic ipation]
        1216   GO
        1217  
        1218   -- ======= ========== ========== ========== ========
        1219   -- Author:                Bruce  Clegg
        1220   -- Create  date: Dec  30, 2014
        1221   -- Descrip tion: Used  for the A HOBPR Part icipation  Report        -- exec  [AHOBPR]. [SP_Report Participat ion] 
        1222   -- 2015033 0 - Bruce  Clegg - Ad ded VisnId  value of  NLA to fin d Null loc ations
        1223   -- 2015042 7 - Bruce  Clegg - Ch ange to Lo cationType  and Key,  for both A ssigned an d Evaluate d Location s
        1224   -- 2015071 0 - Bruce  Clegg - Re write usin g Dynamic  SQL for Pe rformance
        1225   -- 2015091 0 - Bruce  Clegg - Re moved sele ction for  Question 1 .2.A for D eployments
        1226   -- 2015091 5 - Bruce  Clegg - Ad d Max Time  to End da te paramet er
        1227   -- ======= ========== ========== ========== ========
        1228   CREATE PRO CEDURE [AH OBPR].[SP_ ReportPart icipation]
        1229          @St artDate DA TETIME2(0)  = NULL,  
        1230          @En dDate   DA TETIME2(0)  = NULL,
        1231          @As signedLoca tionType   VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        1232          @As signedLoca tionKey    VARCHAR(50 ) = NULL,   -- 'V16',  'V01'     1000109,   1000089
        1233          @Ev aluatedLoc ationType  VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        1234          @Ev aluatedLoc ationKey   VARCHAR(50 ) = NULL    -- 'V16',  'V01'     1000109,   1000089
        1235   AS
        1236   BEGIN
        1237  
        1238     SET @Sta rtDate = I SNULL(@Sta rtDate,'19 900802');  -- Desert  Storm star t date
        1239     SET @End Date = ISN ULL(@EndDa te, GETDAT E());
        1240       
        1241     SET @End Date = dbo .AddMaxTim e(@EndDate );
        1242     
        1243     DECLARE  @ConsentSt atusCount  INT = 0,
        1244              @EligibleS tatusCount  INT = 0,
        1245              @Participa ntStatusCo unt INT =  0,
        1246              @HealthCon cernsCount  INT = 0,
        1247              @NoHealthC oncernsCou nt INT = 0 ,
        1248              @RequestSe enCount IN T = 0,
        1249              @NoRequest SeenCount  INT = 0,
        1250              @DoNotKnow RequestSee nCount INT  = 0,
        1251              @VeteranSe rviceStatu sCount INT  = 0,
        1252              @ActiveDut yServiceSt atusCount  INT = 0,
        1253              @RetireeSe rviceStatu sCount INT  = 0,
        1254              @Afgh911Co unt INT =  0,
        1255              @Iraq911Co unt INT =  0,
        1256              @SWA911Cou nt INT = 0 ,
        1257              @Pre911Cou nt INT = 0 ,
        1258              @Djibouti9 11Count IN T = 0,
        1259              @MedianDay sToPartici pant DECIM AL(9,2) =  0;    
        1260     
        1261     DECLARE  @AssignedI nstitution Id INT = 0 ,
        1262           @E valuatedIn stitutionI d INT = 0;
        1263  
        1264     DECLARE  @Query NVA RCHAR(MAX) ;
        1265     DECLARE  @Criteria  VARCHAR(20 00) = '';
        1266  
        1267   IF @Assign edLocation Type IN (' Base','Ins titution')  
        1268   AND ISNUME RIC(@Assig nedLocatio nKey) = 1
        1269     SET @Ass ignedInsti tutionId =  CONVERT(I NT,@Assign edLocation Key);
        1270     
        1271   IF @Evalua tedLocatio nType IN ( 'Base','In stitution'
        1272   AND ISNUME RIC(@Evalu atedLocati onKey) = 1
        1273     SET @Eva luatedInst itutionId  = CONVERT( INT,@Evalu atedLocati onKey);
        1274  
        1275     --  Buil d Criteria  string
        1276  
        1277     SET @Cri teria = '  AND respon seStat.QUE STIONNAIRE _COMPLETED _DATE BETW EEN ''' +  CONVERT(VA RCHAR(20), @StartDate ,121) +
        1278                                                                             '' ' AND '''  + CONVERT( VARCHAR(20 ),@EndDate ,121) + '' ' ' ;
        1279     IF @Assi gnedLocati onType = ' NLA' 
        1280       SET @C riteria =  @Criteria  + ' AND re g.STD_INST ITUTION_ID  IS NULL ' ;
        1281  
        1282     IF @Assi gnedLocati onType = ' VISN' 
        1283       SET @C riteria =  @Criteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.VIEW _FACILITY_ LOOKUP ins t ' +
        1284                                            '  WHERE inst .ID = reg. STD_INSTIT UTION_ID '  +
        1285                                                'AND inst .VisnID =  ''' + @Ass ignedLocat ionKey + ' '') ';
        1286           
        1287     IF @Assi gnedLocati onType = ' Base' 
        1288       SET @C riteria =  @Criteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.VIEW _FACILITY_ LOOKUP ins t ' +
        1289                                             ' WHERE inst .ID = reg. STD_INSTIT UTION_ID '  +
        1290                                                'AND inst .BASE_ID =  ' + CONVE RT(VARCHAR (20),@Assi gnedInstit utionId) +  ' ) ';
        1291                    
        1292     IF @Assi gnedLocati onType = ' Institutio n' 
        1293       SET @C riteria =  @Criteria  + ' AND re g.STD_INST ITUTION_ID  = ' + CON VERT(VARCH AR(20),@As signedInst itutionId)  + ' '    
        1294     
        1295     IF @Eval uatedLocat ionType =  'NLA' 
        1296       SET @C riteria =  @Criteria  + ' AND NO T EXISTS(  SELECT * F ROM AHOBPR .REGISTRAN T_VISIT ev al ' +
        1297                                                   'WHERE  eval.REGI STRANT_ID  = Reg.REGI STRANT_ID  ' +
        1298                                                      'AN D eval.EVA LUATION_FL AG = ''Y''  ) ';
        1299             
        1300     IF @Eval uatedLocat ionType =  'VISN' 
        1301       SET @C riteria =  @Criteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.REGI STRANT_VIS IT eval '  +
        1302                                                      'JO IN AHOBPR. VIEW_FACIL ITY_LOOKUP  inst ON i nst.ID = e val.STD_IN STITUTION_ ID ' +
        1303                                                    ' WHE RE eval.RE GISTRANT_I D = Reg.RE GISTRANT_I D ' +
        1304                                                       'A ND inst.Vi snID = '''  +  @Evalu atedLocati onKey + '' ' ' +
        1305                                                       'A ND eval.EV ALUATION_F LAG = ''Y' ') ' ; 
        1306                    
        1307     IF @Eval uatedLocat ionType =  'Base' 
        1308       SET @C riteria =  @Criteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.REGI STRANT_VIS IT eval '  +
        1309                                                      'JO IN AHOBPR. VIEW_FACIL ITY_LOOKUP  inst ON i nst.ID = e val.STD_IN STITUTION_ ID ' +
        1310                                                    ' WHE RE eval.RE GISTRANT_I D = Reg.RE GISTRANT_I D ' +
        1311                                               ' AND inst .BASE_ID =  ' + CONVE RT(VARCHAR (20),@Eval uatedInsti tutionId) 
        1312                                                 ' AND ev al.EVALUAT ION_FLAG =  ''Y'') ';  
        1313     IF @Eval uatedLocat ionType =  'Instituti on' 
        1314       SET @C riteria =  @Criteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.REGI STRANT_VIS IT eval '  +
        1315                                            '  WHERE eval .REGISTRAN T_ID = Reg .REGISTRAN T_ID '+
        1316                                               ' AND eval .STD_INSTI TUTION_ID  = ' + CONV ERT(VARCHA R(20),@Eva luatedInst itutionId)  +
        1317                                               ' AND eval .EVALUATIO N_FLAG = ' 'Y'') '; 
        1318  
        1319     --  @Par ticipantSt atusCount
        1320     SET @Que ry = ' SEL ECT @Parti cipantStat usCount =  COUNT(*) '  +
        1321                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1322                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1323                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1324                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID '  
        1325                  + @Cri teria     
        1326                  + '  A ND stat.RE GISTRANT_S TATUS = '' Participan t'' '; 
        1327                    
        1328     PRINT @Q uery;
        1329     EXEC sp_ executesql  @Query,   N'@Partici pantStatus Count INT  OUTPUT',     @Partici pantStatus Count OUTP UT;
        1330  
        1331      
        1332       --  @H ealthConce rnsCount
        1333     SET @Que ry = ' SEL ECT @Healt hConcernsC ount = COU NT(*) ' +
        1334                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1335                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1336                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1337                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID '  
        1338                  + ' WH ERE reg.HE ALTH_CONCE RNS_RESPON SE = ''Yes '' '
        1339                  + @Cri teria; 
        1340                    
        1341     PRINT @Q uery;
        1342     EXEC sp_ executesql  @Query,   N'@HealthC oncernsCou nt INT OUT PUT',    @ HealthConc ernsCount  OUTPUT;
        1343  
        1344     --  @NoH ealthConce rnsCount
        1345     SET @Que ry = ' SEL ECT @NoHea lthConcern sCount = C OUNT(*) '  +
        1346                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1347                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1348                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1349                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID '  
        1350                  + ' WH ERE reg.HE ALTH_CONCE RNS_RESPON SE IS NULL  '
        1351                  + @Cri teria; 
        1352                    
        1353     PRINT @Q uery;
        1354     EXEC sp_ executesql  @Query,   N'@NoHealt hConcernsC ount INT O UTPUT',     @NoHealth ConcernsCo unt OUTPUT ;
        1355                                
        1356  
        1357     --  @Req uestSeenCo unt
        1358     SET @Que ry = ' SEL ECT @Reque stSeenCoun t = COUNT( *) ' +
        1359                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1360                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1361                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1362                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID '  
        1363                  + ' WH ERE reg.RE QUEST_SEEN _RESPONSE  = ''Yes''  '
        1364                  + @Cri teria;
        1365                    
        1366     PRINT @Q uery;
        1367     EXEC sp_ executesql  @Query,   N'@Request SeenCount  INT OUTPUT ',    @Req uestSeenCo unt OUTPUT ;
        1368                                                             
        1369     --  @NoR equestSeen Count
        1370     SET @Que ry = ' SEL ECT @NoReq uestSeenCo unt = COUN T(*) ' +
        1371                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1372                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1373                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1374                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID '  
        1375                  + ' WH ERE reg.RE QUEST_SEEN _RESPONSE  = ''No'' '
        1376                  + @Cri teria;
        1377                    
        1378     PRINT @Q uery;
        1379     EXEC sp_ executesql  @Query,   N'@NoReque stSeenCoun t INT OUTP UT',    @N oRequestSe enCount OU TPUT;
        1380                                                                                                    
        1381     --  @DoN otKnowRequ estSeenCou nt
        1382     SET @Que ry = ' SEL ECT @DoNot KnowReques tSeenCount  = COUNT(* ) ' +
        1383                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1384                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1385                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1386                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID '  
        1387                  + ' WH ERE ISNULL (reg.REQUE ST_SEEN_RE SPONSE,''' ') NOT IN  (''Yes'',' 'No'') '
        1388                  + @Cri teria;
        1389                    
        1390     PRINT @Q uery;
        1391     EXEC sp_ executesql  @Query,   N'@DoNotKn owRequestS eenCount I NT OUTPUT' , @DoNotKn owRequestS eenCount O UTPUT;       
        1392                                                           
        1393     --  @Act iveDutySer viceStatus Count
        1394     SET @Que ry = ' SEL ECT @Activ eDutyServi ceStatusCo unt = COUN T(*) ' +
        1395                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1396                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1397                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1398                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID ' +
        1399                    '  J OIN AHOBPR .STD_SERVI CE_STATUS  svc  ON sv c.STD_SERV ICE_STATUS _ID = reg. STD_SERVIC E_STATUS_I D '
        1400                  + ' WH ERE svc.SE RVICE_STAT US = ''Act ive Duty''  '
        1401                  + @Cri teria;
        1402                    
        1403     PRINT @Q uery;
        1404     EXEC sp_ executesql  @Query,   N'@ActiveD utyService StatusCoun t INT OUTP UT', @Acti veDutyServ iceStatusC ount OUTPU T;        
        1405            
        1406      
        1407     --  @Vet eranServic eStatusCou nt
        1408     SET @Que ry = ' SEL ECT @Veter anServiceS tatusCount  = COUNT(* ) ' +
        1409                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1410                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1411                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1412                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID ' +
        1413                    '  J OIN AHOBPR .STD_SERVI CE_STATUS  svc  ON sv c.STD_SERV ICE_STATUS _ID = reg. STD_SERVIC E_STATUS_I D '
        1414                  + ' WH ERE svc.SE RVICE_STAT US = ''Sep arated'' '
        1415                  + @Cri teria;
        1416                    
        1417     PRINT @Q uery;
        1418     EXEC sp_ executesql  @Query,   N'@Veteran ServiceSta tusCount I NT OUTPUT' , @Veteran ServiceSta tusCount O UTPUT;                      
        1419    
        1420     --  @Ret ireeServic eStatusCou nt
        1421     SET @Que ry = ' SEL ECT @Retir eeServiceS tatusCount  = COUNT(* ) ' +
        1422                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1423                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1424                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1425                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID ' +
        1426                    '  J OIN AHOBPR .STD_SERVI CE_STATUS  svc  ON sv c.STD_SERV ICE_STATUS _ID = reg. STD_SERVIC E_STATUS_I D '
        1427                  + ' WH ERE svc.SE RVICE_STAT US = ''Ret iree'' '
        1428                  + @Cri teria;
        1429                    
        1430     PRINT @Q uery;
        1431     EXEC sp_ executesql  @Query,   N'@Retiree ServiceSta tusCount I NT OUTPUT' , @Retiree ServiceSta tusCount O UTPUT;                      
        1432    
        1433        
        1434                                                                 
        1435   -- Deploym ent Counts   
        1436     SET @Que ry = 'WITH  Deploymen ts
        1437     AS ( 
        1438       SELECT  
        1439           dp ly.REGISTR ANT_ID ,
        1440         CASE  WHEN (SUM (CASE WHEN  [DEPLOYME NT_COUNTRY ] = ''Iraq '' 
        1441                                AND  [DEPLOYME NT_START_D ATE] > ''2 0010911'' 
        1442                                THE N 1 ELSE 0  END) )> 0  
        1443               THEN 1 EL SE 0 END A S Iraq911C ount,
        1444         CASE  WHEN (SUM (CASE WHEN  [DEPLOYME NT_COUNTRY ] = ''Afgh anistan''   
        1445                                AND  [DEPLOYME NT_START_D ATE] > ''2 0010911'' 
        1446                               THEN  1 ELSE 0  END)) > 0
        1447               THEN 1 EL SE 0 END A S Afgh911C ount,               
        1448         CASE  WHEN (SUM (CASE WHEN  [DEPLOYME NT_COUNTRY ] = ''Djib outi''  
        1449                                AND  [DEPLOYME NT_START_D ATE] > ''2 0010911'' 
        1450                               THEN  1 ELSE 0  END)) > 0
        1451               THEN 1 EL SE 0 END A S Djibouti 911Count,                
        1452         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'')
        1453                                AND  [DEPLOYME NT_START_D ATE] > ''2 0010911'' 
        1454                                THE N 1 ELSE 0  END)) > 0
        1455               THEN 1 EL SE 0 END A S SWA911Co unt,
        1456         CASE  WHEN (SUM (CASE WHEN  ([DEPLOYM ENT_START_ DATE] BETW EEN ''1990 0802'' AND  ''2001091 1'' ) 
        1457                                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'')
        1458                               THEN  1 ELSE 0  END)) > 0
        1459               THEN 1 EL SE 0 END   AS Pre911C ount
        1460       FROM [ AHOBPR].[R EGISTRANT_ DEPLOYMENT ] dply
        1461           JO IN AHOBPR. REGISTRANT  Reg ON Re g.REGISTRA NT_ID = dp ly.REGISTR ANT_ID
        1462           JO IN AHOBPR. FORM_RESPO NSE resp O N resp.REG ISTRANT_ID  = dply.RE GISTRANT_I D
        1463           JO IN AHOBPR. FORM_RESPO NSE_STATUS  responseS tat ON res ponseStat. FORM_RESPO NSE_ID = r esp.FORM_R ESPONSE_ID    
        1464                 WHERE 1  = 1 ' +
        1465                 @Criter ia +                 
        1466       ' GROU P BY dply. REGISTRANT _ID 
        1467        )
        1468        SELEC T @Afgh911 Count =  S UM(ISNULL( Deployment s.Afgh911C ount,0))  
        1469               ,@Iraq911 Count =  S UM(ISNULL( Deployment s.Iraq911C ount,0))
        1470               ,@SWA911C ount = SUM (ISNULL(De ployments. SWA911Coun t,0))
        1471               ,@Pre911C ount =   S UM(ISNULL( Deployment s.Pre911Co unt,0))
        1472               ,@Djibout i911Count  = SUM(ISNU LL(Deploym ents.Djibo uti911Coun t,0))
        1473         FROM  Deploymen ts' ;
        1474         
        1475     PRINT @Q uery;
        1476     EXEC sp_ executesql  @Query,  
        1477          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'
        1478         , @A fgh911Coun t OUTPUT,  @Iraq911Co unt OUTPUT , @SWA911C ount OUTPU T, @Pre911 Count OUTP UT, @Djibo uti911Coun t OUTPUT;              
        1479  
        1480     
        1481        CREAT E TABLE #D aysToParti cipant(DAY S INT);
        1482      
        1483       -- Med ian Days f rom Eligib le to Part icipant St atus    
        1484       -- 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
        1485  
        1486       SET @Q uery = 'WI TH eligibl
        1487         AS (  
        1488              SELECT [RE GISTRANT_I D],MIN([CR EATED]) AS  DateEligi ble
        1489                FROM [AH OBPR].[PRO CESS_METRI CS]
        1490               WHERE [PR OCESS_METR ICS_VALUE]  = ''Eligi ble''
        1491               GROUP BY  [REGISTRAN T_ID]
        1492            ) ,
        1493         part icipant 
        1494         AS (
        1495            S ELECT [REG ISTRANT_ID ],MAX([CRE ATED]) AS  DatePartic ipant
        1496               FROM [AHO BPR].[PROC ESS_METRIC S]
        1497              WHERE [PRO CESS_METRI CS_VALUE]  = ''Partic ipant''   
        1498               GROUP BY  [REGISTRAN T_ID]
        1499              )
        1500        INSER T INTO #Da ysToPartic ipant(DAYS )
        1501       SELECT  
        1502         CASE  WHEN Date Participan t > DateEl igible THE N DATEDIFF (Day,DateE ligible,Da teParticip ant) ELSE  0 END AS D aysDiffere nce
        1503         FROM  [AHOBPR]. [REGISTRAN T] reg
        1504         JOIN  eligible  ON reg.REG ISTRANT_ID  = eligibl e.REGISTRA NT_ID
        1505         JOIN  participa nt ON reg. REGISTRANT _ID = part icipant.RE GISTRANT_I D   
        1506         JOIN  AHOBPR.FO RM_RESPONS E resp ON  resp.REGIS TRANT_ID =  reg.REGIS TRANT_ID
        1507         JOIN  AHOBPR.FO RM_RESPONS E_STATUS r esponseSta t ON respo nseStat.FO RM_RESPONS E_ID = res p.FORM_RES PONSE_ID '  +
        1508       'WHERE  1 = 1 '   + @Criteri a +  
        1509      ' ORDER  BY DaysDi fference';
        1510  
        1511     PRINT @Q uery;
        1512     EXECUTE( @Query);
        1513        
        1514       WITH C ounts AS
        1515       (
        1516          SEL ECT c=COUN T(*)
        1517          FRO M #DaysToP articipant
        1518       )
        1519       SELECT  @MedianDa ysToPartic ipant = AV G(0. + DAY S)
        1520       FROM C ounts a
        1521       CROSS  APPLY
        1522       (
        1523          SEL ECT TOP((( a.c - 1) /  2) + (1 +  (1 - a.c  % 2)))
        1524              DAYS, r=RO W_NUMBER()  OVER (ORD ER BY DAYS )
        1525          FRO M #DaysToP articipant  b
        1526          ORD ER BY DAYS
        1527       ) p
        1528       WHERE  r BETWEEN  ((a.c - 1)  / 2) + 1  AND (((a.c  - 1) / 2)  + (1 + (1  - a.c % 2 ))); 
        1529            
        1530       DROP   TABLE #Day sToPartici pant;                     
        1531    
        1532    -- Return  Results
        1533      SELECT  ISNULL(@Pa rticipantS tatusCount ,0) AS Par ticipantSt atusCount,
        1534              ISNULL(@He althConcer nsCount,0)  AS Report edHealthCo ncernsCoun t,
        1535              ISNULL(@No HealthConc ernsCount, 0) AS  NoR eportedHea lthConcern sCount,
        1536              ISNULL(@Re questSeenC ount,0) AS  RequestSe enCount,
        1537              ISNULL(@No RequestSee nCount,0)  AS NoReque stSeenCoun t,
        1538              ISNULL(@Do NotKnowReq uestSeenCo unt,0) AS  DoNotKnowR equestSeen Count,
        1539              ISNULL(@Ve teranServi ceStatusCo unt,0) AS  VeteranSer viceStatus Count ,
        1540              ISNULL(@Ac tiveDutySe rviceStatu sCount,0)  AS  Active DutyServic eStatusCou nt,
        1541              ISNULL(@Re tireeServi ceStatusCo unt,0) AS  RetireeSer viceStatus Count,
        1542              ISNULL(@Af gh911Count ,0) AS  Af gh911Count ,
        1543              ISNULL(@Ir aq911Count ,0) AS Ira q911Count,
        1544              ISNULL(@SW A911Count, 0) AS  Sou thWestAsia 911Count,
        1545              ISNULL(@Pr e911Count, 0) AS  Pre 911Count,
        1546              ISNULL(@Me dianDaysTo Participan t,0.0) AS  MedianDays ToParticip ant,
        1547              ISNULL(@Dj ibouti911C ount,0) AS  Djibouti9 11Count ;
        1548  
        1549   END
        1550  
        1551   -- exec [A HOBPR].[SP _ReportPar ticipation ] @StartDa te = '2015 0901'
        1552   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Assigne dLocationT ype = 'NLA '
        1553   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Assigne dLocationT ype = 'VIS N', @Assig nedLocatio nKey = 'V1 6'
        1554   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Assigne dLocationT ype = 'Bas e', @Assig nedLocatio nKey = '10 00089'
        1555   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Assigne dLocationT ype = 'Ins titution',  @Assigned LocationKe y = '10000 89'
        1556   -- exec [A HOBPR].[SP _ReportPar ticipation ]
        1557   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Evaluat edLocation Type = 'NL A'
        1558   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Evaluat edLocation Type = 'VI SN', @Eval uatedLocat ionKey = ' V16'
        1559   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Evaluat edLocation Type = 'Ba se', @Eval uatedLocat ionKey = ' 1000089'
        1560   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Evaluat edLocation Type = 'In stitution' , @Evaluat edLocation Key = '100 0089'
        1561  
        1562  
        1563  
        1564  
        1565   ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
        1566   GO
        1567  
        1568   PRINT 'DRO P and CREA TE PROCEDU RE [AHOBPR ].[SP_Repo rtRegistra ntContact] ...';
        1569   GO
        1570  
        1571   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'))
        1572   DROP PROCE DURE [AHOB PR].[SP_Re portRegist rantContac t]
        1573   GO
        1574  
        1575  
        1576   -- ======= ========== ========== ========== ========
        1577   -- Author:                Bruce  Clegg
        1578   -- Create  date: Jan  12, 2015
        1579   -- Descrip tion: Used  for the A HOBPR Cont act Report   -- exec  [AHOBPR].[ SP_ReportR egistrantC ontact]     (More opt ions at bo ttom)
        1580   -- 2015-02 -23 - Cleg g - provid e individu al field n ames
        1581   -- 2015033 0 - Bruce  Clegg - Ad ded VisnId  value of  NLA to fin d Null loc ations
        1582   -- 2015042 7 - Bruce  Clegg - Ch ange to Lo cationType  and Key,  for both A ssigned an d Evaluate d Location s
        1583   -- 2015042 9 - Bruce  Clegg - Ad ded Email  column (ag ain)
        1584   -- 2015061 7 - D. Bar r - Added  state para meter
        1585   -- 2015072 2 - Bruce  Clegg - Fi x bug with  @Evaluate dLocationT ype = 'Bas e'
        1586   -- 2015090 1 - Bruce  Clegg Fix  Main phone .  TYPE is  not NULL  so old way  does not  work
        1587   -- ======= ========== ========== ========== ========
        1588   CREATE PRO CEDURE [AH OBPR].[SP_ ReportRegi strantCont act]
        1589          @Re gistrantSt atus       VARCHAR(50 ) = '',     -- '1,2,3 ,4,5,6,7,8 '
        1590          @Sv cStatus               VARCHAR(50 ) = '',     -- '1,2,3 '
        1591          @Ad minFlagId             INT = 0,               -- 60
        1592          @Ad minFromDat eText      VARCHAR(50 ) = NULL,
        1593          @Ad minToDateT ext        VARCHAR(50 ) = NULL,
        1594          @Su bPopulatio nFlagId    INT = 0,               -- 65
        1595          @As signedLoca tionType   VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        1596          @As signedLoca tionKey    VARCHAR(50 ) = NULL,   -- 'V16',  'V01'     1000109,   1000089
        1597          @Ev aluatedLoc ationType  VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        1598          @Ev aluatedLoc ationKey   VARCHAR(50 ) = NULL,   -- 'V16',  'V01'     1000109,   1000089
        1599          @Co mpletedFro mDateText  VARCHAR(50 ) = NULL,
        1600          @Co mpletedToD ateText    VARCHAR(50 ) = NULL,
        1601          @st ate varcha r(8000) =  NULL -- Mu ltiple sta tes, comma -separated  values wh en not NUL
        1602   AS
        1603   BEGIN
        1604  
        1605   DECLARE @A dminFromDa te DATETIM E2(0) = IS NULL(dbo.C leanDate(@ AdminFromD ateText),' 19000101')
        1606   DECLARE @A dminToDate    DATETIM E2(0) = db o.AddMaxTi me(ISNULL( dbo.CleanD ate(@Admin ToDateText ),GETDATE( ))); 
        1607   DECLARE @C ompletedFr omDate DAT ETIME2(0)  = ISNULL(d bo.CleanDa te(@Comple tedFromDat eText),'19 000101')
        1608   DECLARE @C ompletedTo Date   DAT ETIME2(0)  = dbo.AddM axTime(ISN ULL(dbo.Cl eanDate(@C ompletedTo DateText), GETDATE()) ); 
        1609  
        1610   --PRINT @A ssignedLoc ationType;
        1611   --PRINT @A ssignedLoc ationKey;
        1612  
        1613   DECLARE @A ssignedIns titutionId  INT = 0,
        1614           @E valuatedIn stitutionI d INT = 0;
        1615  
        1616   IF @Assign edLocation Type IN (' Base','Ins titution')  
        1617   AND ISNUME RIC(@Assig nedLocatio nKey) = 1
        1618     SET @Ass ignedInsti tutionId =  CONVERT(I NT,@Assign edLocation Key);
        1619     
        1620   IF @Evalua tedLocatio nType IN ( 'Base','In stitution'
        1621   AND ISNUME RIC(@Evalu atedLocati onKey) = 1
        1622     SET @Eva luatedInst itutionId  = CONVERT( INT,@Evalu atedLocati onKey);
        1623  
        1624   WITH addr 
        1625   AS (     
        1626       SELECT  REGISTRAN T_ID,
        1627                            ISNULL( STREET1,'' )  AS STRE ET1, 
        1628                            ISNULL( STREET2,'' )  AS STRE ET2,
        1629                            ISNULL( CITY,'')      AS CITY ,
        1630                            ISNULL( [STATE],'' )  AS [STA TE],
        1631                            ISNULL( COUNTRY,'' )  AS COUN TRY,
        1632                            ISNULL( ZIP,'')       AS ZIP
        1633                      FR OM  AHOBPR .[REGISTRA NT_ADDRESS ]
        1634       )  
        1635   ,phone1 
        1636   AS (     
        1637       SELECT  REGISTRAN T_ID,                      
        1638                            ISNULL( PHONE_NUMB ER,'') AS  PHONE_NUMB ER_Main
        1639         FROM  AHOBPR.RE GISTRANT_P HONE      
        1640        WHERE  ISNULL(TY PE,'') !=  'Mobile'
        1641       )        
        1642   ,phone2 
        1643   AS (     
        1644       SELECT  REGISTRAN T_ID,                      
        1645                            ISNULL( PHONE_NUMB ER,'') AS  PHONE_NUMB ER_Mobile
        1646         FROM  AHOBPR.RE GISTRANT_P HONE      
        1647        WHERE  TYPE = 'M obile'
        1648       )
        1649   ,email 
        1650   AS (     
        1651       SELECT  REGISTRAN T_ID,                      
        1652                            ISNULL( EMAIL,'')  AS EMAIL
        1653         FROM  AHOBPR.RE GISTRANT_E MAIL      
        1654       )
        1655   ,Pref    
        1656   AS(
        1657         SELE CT fr.REGI STRANT_ID 
        1658               ,ans.TEXT  AS Contac tPreferenc e
        1659           FR OM  AHOBPR .FORM_RESP ONSE fr
        1660           JO IN AHOBPR. FORM_RESPO NSE_QUESTI ON rQst ON  fr.FORM_R ESPONSE_ID  = rQst.FO RM_RESPONS E_ID
        1661           JO IN AHOBPR. STD_FORM_Q UESTION qs t ON rQst. STD_FORM_Q UESTION_ID  = qst.STD _FORM_QUES TION_ID
        1662           JO IN AHOBPR. FORM_RESPO NSE_ANSWER  rAns ON r Qst.FORM_R ESPONSE_QU ESTION_ID  = rAns.FOR M_RESPONSE _QUESTION_ ID
        1663           JO IN AHOBPR. STD_FORM_A NSWER ans  ON ans.STD _FORM_ANSW ER_ID = rA ns.STD_FOR M_ANSWER_I D
        1664          WHE RE qst.STD _FORM_ID =  fr.STD_FO RM_ID
        1665            A ND qst.FOR M_QUESTION _UNIQUE_ID  = '8.A'
        1666    )            
        1667           SE LECT 
        1668                  reg.RE GISTRANT_I D,
        1669                           ISNULL(r eg.LAST_NA ME,'') AS   LAST_NAME ,
        1670              ISNULL(reg .FIRST_NAM E,'') AS   FIRST_NAME
        1671              ISNULL(Pre f.ContactP reference, '') AS  Co ntactPrefe rence,
        1672                           ISNULL(S TREET1,'')  AS  STREE T1, 
        1673                           ISNULL(S TREET2,'')  AS  STREE T2,
        1674                           ISNULL(C ITY,'') AS   CITY,
        1675                           ISNULL([ STATE],'')  AS  [STAT E],
        1676                           ISNULL(C OUNTRY,'')  AS  COUNT RY,
        1677                           ISNULL(Z IP,'') AS   ZIP,
        1678                           ISNULL(p hone1.PHON E_NUMBER_M ain,'') AS   PHONE_NU MBER_Main,
        1679                           ISNULL(p hone2.PHON E_NUMBER_M obile,'')  AS  PHONE_ NUMBER_Mob ile,
        1680              ISNULL(ema il.EMAIL,' ') AS EMAI L       
        1681              FROM AHOBP R.REGISTRA NT reg    
        1682              LEFT JOIN  addr  
        1683                      ON  reg.REGIS TRANT_ID =  addr.REGI STRANT_ID       
        1684              LEFT JOIN  phone1  
        1685                      ON  reg.REGIS TRANT_ID =  phone1.RE GISTRANT_I D                       
        1686              LEFT JOIN  phone2  
        1687                      ON  reg.REGIS TRANT_ID =  phone2.RE GISTRANT_I D            
        1688              LEFT JOIN  email  
        1689                      ON  reg.REGIS TRANT_ID =  email.REG ISTRANT_ID                               
        1690              LEFT JOIN  Pref  
        1691                      ON  reg.REGIS TRANT_ID =  Pref.REGI STRANT_ID                                         
        1692            W HERE (reg. STD_REGIST RANT_STATU S_ID IN (S ELECT * FR OM fncSpli t(@Registr antStatus,  ',')) 
        1693                    OR I SNULL(@Reg istrantSta tus,'') =  '')
        1694               AND (reg. STD_SERVIC E_STATUS_I D IN (SELE CT * FROM  fncSplit(@ SvcStatus,  ',')) 
        1695                    OR I SNULL(@Svc Status,'')  = '')
        1696        AND ( @AssignedL ocationTyp e IS NULL
        1697              OR (@Assig nedLocatio nType = 'N LA' 
        1698                  AND re g.STD_INST ITUTION_ID  IS NULL)
        1699              OR (@Assig nedLocatio nType = 'V ISN' 
        1700                   AND E XISTS(SELE CT * FROM  AHOBPR.VIE W_FACILITY _LOOKUP in st
        1701                                        WHERE  inst.ID =  reg.STD_IN STITUTION_ ID
        1702                                          AND  inst.VisnI D = @Assig nedLocatio nKey)
        1703                 )  
        1704              OR (@Assig nedLocatio nType = 'B ase' 
        1705                   AND E XISTS(SELE CT * FROM  AHOBPR.VIE W_FACILITY _LOOKUP in st
        1706                                        WHERE  inst.ID =  reg.STD_IN STITUTION_ ID
        1707                                          AND  inst.BASE_ ID = @Assi gnedInstit utionId)
        1708                 )  
        1709              OR (@Assig nedLocatio nType = 'I nstitution
        1710                   AND r eg.STD_INS TITUTION_I D = @Assig nedInstitu tionId)      
        1711              )
        1712        AND ( @Evaluated LocationTy pe IS NULL
        1713              OR (@Evalu atedLocati onType = ' NLA' 
        1714                  AND NO T EXISTS(  SELECT * F ROM AHOBPR .REGISTRAN T_VISIT ev al
        1715                                     WHERE eva l.REGISTRA NT_ID = Re g.REGISTRA NT_ID 
        1716                                       AND eva l.EVALUATI ON_FLAG =  'Y') 
        1717                 )
        1718              OR (@Evalu atedLocati onType = ' VISN' 
        1719                   AND E XISTS(SELE CT * FROM  AHOBPR.REG ISTRANT_VI SIT eval
        1720                                         JOIN  AHOBPR.VIE W_FACILITY _LOOKUP in st ON inst .ID = eval .STD_INSTI TUTION_ID
        1721                                        WHERE  eval.REGIS TRANT_ID =  Reg.REGIS TRANT_ID
        1722                                          AND  inst.VisnI D = @Evalu atedLocati onKey
        1723                                          AND  eval.EVALU ATION_FLAG  = 'Y') 
        1724                 )  
        1725              OR (@Evalu atedLocati onType = ' Base' 
        1726                   AND E XISTS(SELE CT * FROM  AHOBPR.REG ISTRANT_VI SIT eval
        1727                                         JOIN  AHOBPR.VIE W_FACILITY _LOOKUP in st ON inst .ID = eval .STD_INSTI TUTION_ID
        1728                                        WHERE  eval.REGIS TRANT_ID =  Reg.REGIS TRANT_ID
        1729                                          AND  inst.BASE_ ID = @Eval uatedInsti tutionId
        1730                                          AND  eval.EVALU ATION_FLAG  = 'Y' )     
        1731                 )  
        1732              OR (@Evalu atedLocati onType = ' Institutio n' 
        1733                   AND E XISTS(SELE CT * FROM  AHOBPR.REG ISTRANT_VI SIT eval
        1734                                        WHERE  eval.REGIS TRANT_ID =  Reg.REGIS TRANT_ID
        1735                                          AND  eval.STD_I NSTITUTION _ID = @Eva luatedInst itutionId
        1736                                          AND  eval.EVALU ATION_FLAG  = 'Y') 
        1737                 )  
        1738              )           
        1739        AND ( ISNULL(@Su bPopulatio nFlagId, 0 ) = 0 
        1740              OR EXISTS( SELECT [RE GISTRANT_I D] FROM AH OBPR.REGIS TRANT_REGI STRY_FLAG  popFlag
        1741                          WHERE pop Flag.REGIS TRANT_ID =  reg.REGIS TRANT_ID
        1742                            AND pop Flag.STD_R EGISTRY_FL AG_ID = @S ubPopulati onFlagId))
        1743        AND ( ISNULL(@Ad minFlagId,  0) = 0 
        1744              OR EXISTS( SELECT [RE GISTRANT_I D] FROM AH OBPR.REGIS TRANT_REGI STRY_FLAG  adminFlag
        1745                          WHERE adm inFlag.REG ISTRANT_ID  = reg.REG ISTRANT_ID
        1746                            AND adm inFlag.STD _REGISTRY_ FLAG_ID =  @AdminFlag Id
        1747                            AND adm inFlag.CRE ATED BETWE EN @AdminF romDate AN D @AdminTo Date))   
        1748        AND ( (ISNULL(@C ompletedFr omDateText ,'') = ''  AND ISNULL (@Complete dToDateTex t,'') = ''  )
        1749            O R EXISTS(S ELECT resp .REGISTRAN T_ID, stat .QUESTIONN AIRE_COMPL ETED_DATE
        1750                          FROM AHOB PR.FORM_RE SPONSE_STA TUS stat
        1751                          JOIN AHOB PR.FORM_RE SPONSE res p
        1752                            ON resp .FORM_RESP ONSE_ID =  stat.FORM_ RESPONSE_I D
        1753                         WHERE resp .REGISTRAN T_ID = reg .REGISTRAN T_ID
        1754                           AND stat .QUESTIONN AIRE_COMPL ETED_DATE  BETWEEN @C ompletedFr omDate AND  @Complete dToDate))
        1755       AND (I SNULL(@sta te,'') = ' '
        1756                   OR EX ISTS(SELEC T DISTINCT  addr.REGI STRANT_ID 
        1757                                FRO M AHOBPR.R EGISTRANT_ ADDRESS ad dr 
        1758                               WHER E addr.REG ISTRANT_ID  = reg.REG ISTRANT_ID  
        1759                                 AN D addr.STA TE  IN (SE LECT * FRO M fncSplit (@state, ' ,'))))
        1760         ;
        1761                                                                                                                          
        1762   END
        1763   -- exec [A HOBPR].[SP _ReportReg istrantCon tact]
        1764   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Ass ignedLocat ionType =  'NLA'
        1765   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Ass ignedLocat ionType =  'VISN', @A ssignedLoc ationKey =  'V16'
        1766   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Ass ignedLocat ionType =  'Base', @A ssignedLoc ationKey =  '1000089'
        1767   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Ass ignedLocat ionType =  'Instituti on', @Assi gnedLocati onKey = '1 000089'
        1768   -- exec [A HOBPR].[SP _ReportReg istrantCon tact]
        1769   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Eva luatedLoca tionType =  'NLA'
        1770   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Eva luatedLoca tionType =  'VISN', @ EvaluatedL ocationKey  = 'V16'
        1771   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Eva luatedLoca tionType =  'Base', @ EvaluatedL ocationKey  = '100008 9'
        1772   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Eva luatedLoca tionType =  'Institut ion', @Eva luatedLoca tionKey =  '1000089'
        1773  
        1774  
        1775          --@ AssignedLo cationType   VARCHAR( 10) = NULL ,  -- 'VIS N', 'Base' , 'Institu tion', 'NL A' = No Lo cation Ass igned
        1776          --@ AssignedLo cationKey    VARCHAR( 50) = NULL ,  -- 'V16 ', 'V01'     1000109,   1000089
        1777    --exec [A HOBPR].[SP _ReportReg istrantCon tact] '5,6 ,7', NULL,  0, NULL,  NULL, 0, 0 , NULL  @E valuatedLo cationType
        1778    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , '2', 0,  NULL, NULL , 0, 0, NU LL
        1779    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , NULL, 60 , NULL, '2 0141204',  0, 0, NULL
        1780    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , NULL, 60 , '12/04/2 014', NULL , 0, 0, NU LL
        1781    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , NULL, 60 , '12/03/2 014', '12/ 12/2014',  0, 0, NULL
        1782    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , NULL, 0,  NULL, NUL L, 65, 0,  NULL
        1783    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , NULL, 0,  NULL, NUL L, 0, 1000 109, NULL
        1784    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , NULL, 0,  NULL, NUL L, 0, 0, ' NLA' --'V0 1'
        1785    --exec [A HOBPR].[SP _ReportReg istrantCon tact] @Com pletedFrom DateText =  '08/13/20 14'
        1786    --exec [A HOBPR].[SP _ReportReg istrantCon tact] @Com pletedToDa teText = ' 08/13/2014 '
        1787    --exec [A HOBPR].[SP _ReportReg istrantCon tact] @Com pletedFrom DateText =  '08/13/20 14', @Comp letedToDat eText = '0 8/13/2014'
        1788  
        1789  
        1790   GO
        1791  
        1792   PRINT 'DRO P and CREA TE PROCEDU RE [AHOBPR ].[SP_Repo rtParticip antDetails ]...';
        1793   GO
        1794  
        1795   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'))
        1796   DROP PROCE DURE [AHOB PR].[SP_Re portPartic ipantDetai ls]
        1797   GO
        1798  
        1799  
        1800   -- ======= ========== ========== ========== ========
        1801   -- Author:                Bruce  Clegg
        1802   -- Create  date: Jan  5, 2015
        1803   -- 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)
        1804   -- 2015033 0 - Bruce  Clegg - Ad ded VisnId  value of  NLA to fin d Null loc ations
        1805   -- 2015042 7 - Bruce  Clegg - Ch ange to Lo cationType  and Key,  for both A ssigned an d Evaluate d Location s
        1806   -- 2015050 4 - Bruce  Clegg - Fi x @Request Seen selec tion logic  to match  Participat ion Report
        1807   -- 2015071 0 - Bruce  Clegg - Re write usin g Dynamic  SQL for Pe rformance
        1808   -- 2015091 0 - Bruce  Clegg - Re moved sele ction for  Question 1 .2.A for D eployments
        1809   -- 2015091 6 - Bruce  Clegg - Re place Elig able with  Questionai re start d ate
        1810   -- ======= ========== ========== ========== ========
        1811   CREATE PRO CEDURE [AH OBPR].[SP_ ReportPart icipantDet ails]
        1812          @St artDate DA TETIME2(0)  = NULL,  
        1813          @En dDate DATE TIME2(0) =  NULL,
        1814          @Re gistrantSt atus  VARC HAR(50) =  '',  -- 'P articipant ', 'Review  - Not Eli gible', 'E ligible',  'No Consen t', 'Conse nt', 'Revi ew'
        1815          @Sv cStatus  V ARCHAR(50)  = '',          -- 'V eteran', ' Retiree',  'Active Du ty'
        1816          @Re questSeen   VARCHAR(5 0) = '',        -- 'Y es', 'No',  'Unknown'
        1817          @He althConcer n  VARCHAR (50) = '',      -- 'Y es', 'No'
        1818          @De ploymentGr oup VARCHA R(50) = '' ,    -- 'A fgh911', ' Iraq911',  'Southwest AsiaAfter9 11', 'Pre9 11',  'Dji boutiAfter 911'
        1819          @As signedLoca tionType   VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        1820          @As signedLoca tionKey    VARCHAR(50 ) = NULL,   -- 'V16',  'V01'     1000109,   1000089
        1821          @Ev aluatedLoc ationType  VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        1822          @Ev aluatedLoc ationKey   VARCHAR(50 ) = NULL    -- 'V16',  'V01'     1000109,   1000089
        1823   AS
        1824   BEGIN
        1825  
        1826     SET @Sta rtDate = I SNULL(@Sta rtDate,'19 900802');   -- Desert  Storm sta rt date
        1827     SET @End Date = ISN ULL(@EndDa te, GetDat e());
        1828     SET @End Date = dbo .AddMaxTim e(@EndDate );  -- Add s 23:59:59  to criter ia paramet er
        1829  
        1830     DECLARE  @AssignedI nstitution Id INT = 0 ,
        1831              @Evaluated Institutio nId INT =  0;
        1832     DECLARE  @Query NVA RCHAR(MAX) ;
        1833  
        1834     IF @Assi gnedLocati onType IN  ('Base','I nstitution ') 
        1835     AND ISNU MERIC(@Ass ignedLocat ionKey) =  1
        1836       SET @A ssignedIns titutionId  = CONVERT (INT,@Assi gnedLocati onKey);
        1837     
        1838     IF @Eval uatedLocat ionType IN  ('Base',' Institutio n') 
        1839     AND ISNU MERIC(@Eva luatedLoca tionKey) =  1
        1840       SET @E valuatedIn stitutionI d = CONVER T(INT,@Eva luatedLoca tionKey);
        1841  
        1842     --Temp t able for D eployments
        1843     CREATE T ABLE #Depl oyments
        1844     (
        1845               [REGISTRA NT_ID] INT
        1846     ); 
        1847     
        1848     -- INSER T Registra nts if the y are in t he Deploym ent Group
        1849     SET @Que ry = ' INS ERT INTO # Deployment s([REGISTR ANT_ID]) '  +
        1850                   ' SEL ECT DISTIN CT deploym ent.REGIST RANT_ID '  +
        1851                   '   F ROM AHOBPR .REGISTRAN T_DEPLOYME NT deploym ent  ' +
        1852                   '  WH ERE 1 = 1  ';
        1853     IF @Depl oymentGrou p = 'Afgh9 11'    
        1854        SET @ Query =  @ Query + '  AND [DEPLO YMENT_COUN TRY] = ''A fghanistan '' ' + 
        1855                                 '  AND [DEPLO YMENT_STAR T_DATE] >  ''20010911 '' ';
        1856     ELSE
        1857     IF @Depl oymentGrou p = 'Iraq9 11'
        1858         SET  @Query =   @Query + '  AND [DEPL OYMENT_COU NTRY] = '' Iraq'' ' +  
        1859                                    'AND [DEPL OYMENT_STA RT_DATE] >  ''2001091 1'' '; 
        1860     ELSE
        1861     IF @Depl oymentGrou p = 'Djibo utiAfter91 1'
        1862         SET  @Query =   @Query + '  AND [DEPL OYMENT_COU NTRY] = '' Djibouti''  ' + 
        1863                                    'AND [DEPL OYMENT_STA RT_DATE] >  ''2001091 1'' '; 
        1864     ELSE
        1865     IF @Depl oymentGrou p = 'South westAsiaAf ter911'
        1866         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'' ) ' +
        1867                                  ' AND [DEPLO YMENT_STAR T_DATE] >  ''20010911 ''  ';
        1868     ELSE
        1869     IF @Depl oymentGrou p = 'Pre91 1'
        1870         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'')  ' +     
        1871                                  '  AND [DEPL OYMENT_STA RT_DATE] B ETWEEN ''1 9900802''  AND ''2001 0911''  ';
        1872     IF ISNUL L(@Deploym entGroup,' ') > ''
        1873       EXECUT E(@Query);
        1874      
        1875     SET @Que ry = '
        1876       WITH p articipant  
        1877         AS (
        1878            S ELECT [REG ISTRANT_ID ], CONVERT (DATE,MAX( [CREATED]) ) AS DateP articipant
        1879               FROM [AHO BPR].[PROC ESS_METRIC S]
        1880              WHERE [PRO CESS_METRI CS_VALUE]  = ''Partic ipant''   
        1881              GROUP BY [ REGISTRANT _ID]
        1882              )        
        1883           SE LECT reg.R EGISTRANT_ ID
        1884                          ,(reg.LAS T_NAME + ' ', '' + re g.FIRST_NA ME) AS Nam e
        1885                          ,stat.REG ISTRANT_ST ATUS
        1886                          ,svc.SERV ICE_STATUS
        1887                          ,QUESTION NAIRE_COMP LETED_DATE
        1888                          ,ISNULL(r eg.REQUEST _SEEN_RESP ONSE, ''Un known'') A S REQUEST_ SEEN_RESPO NSE
        1889                          ,ISNULL(r eg.HEALTH_ CONCERNS_R ESPONSE,'' No'') AS H EALTH_CONC ERNS_RESPO NSE
        1890                          ,ISNULL(i nst.Name,' ''') AS In stitutionN ame
        1891                          ,CONVERT( VARCHAR(10 ), respons eStat.QUES TIONNAIRE_ COMPLETED_ DATE, 101)  AS QUESTI ONNAIRE_CO MPLETED_Di splay
        1892                          ,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
        1893            , reg.BIRTH_ DATE AS Bi rthDate
        1894            , CONVERT(VA RCHAR(10),  reg.BIRTH _DATE, 101 ) AS Birth DateDispla y
        1895              FROM AHOBP R.REGISTRA NT reg
        1896                    JOIN  AHOBPR.ST D_REGISTRA NT_STATUS  stat 
        1897                      ON  reg.STD_R EGISTRANT_ STATUS_ID  = stat.STD _REGISTRAN T_STATUS_I D
        1898                    JOIN  AHOBPR.ST D_SERVICE_ STATUS svc
        1899                      ON  svc.STD_S ERVICE_STA TUS_ID = r eg.STD_SER VICE_STATU S_ID
        1900                    JOIN  AHOBPR.FO RM_RESPONS E resp 
        1901                      ON  resp.REGI STRANT_ID  = reg.REGI STRANT_ID
        1902                    JOIN  AHOBPR.FO RM_RESPONS E_STATUS r esponseSta t
        1903                      ON  responseS tat.FORM_R ESPONSE_ID  = resp.FO RM_RESPONS E_ID
        1904       JOIN p articipant  
        1905         ON r eg.REGISTR ANT_ID = p articipant .REGISTRAN T_ID                      
        1906                    LEFT  JOIN AHOB PR.VIEW_FA CILITY_LOO KUP inst
        1907                      ON  inst.ID =  reg.STD_I NSTITUTION _ID
        1908            W HERE respo nseStat.QU ESTIONNAIR E_COMPLETE D_DATE BET WEEN ''' +  CONVERT(V ARCHAR(20) , @StartDa te,121) + 
        1909                                                           ''' AND ' '' + CONVE RT(VARCHAR (20), @End Date,121)  + ''' ';
        1910  
        1911     IF ISNUL L(@Registr antStatus, '') > ''
        1912              SET @Query  = @Query  + ' AND st at.REGISTR ANT_STATUS  = ''' + @ Registrant Status + ' '' ';
        1913  
        1914     IF ISNUL L(@SvcStat us,'') > ' '
        1915       IF @Sv cStatus =  'Veteran'
        1916              SET @Query  = @Query  + ' AND sv c.SERVICE_ STATUS = ' 'Separated '' ';
        1917           EL SE
        1918                SET @Que ry = @Quer y + ' AND  svc.SERVIC E_STATUS =  ''' +  @S vcStatus +  ''' ';
        1919  
        1920     IF ISNUL L(@HealthC oncern,'')  > ''
        1921              SET @Query  = @Query  + ' AND IS NULL(reg.H EALTH_CONC ERNS_RESPO NSE,''No'' ) = ''' +   @HealthCo ncern + '' ' ';
        1922  
        1923     IF ISNUL L(@Request Seen,'') >  ''
        1924       IF @Re questSeen  = 'Yes' OR  @RequestS een = 'No'  
        1925                 SET @Qu ery = @Que ry + 'AND  reg.REQUES T_SEEN_RES PONSE = '' ' + @Reque stSeen + ' '' ';
        1926       ELSE
        1927                 SET @Qu ery = @Que ry + 'AND  reg.REQUES T_SEEN_RES PONSE NOT  IN ( ''Yes '', ''No'' )  ';
        1928                 
        1929  
        1930     IF ISNUL L(@Deploym entGroup,' ') > ''
        1931              SET @Query  = @Query  + 'AND EXI STS(SELECT  * FROM #D eployments  WHERE #De ployments. REGISTRANT _ID = reg. REGISTRANT _ID) ';
        1932  
        1933     IF @Assi gnedLocati onType = ' NLA' 
        1934       SET @Q uery = @Qu ery + ' AN D reg.STD_ INSTITUTIO N_ID IS NU LL ' ;
        1935  
        1936     IF @Assi gnedLocati onType = ' VISN' 
        1937       SET @Q uery = @Qu ery + ' AN D EXISTS(S ELECT * FR OM AHOBPR. VIEW_FACIL ITY_LOOKUP  inst ' +
        1938                                                                  '  WHERE inst .ID = reg. STD_INSTIT UTION_ID '  + 
        1939                                                                  '    AND inst .VisnID =  ''' + @Ass ignedLocat ionKey + ' '') ';
        1940    
        1941     IF @Assi gnedLocati onType = ' Base' 
        1942       SET @Q uery = @Qu ery + ' AN D EXISTS(S ELECT * FR OM AHOBPR. VIEW_FACIL ITY_LOOKUP  inst ' +
        1943                                                          ' WHERE in st.ID = re g.STD_INST ITUTION_ID  ' +
        1944                                                          '   AND in st.BASE_ID  = ' + CON VERT(VARCH AR(20),@As signedInst itutionId)  + ') '
        1945    
        1946     IF @Assi gnedLocati onType = ' Institutio n' 
        1947       SET @Q uery = @Qu ery + ' AN D reg.STD_ INSTITUTIO N_ID = ' +  CONVERT(V ARCHAR(20) ,@Assigned Institutio nId);
        1948  
        1949     IF @Eval uatedLocat ionType =  'NLA' 
        1950       SET @Q uery = @Qu ery + ' AN D NOT EXIS TS( SELECT  * FROM AH OBPR.REGIS TRANT_VISI T eval ' +
        1951                                                                ' WH ERE eval.R EGISTRANT_ VISIT_ID =  reg.REGIS TRANT_ID '  +
        1952                                                                '    AND eval.E VALUATION_ FLAG = ''Y '') ' ; 
        1953    
        1954     IF @Eval uatedLocat ionType =  'VISN' 
        1955       SET @Q uery = @Qu ery + ' AN D EXISTS(S ELECT * FR OM AHOBPR. REGISTRANT _VISIT eva l ' +
        1956                                                            ' JOIN A HOBPR.VIEW _FACILITY_ LOOKUP ins t ON inst. ID = eval. STD_INSTIT UTION_ID '  +
        1957                                                          ' WHERE ev al.REGISTR ANT_VISIT_ ID = reg.R EGISTRANT_ ID ' +
        1958                                                            ' AND ev al.EVALUAT ION_FLAG =  ''Y'' ' +
        1959                                                            ' AND in st.VisnID  = ''' + @E valuatedLo cationKey  + ''') '; 
        1960    
        1961     IF @Eval uatedLocat ionType =  'Base' 
        1962       SET @Q uery = @Qu ery +  ' A ND EXISTS( SELECT * F ROM AHOBPR .REGISTRAN T_VISIT ev al ' +
        1963                                                            ' JOIN A HOBPR.VIEW _FACILITY_ LOOKUP ins t ON inst. ID = eval. STD_INSTIT UTION_ID '  +
        1964                                                          ' WHERE ev al.REGISTR ANT_VISIT_ ID = reg.R EGISTRANT_ ID ' +
        1965                                                            ' AND ev al.EVALUAT ION_FLAG =  ''Y'' ' +
        1966                                                            ' AND in st.BASE_ID  = ' + CON VERT(VARCH AR(20),@Ev aluatedIns titutionId ) + ') ';
        1967     
        1968     IF @Eval uatedLocat ionType =  'Instituti on' 
        1969       SET @Q uery = @Qu ery +  ' A ND EXISTS( SELECT * F ROM AHOBPR .REGISTRAN T_VISIT ev al ' +
        1970                                                            ' JOIN A HOBPR.VIEW _FACILITY_ LOOKUP ins t ON inst. ID = eval. STD_INSTIT UTION_ID '  +
        1971                                                          ' WHERE ev al.REGISTR ANT_VISIT_ ID = reg.R EGISTRANT_ ID ' +
        1972                                                            ' AND ev al.EVALUAT ION_FLAG =  ''Y'' ' +
        1973                                                            ' AND ev al.STD_INS TITUTION_I D = ' + CO NVERT(VARC HAR(20),@E valuatedIn stitutionI d)  + ') '
        1974  
        1975     SET @Que ry = @Quer y + ' ORDE R BY respo nseStat.QU ESTIONNAIR E_COMPLETE D_DATE ';
        1976  
        1977     PRINT @Q uery;
        1978     
        1979     EXECUTE( @Query);
        1980         
        1981     DROP TAB LE #Deploy ments;                                                                                                                 
        1982   END
        1983  
        1984   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] '20 150901'
        1985   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] '20 140101', ' 20150101',  NULL, NUL L, 
        1986   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @Re questSeen  = 'sdf'
        1987   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, ' Participan t'
        1988   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, 'Sepa rated'
        1989   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  'Yes'
        1990   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  'No'
        1991   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  'Unknown'
        1992   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, 'Ye s'
        1993   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, 'No '
        1994   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, NUL L, 'Afgh91 1'
        1995   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, NUL L, 'Iraq91 1'
        1996   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, NUL L, 'Southw estAsiaAft er911'
        1997   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, NUL L, 'Djibou tiAfter911 '
        1998   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, NUL L, 'Pre911 '
        1999  
        2000   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails]
        2001   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @As signedLoca tionType =  'NLA'
        2002   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @As signedLoca tionType =  'VISN', @ AssignedLo cationKey  = 'V16'
        2003   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @As signedLoca tionType =  'Base', @ AssignedLo cationKey  = '1000089 '
        2004   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @As signedLoca tionType =  'Institut ion', @Ass ignedLocat ionKey = ' 1000089'
        2005   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails]
        2006   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @Ev aluatedLoc ationType  = 'NLA'
        2007   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @Ev aluatedLoc ationType  = 'VISN',  @Evaluated LocationKe y = 'V16'
        2008   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @Ev aluatedLoc ationType  = 'Base',  @Evaluated LocationKe y = '10000 89'
        2009   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @Ev aluatedLoc ationType  = 'Institu tion', @Ev aluatedLoc ationKey =  '1000089'
        2010  
        2011  
        2012   GO
        2013  
        2014   INSERT INT O [dbo].[D atabaseCha ngeLog]
        2015               ([MajorRe leaseNumbe r]
        2016               ,[MinorRe leaseNumbe r]
        2017               ,[PointRe leaseNumbe r]
        2018               ,[Hotfix]
        2019               ,[ScriptN ame]
        2020               ,[ScriptD escription ]
        2021               ,[TargetR egistry]
        2022               ,[DateApp lied])
        2023        VALUE S
        2024               ('$(Major ReleaseNum ber)'
        2025               ,'$(Minor ReleaseNum ber)'
        2026               ,'$(Point ReleaseNum ber)'
        2027               ,0
        2028               ,'Registr y.AHOBPR.D atabase.Ro llback.sql '
        2029                            ,'Regis try.AHOBPR .Database. Rollback.s ql Script'
        2030               ,'AHOBPR'
        2031               ,GETDATE( ))
        2032  
        2033  
        2034   PRINT '';
        2035   PRINT 'Reg istry.AHOB PR.Databas e.Rollback .sql Scrip t Complete .';
        2036   PRINT '';
        2037   PRINT 'Com pleted ' +  CAST(GETD ATE() AS v archar(20) ) + '.';
        2038  
        2039   ---------- ---------- ---------- ---
        2040   -- END OF  GENERATED  DEPLOYMENT  --
        2041   ---------- ---------- ---------- ---