129. EPMO Open Source Coordination Office Redaction File Detail Report

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

129.1 Files compared

# Location File Last Modified
1 AHOBPRe_v4.4.17_bld4.zip\DatabaseScripts\AHOBPR\Increment 2\Prod\Increment 2c - 20151005\AHOBPR_Database_1_0_52.zip Registry.AHOBPR.Database.Build.1.0.52.sql Mon Oct 5 18:51:36 2015 UTC
2 AHOBPRe_v4.4.17_bld4.zip\DatabaseScripts\AHOBPR\Increment 2\Prod\Increment 2c - 20151005\AHOBPR_Database_1_0_52.zip Registry.AHOBPR.Database.Build.1.0.52.sql Mon Oct 5 18:44:12 2015 UTC

129.2 Comparison summary

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

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

129.4 Active regular expressions

No regular expressions were active.

129.5 Comparison detail

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