89. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 1/15/2018 12:47:39 AM Eastern Standard 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.

89.1 Files compared

# Location File Last Modified
1 AHOBPRe_v5.0_build3.zip\DatabaseScripts\AHOBPR\Increment 2\Prod\Increment 2c - 20151005\AHOBPR_Database_1_0_52.zip Registry.AHOBPR.Database.Rollback.sql Mon Oct 5 19:51:50 2015 UTC
2 AHOBPRe_v5.0_build3.zip\DatabaseScripts\AHOBPR\Increment 2\Prod\Increment 2c - 20151005\AHOBPR_Database_1_0_52.zip Registry.AHOBPR.Database.Rollback.sql Sat Oct 3 04:24:30 2015 UTC

89.2 Comparison summary

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

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

89.4 Active regular expressions

No regular expressions were active.

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