100. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 3/21/2018 5:29:12 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.

100.1 Files compared

# Location File Last Modified
1 Wed Mar 21 21:29:12 2018 UTC
2 AHOBPRe_v4.3.15_bld3.zip\DatabaseScripts\AHOBPR\Increment 2\Prod\Increment 2b - 20150915\AHOBPR_Database_1_0_51.zip Registry.AHOBPR.Database.Build.1.0.51.sql Thu Sep 10 16:08:48 2015 UTC

100.2 Comparison summary

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

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

100.4 Active regular expressions

No regular expressions were active.

100.5 Comparison detail

        1  
        2   :setvar Da tabaseName  "Registry "
        3   :setvar Ma jorRelease Number "1"
        4   :setvar Mi norRelease Number "0"
        5   :setvar Po intRelease Number "51 "
        6   :setvar De ployVersio n "2015090 9.1"
        7  
        8   PRINT ' 
        9   ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ------
        10   Registry.A HOBPR.Data base.Build .1.0.51.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 'DRO P TRIGGER  TRG_REGIST RANT_JSON_ INSERT...' ;
        47   GO
        48  
        49   IF  EXISTS  (SELECT *  FROM sys. triggers W HERE objec t_id = OBJ ECT_ID(N'[ AHOBPR].[T RG_REGISTR ANT_JSON_I NSERT]'))
        50   DROP TRIGG ER [AHOBPR ].[TRG_REG ISTRANT_JS ON_INSERT]
        51   GO
        52  
        53   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'))
        54   DROP PROCE DURE [AHOB PR].[SP_Js onGetCurre nt]
        55   GO
        56  
        57   PRINT 'CRE ATE PROCED URE SP_Jso nGetCurren t...';
        58   GO
        59  
        60   CREATE PRO CEDURE [AH OBPR].[SP_ JsonGetCur rent]
        61   @ObjectTyp e VARCHAR( 100),
        62    @ObjectId  VARCHAR(2 56)
        63   AS
        64  
        65   BEGIN
        66  
        67   DECLARE @C urrentId I NT;
        68           
        69         -- G et the Mos t Current  JSON ID fo r the Type  and ID
        70         SELE CT @Curren tId = MAX( [REGISTRAN T_JSON_ID]
        71           FR OM [AHOBPR ].[REGISTR ANT_JSON]  WITH (READ PAST)
        72          WHE RE [OBJECT _TYPE] = @ ObjectType   
        73            A ND [OBJECT _ID] = @Ob jectId;
        74            
        75         -- G et the rec ord   
        76         SELE CT * 
        77           FR OM [AHOBPR ].[REGISTR ANT_JSON]  WITH (NOLO CK)
        78          WHE RE [REGIST RANT_JSON_ ID] = @Cur rentId;
        79  
        80   END
        81   -- EXECUTE  AHOBPR.SP _JsonGetCu rrent 5187
        82  
        83   GO
        84  
        85   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 '))
        86   DROP PROCE DURE [AHOB PR].[SP_Ge tJsonQueue ]
        87   GO
        88  
        89   PRINT 'CRE ATE PROCED URE SP_Get JsonQueue. ..';
        90   GO
        91  
        92   CREATE PRO CEDURE [AH OBPR].[SP_ GetJsonQue ue]
        93   AS
        94   /*
        95   SP_GetJson Queue 
        96   Get all th e items th at need to  be proces sed by JSO N_QUEUE_ID s:
        97   a.      De lete the p revious/ol d/duplicat ed records  from REGI STRANT_JSO N table
        98   b.      In sert the n ew records  to JSON_Q UEUE table
        99   c.      Or der the JS ON_QUEUE_I Ds to be p rocessed b y object_t ype in the  following  order:  U SER, INFO,  RESPONSE 
        100   d.      Ig nore any R EGISTRANT_ JSON recor ds that ar e less tha n 30 minut es old
        101   */
        102  
        103   BEGIN
        104  
        105     -- DELET E any dupl icate REGI STRANT_JSO N rows
        106     WITH 
        107       Ranked Row AS 
        108       (
        109         SELE CT [REGIST RANT_JSON_ ID]
        110                ,RANK()  OVER(PARTI TION BY [O BJECT_TYPE ], [OBJECT _ID]
        111                                  O RDER BY [R EGISTRANT_ JSON_ID] D ESC) AS Ro wRank
        112           FR OM 
        113                [AHOBPR] .[REGISTRA NT_JSON] W ITH (READP AST)--don' t bother w ith record s that are  locked
        114       )
        115     , Duplic ate AS
        116       (
        117          SEL ECT   [REG ISTRANT_JS ON_ID] 
        118            F ROM   Rank edRow
        119            W HERE  RowR ank > 1
        120       )
        121     DELETE 
        122       FROM [ AHOBPR].[R EGISTRANT_ JSON] WITH  (READPAST )--don't b other with  records t hat are lo cked
        123       WHERE  EXISTS  (  SELECT * 
        124                         FROM  Dupl icate
        125                         WHERE Dupl icate.REGI STRANT_JSO N_ID = REG ISTRANT_JS ON.REGISTR ANT_JSON_I D
        126                      );
        127                          
        128     -- Inser t the new  records in  the JSON_ QUEUE     
        129     -- Ignor e any REGI STRANT_JSO N records  that are l ess than 3 0 minutes  old
        130     DECLARE  @ThirtyMin utesAgo DA TETIME2(0)  = DATEADD (MINUTE, - 30, GETDAT E());
        131     WITH 
        132       Ranked Row AS --w e just del eted dupli cates abov e, but sin ce we used  READPAST  and since  there is n o
        133                     --g uarantee t hat new du p has not  been added  since we  take the p recaution  of ranking
        134                     --t hem again.
        135       ( SELE CT *
        136                ,RANK()  OVER(PARTI TION BY [O BJECT_TYPE ], [OBJECT _ID]
        137                                  O RDER BY [R EGISTRANT_ JSON_ID] D ESC) AS Ro wRank
        138          FRO M [AHOBPR] .[REGISTRA NT_JSON] W ITH (READP AST) --don 't bother  with recor ds that ar e locked
        139          WHE RE NOT EXI STS ( SELE CT  *
        140                               FROM     AHOBPR .JSON_QUEU E AS Q
        141                               WHER E   Q.REGI STRANT_JSO N_ID = [RE GISTRANT_J SON].REGIS TRANT_JSON _ID
        142                             )
        143           AN D UPDATED  < @ThirtyM inutesAgo
        144       )
        145     , Src AS
        146       ( SELE CT [REGIST RANT_JSON_ ID]
        147                ,[CREATE D]
        148                ,[UPDATE D]
        149                ,[CREATE DBY]
        150                ,[UPDATE DBY]
        151         FROM   RankedRo w
        152         WHER E RowRank  = 1      
        153       )
        154       MERGE 
        155         INTO   [AHOBPR] .[JSON_QUE UE] Tgt
        156         USIN G Src
        157           ON   Tgt.[REG ISTRANT_JS ON_ID] = S rc.[REGIST RANT_JSON_ ID]
        158          WHE N NOT MATC HED
        159          THE N INSERT  
        160                ( [REGIS TRANT_JSON _ID]
        161                , [CREAT ED]
        162                , [UPDAT ED]
        163                , [CREAT EDBY]
        164                , [UPDAT EDBY]
        165                )
        166                VALUES
        167                (  Src.[ REGISTRANT _JSON_ID]
        168                  ,Src.[ CREATED]
        169                  ,Src.[ UPDATED]
        170                  ,Src.[ CREATEDBY]
        171                  ,Src.[ UPDATEDBY]
        172                );
        173                
        174   -- Get the  IDs of th e queued J SON object s to be pa rsed
        175   -- 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 
        176     SELECT   Q.JSON_QUE UE_ID
        177     FROM    
        178              AHOBPR.JSO N_QUEUE AS  Q WITH (R EADPAST)
        179     INNER
        180     JOIN     AHOBPR.REG ISTRANT_JS ON AS J WI TH (READPA ST)
        181       ON     Q.REGISTRA NT_JSON_ID  = J.REGIS TRANT_JSON _ID
        182     WHERE  I SNULL(Q.PR OCESS_STAT US,'failed ') = 'fail ed'
        183       AND    J.OBJECT_T YPE     !=  'form'
        184     ORDER
        185       BY     CASE J.OBJ ECT_TYPE   WHEN 'user ' THEN 1
        186                                    WHEN 'info ' THEN 2
        187                                    WHEN 'resp onses' THE N 3
        188                                    ELSE 99 -- should not  happen
        189              END
        190   END  -- 12  rows
        191   -- EXECUTE  [AHOBPR]. [SP_GetJso nQueue]
        192   --select *  from ahob pr.json_qu eue where  json_queue _id = 1116 3
        193   GO
        194  
        195   PRINT 'ALT ER PROCEDU RE SP_Upda teFromCDW. ..';
        196   GO
        197   -- ======= ========== ========== ========== ========
        198   -- Author:                Bruce  Clegg
        199   -- Create  date: 6/12 /2015
        200   -- Descrip tion: Call ed after l oading CDW  Staging t ables
        201   -- 08/12/2 015 - Set  Gender to  MALE and F EMALE
        202   -- 09/08/2 015 - Only  set Gende r and ICN  if Registr ant value  is NULL
        203   -- ======= ========== ========== ========== ========
        204   ALTER PROC EDURE [AHO BPR].[SP_U pdateFromC DW]
        205   AS
        206   BEGIN
        207  
        208     DECLARE  @Now DATET IME2(0) =  GETDATE();
        209     DECLARE  @ProcName  VARCHAR(30 ) = 'AHOBP R.SP_Updat eFromCDW';
        210  
        211     PRINT 'S et Institu tion ID in  Staged Pa tient';
        212     
        213     WITH Src
        214     AS(
        215     SELECT R EGISTRANT_ ID
        216                ,Preferr edInstitut ionCode
        217                ,Inst.ID
        218       FROM [ AHOBPR].[S TAGED_PATI ENT] Stg
        219       JOIN A HOBPR.VIEW _INSTITUTI ON Inst ON  Inst.STAT IONNUMBER  = Stg.Pref erredInsti tutionCode
        220       )
        221       MERGE  INTO [AHOB PR].[STAGE D_PATIENT]  AS Tgt
        222       USING  Src
        223               ON Tgt.RE GISTRANT_I D = Src.RE GISTRANT_I D
        224       WHEN M ATCHED
        225       THEN U PDATE
        226                         SET Tgt.ST D_INSTITUT ION_ID = S rc.ID;
        227     
        228     PRINT 'U pdate Regi strant fro m staged p atient...' ;
        229  
        230     WITH Src
        231     AS (
        232       SELECT  reg.REGIS TRANT_ID
        233              ,ISNULL(re g.GENDER,C ASE pat.GE NDER WHEN  'F' THEN ' FEMALE' 
        234                                                               WHEN  'M' THEN ' MALE' END)  as GENDER  
        235              ,pat.DECEA SED
        236              ,pat.DateO fDeath
        237              ,pat.RaceT ext
        238              ,pat.Marit alStatus
        239              ,pat.Eligi bilityStat us
        240              ,pat.Eligi bility
        241              ,ISNULL(re g.ICN,pat. PatientICN ) AS Patie ntICN
        242              ,pat.Enrol lmentStatu s
        243              ,pat.Prefe rredInstit utionCode
        244              ,pat.Enrol lmentDate
        245              ,pat.STD_I NSTITUTION _ID
        246         FROM  [AHOBPR]. [STAGED_PA TIENT] pat
        247         JOIN  [AHOBPR]. [REGISTRAN T] reg ON  reg.REGIST RANT_ID =  pat.REGIST RANT_ID
        248         )
        249         MERG E INTO [AH OBPR].[REG ISTRANT] A S Tgt
        250         USIN G Src
        251                 ON Tgt. REGISTRANT _ID = Src. REGISTRANT _ID
        252         WHEN  MATCHED
        253         THEN  UPDATE
        254                           SET Tgt. STD_INSTIT UTION_ID =  Src.STD_I NSTITUTION _ID
        255                              ,Tgt. GENDER = S rc.GENDER     
        256                              ,Tgt. MARITAL_ST ATUS = Src .[MaritalS tatus] 
        257                              ,Tgt. RACE = Src .[RaceText ]  
        258                              ,Tgt. DECEASED_F LAG = CONV ERT(BIT,(C ASE Src.[D ECEASED] W HEN 'Y' TH EN 1 ELSE  0 END))
        259                              ,Tgt. DEATH_DATE  = Src.[Da teOfDeath]     
        260                              ,Tgt. ELIGIBILIT Y_STATUS =  Src.[Elig ibilitySta tus]                        
        261                              ,Tgt. ELIGIBILIT Y = Src.[E ligibility ]    
        262                              ,Tgt. ENROLLMENT _STATUS =  Src.[Enrol lmentStatu s]    
        263                              ,Tgt. ENROLLED_D ATE = Src. [Enrollmen tDate]        
        264                              ,Tgt. ETL_UPDATE D = @Now;
        265                        
        266     PRINT 'D elete heal th factors  for encou nters bein g updated' ;
        267     DELETE 
        268     FROM AHO BPR.REGIST RANT_HEALT H_FACTOR
        269     WHERE EX ISTS(SELEC T REGISTRA NT_VISIT_I
        270                     FRO M AHOBPR.R EGISTRANT_ VISIT
        271                     JOI N AHOBPR.S TAGED_VISI T ON STAGE D_VISIT.RE GISTRANT_I D = REGIST RANT_VISIT .REGISTRAN T_ID
        272                    WHER E REGISTRA NT_VISIT.R EGISTRANT_ VISIT_ID =  REGISTRAN T_HEALTH_F ACTOR.REGI STRANT_VIS IT_ID
        273                      AN D STAGED_V ISIT.EVALU ATION_FLAG  = 'Y');
        274                      
        275     PRINT 'D elete enco uters bein g updated' ;
        276  
        277     DELETE 
        278     FROM AHO BPR.REGIST RANT_VISIT
        279     WHERE EV ALUATION_F LAG = 'Y'
        280       AND EX ISTS(SELEC T REGISTRA NT_ID FROM  AHOBPR.ST AGED_VISIT
        281                    WHER E STAGED_V ISIT.REGIS TRANT_ID =  REGISTRAN T_VISIT.RE GISTRANT_I D
        282                    AND  STAGED_VIS IT.EVALUAT ION_FLAG =  'Y');
        283  
        284     PRINT 'D elete rece nt visits  being upda ted';               
        285  
        286     DELETE 
        287     FROM AHO BPR.REGIST RANT_VISIT
        288     WHERE EV ALUATION_F LAG = 'N'
        289       AND EX ISTS(SELEC T REGISTRA NT_ID FROM  AHOBPR.ST AGED_VISIT
        290                    WHER E STAGED_V ISIT.REGIS TRANT_ID =  REGISTRAN T_VISIT.RE GISTRANT_I D
        291                    AND  STAGED_VIS IT.EVALUAT ION_FLAG =  'N');                                 
        292     
        293     PRINT 'S et Institu tion ID in  Staged VI SIT';
        294     
        295     WITH Src
        296     AS(
        297     SELECT S tg.VisitSI D
        298           ,S tg.INSTITU TION_CODE
        299           ,I nst.ID
        300       FROM [ AHOBPR].[S TAGED_VISI T] Stg
        301       JOIN A HOBPR.VIEW _INSTITUTI ON Inst ON  Inst.STAT IONNUMBER  = Stg.INST ITUTION_CO DE
        302       )
        303       MERGE  INTO [AHOB PR].[STAGE D_VISIT] A S Tgt
        304       USING  Src
        305               ON Tgt.Vi sitSID = S rc.VisitSI D
        306       WHEN M ATCHED
        307       THEN U PDATE
        308                         SET Tgt.ST D_INSTITUT ION_ID = S rc.ID;                      
        309                        
        310     PRINT 'I nsert enco unters and  visits... ';               
        311  
        312     INSERT I NTO [AHOBP R].[REGIST RANT_VISIT ]
        313                 ([REGIS TRANT_ID]
        314                 ,[VISIT _DATE_TIME ]
        315                 ,[STD_I NSTITUTION _ID]
        316                 ,[VISTA _Encounter ID]
        317                 ,[VISTA _Sta3n]
        318                 ,[VISTA _Eligibili tyStatus]
        319                 ,[EVALU ATION_FLAG ]
        320                 ,[APPOI NTMENT_TYP E]
        321                 ,[STOP_ CODE]
        322                 ,[CREAT EDBY]
        323                 ,[UPDAT EDBY]
        324                 ,[CREAT ED]
        325                 ,[UPDAT ED])
        326         SELE CT [REGIST RANT_ID]
        327                ,[VISIT_ DATE_TIME]
        328                ,[STD_IN STITUTION_ ID]
        329                ,[VISTA_ EncounterI D]
        330                ,[VISTA_ Sta3n]
        331                ,[VISTA_ Eligibilit y]
        332                ,[EVALUA TION_FLAG]
        333                ,[APPOIN TMENT_TYPE ]
        334                ,[STOP_C ODE]
        335                ,@ProcNa me
        336                ,@ProcNa me
        337                ,@Now
        338                ,@Now
        339       FROM [ AHOBPR].[S TAGED_VISI T];                     
        340    
        341     PRINT 'S et Standar d Health F actors ID  from STD_H EALTH_FACT OR...';  
        342       
        343     WITH Src
        344      AS(
        345         SELE CT [CDW_VI SIT_SID]
        346                ,[REGIST RANT_ID]
        347                ,std.[ST D_HEALTH_F ACTOR_ID]
        348                ,[HEALTH _FACTOR_TE XT]      
        349           FR OM [AHOBPR ].[STAGED_ HEALTH_FAC TOR] stage d
        350           JO IN AHOBPR. STD_HEALTH _FACTOR st d ON std.N AME = stag ed.HEALTH_ FACTOR_TEX T
        351       )
        352       MERGE  INTO AHOBP R.[STAGED_ HEALTH_FAC TOR] AS Tg t
        353       USING  Src  ON Tg t.[CDW_VIS IT_SID] =  Src.[CDW_V ISIT_SID]
        354       WHEN M ATCHED
        355                 AND Tgt .[REGISTRA NT_ID] = S rc.[REGIST RANT_ID]
        356                 AND Tgt .[HEALTH_F ACTOR_TEXT ] = Src.[H EALTH_FACT OR_TEXT]
        357       THEN U PDATE
        358                         SET Tgt.[S TD_HEALTH_ FACTOR_ID]  = Src.[ST D_HEALTH_F ACTOR_ID];
        359    
        360      PRINT ' Insert Hea lth Factor s...';  
        361      
        362     INSERT I NTO [AHOBP R].[REGIST RANT_HEALT H_FACTOR]
        363                 ([REGIS TRANT_VISI T_ID]
        364                 ,[STD_H EALTH_FACT OR_ID]
        365                 ,[ACTIV E_FLAG]
        366                 ,[HEALT H_FACTOR_T EXT]
        367                 ,[COMME NTS]
        368                 ,[CREAT EDBY]
        369                 ,[UPDAT EDBY]
        370                 ,[CREAT ED]
        371                 ,[UPDAT ED])           
        372         SELE CT visit.R EGISTRANT_ VISIT_ID
        373                ,hf.[STD _HEALTH_FA CTOR_ID]
        374                ,1
        375                ,hf.[HEA LTH_FACTOR _TEXT]
        376                ,hf.[COM MENTS]
        377                ,@ProcNa me    
        378                ,@ProcNa me
        379                ,@Now
        380                ,@Now      
        381       FROM [ AHOBPR].[S TAGED_HEAL TH_FACTOR]  hf -- 295
        382       JOIN A HOBPR.STAG ED_VISIT s tage ON st age.VisitS ID = hf.CD W_VISIT_SI D
        383       JOIN A HOBPR.REGI STRANT_VIS IT visit O N visit.VI STA_Encoun terID = st age.VISTA_ EncounterI
        384  
        385   END;
        386   -- EXECUTE  [AHOBPR]. [SP_Update FromCDW]; 
        387  
        388   GO
        389  
        390   PRINT 'ALT ER PROCEDU RE SP_Repo rtStatusBy Location.. .';
        391   GO
        392  
        393   -- ======= ========== ========== ========== ========
        394   -- Author:                Debora h Barr
        395   -- Create  date: Nove mber 12, 2 014
        396   -- Descrip tion: Used  for the A HOBPR Stat us by Loca tion Repor t
        397  
        398   -- Modific ation log
        399   -- 2015011 4 - Sherry  Wang: Cha nged query  for @Inst itutionId  and @VisnI d
        400   -- 2015020 2 - Change  state to  use state  codes, rem oved unnee ded tables  and joins , Removed  Distinct
        401   -- 2015021 9 - Change  state to  include te rritories  and Milita ry Bases
        402   -- 2015033 0 - Bruce  Clegg - Ad ded VisnId  value of  NLA to fin d Null loc ations
        403   -- 2015042 7 - Bruce  Clegg - Ch ange to Lo cationType  and Key,  for both A ssigned an d Evaluate d Location s
        404   -- 2015072 2 - Bruce  Clegg - Fi x bug with  @Evaluate dLocationT ype = 'Bas e'
        405   -- 2015090 9 - Bruce  Clegg - Re write as D ynamic SQL  for Perfo rmance
        406   -- ======= ========== ========== ========== ========
        407   ALTER PROC EDURE [AHO BPR].[SP_R eportStatu sByLocatio n]
        408          @st ate varcha r(8000) =  NULL, -- M ultiple st ates, comm a-separate d values w hen not NU LL 
        409          @st atus varch ar(1000) =  NULL, --  Multiple s tatues, co mma-separa ted values  when not  NULL         
        410          @As signedLoca tionType   VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        411          @As signedLoca tionKey    VARCHAR(50 ) = NULL,   -- 'V16',  'V01'     1000109,   1000089
        412          @Ev aluatedLoc ationType  VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        413          @Ev aluatedLoc ationKey   VARCHAR(50 ) = NULL   -- 'V16',  'V01'    1 000109,  1 000089
        414   AS
        415   BEGIN
        416     DECLARE  @Today DAT ETIME2 = G ETDATE();
        417  
        418     DECLARE  @Query VAR CHAR(8000) ;
        419    
        420      --Temp  table conc atnate fla gs for Reg istrants w ith multip le flags
        421     CREATE T ABLE #stat e
        422     (
        423        [Regi strant_Id]  INT,
        424        [stat e] VARCHAR (8000)
        425     ) 
        426  
        427     SET @sta te = REPLA CE(@state,  'Foreign  Country/Ot her', 'FM, MH,PW,UM,U S,CANAD,MX ,EU,PI,FG, OT,UN')
        428  
        429     INSERT I NTO #state  ([Registr ant_Id], [ state])
        430     -- Load  Table
        431     SELECT a .REGISTRAN T_ID, 
        432           ST UFF((SELEC T ', ' + b .STATE 
        433                     FRO M AHOBPR.R EGISTRANT_ ADDRESS b 
        434                    WHER E a.REGIST RANT_ID =  b.REGISTRA NT_ID 
        435                    FOR  XML PATH(' ')), 1, 1,  '')  [STA TE]
        436       FROM A HOBPR.REGI STRANT a
        437      GROUP B Y a.REGIST RANT_ID;
        438    
        439    
        440     SET @Que ry = 'SELE CT  reg.RE GISTRANT_I D ' +
        441                                         ',(re g.LAST_NAM E + '', ''  + reg.FIR ST_NAME) A S Name ' +
        442                                         ',b.R EGISTRANT_ STATUS AS  Status ' +
        443                                         ',DAT EDIFF(day,  reg.REGIS TRANT_STAT US_LAST_UP DATED_DATE , ' +
        444                                         CONVE RT(VARCHAR (10),@Toda y,121) + ' ) As Days  ' +
        445                                         ',s.S TATE AS St ate ' +
        446                                         ',RIG HT(inst.Vi snID, 2)   AS VISN '  +
        447                                         ',ins t.Name AS  Facility '  +
        448                                         ',reg .BIRTH_DAT E AS Birth Date ' +
        449                            ',CONVE RT(VARCHAR (10), reg. BIRTH_DATE , 101) AS  BirthDateD isplay ' +
        450                            'FROM A HOBPR.REGI STRANT reg  ' +
        451                                  ' JOIN AHOBP R.STD_REGI STRANT_STA TUS b ' + 
        452                                     'ON reg.S TD_REGISTR ANT_STATUS _ID = b.ST D_REGISTRA NT_STATUS_ ID ' +
        453                      'L EFT JOIN A HOBPR.VIEW _FACILITY_ LOOKUP ins t ' +
        454                                     'ON inst. ID = reg.S TD_INSTITU TION_ID '  +
        455                             'LEFT  JOIN #stat e s ' +
        456                                     'ON reg.R EGISTRANT_ ID = s.Reg istrant_Id  ' +
        457                           'WHERE   1 = 1 ';
        458  
        459                           
        460     IF ISNUL L(@state,' ') > ''
        461       BEGIN
        462         SET  @state = R EPLACE(@St ate,',','' ',''');
        463         SET  @Query = @ Query + '  AND EXISTS (SELECT DI STINCT add r.REGISTRA NT_ID ' + 
        464                                                 'FROM AH OBPR.REGIS TRANT_ADDR ESS addr '  + 
        465                                                'WHERE ad dr.REGISTR ANT_ID = r eg.REGISTR ANT_ID ' +  
        466                                                  'AND ad dr.STATE   IN ( ''' +  @state +  ''') ) ';
        467       END;
        468  
        469     IF ISNUL L(@status, '') > '' 
        470                     SET  @Query =  @Query + '  AND reg.S TD_REGISTR ANT_STATUS _ID IN ('  + @status  + ') ';
        471                     
        472     IF @Assi gnedLocati onType = ' NLA' 
        473        SET @ Query = @Q uery + ' A ND reg.STD _INSTITUTI ON_ID IS N ULL ';
        474  
        475     IF @Assi gnedLocati onType = ' VISN' 
        476        SET @ Query = @Q uery + ' A ND EXISTS( SELECT * F ROM AHOBPR .VIEW_FACI LITY_LOOKU P inst ' +
        477                                               'WHERE ins t.ID = reg .STD_INSTI TUTION_ID  ' +
        478                                                 'AND ins t.VisnID =  ''' + @As signedLoca tionKey +  ''' ) ';
        479  
        480     IF @Assi gnedLocati onType = ' Base' 
        481        SET @ Query = @Q uery + 'AN D EXISTS(S ELECT * FR OM AHOBPR. VIEW_FACIL ITY_LOOKUP  inst ' +
        482                                             ' WHERE inst .ID = reg. STD_INSTIT UTION_ID '  +
        483                                                'AND inst .BASE_ID =  ' + @Assi gnedLocati onKey + ')  ';
        484  
        485     IF @Assi gnedLocati onType = ' Institutio n' 
        486        SET @ Query = @Q uery + 'AN D reg.STD_ INSTITUTIO N_ID = ' +  @Assigned LocationKe y + ' ';             
        487  
        488     IF @Eval uatedLocat ionType =  'NLA' 
        489         SET  @Query = @ Query + 'A ND NOT EXI STS( SELEC T * FROM A HOBPR.REGI STRANT_VIS IT eval '  +
        490                                                 '   WHER E eval.REG ISTRANT_ID  = Reg.REG ISTRANT_ID  ' +
        491                                                     ' AN D eval.EVA LUATION_FL AG = ''Y'' ) ';
        492    
        493     IF @Eval uatedLocat ionType =  'VISN' 
        494        SET @ Query = @Q uery + 'AN D EXISTS(S ELECT * FR OM AHOBPR. REGISTRANT _VISIT eva l ' +
        495                                                      'JO IN AHOBPR. VIEW_FACIL ITY_LOOKUP  inst ON i nst.ID = e val.STD_IN STITUTION_ ID ' +
        496                                                     'WHE RE eval.RE GISTRANT_I D = Reg.RE GISTRANT_I D ' +
        497                                                       'A ND inst.Vi snID = '''  + @Evalua tedLocatio nKey + '''  ' +
        498                                                       'A ND eval.EV ALUATION_F LAG = ''Y' ') ' 
        499  
        500     IF @Eval uatedLocat ionType =  'Base' 
        501        SET @ Query = @Q uery + 'AN D EXISTS(S ELECT * FR OM AHOBPR. REGISTRANT _VISIT eva l ' +
        502                                                      'JO IN AHOBPR. VIEW_FACIL ITY_LOOKUP  inst ON i nst.ID = e val.STD_IN STITUTION_ ID ' +
        503                                                     'WHE RE eval.RE GISTRANT_I D = Reg.RE GISTRANT_I D ' +
        504                                                       'A ND inst.BA SE_ID = '  + @Evaluat edLocation Key + ' ' 
        505                                                       'A ND eval.EV ALUATION_F LAG = ''Y' ' ) '; 
        506  
        507     IF @Eval uatedLocat ionType =  'Instituti on' 
        508        SET @ Query = @Q uery + 'AN D EXISTS(S ELECT * FR OM AHOBPR. REGISTRANT _VISIT eva l ' +
        509                                                     'WHE RE eval.RE GISTRANT_I D = Reg.RE GISTRANT_I D ' +
        510                                                       'A ND eval.ST D_INSTITUT ION_ID = '  + @Evalua tedLocatio nKey + ' '  +
        511                                                       'A ND eval.EV ALUATION_F LAG = ''Y' ' ) '; 
        512  
        513     PRINT  @ Query;
        514     
        515     EXECUTE  (@Query);   
        516  
        517     DROP TAB LE #state;
        518     
        519   END
        520  
        521   -- EXEC [A HOBPR].[SP _ReportSta tusByLocat ion] 
        522   -- EXEC [A HOBPR].[SP _ReportSta tusByLocat ion] @stat e = 'MD,VA '
        523   -- EXEC [A HOBPR].[SP _ReportSta tusByLocat ion] @stat us = '6,7'
        524  
        525   -- exec [A HOBPR].[SP _ReportSta tusByLocat ion]
        526   -- exec [A HOBPR].[SP _ReportSta tusByLocat ion] @Assi gnedLocati onType = ' NLA'
        527   -- exec [A HOBPR].[SP _ReportSta tusByLocat ion] @Assi gnedLocati onType = ' VISN', @As signedLoca tionKey =  'V16'
        528   -- exec [A HOBPR].[SP _ReportSta tusByLocat ion] @Assi gnedLocati onType = ' Base', @As signedLoca tionKey =  '1000089'
        529   -- exec [A HOBPR].[SP _ReportSta tusByLocat ion] @Assi gnedLocati onType = ' Institutio n', @Assig nedLocatio nKey = '10 00089'
        530   -- exec [A HOBPR].[SP _ReportSta tusByLocat ion]
        531   -- exec [A HOBPR].[SP _ReportSta tusByLocat ion] @Eval uatedLocat ionType =  'NLA'
        532   -- exec [A HOBPR].[SP _ReportSta tusByLocat ion] @Eval uatedLocat ionType =  'VISN', @E valuatedLo cationKey  = 'V16'
        533   -- exec [A HOBPR].[SP _ReportSta tusByLocat ion] @Eval uatedLocat ionType =  'Base', @E valuatedLo cationKey  = '1000089 '
        534   -- exec [A HOBPR].[SP _ReportSta tusByLocat ion] @Eval uatedLocat ionType =  'Instituti on', @Eval uatedLocat ionKey = ' 1000089'
        535   GO
        536  
        537   PRINT 'ALT ER PROCEDU RE SP_Repo rtRegistra ntContact. ..';
        538   GO
        539  
        540   -- ======= ========== ========== ========== ========
        541   -- Author:                Bruce  Clegg
        542   -- Create  date: Jan  12, 2015
        543   -- Descrip tion: Used  for the A HOBPR Cont act Report   -- exec  [AHOBPR].[ SP_ReportR egistrantC ontact]     (More opt ions at bo ttom)
        544   -- 2015-02 -23 - Cleg g - provid e individu al field n ames
        545   -- 2015033 0 - Bruce  Clegg - Ad ded VisnId  value of  NLA to fin d Null loc ations
        546   -- 2015042 7 - Bruce  Clegg - Ch ange to Lo cationType  and Key,  for both A ssigned an d Evaluate d Location s
        547   -- 2015042 9 - Bruce  Clegg - Ad ded Email  column (ag ain)
        548   -- 2015061 7 - D. Bar r - Added  state para meter
        549   -- 2015072 2 - Bruce  Clegg - Fi x bug with  @Evaluate dLocationT ype = 'Bas e'
        550   -- 2015090 1 - Bruce  Clegg Fix  Main phone .  TYPE is  not NULL  so old way  does not  work
        551   -- ======= ========== ========== ========== ========
        552   ALTER PROC EDURE [AHO BPR].[SP_R eportRegis trantConta ct]
        553          @Re gistrantSt atus       VARCHAR(50 ) = '',     -- '1,2,3 ,4,5,6,7,8 '
        554          @Sv cStatus               VARCHAR(50 ) = '',     -- '1,2,3 '
        555          @Ad minFlagId             INT = 0,               -- 60
        556          @Ad minFromDat eText      VARCHAR(50 ) = NULL,
        557          @Ad minToDateT ext        VARCHAR(50 ) = NULL,
        558          @Su bPopulatio nFlagId    INT = 0,               -- 65
        559          @As signedLoca tionType   VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        560          @As signedLoca tionKey    VARCHAR(50 ) = NULL,   -- 'V16',  'V01'     1000109,   1000089
        561          @Ev aluatedLoc ationType  VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        562          @Ev aluatedLoc ationKey   VARCHAR(50 ) = NULL,   -- 'V16',  'V01'     1000109,   1000089
        563          @Co mpletedFro mDateText  VARCHAR(50 ) = NULL,
        564          @Co mpletedToD ateText    VARCHAR(50 ) = NULL,
        565          @st ate varcha r(8000) =  NULL -- Mu ltiple sta tes, comma -separated  values wh en not NUL
        566   AS
        567   BEGIN
        568  
        569   DECLARE @A dminFromDa te DATETIM E2(0) = IS NULL(dbo.C leanDate(@ AdminFromD ateText),' 19000101')
        570   DECLARE @A dminToDate    DATETIM E2(0) = db o.AddMaxTi me(ISNULL( dbo.CleanD ate(@Admin ToDateText ),GETDATE( ))); 
        571   DECLARE @C ompletedFr omDate DAT ETIME2(0)  = ISNULL(d bo.CleanDa te(@Comple tedFromDat eText),'19 000101')
        572   DECLARE @C ompletedTo Date   DAT ETIME2(0)  = dbo.AddM axTime(ISN ULL(dbo.Cl eanDate(@C ompletedTo DateText), GETDATE()) ); 
        573  
        574   --PRINT @A ssignedLoc ationType;
        575   --PRINT @A ssignedLoc ationKey;
        576  
        577   DECLARE @A ssignedIns titutionId  INT = 0,
        578           @E valuatedIn stitutionI d INT = 0;
        579  
        580   IF @Assign edLocation Type IN (' Base','Ins titution')  
        581   AND ISNUME RIC(@Assig nedLocatio nKey) = 1
        582     SET @Ass ignedInsti tutionId =  CONVERT(I NT,@Assign edLocation Key);
        583     
        584   IF @Evalua tedLocatio nType IN ( 'Base','In stitution'
        585   AND ISNUME RIC(@Evalu atedLocati onKey) = 1
        586     SET @Eva luatedInst itutionId  = CONVERT( INT,@Evalu atedLocati onKey);
        587  
        588   WITH addr 
        589   AS (     
        590       SELECT  REGISTRAN T_ID,
        591                            ISNULL( STREET1,'' )  AS STRE ET1, 
        592                            ISNULL( STREET2,'' )  AS STRE ET2,
        593                            ISNULL( CITY,'')      AS CITY ,
        594                            ISNULL( [STATE],'' )  AS [STA TE],
        595                            ISNULL( COUNTRY,'' )  AS COUN TRY,
        596                            ISNULL( ZIP,'')       AS ZIP
        597                      FR OM  AHOBPR .[REGISTRA NT_ADDRESS ]
        598       )  
        599   ,phone1 
        600   AS (     
        601       SELECT  REGISTRAN T_ID,                      
        602                            ISNULL( PHONE_NUMB ER,'') AS  PHONE_NUMB ER_Main
        603         FROM  AHOBPR.RE GISTRANT_P HONE      
        604        WHERE  ISNULL(TY PE,'') !=  'Mobile'
        605       )        
        606   ,phone2 
        607   AS (     
        608       SELECT  REGISTRAN T_ID,                      
        609                            ISNULL( PHONE_NUMB ER,'') AS  PHONE_NUMB ER_Mobile
        610         FROM  AHOBPR.RE GISTRANT_P HONE      
        611        WHERE  TYPE = 'M obile'
        612       )
        613   ,email 
        614   AS (     
        615       SELECT  REGISTRAN T_ID,                      
        616                            ISNULL( EMAIL,'')  AS EMAIL
        617         FROM  AHOBPR.RE GISTRANT_E MAIL      
        618       )
        619   ,Pref    
        620   AS(
        621         SELE CT fr.REGI STRANT_ID 
        622               ,ans.TEXT  AS Contac tPreferenc e
        623           FR OM  AHOBPR .FORM_RESP ONSE fr
        624           JO IN AHOBPR. FORM_RESPO NSE_QUESTI ON rQst ON  fr.FORM_R ESPONSE_ID  = rQst.FO RM_RESPONS E_ID
        625           JO IN AHOBPR. STD_FORM_Q UESTION qs t ON rQst. STD_FORM_Q UESTION_ID  = qst.STD _FORM_QUES TION_ID
        626           JO IN AHOBPR. FORM_RESPO NSE_ANSWER  rAns ON r Qst.FORM_R ESPONSE_QU ESTION_ID  = rAns.FOR M_RESPONSE _QUESTION_ ID
        627           JO IN AHOBPR. STD_FORM_A NSWER ans  ON ans.STD _FORM_ANSW ER_ID = rA ns.STD_FOR M_ANSWER_I D
        628          WHE RE qst.STD _FORM_ID =  fr.STD_FO RM_ID
        629            A ND qst.FOR M_QUESTION _UNIQUE_ID  = '8.A'
        630    )            
        631           SE LECT 
        632                  reg.RE GISTRANT_I D,
        633                           ISNULL(r eg.LAST_NA ME,'') AS   LAST_NAME ,
        634              ISNULL(reg .FIRST_NAM E,'') AS   FIRST_NAME
        635              ISNULL(Pre f.ContactP reference, '') AS  Co ntactPrefe rence,
        636                           ISNULL(S TREET1,'')  AS  STREE T1, 
        637                           ISNULL(S TREET2,'')  AS  STREE T2,
        638                           ISNULL(C ITY,'') AS   CITY,
        639                           ISNULL([ STATE],'')  AS  [STAT E],
        640                           ISNULL(C OUNTRY,'')  AS  COUNT RY,
        641                           ISNULL(Z IP,'') AS   ZIP,
        642                           ISNULL(p hone1.PHON E_NUMBER_M ain,'') AS   PHONE_NU MBER_Main,
        643                           ISNULL(p hone2.PHON E_NUMBER_M obile,'')  AS  PHONE_ NUMBER_Mob ile,
        644              ISNULL(ema il.EMAIL,' ') AS EMAI L       
        645              FROM AHOBP R.REGISTRA NT reg    
        646              LEFT JOIN  addr  
        647                      ON  reg.REGIS TRANT_ID =  addr.REGI STRANT_ID       
        648              LEFT JOIN  phone1  
        649                      ON  reg.REGIS TRANT_ID =  phone1.RE GISTRANT_I D                       
        650              LEFT JOIN  phone2  
        651                      ON  reg.REGIS TRANT_ID =  phone2.RE GISTRANT_I D            
        652              LEFT JOIN  email  
        653                      ON  reg.REGIS TRANT_ID =  email.REG ISTRANT_ID                               
        654              LEFT JOIN  Pref  
        655                      ON  reg.REGIS TRANT_ID =  Pref.REGI STRANT_ID                                         
        656            W HERE (reg. STD_REGIST RANT_STATU S_ID IN (S ELECT * FR OM fncSpli t(@Registr antStatus,  ',')) 
        657                    OR I SNULL(@Reg istrantSta tus,'') =  '')
        658               AND (reg. STD_SERVIC E_STATUS_I D IN (SELE CT * FROM  fncSplit(@ SvcStatus,  ',')) 
        659                    OR I SNULL(@Svc Status,'')  = '')
        660        AND ( @AssignedL ocationTyp e IS NULL
        661              OR (@Assig nedLocatio nType = 'N LA' 
        662                  AND re g.STD_INST ITUTION_ID  IS NULL)
        663              OR (@Assig nedLocatio nType = 'V ISN' 
        664                   AND E XISTS(SELE CT * FROM  AHOBPR.VIE W_FACILITY _LOOKUP in st
        665                                        WHERE  inst.ID =  reg.STD_IN STITUTION_ ID
        666                                          AND  inst.VisnI D = @Assig nedLocatio nKey)
        667                 )  
        668              OR (@Assig nedLocatio nType = 'B ase' 
        669                   AND E XISTS(SELE CT * FROM  AHOBPR.VIE W_FACILITY _LOOKUP in st
        670                                        WHERE  inst.ID =  reg.STD_IN STITUTION_ ID
        671                                          AND  inst.BASE_ ID = @Assi gnedInstit utionId)
        672                 )  
        673              OR (@Assig nedLocatio nType = 'I nstitution
        674                   AND r eg.STD_INS TITUTION_I D = @Assig nedInstitu tionId)      
        675              )
        676        AND ( @Evaluated LocationTy pe IS NULL
        677              OR (@Evalu atedLocati onType = ' NLA' 
        678                  AND NO T EXISTS(  SELECT * F ROM AHOBPR .REGISTRAN T_VISIT ev al
        679                                     WHERE eva l.REGISTRA NT_ID = Re g.REGISTRA NT_ID 
        680                                       AND eva l.EVALUATI ON_FLAG =  'Y') 
        681                 )
        682              OR (@Evalu atedLocati onType = ' VISN' 
        683                   AND E XISTS(SELE CT * FROM  AHOBPR.REG ISTRANT_VI SIT eval
        684                                         JOIN  AHOBPR.VIE W_FACILITY _LOOKUP in st ON inst .ID = eval .STD_INSTI TUTION_ID
        685                                        WHERE  eval.REGIS TRANT_ID =  Reg.REGIS TRANT_ID
        686                                          AND  inst.VisnI D = @Evalu atedLocati onKey
        687                                          AND  eval.EVALU ATION_FLAG  = 'Y') 
        688                 )  
        689              OR (@Evalu atedLocati onType = ' Base' 
        690                   AND E XISTS(SELE CT * FROM  AHOBPR.REG ISTRANT_VI SIT eval
        691                                         JOIN  AHOBPR.VIE W_FACILITY _LOOKUP in st ON inst .ID = eval .STD_INSTI TUTION_ID
        692                                        WHERE  eval.REGIS TRANT_ID =  Reg.REGIS TRANT_ID
        693                                          AND  inst.BASE_ ID = @Eval uatedInsti tutionId
        694                                          AND  eval.EVALU ATION_FLAG  = 'Y' )     
        695                 )  
        696              OR (@Evalu atedLocati onType = ' Institutio n' 
        697                   AND E XISTS(SELE CT * FROM  AHOBPR.REG ISTRANT_VI SIT eval
        698                                        WHERE  eval.REGIS TRANT_ID =  Reg.REGIS TRANT_ID
        699                                          AND  eval.STD_I NSTITUTION _ID = @Eva luatedInst itutionId
        700                                          AND  eval.EVALU ATION_FLAG  = 'Y') 
        701                 )  
        702              )           
        703        AND ( ISNULL(@Su bPopulatio nFlagId, 0 ) = 0 
        704              OR EXISTS( SELECT [RE GISTRANT_I D] FROM AH OBPR.REGIS TRANT_REGI STRY_FLAG  popFlag
        705                          WHERE pop Flag.REGIS TRANT_ID =  reg.REGIS TRANT_ID
        706                            AND pop Flag.STD_R EGISTRY_FL AG_ID = @S ubPopulati onFlagId))
        707        AND ( ISNULL(@Ad minFlagId,  0) = 0 
        708              OR EXISTS( SELECT [RE GISTRANT_I D] FROM AH OBPR.REGIS TRANT_REGI STRY_FLAG  adminFlag
        709                          WHERE adm inFlag.REG ISTRANT_ID  = reg.REG ISTRANT_ID
        710                            AND adm inFlag.STD _REGISTRY_ FLAG_ID =  @AdminFlag Id
        711                            AND adm inFlag.CRE ATED BETWE EN @AdminF romDate AN D @AdminTo Date))   
        712        AND ( (ISNULL(@C ompletedFr omDateText ,'') = ''  AND ISNULL (@Complete dToDateTex t,'') = ''  )
        713            O R EXISTS(S ELECT resp .REGISTRAN T_ID, stat .QUESTIONN AIRE_COMPL ETED_DATE
        714                          FROM AHOB PR.FORM_RE SPONSE_STA TUS stat
        715                          JOIN AHOB PR.FORM_RE SPONSE res p
        716                            ON resp .FORM_RESP ONSE_ID =  stat.FORM_ RESPONSE_I D
        717                         WHERE resp .REGISTRAN T_ID = reg .REGISTRAN T_ID
        718                           AND stat .QUESTIONN AIRE_COMPL ETED_DATE  BETWEEN @C ompletedFr omDate AND  @Complete dToDate))
        719       AND (I SNULL(@sta te,'') = ' '
        720                   OR EX ISTS(SELEC T DISTINCT  addr.REGI STRANT_ID 
        721                                FRO M AHOBPR.R EGISTRANT_ ADDRESS ad dr 
        722                               WHER E addr.REG ISTRANT_ID  = reg.REG ISTRANT_ID  
        723                                 AN D addr.STA TE  IN (SE LECT * FRO M fncSplit (@state, ' ,'))))
        724         ;
        725                                                                                                                          
        726   END
        727   -- exec [A HOBPR].[SP _ReportReg istrantCon tact]
        728   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Ass ignedLocat ionType =  'NLA'
        729   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Ass ignedLocat ionType =  'VISN', @A ssignedLoc ationKey =  'V16'
        730   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Ass ignedLocat ionType =  'Base', @A ssignedLoc ationKey =  '1000089'
        731   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Ass ignedLocat ionType =  'Instituti on', @Assi gnedLocati onKey = '1 000089'
        732   -- exec [A HOBPR].[SP _ReportReg istrantCon tact]
        733   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Eva luatedLoca tionType =  'NLA'
        734   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Eva luatedLoca tionType =  'VISN', @ EvaluatedL ocationKey  = 'V16'
        735   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Eva luatedLoca tionType =  'Base', @ EvaluatedL ocationKey  = '100008 9'
        736   -- exec [A HOBPR].[SP _ReportReg istrantCon tact] @Eva luatedLoca tionType =  'Institut ion', @Eva luatedLoca tionKey =  '1000089'
        737  
        738  
        739          --@ AssignedLo cationType   VARCHAR( 10) = NULL ,  -- 'VIS N', 'Base' , 'Institu tion', 'NL A' = No Lo cation Ass igned
        740          --@ AssignedLo cationKey    VARCHAR( 50) = NULL ,  -- 'V16 ', 'V01'     1000109,   1000089
        741    --exec [A HOBPR].[SP _ReportReg istrantCon tact] '5,6 ,7', NULL,  0, NULL,  NULL, 0, 0 , NULL  @E valuatedLo cationType
        742    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , '2', 0,  NULL, NULL , 0, 0, NU LL
        743    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , NULL, 60 , NULL, '2 0141204',  0, 0, NULL
        744    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , NULL, 60 , '12/04/2 014', NULL , 0, 0, NU LL
        745    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , NULL, 60 , '12/03/2 014', '12/ 12/2014',  0, 0, NULL
        746    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , NULL, 0,  NULL, NUL L, 65, 0,  NULL
        747    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , NULL, 0,  NULL, NUL L, 0, 1000 109, NULL
        748    --exec [A HOBPR].[SP _ReportReg istrantCon tact] NULL , NULL, 0,  NULL, NUL L, 0, 0, ' NLA' --'V0 1'
        749    --exec [A HOBPR].[SP _ReportReg istrantCon tact] @Com pletedFrom DateText =  '08/13/20 14'
        750    --exec [A HOBPR].[SP _ReportReg istrantCon tact] @Com pletedToDa teText = ' 08/13/2014 '
        751    --exec [A HOBPR].[SP _ReportReg istrantCon tact] @Com pletedFrom DateText =  '08/13/20 14', @Comp letedToDat eText = '0 8/13/2014'
        752   GO
        753  
        754   PRINT 'ALT ER PROCEDU RE SP_Repo rtAdHocByL ocation... ';
        755   GO
        756   -- ======= ========== ========== ========== ========
        757   -- Author:                Debora h Barr
        758   -- Create  date: Nove mber 12, 2 014
        759   -- Descrip tion: Used  for the A HOBPR Ad H oc Report   
        760  
        761   -- Modific ation log
        762   -- 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
        763   -- 2015-01 -05 - Chan ge Date Fo rmat to MM /DD/YYYY
        764   -- 2015-01 -14 - Sher ry Wang Ad d more par ameters: @ healthFact or, @formS tartFromDa te, @formS tartToDate , @subpopu lationFlag
        765   -- 2015-01 -14 - Sher ry Wang Ad d more par ameters: @ adminFlag,  @deployme ntAll, @de ploymentEx posure, @a dminFlagFr omDate, @a dminFlagTo Date
        766   -- 2015-01 -16 - Bruc e Clegg -  Fix parame ters, Add  distinct a nd outer q uery to gr oup counts .
        767   -- 2015-02 -09 - Bruc e Clegg -  Change Hea lth Factor  Exists st atements t o use new  REGISTRANT _VISIT
        768   -- 2015-05 -07 - Bruc e Clegg -  Change Fac ility name  from "Oth er" to "No  Facitilty  Assigned"  when not  found
        769   -- 2015-06 -04 - Bruc e Clegg -  Add more p arameters
        770   -- 2015-06 -18 - Bruc e Clegg -  Changed @s eparationT ype to an  Integer 
        771   -- 2015-07 -09 - Bruc e Clegg -  Rewrote as  Dynamic S QL for per formance
        772   -- 2015-08 -05 - Bruc e Clegg -  Fix bug wi th AdminFl ag - Set F rom and To  date defa ults
        773   -- ======= ========== ========== ========== ========
        774   ALTER PROC EDURE [AHO BPR].[SP_R eportAdHoc ByLocation ]
        775          @st atus varch ar(100) =  NULL, -- M ultiple st atues, com ma-separat ed values  when not N ULL
        776          @du tyStatus v archar(100 ) = NULL,  -- Multipl e states,  comma-sepa rated valu es when no t NULL  
        777          @fo rmStartFro mDateText  varchar(10 0) = NULL,
        778          @fo rmStartToD ateText va rchar(100)  = NULL,
        779          @he althFactor  varchar(1 00) = NULL , -- Multi ple health  factor ID s, comma-s eparated v alues when  not NULL
        780          @fo rmCompleti onFromDate Text varch ar(100) =  NULL,
        781          @fo rmCompleti onToDateTe xt varchar (100) = NU LL,
        782          @qu estionNumb er varchar (100) = NU LL,
        783          @an swer varch ar(100) =  NULL,
        784          @he althConcer ns varchar (10) = 'Al l', 
        785          @re questToBeS een varcha r(10) = 'A ll',
        786          @gr oupBy VARC HAR(50) =  '',                   -- 'VISN'  or 'Facili ty'   
        787          @su bpopulatio nFlag varc har (10) =  NULL, 
        788          @ad minFlag va rchar (10)  = NULL, 
        789          @de ploymentAl l varchar  (256) = NU LL, 
        790          @de ploymentEx posure var char (256)  = NULL, 
        791          @ad minFlagFro mDateText  varchar (2 0) = NULL,  
        792          @ad minFlagToD ateText va rchar (20)  = NULL,
        793          @ex cludeDead  varchar(1)  = 'N',
        794          @ge nder varch ar(50) = ' ',
        795          @ra ce varchar (50) = '',
        796          @et hnicity va rchar(50)  = '',
        797          @se parationTy pe INT = 0 ,
        798          @se parationFr omDateText  varchar ( 20) = NULL
        799          @se parationTo DateText v archar (20 ) = NULL, 
        800          @en rollmentSt atus varch ar(50) = ' '
        801   AS
        802  
        803   BEGIN
        804  
        805     DECLARE  @formStart FromDate D ATETIME2(0 ) = NULL,
        806              @formStart ToDate DAT ETIME2(0)  = NULL,
        807              @formCompl etionFromD ate DATETI ME2(0) = N ULL,
        808              @formCompl etionToDat e DATETIME 2(0) = NUL L,
        809              @adminFlag FromDate D ATETIME2(0 ) = NULL,
        810              @adminFlag ToDate DAT ETIME2(0)  = NULL,
        811              @separatio nFromDate  DATETIME2( 0) = NULL,
        812              @separatio nToDate DA TETIME2(0)  = NULL;
        813             
        814     DECLARE  @Query VAR CHAR(8000) ;      
        815  
        816     -- Conve rt date pa rameters       
        817  
        818     SET @for mStartFrom Date = dbo .CleanDate (@formStar tFromDateT ext);
        819     SET @for mStartToDa te = dbo.A ddMaxTime( dbo.CleanD ate(@formS tartToDate Text));
        820     SET @for mCompletio nFromDate  = dbo.Clea nDate(@for mCompletio nFromDateT ext);
        821     SET @for mCompletio nToDate =  dbo.AddMax Time(dbo.C leanDate(@ formComple tionToDate Text));      
        822     SET @adm inFlagFrom Date = ISN ULL(dbo.Cl eanDate(@a dminFlagFr omDateText ),'1900010 1');
        823     SET @adm inFlagToDa te = dbo.A ddMaxTime( ISNULL(dbo .CleanDate (@adminFla gToDateTex t),GETDATE ())); 
        824     SET @sep arationFro mDate = db o.CleanDat e(@separat ionFromDat eText);
        825     SET @sep arationToD ate = dbo. AddMaxTime (dbo.Clean Date(@sepa rationToDa teText));    
        826  
        827     -- Build  Src TDE
        828     SET @Que ry = ' WIT H Src 
        829       AS( SE LECT a.REG ISTRANT_ID , a.STD_IN STITUTION_ ID FROM AH OBPR.REGIS TRANT a WH ERE 1 = 1  ';
        830     
        831     IF @stat us IS NOT  NULL
        832       SET @Q uery = @Qu ery + ' AN D a.STD_RE GISTRANT_S TATUS_ID I N (' + @st atus + ')' ;
        833  
        834     IF ISNUL L(@dutySta tus,'') >  ''
        835       SET @Q uery = @Qu ery + ' AN D a.STD_SE RVICE_STAT US_ID IN ( ' + @dutyS tatus + ') ';
        836             
        837     IF @heal thConcerns  != 'All'
        838       SET @Q uery = @Qu ery + ' AN D a.HEALTH _CONCERNS_ RESPONSE =  ''' + @he althConcer ns + '''';  
        839     
        840     IF @requ estToBeSee n != 'All'
        841       SET @Q uery = @Qu ery + ' AN D a.REQUES T_SEEN_RES PONSE = '' ' + @reque stToBeSeen   + '''';
        842       
        843     IF @form StartFromD ate IS NOT  NULL OR @ formStartT oDate IS N OT NULL 
        844     OR @form Completion FromDate I S NOT NULL  OR @formC ompletionT oDate IS N OT NULL
        845       BEGIN
        846         SET  @Query = @ Query + '  AND EXISTS ( SELECT d .REGISTRAN T_ID FROM  AHOBPR.FOR M_RESPONSE  d 
        847                                               JOIN AHOBP R.FORM_RES PONSE_STAT US e ON d. FORM_RESPO NSE_ID = e .FORM_RESP ONSE_ID   
        848                                             W HERE a.REG ISTRANT_ID  = d.REGIS TRANT_ID ' ;
        849                      IF  @formStar tFromDate  IS NOT NUL L                       
        850                          SET @Quer y = @Query  + ' AND e .QUESTIONN AIRE_START ED_DATE >=  ''' + CON VERT(VARCH AR(20),@fo rmStartFro mDate,121)  + '''';
        851                      IF  @formStar tToDate IS  NOT NULL                       
        852                          SET @Quer y = @Query  + ' AND e .QUESTIONN AIRE_START ED_DATE <=  ''' + CON VERT(VARCH AR(20),@fo rmStartToD ate,121) +  '''';
        853                      IF  @formComp letionFrom Date IS NO T NULL                       
        854                          SET @Quer y = @Query  + ' AND e .QUESTIONN AIRE_COMPL ETED_DATE  >= ''' + C ONVERT(VAR CHAR(20),@ formComple tionFromDa te,121) +  '''';
        855                      IF  @formComp letionToDa te IS NOT  NULL                       
        856                          SET @Quer y = @Query  + ' AND e .QUESTIONN AIRE_COMPL ETED_DATE  <= ''' + C ONVERT(VAR CHAR(20),@ formComple tionToDate ,121) + '' '';
        857                       S ET @Query  = @Query +  ' ) ' --  Close Exis its statem ent
        858       END     
        859       
        860     IF ISNUL L(@answer, '') != '' 
        861       --SET  @Query = @ Query + '  AND EXISTS (SELECT fr .REGISTRAN T_ID FROM  AHOBPR.FOR M_RESPONSE _ANSWER ra  ' +
        862       --                        'J OIN AHOBPR .FORM_RESP ONSE_QUEST ION rq ON  rq.FORM_RE SPONSE_QUE STION_ID =  ra.FORM_R ESPONSE_QU ESTION_ID  ' +
        863       --                        'J OIN AHOBPR .FORM_RESP ONSE fr ON  fr.FORM_R ESPONSE_ID  = rq.FORM _RESPONSE_ ID ' +
        864       --                      ' WH ERE ra.STD _FORM_ANSW ER_ID IN ( ' + @answe r + ') AND  fr.REGIST RANT_ID =  a.REGISTRA NT_ID )';
        865                             
        866     SET @Que ry = @Quer y + ' AND  EXISTS(SEL ECT fr.REG ISTRANT_ID  FROM AHOB PR.FORM_RE SPONSE_ANS WER ra ' +  
        867                             'JOIN  AHOBPR.FOR M_RESPONSE _QUESTION  rq ON rq.F ORM_RESPON SE_QUESTIO N_ID = ra. FORM_RESPO NSE_QUESTI ON_ID  ' +  
        868                             'JOIN  AHOBPR.FOR M_RESPONSE  fr ON fr. FORM_RESPO NSE_ID = r q.FORM_RES PONSE_ID   ' + 
        869                             'JOIN  AHOBPR.STD _FORM_ANSW ER A1 ON A 1.STD_FORM _ANSWER_ID  = ra.STD_ FORM_ANSWE R_ID ' + 
        870                             'JOIN  AHOBPR.STD _FORM_QUES TION Q1 ON  Q1.STD_FO RM_QUESTIO N_ID = rq. STD_FORM_Q UESTION_ID  ' + 
        871                             'JOIN  AHOBPR.STD _FORM_QUES TION Q2 ON  Q2.FORM_Q UESTION_UN IQUE_ID =  Q1.FORM_QU ESTION_UNI QUE_ID ' +  
        872                             'JOIN  AHOBPR.STD _FORM_ANSW ER A2 ON A 2.STD_FORM _QUESTION_ ID = Q2.ST D_FORM_QUE STION_ID '  + 
        873                             ' AND  A1.BRP_FOR M_ANSWER_I D = A2.BRP _FORM_ANSW ER_ID ' + 
        874                           ' WHERE  A2.STD_FOR M_ANSWER_I D IN (' +  @answer +  ') AND fr. REGISTRANT _ID = a.RE GISTRANT_I D )';                           
        875                             
        876     
        877     IF ISNUL L(@subpopu lationFlag ,'') != ''
        878       SET @Q uery = @Qu ery + ' AN D EXISTS(S ELECT * FR OM AHOBPR. REGISTRANT _REGISTRY_ FLAG subpo p ' +
        879                                            '  WHERE subp op.STD_REG ISTRY_FLAG _ID IN ('  + @subpopu lationFlag  + ') ' +
        880                                               ' AND subp op.REGISTR ANT_ID = a .REGISTRAN T_ID ) ';
        881  
        882           IF  ISNULL(@a dminFlag,' ') != ''
        883       SET @Q uery = @Qu ery + ' AN D EXISTS(S ELECT * FR OM AHOBPR. REGISTRANT _REGISTRY_ FLAG admin flag ' +
        884                             ' WHER E adminfla g.STD_REGI STRY_FLAG_ ID IN (' +  @adminFla g + ') ' +
        885                               ' AN D adminfla g.REGISTRA NT_ID = a. REGISTRANT _ID ' +
        886                               ' AN D adminfla g.CREATED  BETWEEN '' ' + CONVER T(VARCHAR( 20),@admin FlagFromDa te,121) + 
        887                                                          ''' AND '' ' + CONVER T(VARCHAR( 20),@admin FlagToDate ,121) + '' ' ) ';  
        888                                 
        889     IF ISNUL L(@healthF actor,'')  != ''
        890       SET @Q uery = @Qu ery + ' AN D EXISTS ( SELECT re. REGISTRANT _ID FROM A HOBPR.REGI STRANT_VIS IT re ' +
        891                                               ' JOIN AHO BPR.REGIST RANT_HEALT H_FACTOR h f ON re.RE GISTRANT_V ISIT_ID =  hf.REGISTR ANT_VISIT_ ID ' +
        892                                             '  WHERE a.R EGISTRANT_ ID = re.RE GISTRANT_I D AND re.E VALUATION_ FLAG = ''Y '' ' +
        893                                             '    AND hf. STD_HEALTH _FACTOR_ID  IN (' + @ healthFact or + ') )  '
        894  
        895     IF ISNUL L(@deploym entAll,'')  != '' 
        896       SET @Q uery = @Qu ery + ' AN D EXISTS ( SELECT dep l.REGISTRA NT_ID FROM  AHOBPR.RE GISTRANT_D EPLOYMENT  depl ' +
        897                                             '  WHERE a.R EGISTRANT_ ID = depl. REGISTRANT _ID
        898                                                  AND dep l.DEPLOYME NT_COUNTRY  = ''' + @ deployment All + ''')  ' ;
        899  
        900     IF ISNUL L(@deploym entExposur e,'') != '
        901       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 ' +
        902                                               '  JOIN AH OBPR.FORM_ RESPONSE_Q UESTION ex posure ON  deployment Exposure.R EGISTRANT_ DEPLOYMENT _ID = expo sure.REGIS TRANT_DEPL OYMENT_ID  ' +
        903                                               '  JOIN AH OBPR.STD_F ORM_QUESTI ON quest O N exposure .STD_FORM_ QUESTION_I D = quest. STD_FORM_Q UESTION_ID  ' +
        904                                               ' WHERE qu est.FORM_Q UESTION_UN IQUE_ID =  ''1.2.A''  ' +
        905                                               '   AND de ploymentEx posure.DEP LOYMENT_CO UNTRY = '' ' + @deplo ymentExpos ure + ''''  + 
        906                                               '   AND de ploymentEx posure.REG ISTRANT_ID  = a.REGIS TRANT_ID )  ';
        907     IF ISNUL L(@exclude Dead,'N')  = 'Y'
        908       SET @Q uery = @Qu ery + ' AN D a.DECEAS ED_FLAG =  0 ';
        909     
        910     IF ISNUL L(@gender, '') != ''
        911       SET @Q uery = @Qu ery + ' AN D ''' + @g ender + '' ' = ISNULL (a.GENDER, ''No Data  Available' ') ';
        912       
        913     IF ISNUL L(@ethnici ty,'') !=  ''
        914       SET @Q uery = @Qu ery + ' AN D ''' + @e thnicity +  ''' = ISN ULL(a.ETHN ICITY,''No  Data Avai lable'') ' ;
        915     
        916     IF ISNUL L(@separat ionType,0)  != 0
        917       SET @Q uery = @Qu ery + ' AN D ''' + @s eparationT ype + '''  = ISNULL(a .STD_SEPAR ATION_REAS ON_ID_CURR ENT,0) ';
        918  
        919     IF @sepa rationFrom Date IS NO T NULL 
        920       SET @Q uery = @Qu ery + ' AN D a.SEPARA TION_DATE_ CURRENT >=  ''' + CON VERT(VARCH AR(20),@se parationFr omDate,121 ) + '''';
        921     
        922     IF @sepa rationToDa te IS NOT  NULL 
        923       SET @Q uery = @Qu ery + ' AN D  a.SEPAR ATION_DATE _CURRENT < = ''' + CO NVERT(VARC HAR(20),@s eparationT oDate,121)  + '''';
        924     
        925     IF ISNUL L(@race,'' ) != ''
        926       SET @Q uery = @Qu ery + ' AN D ''' + @r ace + '''  =  ISNULL( a.RACE ,'' No Data Av ailable'')  ';
        927       
        928     IF ISNUL L(@enrollm entStatus, '') != ''
        929       SET @Q uery = @Qu ery + ' AN D ''' + @e nrollmentS tatus + '' ' = ISNULL (a.ENROLLM ENT_STATUS ,''No Data  Available '') ';
        930  
        931     -- Add S ummary TDE                     
        932     SET @Que ry = @Quer y + '  )     ,Summary   AS( ' + 
        933                             ' SELE CT Src.STD _INSTITUTI ON_ID, COU NT(*) AS T otalRegist rants FROM  Src ' +
        934                             ' GROU P BY STD_I NSTITUTION _ID ) ';
        935   -- By Faci lity 
        936           IF  @groupBy  = 'Facilit y'
        937              SET @Query  = @Query  + ' SELECT  inst.Name  AS Locati on, ' +
        938                                               ' ISNULL(C ONVERT(VAR CHAR(10),S ummary.STD _INSTITUTI ON_ID),''- 1'') AS Lo cationId,  ' +
        939                                         '  SU M(TotalReg istrants)  AS TotalRe gistrants  FROM Summa ry ' +                         
        940                                       '  JOIN  AHOBPR.VI EW_INSTITU TION_NAME  inst ON in st.ID = IS NULL(Summa ry.STD_INS TITUTION_I D,-1) ' +
        941                                       ' GROUP  BY inst.N ame,STD_IN STITUTION_ ID ' +
        942                                           ' O PTION (OPT IMIZE FOR  UNKNOWN);' ;
        943     
        944   -- By VISN
        945           IF  @groupBy  = 'VISN'
        946               SET @Quer y = @Query  + ' ,Visn Summary AS  ( ' +
        947                     ' S ELECT ISNU LL(inst.Vi snID,''NLA '') AS Loc ation, ' +
        948                            '  ISNU LL(inst.Vi snID, ''-1 '') AS Loc ationId, '  +
        949                            '  SUM( TotalRegis trants) AS  TotalRegi strants '  +                 
        950                     '    FROM Summ ary ' +   
        951                     '    LEFT JOIN  AHOBPR.VI EW_FACILIT Y_LOOKUP i nst ON ins t.ID = ISN ULL(Summar y.STD_INST ITUTION_ID ,-1) ' +  
        952                     '    GROUP BY  inst.VisnI D  ) ' +
        953                     ' S ELECT REPL ACE(Locati on,''NLA'' ,''No Faci tilty Assi gned'') AS  Location,  ' +
        954                     '         CONV ERT(VARCHA R(10),Loca tionId) AS  LocationI d, TotalRe gistrants  ' +
        955                     '    FROM Visn Summary  '  +
        956                     '   ORDER BY L ocation ' 
        957                     '   OPTION (OP TIMIZE FOR  UNKNOWN);  ' ;
        958           
        959     PRINT @Q uery;          
        960                                           
        961     EXECUTE  (@Query);                                                  
        962   END
        963   -- Paramet ers
        964     --@statu s, @dutySt atus ,@que stionnaire StartDate,  @question naireCompl eteDate, 
        965     --@quest ionNumber,  @answer,  @healthCon cerns= 'Al l', @reque stToBeSeen  = 'All',
        966     --@regis tryFlag,@I nstitution Id = 0, @V isnId = ''  
        967   -- Test Ca ses
        968   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @st atus = '6, 7'
        969   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @du tyStatus =  '1,2'
        970   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @fo rmStartFro mDateText   = '200101 01'
        971   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @fo rmStartToD ateText =  '20141231'
        972   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @he althFactor  = '44,45, 46,47' 
        973   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @fo rmCompleti onFromDate Text  = '2 0010101'
        974   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @fo rmCompleti onToDateTe xt  = '201 41231'
        975   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @he althConcer ns = 'Yes'  
        976   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @re questToBeS een = 'Yes '
        977   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @su bpopulatio nFlag = '6 4,65,66,67 '
        978   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @de ploymentAl l = 'Iraq'     -- 'Eg ypt'
        979   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @de ploymentEx posure  =  'Iraq'
        980   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @ad minFlag =  '59,60' ,@ adminFlagF romDateTex t = '20150 101' , @ad minFlagToD ateText =  '20150201'
        981   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy = 'V ISN',  @an swer = '22 21'
        982   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByLoc ation] @gr oupBy =  ' Facility'  , @status  = '6,7' ,@ answer = ' 2346,1571, 17'   -- ' 20,795,157 0' 
        983   GO
        984  
        985   PRINT 'ALT ER PROCEDU RE SP_Repo rtAdHocByI ndividual. ..';
        986   GO
        987   -- ======= ========== ========== ========== ========
        988   -- Author:                Debora h Barr
        989   -- Create  date: Nove mber 12, 2 014
        990   -- Descrip tion: Used  for the A HOBPR Ad H oc Report   
        991  
        992   -- Modific ation log
        993   -- 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
        994   -- 2015-01 -05 - Chan ge Date Fo rmat to MM /DD/YYYY
        995   -- 2015-01 -14 - Sher ry Wang Ad d more par ameters: @ healthFact or, @formS tartFromDa te, @formS tartToDate , @subpopu lationFlag
        996   -- 2015-01 -14 - Sher ry Wang Ad d more par ameters: @ adminFlag,  @deployme ntAll, @de ploymentEx posure, @a dminFlagFr omDate, @a dminFlagTo Date
        997   -- 2015-01 -16 - Bruc e Clegg -  Fix parame ters and r emove NULL s from dis play where  possible
        998   -- 2015-02 -09 - Bruc e Clegg -  Change Hea lth Factor  Exists st atements t o use new  REGISTRANT _VISIT
        999   -- 2015-03 -30 - Bruc e Clegg -  Added Visn Id value o f NLA to f ind Null l ocations
        1000   -- 2015-04 -27 - Bruc e Clegg -  Change to  LocationTy pe and Key , for both  Assigned  and Evalua ted Locati ons
        1001   -- 2015-06 -04 - Bruc e Clegg -  Add more p arameters
        1002   -- 2015-06 -18 - Bruc e Clegg -  Changed @s eparationT ype to an  Integer 
        1003   -- 2015-07 -09 - Bruc e CLegg -  Rewrote as  Dynamic S QL for per formance
        1004   -- ======= ========== ========== ========== ========
        1005   ALTER PROC EDURE [AHO BPR].[SP_R eportAdHoc ByIndividu al]
        1006          @st atus varch ar(100) =  NULL, -- M ultiple st atues, com ma-separat ed values  when not N ULL
        1007          @du tyStatus v archar(100 ) = NULL,  -- Multipl e states,  comma-sepa rated valu es when no t NULL  
        1008          @fo rmStartFro mDateText  varchar(10 0) = NULL,
        1009          @fo rmStartToD ateText va rchar(100)  = NULL,
        1010          @he althFactor  varchar(1 00) = NULL , -- Multi ple health  factor ID s, comma-s eparated v alues when  not NULL
        1011          @fo rmCompleti onFromDate Text varch ar(100) =  NULL,
        1012          @fo rmCompleti onToDateTe xt varchar (100) = NU LL,
        1013          @qu estionNumb er varchar (100) = NU LL,
        1014          @an swer varch ar(100) =  NULL,
        1015          @he althConcer ns varchar (100) = 'A ll', 
        1016          @re questToBeS een varcha r(100) = ' All',
        1017          @As signedLoca tionType   VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        1018          @As signedLoca tionKey    VARCHAR(50 ) = NULL,   -- 'V16',  'V01'     1000109,   1000089
        1019          @Ev aluatedLoc ationType  VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        1020          @Ev aluatedLoc ationKey   VARCHAR(50 ) = NULL,   -- 'V16',  'V01'     1000109,   1000089
        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   -- Convert  date para meters fro m VARCHAR  to DATETIM E2(0)    
        1040     DECLARE  @formStart FromDate D ATETIME2(0 ) = NULL,
        1041              @formStart ToDate DAT ETIME2(0)  = NULL,
        1042              @formCompl etionFromD ate DATETI ME2(0) = N ULL,
        1043              @formCompl etionToDat e DATETIME 2(0) = NUL L,
        1044              @adminFlag FromDate D ATETIME2(0 ) = NULL,
        1045              @adminFlag ToDate DAT ETIME2(0)  = NULL,
        1046              @separatio nFromDate  DATETIME2( 0) = NULL,
        1047              @separatio nToDate DA TETIME2(0)  = NULL;
        1048  
        1049     DECLARE  @Query VAR CHAR(8000) ;                 
        1050     DECLARE  @MainQuery  VARCHAR(8 000);                  
        1051     DECLARE  @RegCriter ia VARCHAR (8000) = ' ';                 
        1052     DECLARE  @AdminWith  VARCHAR(8 000);                  
        1053     DECLARE  @SubPopWit h VARCHAR( 8000);                  
        1054     DECLARE  @DeployWit h VARCHAR( 8000);                  
        1055  
        1056     SET @for mStartFrom Date = dbo .CleanDate (@formStar tFromDateT ext);
        1057     SET @for mStartToDa te = dbo.A ddMaxTime( dbo.CleanD ate(@formS tartToDate Text));
        1058     SET @for mCompletio nFromDate  = dbo.Clea nDate(@for mCompletio nFromDateT ext);
        1059     SET @for mCompletio nToDate =  dbo.AddMax Time(dbo.C leanDate(@ formComple tionToDate Text));      
        1060     SET @adm inFlagFrom Date = ISN ULL(dbo.Cl eanDate(@a dminFlagFr omDateText ),'1900010 1');
        1061     SET @adm inFlagToDa te = dbo.A ddMaxTime( ISNULL(dbo .CleanDate (@adminFla gToDateTex t),GETDATE ())); 
        1062           SE T @separat ionFromDat e = dbo.Cl eanDate(@s eparationF romDateTex t);
        1063     SET @sep arationToD ate = dbo. AddMaxTime (dbo.Clean Date(@sepa rationToDa teText)); 
        1064  
        1065           DE CLARE @Adm inType INT  = (SELECT  STD_REGIS TRY_FLAG_T YPE_ID
        1066                                          FROM  AHOBPR.ST D_REGISTRY _FLAG_TYPE  
        1067                                         WHERE  REGISTRY_ FLAG_TYPE  = 'Adminis trative Fl ag');
        1068                                         
        1069           DE CLARE @Sub PopType IN T = (SELEC T STD_REGI STRY_FLAG_ TYPE_ID
        1070                                          FROM  AHOBPR.ST D_REGISTRY _FLAG_TYPE  
        1071                                         WHERE  REGISTRY_ FLAG_TYPE  = 'SubPopu lation Fla g');                                  
        1072                                              
        1073   -- Set Ins titutionID  values if  needed.
        1074   DECLARE @A ssignedIns titutionId  INT = 0,
        1075           @E valuatedIn stitutionI d INT = 0;
        1076  
        1077   IF @Assign edLocation Type IN (' Base','Ins titution')  
        1078   AND ISNUME RIC(@Assig nedLocatio nKey) = 1
        1079     SET @Ass ignedInsti tutionId =  CONVERT(I NT,@Assign edLocation Key);
        1080     
        1081   IF @Evalua tedLocatio nType IN ( 'Base','In stitution'
        1082   AND ISNUME RIC(@Evalu atedLocati onKey) = 1
        1083     SET @Eva luatedInst itutionId  = CONVERT( INT,@Evalu atedLocati onKey);
        1084  
        1085     --Concat enate one  or more Su b-populati on flags f or Registr ants with  flags
        1086     SET @Sub PopWith =  'WITH SubP op AS ( SE LECT a.REG ISTRANT_ID , '+
        1087                                                    'STUF F((SELECT  '', '' + c .REGISTRY_ FLAG_NAME  ' +
        1088                                                             ' FROM  AHOBPR.REG ISTRANT_RE GISTRY_FLA G b ' +
        1089                                                             ' JOIN  AHOBPR.STD _REGISTRY_ FLAG c ON  b.STD_REGI STRY_FLAG_ ID = c.STD _REGISTRY_ FLAG_ID '  +
        1090                                                            ' WHERE  a.REGISTRA NT_ID = b. REGISTRANT _ID ' +
        1091                                                            '   AND  c.STD_REGI STRY_FLAG_ TYPE_ID =  ' + CONVER T(VARCHAR( 3),@SubPop Type) +
        1092                                                              ' FOR  XML PATH(' ''')), 1,  1, '''') A S [REGISTR Y_FLAG_NAM E] ' +
        1093                                           ' F ROM AHOBPR .REGISTRAN T a ' +
        1094                                           'WH ERE 1 = 1  ';
        1095                                           
        1096     --Concat enate one  or more Ad min flags  for Regist rants with  flags
        1097     SET @Adm inWith = ' , Admin AS  (  SELECT  a.REGISTR ANT_ID, '  +
        1098                                       ' STUFF ((SELECT ' ', '' + c. REGISTRY_F LAG_NAME '  +
        1099                                                '  FROM A HOBPR.REGI STRANT_REG ISTRY_FLAG  b ' +
        1100                                                '  JOIN A HOBPR.STD_ REGISTRY_F LAG c ON b .STD_REGIS TRY_FLAG_I D = c.STD_ REGISTRY_F LAG_ID ' +
        1101                                                ' WHERE a .REGISTRAN T_ID = b.R EGISTRANT_ ID ' +
        1102                                                '   AND c .STD_REGIS TRY_FLAG_T YPE_ID = '  + CONVERT (VARCHAR(3 ),@AdminTy pe) +
        1103                                                '   AND b .CREATED B ETWEEN '''  + CONVERT (VARCHAR(2 0),@adminF lagFromDat e,121) + 
        1104                                                                   ' '' AND '''  + CONVERT (VARCHAR(2 0),@adminF lagToDate, 121) + ''' ' + 
        1105                                                '   FOR X ML PATH('' '')), 1, 1 , '''') AS  [REGISTRY _FLAG_NAME ] ' +
        1106                                     '  FROM A HOBPR.REGI STRANT a '  +
        1107                                    '  WHERE 1  = 1 ';
        1108  
        1109     --Concat enate one  or more De ployment C ountries f or Registr ants with  Deployment s
        1110     SET @Dep loyWith =  ', Deploy  AS (SELECT  a.REGISTR ANT_ID,  '  +
        1111                                             '  STUFF((SE LECT '', ' ' + b.DEPL OYMENT_COU NTRY ' + 
        1112                                                      '   FROM AHOBP R.REGISTRA NT_DEPLOYM ENT b ' +
        1113                                                     '  W HERE a.REG ISTRANT_ID  = b.REGIS TRANT_ID '  +
        1114                                                     '     FOR XML P ATH('''')) , 1, 1, '' '') AS DEP LOYMENT_CO UNTRY ' +
        1115                                        ' FROM  AHOBPR.RE GISTRANT a  ' +
        1116                                      '  WHERE  1 = 1 ';
        1117  
        1118     SET @Mai nQuery = '   SELECT D ISTINCT a. REGISTRANT _ID ' +
        1119                                 ', (a.LAST_NA ME + '', ' ' + a.FIRS T_NAME) AS  Name ' +
        1120                                 ', b.REGISTRA NT_STATUS  AS Status  ' +
        1121                                 ', c.SERVICE_ STATUS AS  DutyStatus  ' +
        1122                                 ', e.QUESTION NAIRE_STAR TED_DATE A S Question StartDate  ' +
        1123                                 ', e.QUESTION NAIRE_COMP LETED_DATE  AS Questi onComplete Date ' +
        1124                                 ', ISNULL(CON VERT(VARCH AR(10), e. QUESTIONNA IRE_STARTE D_DATE, 10 1),'''') A S Question StartDateD isplay ' +
        1125                                 ', ISNULL(CON VERT(VARCH AR(10), e. QUESTIONNA IRE_COMPLE TED_DATE,  101),'''')  AS Questi onComplete DateDispla y ';
        1126   --Decide w hich query  to run de pending on  if a ques tion was s elected as  a paramet er for the  report
        1127     IF ISNUL L(@questio nNumber, ' ') = ''
        1128       SET @M ainQuery =  @MainQuer y + ',''''  AS Questi onNumber '  +
        1129                                        ',''''  AS Answer  '
        1130     ELSE                                     
        1131       SET @M ainQuery =  @MainQuer y + ','''  + @questio nNumber +  ''' AS Que stionNumbe r ' +
        1132                                        ',STUF F((SELECT  '', '' + s tdAnswer.T EXT ' +
        1133                                                 '  FROM  AHOBPR.FOR M_RESPONSE _ANSWER an swer ' + 
        1134                                                 '  JOIN  AHOBPR.STD _FORM_ANSW ER stdAnsw er ON answ er.STD_FOR M_ANSWER_I D = stdAns wer.STD_FO RM_ANSWER_ ID ' +
        1135                                                 ' WHERE  formQuesti on.FORM_RE SPONSE_QUE STION_ID =  answer.FO RM_RESPONS E_QUESTION _ID ' +
        1136                                                 ' FOR XM L PATH(''' ')), 1, 1,  '''') AS  Answer ' ;                    
        1137       
        1138     SET @Mai nQuery = @ MainQuery  + ',ISNULL (a.HEALTH_ CONCERNS_R ESPONSE,'' '') AS Hea lthConcern s ' +
        1139                                      ',ISNULL (a.REQUEST _SEEN_RESP ONSE,'''')   AS Reque stBeSeen   ' +
        1140                                      ',RTRIM( LTRIM(ISNU LL(SubPop. REGISTRY_F LAG_NAME,' '''))) AS  Subpopulat ionFlag  '  +
        1141                                      ',RTRIM( LTRIM(ISNU LL(Admin.R EGISTRY_FL AG_NAME,'' ''))) AS A dminFlag   ' +
        1142                                      ',ISNULL (Deploy.DE PLOYMENT_C OUNTRY,''' ') AS Depl oymentCoun try             ' +
        1143                                                   ',a.BI RTH_DATE A S BirthDat e  ' +
        1144                                                   ',CONV ERT(VARCHA R(10), a.B IRTH_DATE,  101) AS B irthDateDi splay ' +
        1145                                      'FROM AH OBPR.REGIS TRANT a '
        1146                                      
        1147     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 '  +
        1148                                            '  JOIN AHOBP R.STD_SERV ICE_STATUS  c ON a.ST D_SERVICE_ STATUS_ID  = c.STD_SE RVICE_STAT US_ID ' +
        1149                                                   ' LEFT  JOIN AHOB PR.FORM_RE SPONSE d O N a.REGIST RANT_ID =   d.REGISTR ANT_ID ' +
        1150                                                   ' LEFT  JOIN AHOB PR.FORM_RE SPONSE_STA TUS e ON d .FORM_RESP ONSE_ID =  e.FORM_RES PONSE_ID '  +
        1151                                                   ' LEFT  JOIN SubP op  ON a.R EGISTRANT_ ID = SubPo p.REGISTRA NT_ID ' +
        1152                                                   ' LEFT  JOIN Admi n   ON a.R EGISTRANT_ ID = Admin .REGISTRAN T_ID ' +
        1153                                                   ' LEFT  JOIN Depl oy  ON a.R EGISTRANT_ ID = Deplo y.REGISTRA NT_ID ';
        1154  
        1155     IF ISNUL L(@questio nNumber, ' ') != ''
        1156       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 '  +
        1157                                        ' 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  ';
        1158  
        1159     SET @Mai nQuery = @ MainQuery  + ' WHERE  1 = 1 ';
        1160  
        1161     -- Quest ion Number  and Answe r criteria  are only  used again st Main Qu ery                  
        1162     IF ISNUL L(@questio nNumber, ' ') > ''
        1163              SET @MainQ uery = @Ma inQuery +  ' AND stdQ uestion.FO RM_QUESTIO N_UNIQUE_I D = ''' +  @questionN umber + '' ' ';
        1164             
        1165     IF ISNUL L(@answer, '') != '' 
        1166       SET @M ainQuery =  @MainQuer y +  ' AND  EXISTS(SE LECT fr.RE GISTRANT_I D FROM AHO BPR.FORM_R ESPONSE_AN SWER ra ' 
        1167                                          '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  '  + 
        1168                                          'JOI N AHOBPR.F ORM_RESPON SE fr ON f r.FORM_RES PONSE_ID =  rq.FORM_R ESPONSE_ID   ' + 
        1169                                          'JOI N AHOBPR.S TD_FORM_AN SWER A1 ON  A1.STD_FO RM_ANSWER_ ID = ra.ST D_FORM_ANS WER_ID ' +  
        1170                                          'JOI N AHOBPR.S TD_FORM_QU ESTION Q1  ON Q1.STD_ FORM_QUEST ION_ID = r q.STD_FORM _QUESTION_ ID ' + 
        1171                                          'JOI N AHOBPR.S TD_FORM_QU ESTION Q2  ON Q2.FORM _QUESTION_ UNIQUE_ID  = Q1.FORM_ QUESTION_U NIQUE_ID '  + 
        1172                                          'JOI N AHOBPR.S TD_FORM_AN SWER A2 ON  A2.STD_FO RM_QUESTIO N_ID = Q2. STD_FORM_Q UESTION_ID  ' + 
        1173                                          ' AN D A1.BRP_F ORM_ANSWER _ID = A2.B RP_FORM_AN SWER_ID ' 
        1174                                        ' WHER E A2.STD_F ORM_ANSWER _ID IN ('  + @answer  + ') AND f r.REGISTRA NT_ID = a. REGISTRANT _ID )';                                                         
        1175  
        1176     IF @form StartFromD ate IS NOT  NULL                       
        1177        SET @ MainQuery  = @MainQue ry + ' AND  e.QUESTIO NNAIRE_STA RTED_DATE  >= ''' + C ONVERT(VAR CHAR(20),@ formStartF romDate,12 1) + '''';
        1178        
        1179     IF @form StartToDat e IS NOT N ULL                       
        1180        SET @ MainQuery  = @MainQue ry + ' AND  e.QUESTIO NNAIRE_STA RTED_DATE  <= ''' + C ONVERT(VAR CHAR(20),@ formStartT oDate,121)  + '''';
        1181       
        1182     IF @form Completion FromDate I S NOT NULL                        
        1183        SET @ MainQuery  = @MainQue ry + ' AND  e.QUESTIO NNAIRE_COM PLETED_DAT E >= ''' +  CONVERT(V ARCHAR(20) ,@formComp letionFrom Date,121)  + '''';
        1184  
        1185     IF @form Completion ToDate IS  NOT NULL                       
        1186        SET @ MainQuery  = @MainQue ry + ' AND  e.QUESTIO NNAIRE_COM PLETED_DAT E <= ''' +  CONVERT(V ARCHAR(20) ,@formComp letionToDa te,121) +  '''';
        1187  
        1188     IF ISNUL L(@subpopu lationFlag ,'') != ''
        1189       SET @M ainQuery =  @MainQuer y + ' AND  EXISTS(SEL ECT * FROM  AHOBPR.RE GISTRANT_R EGISTRY_FL AG subpop  ' +
        1190                                            '  WHERE subp op.STD_REG ISTRY_FLAG _ID IN ('  + @subpopu lationFlag  + ') ' +
        1191                                               ' AND subp op.REGISTR ANT_ID = a .REGISTRAN T_ID ) ';
        1192  
        1193           IF  ISNULL(@a dminFlag,' ') != ''
        1194       SET @M ainQuery =  @MainQuer y + ' AND  EXISTS(SEL ECT * FROM  AHOBPR.RE GISTRANT_R EGISTRY_FL AG adminfl ag ' +
        1195                             ' WHER E adminfla g.STD_REGI STRY_FLAG_ ID IN (' +  @adminFla g + ') ' +
        1196                               ' AN D adminfla g.REGISTRA NT_ID = a. REGISTRANT _ID ' +
        1197                               ' AN D adminfla g.CREATED  BETWEEN '' ' + CONVER T(VARCHAR( 20),@admin FlagFromDa te,121) + 
        1198                                                          ''' AND '' ' + CONVER T(VARCHAR( 20),@admin FlagToDate ,121) + '' ' ) ';  
        1199                                                     
        1200     IF ISNUL L(@deploym entAll,'')  != '' 
        1201       SET @M ainQuery =  @MainQuer y + 'AND E XISTS (SEL ECT depl.R EGISTRANT_ ID FROM AH OBPR.REGIS TRANT_DEPL OYMENT dep l ' +
        1202                                                          ' WHERE a. REGISTRANT _ID = depl .REGISTRAN T_ID
        1203                                                              AND de pl.DEPLOYM ENT_COUNTR Y = ''' +  @deploymen tAll + ''' ) ' ;
        1204                                                            
        1205     IF ISNUL L(@healthF actor,'')  != ''
        1206       SET @M ainQuery =  @MainQuer y + ' AND  EXISTS (SE LECT re.RE GISTRANT_I D FROM AHO BPR.REGIST RANT_VISIT  re ' +
        1207                                               ' JOIN AHO BPR.REGIST RANT_HEALT H_FACTOR h f ON re.RE GISTRANT_V ISIT_ID =  hf.REGISTR ANT_VISIT_ ID ' +
        1208                                             '  WHERE a.R EGISTRANT_ ID = re.RE GISTRANT_I D AND re.E VALUATION_ FLAG = ''Y '' ' +
        1209                                             '    AND hf. STD_HEALTH _FACTOR_ID  IN (' + @ healthFact or + ') )  '
        1210  
        1211    
        1212     IF ISNUL L(@deploym entExposur e,'') != '
        1213       SET @M ainQuery =  @MainQuer y + ' AND  EXISTS(SEL ECT deploy mentExposu re.REGISTR ANT_ID FRO M AHOBPR.R EGISTRANT_ DEPLOYMENT  deploymen tExposure  ' +
        1214                                               '  JOIN AH OBPR.FORM_ RESPONSE_Q UESTION ex posure ON  deployment Exposure.R EGISTRANT_ DEPLOYMENT _ID = expo sure.REGIS TRANT_DEPL OYMENT_ID  ' +
        1215                                               '  JOIN AH OBPR.STD_F ORM_QUESTI ON quest O N exposure .STD_FORM_ QUESTION_I D = quest. STD_FORM_Q UESTION_ID  ' +
        1216                                               ' WHERE qu est.FORM_Q UESTION_UN IQUE_ID =  ''1.2.A''  ' +
        1217                                               '   AND de ploymentEx posure.DEP LOYMENT_CO UNTRY = '' ' + @deplo ymentExpos ure + ''''  + 
        1218                                               '   AND de ploymentEx posure.REG ISTRANT_ID  = a.REGIS TRANT_ID )  ';
        1219                                                              
        1220     
        1221    -- The re st of the  criteria w ill be app lied to Ma in Query a nd With st atememts 
        1222     IF @stat us IS NOT  NULL
        1223       SET @R egCriteria  = @RegCri teria + '  AND a.STD_ REGISTRANT _STATUS_ID  IN (' + @ status + ' )';
        1224  
        1225     IF ISNUL L(@dutySta tus,'') >  ''
        1226       SET @R egCriteria  = @RegCri teria + '  AND a.STD_ SERVICE_ST ATUS_ID IN  (' + @dut yStatus +  ')';
        1227             
        1228     IF @heal thConcerns  != 'All'
        1229       SET @R egCriteria  = @RegCri teria + '  AND a.HEAL TH_CONCERN S_RESPONSE  = ''' + @ healthConc erns + ''' '; 
        1230     
        1231     IF @requ estToBeSee n != 'All'
        1232       SET @R egCriteria  = @RegCri teria + '  AND a.REQU EST_SEEN_R ESPONSE =  ''' + @req uestToBeSe en  + '''' ;
        1233                                                                             
        1234     IF ISNUL L(@exclude Dead,'N')  = 'Y'
        1235       SET @R egCriteria  = @RegCri teria + '  AND a.DECE ASED_FLAG  = 0 ';
        1236     
        1237     IF ISNUL L(@gender, '') != ''
        1238       SET @R egCriteria  = @RegCri teria + '  AND ''' +  @gender +  ''' = ISNU LL(a.GENDE R,''No Dat a Availabl e'') ';
        1239       
        1240     IF ISNUL L(@ethnici ty,'') !=  ''
        1241       SET @R egCriteria  = @RegCri teria + '  AND ''' +  @ethnicity  + ''' = I SNULL(a.ET HNICITY,'' No Data Av ailable'')  ';
        1242     
        1243     IF ISNUL L(@separat ionType,0)  != 0
        1244       SET @R egCriteria  = @RegCri teria + '  AND ''' +  @separatio nType + '  = ISNULL(a .STD_SEPAR ATION_REAS ON_ID_CURR ENT,0) ';
        1245  
        1246     IF @sepa rationFrom Date IS NO T NULL 
        1247       SET @R egCriteria  = @RegCri teria + '  AND a.SEPA RATION_DAT E_CURRENT  >= ''' + C ONVERT(VAR CHAR(20),@ separation FromDate,1 21) + '''' ;
        1248     
        1249     IF @sepa rationToDa te IS NOT  NULL 
        1250       SET @R egCriteria  = @RegCri teria + '  AND  a.SEP ARATION_DA TE_CURRENT  <= ''' +  CONVERT(VA RCHAR(20), @separatio nToDate,12 1) + '''';
        1251     
        1252     IF ISNUL L(@race,'' ) != ''
        1253       SET @R egCriteria  = @RegCri teria + '  AND ''' +  @race + '' ' =  ISNUL L(a.RACE , ''No Data  Available' ') ';
        1254       
        1255     IF ISNUL L(@enrollm entStatus, '') != ''
        1256       SET @R egCriteria  = @RegCri teria + '  AND ''' +  @enrollmen tStatus +  ''' = ISNU LL(a.ENROL LMENT_STAT US,''No Da ta Availab le'') ';
        1257  
        1258     IF @Assi gnedLocati onType IS  NOT NULL
        1259       BEGIN
        1260         IF @ AssignedLo cationType  = 'NLA' 
        1261           SE T @RegCrit eria = @Re gCriteria  + ' AND a. STD_INSTIT UTION_ID I S NULL ' ;
        1262         ELSE
        1263         IF @ AssignedLo cationType  = 'VISN' 
        1264           SE T @RegCrit eria = @Re gCriteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.VIEW _FACILITY_ LOOKUP ins t ' +
        1265                                                                      ' WHERE i nst.ID = a .STD_INSTI TUTION_ID  ' + 
        1266                                                                      '   AND i nst.VisnID  = ''' + @ AssignedLo cationKey  + ''') ';
        1267         ELSE
        1268         IF @ AssignedLo cationType  = 'Base' 
        1269           SE T @RegCrit eria = @Re gCriteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.VIEW _FACILITY_ LOOKUP ins t ' +
        1270                                                              ' WHER E inst.ID  = a.STD_IN STITUTION_ ID ' +
        1271                                                              '   AN D inst.BAS E_ID = ' +  CONVERT(V ARCHAR(20) ,@Assigned Institutio nId) + ')  '
        1272         ELSE
        1273         IF @ AssignedLo cationType  = 'Instit ution' 
        1274           SE T @RegCrit eria = @Re gCriteria  + ' AND a. STD_INSTIT UTION_ID =  ' + CONVE RT(VARCHAR (20),@Assi gnedInstit utionId);
        1275      END;
        1276      
        1277     IF @Eval uatedLocat ionType IS  NOT NULL
        1278       BEGIN
        1279         IF @ EvaluatedL ocationTyp e = 'NLA' 
        1280           SE T @RegCrit eria = @Re gCriteria  + ' AND NO T EXISTS(  SELECT * F ROM AHOBPR .REGISTRAN T_VISIT ev al ' +
        1281                                                                   '  WHERE eva l.REGISTRA NT_VISIT_I D = a.REGI STRANT_ID  ' +
        1282                                                                   '    AND eva l.EVALUATI ON_FLAG =  ''Y'') ' ;  
        1283         ELSE
        1284         IF @ EvaluatedL ocationTyp e = 'VISN'  
        1285           SE T @RegCrit eria = @Re gCriteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.REGI STRANT_VIS IT eval '  +
        1286                                                               ' JOI N AHOBPR.V IEW_FACILI TY_LOOKUP  inst ON in st.ID = ev al.STD_INS TITUTION_I D ' +
        1287                                                              ' WHER E eval.REG ISTRANT_VI SIT_ID = a .REGISTRAN T_ID ' +
        1288                                                                ' AN D eval.EVA LUATION_FL AG = ''Y''  ' +
        1289                                                                ' AN D inst.Vis nID = '''  + @Evaluat edLocation Key + ''')  '; 
        1290         ELSE
        1291         IF @ EvaluatedL ocationTyp e = 'Base'  
        1292           SE T @RegCrit eria = @Re gCriteria  +  ' AND E XISTS(SELE CT * FROM  AHOBPR.REG ISTRANT_VI SIT eval '  +
        1293                                                               ' JOI N AHOBPR.V IEW_FACILI TY_LOOKUP  inst ON in st.ID = ev al.STD_INS TITUTION_I D ' +
        1294                                                              ' WHER E eval.REG ISTRANT_VI SIT_ID = a .REGISTRAN T_ID ' +
        1295                                                                ' AN D eval.EVA LUATION_FL AG = ''Y''  ' +
        1296                                                                ' AN D inst.BAS E_ID = ' +  CONVERT(V ARCHAR(20) ,@Evaluate dInstituti onId) + ')  ';
        1297         ELSE
        1298         IF @ EvaluatedL ocationTyp e = 'Insti tution' 
        1299           SE T @RegCrit eria = @Re gCriteria  +  ' AND E XISTS(SELE CT * FROM  AHOBPR.REG ISTRANT_VI SIT eval '  +
        1300                                                               ' JOI N AHOBPR.V IEW_FACILI TY_LOOKUP  inst ON in st.ID = ev al.STD_INS TITUTION_I D ' +
        1301                                                              ' WHER E eval.REG ISTRANT_VI SIT_ID = a .REGISTRAN T_ID ' +
        1302                                                                ' AN D eval.EVA LUATION_FL AG = ''Y''  ' +
        1303                                                                ' AN D eval.STD _INSTITUTI ON_ID = '  + CONVERT( VARCHAR(20 ),@Evaluat edInstitut ionId)  +  ') '; 
        1304       END;
        1305       
        1306   -- Add cri teria and  Close With  Statement
        1307     SET @Dep loyWith =  @DeployWit h + @RegCr iteria + '  GROUP BY  a.REGISTRA NT_ID ) ' 
        1308     SET @Sub PopWith =  @SubPopWit h + @RegCr iteria + '  GROUP BY  a.REGISTRA NT_ID ) ' 
        1309     SET @Adm inWith =   @AdminWith   + @RegCr iteria + '  GROUP BY  a.REGISTRA NT_ID ) ' 
        1310  
        1311     SET @Que ry =  @Sub PopWith +   @AdminWit h + @Deplo yWith +  @ MainQuery  + @RegCrit eria;             
        1312  
        1313     PRINT  @ Query;
        1314     
        1315    EXECUTE ( @Query);  
        1316   END;
        1317  
        1318  
        1319  
        1320   -- Test Ca ses
        1321   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] 
        1322   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ status = ' 6,7'
        1323   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ dutyStatus  = '1,2'
        1324   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ formStartF romDateTex t  = '2001 0101'
        1325   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ formStartT oDateText  = '2014123 1'
        1326   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ healthFact or = '44,4 5,46,47' 
        1327   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ formComple tionFromDa teText  =  '20010101'
        1328   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ formComple tionToDate Text  = '2 0141231'
        1329   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ healthConc erns = 'Ye s'     , 
        1330   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ requestToB eSeen = 'Y es
        1331   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ subpopulat ionFlag =  '64,65,66, 67'
        1332   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ deployment All = 'Egy pt'
        1333   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ deployment Exposure   = 'Iraq'
        1334   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ adminFlag  = '59,60'  ,@adminFla gFromDateT ext = '201 50101' , @ adminFlagT oDateText  = '2015020 1'
        1335   -- EXECUTE  [AHOBPR]. [SP_Report AdHocByInd ividual] @ questionNu mber = '5. 4.A'  , @a nswer = '2 221'
        1336   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual]
        1337   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Ass ignedLocat ionType =  'NLA'
        1338   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Ass ignedLocat ionType =  'VISN', @A ssignedLoc ationKey =  'V16'
        1339   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Ass ignedLocat ionType =  'Base', @A ssignedLoc ationKey =  '1000089'
        1340   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Ass ignedLocat ionType =  'Instituti on', @Assi gnedLocati onKey = '1 000089'
        1341   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual]  @et hnicity =  'JEWISH'
        1342   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Eva luatedLoca tionType =  'NLA'
        1343   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Eva luatedLoca tionType =  'VISN', @ EvaluatedL ocationKey  = 'V16'
        1344   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Eva luatedLoca tionType =  'Base', @ EvaluatedL ocationKey  = '100008 9'
        1345   -- exec [A HOBPR].[SP _ReportAdH ocByIndivi dual] @Eva luatedLoca tionType =  'Institut ion', @Eva luatedLoca tionKey =  '1000089'
        1346  
        1347   GO
        1348   PRINT 'ALT ER PROCEDU RE SP_Repo rtParticip ation...';
        1349   GO
        1350   -- ======= ========== ========== ========== ========
        1351   -- Author:                Bruce  Clegg
        1352   -- Create  date: Dec  30, 2014
        1353   -- Descrip tion: Used  for the A HOBPR Part icipation  Report        -- exec  [AHOBPR]. [SP_Report Participat ion] 
        1354   -- 2015033 0 - Bruce  Clegg - Ad ded VisnId  value of  NLA to fin d Null loc ations
        1355   -- 2015042 7 - Bruce  Clegg - Ch ange to Lo cationType  and Key,  for both A ssigned an d Evaluate d Location s
        1356   -- 2015071 0 - Bruce  Clegg - Re write usin g Dynamic  SQL for Pe rformance
        1357   -- 2015091 0 - Bruce  Clegg - Re moved sele ction for  Question 1 .2.A for D eployments
        1358   -- ======= ========== ========== ========== ========
        1359   ALTER PROC EDURE [AHO BPR].[SP_R eportParti cipation]
        1360          @St artDate DA TETIME2(0)  = NULL,  
        1361          @En dDate   DA TETIME2(0)  = NULL,
        1362          @As signedLoca tionType   VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        1363          @As signedLoca tionKey    VARCHAR(50 ) = NULL,   -- 'V16',  'V01'     1000109,   1000089
        1364          @Ev aluatedLoc ationType  VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        1365          @Ev aluatedLoc ationKey   VARCHAR(50 ) = NULL    -- 'V16',  'V01'     1000109,   1000089
        1366   AS
        1367   BEGIN
        1368  
        1369     SET @Sta rtDate = I SNULL(@Sta rtDate,'19 900802');  -- Desert  Storm star t date
        1370     SET @End Date = ISN ULL(@EndDa te, GetDat e());
        1371     
        1372     DECLARE  @ConsentSt atusCount  INT = 0,
        1373              @EligibleS tatusCount  INT = 0,
        1374              @Participa ntStatusCo unt INT =  0,
        1375              @HealthCon cernsCount  INT = 0,
        1376              @NoHealthC oncernsCou nt INT = 0 ,
        1377              @RequestSe enCount IN T = 0,
        1378              @NoRequest SeenCount  INT = 0,
        1379              @DoNotKnow RequestSee nCount INT  = 0,
        1380              @VeteranSe rviceStatu sCount INT  = 0,
        1381              @ActiveDut yServiceSt atusCount  INT = 0,
        1382              @RetireeSe rviceStatu sCount INT  = 0,
        1383              @Afgh911Co unt INT =  0,
        1384              @Iraq911Co unt INT =  0,
        1385              @SWA911Cou nt INT = 0 ,
        1386              @Pre911Cou nt INT = 0 ,
        1387              @Djibouti9 11Count IN T = 0,
        1388              @MedianDay sToPartici pant DECIM AL(9,2) =  0;    
        1389     
        1390     DECLARE  @AssignedI nstitution Id INT = 0 ,
        1391           @E valuatedIn stitutionI d INT = 0;
        1392  
        1393     DECLARE  @Query NVA RCHAR(MAX) ;
        1394     DECLARE  @Criteria  VARCHAR(20 00) = '';
        1395  
        1396   IF @Assign edLocation Type IN (' Base','Ins titution')  
        1397   AND ISNUME RIC(@Assig nedLocatio nKey) = 1
        1398     SET @Ass ignedInsti tutionId =  CONVERT(I NT,@Assign edLocation Key);
        1399     
        1400   IF @Evalua tedLocatio nType IN ( 'Base','In stitution'
        1401   AND ISNUME RIC(@Evalu atedLocati onKey) = 1
        1402     SET @Eva luatedInst itutionId  = CONVERT( INT,@Evalu atedLocati onKey);
        1403  
        1404     --  Buil d Criteria  string
        1405  
        1406     SET @Cri teria = '  AND respon seStat.QUE STIONNAIRE _COMPLETED _DATE BETW EEN ''' +  CONVERT(VA RCHAR(20), @StartDate ,121) +
        1407                                                                             '' ' AND '''  + CONVERT( VARCHAR(20 ),@EndDate ,121) + '' ' ' ;
        1408     IF @Assi gnedLocati onType = ' NLA' 
        1409       SET @C riteria =  @Criteria  + ' AND re g.STD_INST ITUTION_ID  IS NULL ' ;
        1410  
        1411     IF @Assi gnedLocati onType = ' VISN' 
        1412       SET @C riteria =  @Criteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.VIEW _FACILITY_ LOOKUP ins t ' +
        1413                                            '  WHERE inst .ID = reg. STD_INSTIT UTION_ID '  +
        1414                                                'AND inst .VisnID =  ''' + @Ass ignedLocat ionKey + ' '') ';
        1415           
        1416     IF @Assi gnedLocati onType = ' Base' 
        1417       SET @C riteria =  @Criteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.VIEW _FACILITY_ LOOKUP ins t ' +
        1418                                             ' WHERE inst .ID = reg. STD_INSTIT UTION_ID '  +
        1419                                                'AND inst .BASE_ID =  ' + CONVE RT(VARCHAR (20),@Assi gnedInstit utionId) +  ' ) ';
        1420                    
        1421     IF @Assi gnedLocati onType = ' Institutio n' 
        1422       SET @C riteria =  @Criteria  + ' AND re g.STD_INST ITUTION_ID  = ' + CON VERT(VARCH AR(20),@As signedInst itutionId)  + ' '    
        1423     
        1424     IF @Eval uatedLocat ionType =  'NLA' 
        1425       SET @C riteria =  @Criteria  + ' AND NO T EXISTS(  SELECT * F ROM AHOBPR .REGISTRAN T_VISIT ev al ' +
        1426                                                   'WHERE  eval.REGI STRANT_ID  = Reg.REGI STRANT_ID  ' +
        1427                                                      'AN D eval.EVA LUATION_FL AG = ''Y''  ) ';
        1428             
        1429     IF @Eval uatedLocat ionType =  'VISN' 
        1430       SET @C riteria =  @Criteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.REGI STRANT_VIS IT eval '  +
        1431                                                      'JO IN AHOBPR. VIEW_FACIL ITY_LOOKUP  inst ON i nst.ID = e val.STD_IN STITUTION_ ID ' +
        1432                                                    ' WHE RE eval.RE GISTRANT_I D = Reg.RE GISTRANT_I D ' +
        1433                                                       'A ND inst.Vi snID = '''  +  @Evalu atedLocati onKey + '' ' ' +
        1434                                                       'A ND eval.EV ALUATION_F LAG = ''Y' ') ' ; 
        1435                    
        1436     IF @Eval uatedLocat ionType =  'Base' 
        1437       SET @C riteria =  @Criteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.REGI STRANT_VIS IT eval '  +
        1438                                                      'JO IN AHOBPR. VIEW_FACIL ITY_LOOKUP  inst ON i nst.ID = e val.STD_IN STITUTION_ ID ' +
        1439                                                    ' WHE RE eval.RE GISTRANT_I D = Reg.RE GISTRANT_I D ' +
        1440                                               ' AND inst .BASE_ID =  ' + CONVE RT(VARCHAR (20),@Eval uatedInsti tutionId) 
        1441                                                 ' AND ev al.EVALUAT ION_FLAG =  ''Y'') ';  
        1442     IF @Eval uatedLocat ionType =  'Instituti on' 
        1443       SET @C riteria =  @Criteria  + ' AND EX ISTS(SELEC T * FROM A HOBPR.REGI STRANT_VIS IT eval '  +
        1444                                            '  WHERE eval .REGISTRAN T_ID = Reg .REGISTRAN T_ID '+
        1445                                               ' AND eval .STD_INSTI TUTION_ID  = ' + CONV ERT(VARCHA R(20),@Eva luatedInst itutionId)  +
        1446                                               ' AND eval .EVALUATIO N_FLAG = ' 'Y'') '; 
        1447  
        1448     --  @Par ticipantSt atusCount
        1449     SET @Que ry = ' SEL ECT @Parti cipantStat usCount =  COUNT(*) '  +
        1450                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1451                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1452                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1453                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID '  
        1454                  + @Cri teria     
        1455                  + '  A ND stat.RE GISTRANT_S TATUS = '' Participan t'' '; 
        1456                    
        1457     PRINT @Q uery;
        1458     EXEC sp_ executesql  @Query,   N'@Partici pantStatus Count INT  OUTPUT',     @Partici pantStatus Count OUTP UT;
        1459  
        1460      
        1461       --  @H ealthConce rnsCount
        1462     SET @Que ry = ' SEL ECT @Healt hConcernsC ount = COU NT(*) ' +
        1463                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1464                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1465                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1466                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID '  
        1467                  + ' WH ERE reg.HE ALTH_CONCE RNS_RESPON SE = ''Yes '' '
        1468                  + @Cri teria; 
        1469                    
        1470     PRINT @Q uery;
        1471     EXEC sp_ executesql  @Query,   N'@HealthC oncernsCou nt INT OUT PUT',    @ HealthConc ernsCount  OUTPUT;
        1472  
        1473     --  @NoH ealthConce rnsCount
        1474     SET @Que ry = ' SEL ECT @NoHea lthConcern sCount = C OUNT(*) '  +
        1475                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1476                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1477                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1478                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID '  
        1479                  + ' WH ERE reg.HE ALTH_CONCE RNS_RESPON SE IS NULL  '
        1480                  + @Cri teria; 
        1481                    
        1482     PRINT @Q uery;
        1483     EXEC sp_ executesql  @Query,   N'@NoHealt hConcernsC ount INT O UTPUT',     @NoHealth ConcernsCo unt OUTPUT ;
        1484                                
        1485  
        1486     --  @Req uestSeenCo unt
        1487     SET @Que ry = ' SEL ECT @Reque stSeenCoun t = COUNT( *) ' +
        1488                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1489                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1490                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1491                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID '  
        1492                  + ' WH ERE reg.RE QUEST_SEEN _RESPONSE  = ''Yes''  '
        1493                  + @Cri teria;
        1494                    
        1495     PRINT @Q uery;
        1496     EXEC sp_ executesql  @Query,   N'@Request SeenCount  INT OUTPUT ',    @Req uestSeenCo unt OUTPUT ;
        1497                                                             
        1498     --  @NoR equestSeen Count
        1499     SET @Que ry = ' SEL ECT @NoReq uestSeenCo unt = COUN T(*) ' +
        1500                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1501                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1502                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1503                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID '  
        1504                  + ' WH ERE reg.RE QUEST_SEEN _RESPONSE  = ''No'' '
        1505                  + @Cri teria;
        1506                    
        1507     PRINT @Q uery;
        1508     EXEC sp_ executesql  @Query,   N'@NoReque stSeenCoun t INT OUTP UT',    @N oRequestSe enCount OU TPUT;
        1509                                                                                                    
        1510     --  @DoN otKnowRequ estSeenCou nt
        1511     SET @Que ry = ' SEL ECT @DoNot KnowReques tSeenCount  = COUNT(* ) ' +
        1512                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1513                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1514                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1515                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID '  
        1516                  + ' WH ERE ISNULL (reg.REQUE ST_SEEN_RE SPONSE,''' ') NOT IN  (''Yes'',' 'No'') '
        1517                  + @Cri teria;
        1518                    
        1519     PRINT @Q uery;
        1520     EXEC sp_ executesql  @Query,   N'@DoNotKn owRequestS eenCount I NT OUTPUT' , @DoNotKn owRequestS eenCount O UTPUT;       
        1521                                                           
        1522     --  @Act iveDutySer viceStatus Count
        1523     SET @Que ry = ' SEL ECT @Activ eDutyServi ceStatusCo unt = COUN T(*) ' +
        1524                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1525                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1526                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1527                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID ' +
        1528                    '  J OIN AHOBPR .STD_SERVI CE_STATUS  svc  ON sv c.STD_SERV ICE_STATUS _ID = reg. STD_SERVIC E_STATUS_I D '
        1529                  + ' WH ERE svc.SE RVICE_STAT US = ''Act ive Duty''  '
        1530                  + @Cri teria;
        1531                    
        1532     PRINT @Q uery;
        1533     EXEC sp_ executesql  @Query,   N'@ActiveD utyService StatusCoun t INT OUTP UT', @Acti veDutyServ iceStatusC ount OUTPU T;        
        1534            
        1535      
        1536     --  @Vet eranServic eStatusCou nt
        1537     SET @Que ry = ' SEL ECT @Veter anServiceS tatusCount  = COUNT(* ) ' +
        1538                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1539                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1540                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1541                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID ' +
        1542                    '  J OIN AHOBPR .STD_SERVI CE_STATUS  svc  ON sv c.STD_SERV ICE_STATUS _ID = reg. STD_SERVIC E_STATUS_I D '
        1543                  + ' WH ERE svc.SE RVICE_STAT US = ''Sep arated'' '
        1544                  + @Cri teria;
        1545                    
        1546     PRINT @Q uery;
        1547     EXEC sp_ executesql  @Query,   N'@Veteran ServiceSta tusCount I NT OUTPUT' , @Veteran ServiceSta tusCount O UTPUT;                      
        1548    
        1549     --  @Ret ireeServic eStatusCou nt
        1550     SET @Que ry = ' SEL ECT @Retir eeServiceS tatusCount  = COUNT(* ) ' +
        1551                    '  F ROM [AHOBP R].[REGIST RANT] reg  ' +
        1552                    '  J OIN AHOBPR .STD_REGIS TRANT_STAT US stat ON  stat.STD_ REGISTRANT _STATUS_ID  = reg.STD _REGISTRAN T_STATUS_I D ' +
        1553                    '  J OIN AHOBPR .FORM_RESP ONSE resp  ON resp.RE GISTRANT_I D = reg.RE GISTRANT_I D ' +
        1554                    '  J OIN AHOBPR .FORM_RESP ONSE_STATU S response Stat  ON r esponseSta t.FORM_RES PONSE_ID =  resp.FORM _RESPONSE_ ID ' +
        1555                    '  J OIN AHOBPR .STD_SERVI CE_STATUS  svc  ON sv c.STD_SERV ICE_STATUS _ID = reg. STD_SERVIC E_STATUS_I D '
        1556                  + ' WH ERE svc.SE RVICE_STAT US = ''Ret iree'' '
        1557                  + @Cri teria;
        1558                    
        1559     PRINT @Q uery;
        1560     EXEC sp_ executesql  @Query,   N'@Retiree ServiceSta tusCount I NT OUTPUT' , @Retiree ServiceSta tusCount O UTPUT;                      
        1561    
        1562        
        1563                                                                 
        1564   -- Deploym ent Counts   
        1565     SET @Que ry = 'WITH  Deploymen ts
        1566     AS ( 
        1567       SELECT  
        1568           dp ly.REGISTR ANT_ID ,
        1569         CASE  WHEN (SUM (CASE WHEN  [DEPLOYME NT_COUNTRY ] = ''Iraq '' 
        1570                                AND  [DEPLOYME NT_START_D ATE] > ''2 0010911'' 
        1571                                THE N 1 ELSE 0  END) )> 0  
        1572               THEN 1 EL SE 0 END A S Iraq911C ount,
        1573         CASE  WHEN (SUM (CASE WHEN  [DEPLOYME NT_COUNTRY ] = ''Afgh anistan''   
        1574                                AND  [DEPLOYME NT_START_D ATE] > ''2 0010911'' 
        1575                               THEN  1 ELSE 0  END)) > 0
        1576               THEN 1 EL SE 0 END A S Afgh911C ount,               
        1577         CASE  WHEN (SUM (CASE WHEN  [DEPLOYME NT_COUNTRY ] = ''Djib outi''  
        1578                                AND  [DEPLOYME NT_START_D ATE] > ''2 0010911'' 
        1579                               THEN  1 ELSE 0  END)) > 0
        1580               THEN 1 EL SE 0 END A S Djibouti 911Count,                
        1581         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'')
        1582                                AND  [DEPLOYME NT_START_D ATE] > ''2 0010911'' 
        1583                                THE N 1 ELSE 0  END)) > 0
        1584               THEN 1 EL SE 0 END A S SWA911Co unt,
        1585         CASE  WHEN (SUM (CASE WHEN  ([DEPLOYM ENT_START_ DATE] BETW EEN ''1990 0802'' AND  ''2001091 1'' ) 
        1586                                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'')
        1587                               THEN  1 ELSE 0  END)) > 0
        1588               THEN 1 EL SE 0 END   AS Pre911C ount
        1589       FROM [ AHOBPR].[R EGISTRANT_ DEPLOYMENT ] dply
        1590           JO IN AHOBPR. REGISTRANT  Reg ON Re g.REGISTRA NT_ID = dp ly.REGISTR ANT_ID
        1591           JO IN AHOBPR. FORM_RESPO NSE resp O N resp.REG ISTRANT_ID  = dply.RE GISTRANT_I D
        1592           JO IN AHOBPR. FORM_RESPO NSE_STATUS  responseS tat ON res ponseStat. FORM_RESPO NSE_ID = r esp.FORM_R ESPONSE_ID    
        1593                 WHERE 1  = 1 ' +
        1594                 @Criter ia +                 
        1595       ' GROU P BY dply. REGISTRANT _ID 
        1596        )
        1597        SELEC T @Afgh911 Count =  S UM(ISNULL( Deployment s.Afgh911C ount,0))  
        1598               ,@Iraq911 Count =  S UM(ISNULL( Deployment s.Iraq911C ount,0))
        1599               ,@SWA911C ount = SUM (ISNULL(De ployments. SWA911Coun t,0))
        1600               ,@Pre911C ount =   S UM(ISNULL( Deployment s.Pre911Co unt,0))
        1601               ,@Djibout i911Count  = SUM(ISNU LL(Deploym ents.Djibo uti911Coun t,0))
        1602         FROM  Deploymen ts' ;
        1603         
        1604     PRINT @Q uery;
        1605     EXEC sp_ executesql  @Query,  
        1606          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'
        1607         , @A fgh911Coun t OUTPUT,  @Iraq911Co unt OUTPUT , @SWA911C ount OUTPU T, @Pre911 Count OUTP UT, @Djibo uti911Coun t OUTPUT;              
        1608  
        1609     
        1610        CREAT E TABLE #D aysToParti cipant(DAY S INT);
        1611      
        1612       -- Med ian Days f rom Eligib le to Part icipant St atus    
        1613       -- 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
        1614  
        1615       SET @Q uery = 'WI TH eligibl
        1616         AS (  
        1617              SELECT [RE GISTRANT_I D],MIN([CR EATED]) AS  DateEligi ble
        1618                FROM [AH OBPR].[PRO CESS_METRI CS]
        1619               WHERE [PR OCESS_METR ICS_VALUE]  = ''Eligi ble''
        1620               GROUP BY  [REGISTRAN T_ID]
        1621            ) ,
        1622         part icipant 
        1623         AS (
        1624            S ELECT [REG ISTRANT_ID ],MAX([CRE ATED]) AS  DatePartic ipant
        1625               FROM [AHO BPR].[PROC ESS_METRIC S]
        1626              WHERE [PRO CESS_METRI CS_VALUE]  = ''Partic ipant''   
        1627               GROUP BY  [REGISTRAN T_ID]
        1628              )
        1629        INSER T INTO #Da ysToPartic ipant(DAYS )
        1630       SELECT  
        1631         CASE  WHEN Date Participan t > DateEl igible THE N DATEDIFF (Day,DateE ligible,Da teParticip ant) ELSE  0 END AS D aysDiffere nce
        1632         FROM  [AHOBPR]. [REGISTRAN T] reg
        1633         JOIN  eligible  ON reg.REG ISTRANT_ID  = eligibl e.REGISTRA NT_ID
        1634         JOIN  participa nt ON reg. REGISTRANT _ID = part icipant.RE GISTRANT_I D   
        1635         JOIN  AHOBPR.FO RM_RESPONS E resp ON  resp.REGIS TRANT_ID =  reg.REGIS TRANT_ID
        1636         JOIN  AHOBPR.FO RM_RESPONS E_STATUS r esponseSta t ON respo nseStat.FO RM_RESPONS E_ID = res p.FORM_RES PONSE_ID '  +
        1637       'WHERE  1 = 1 '   + @Criteri a +  
        1638      ' ORDER  BY DaysDi fference';
        1639  
        1640     PRINT @Q uery;
        1641     EXECUTE( @Query);
        1642        
        1643       WITH C ounts AS
        1644       (
        1645          SEL ECT c=COUN T(*)
        1646          FRO M #DaysToP articipant
        1647       )
        1648       SELECT  @MedianDa ysToPartic ipant = AV G(0. + DAY S)
        1649       FROM C ounts a
        1650       CROSS  APPLY
        1651       (
        1652          SEL ECT TOP((( a.c - 1) /  2) + (1 +  (1 - a.c  % 2)))
        1653              DAYS, r=RO W_NUMBER()  OVER (ORD ER BY DAYS )
        1654          FRO M #DaysToP articipant  b
        1655          ORD ER BY DAYS
        1656       ) p
        1657       WHERE  r BETWEEN  ((a.c - 1)  / 2) + 1  AND (((a.c  - 1) / 2)  + (1 + (1  - a.c % 2 ))); 
        1658            
        1659       DROP   TABLE #Day sToPartici pant;                     
        1660    
        1661    -- Return  Results
        1662      SELECT  ISNULL(@Pa rticipantS tatusCount ,0) AS Par ticipantSt atusCount,
        1663              ISNULL(@He althConcer nsCount,0)  AS Report edHealthCo ncernsCoun t,
        1664              ISNULL(@No HealthConc ernsCount, 0) AS  NoR eportedHea lthConcern sCount,
        1665              ISNULL(@Re questSeenC ount,0) AS  RequestSe enCount,
        1666              ISNULL(@No RequestSee nCount,0)  AS NoReque stSeenCoun t,
        1667              ISNULL(@Do NotKnowReq uestSeenCo unt,0) AS  DoNotKnowR equestSeen Count,
        1668              ISNULL(@Ve teranServi ceStatusCo unt,0) AS  VeteranSer viceStatus Count ,
        1669              ISNULL(@Ac tiveDutySe rviceStatu sCount,0)  AS  Active DutyServic eStatusCou nt,
        1670              ISNULL(@Re tireeServi ceStatusCo unt,0) AS  RetireeSer viceStatus Count,
        1671              ISNULL(@Af gh911Count ,0) AS  Af gh911Count ,
        1672              ISNULL(@Ir aq911Count ,0) AS Ira q911Count,
        1673              ISNULL(@SW A911Count, 0) AS  Sou thWestAsia 911Count,
        1674              ISNULL(@Pr e911Count, 0) AS  Pre 911Count,
        1675              ISNULL(@Me dianDaysTo Participan t,0.0) AS  MedianDays ToParticip ant,
        1676              ISNULL(@Dj ibouti911C ount,0) AS  Djibouti9 11Count ;
        1677  
        1678   END
        1679  
        1680   -- exec [A HOBPR].[SP _ReportPar ticipation ]
        1681   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Assigne dLocationT ype = 'NLA '
        1682   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Assigne dLocationT ype = 'VIS N', @Assig nedLocatio nKey = 'V1 6'
        1683   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Assigne dLocationT ype = 'Bas e', @Assig nedLocatio nKey = '10 00089'
        1684   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Assigne dLocationT ype = 'Ins titution',  @Assigned LocationKe y = '10000 89'
        1685   -- exec [A HOBPR].[SP _ReportPar ticipation ]
        1686   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Evaluat edLocation Type = 'NL A'
        1687   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Evaluat edLocation Type = 'VI SN', @Eval uatedLocat ionKey = ' V16'
        1688   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Evaluat edLocation Type = 'Ba se', @Eval uatedLocat ionKey = ' 1000089'
        1689   -- exec [A HOBPR].[SP _ReportPar ticipation ] @Evaluat edLocation Type = 'In stitution' , @Evaluat edLocation Key = '100 0089'
        1690   GO
        1691  
        1692   PRINT 'ALT ER PROCEDU RE SP_Repo rtParticip antDetails ...';
        1693   GO
        1694   -- ======= ========== ========== ========== ========
        1695   -- Author:                Bruce  Clegg
        1696   -- Create  date: Jan  5, 2015
        1697   -- 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)
        1698   -- 2015033 0 - Bruce  Clegg - Ad ded VisnId  value of  NLA to fin d Null loc ations
        1699   -- 2015042 7 - Bruce  Clegg - Ch ange to Lo cationType  and Key,  for both A ssigned an d Evaluate d Location s
        1700   -- 2015050 4 - Bruce  Clegg - Fi x @Request Seen selec tion logic  to match  Participat ion Report
        1701   -- 2015071 0 - Bruce  Clegg - Re write usin g Dynamic  SQL for Pe rformance
        1702   -- 2015091 0 - Bruce  Clegg - Re moved sele ction for  Question 1 .2.A for D eployments
        1703   -- ======= ========== ========== ========== ========
        1704   ALTER PROC EDURE [AHO BPR].[SP_R eportParti cipantDeta ils]
        1705          @St artDate DA TETIME2(0)  = NULL,  
        1706          @En dDate DATE TIME2(0) =  NULL,
        1707          @Re gistrantSt atus  VARC HAR(50) =  '',  -- 'P articipant ', 'Review  - Not Eli gible', 'E ligible',  'No Consen t', 'Conse nt', 'Revi ew'
        1708          @Sv cStatus  V ARCHAR(50)  = '',          -- 'V eteran', ' Retiree',  'Active Du ty'
        1709          @Re questSeen   VARCHAR(5 0) = '',        -- 'Y es', 'No',  'Unknown'
        1710          @He althConcer n  VARCHAR (50) = '',      -- 'Y es', 'No'
        1711          @De ploymentGr oup VARCHA R(50) = '' ,    -- 'A fgh911', ' Iraq911',  'Southwest AsiaAfter9 11', 'Pre9 11',  'Dji boutiAfter 911'
        1712          @As signedLoca tionType   VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        1713          @As signedLoca tionKey    VARCHAR(50 ) = NULL,   -- 'V16',  'V01'     1000109,   1000089
        1714          @Ev aluatedLoc ationType  VARCHAR(20 ) = NULL,   -- 'VISN' , 'Base',  'Instituti on', 'NLA'  = No Loca tion Assig ned
        1715          @Ev aluatedLoc ationKey   VARCHAR(50 ) = NULL    -- 'V16',  'V01'     1000109,   1000089
        1716   AS
        1717   BEGIN
        1718  
        1719     SET @Sta rtDate = I SNULL(@Sta rtDate,'19 900802');
        1720     SET @End Date = ISN ULL(@EndDa te, GetDat e());
        1721     SET @End Date = dbo .AddMaxTim e(@EndDate );  -- Add s 23:59:59  to criter ia paramet er
        1722  
        1723     DECLARE  @AssignedI nstitution Id INT = 0 ,
        1724              @Evaluated Institutio nId INT =  0;
        1725     DECLARE  @Query NVA RCHAR(MAX) ;
        1726  
        1727     IF @Assi gnedLocati onType IN  ('Base','I nstitution ') 
        1728     AND ISNU MERIC(@Ass ignedLocat ionKey) =  1
        1729       SET @A ssignedIns titutionId  = CONVERT (INT,@Assi gnedLocati onKey);
        1730     
        1731     IF @Eval uatedLocat ionType IN  ('Base',' Institutio n') 
        1732     AND ISNU MERIC(@Eva luatedLoca tionKey) =  1
        1733       SET @E valuatedIn stitutionI d = CONVER T(INT,@Eva luatedLoca tionKey);
        1734  
        1735     --Temp t able for D eployments
        1736     CREATE T ABLE #Depl oyments
        1737     (
        1738               [REGISTRA NT_ID] INT
        1739     ); 
        1740     
        1741     -- INSER T Registra nts if the y are in t he Deploym ent Group
        1742     SET @Que ry = ' INS ERT INTO # Deployment s([REGISTR ANT_ID]) '  +
        1743                   ' SEL ECT DISTIN CT deploym ent.REGIST RANT_ID '  +
        1744                   '   F ROM AHOBPR .REGISTRAN T_DEPLOYME NT deploym ent  ' +
        1745                   '  WH ERE 1 = 1  ';
        1746     IF @Depl oymentGrou p = 'Afgh9 11'    
        1747        SET @ Query =  @ Query + '  AND [DEPLO YMENT_COUN TRY] = ''A fghanistan '' ' + 
        1748                                 '  AND [DEPLO YMENT_STAR T_DATE] >  ''20010911 '' ';
        1749     ELSE
        1750     IF @Depl oymentGrou p = 'Iraq9 11'
        1751         SET  @Query =   @Query + '  AND [DEPL OYMENT_COU NTRY] = '' Iraq'' ' +  
        1752                                    'AND [DEPL OYMENT_STA RT_DATE] >  ''2001091 1'' '; 
        1753     ELSE
        1754     IF @Depl oymentGrou p = 'Djibo utiAfter91 1'
        1755         SET  @Query =   @Query + '  AND [DEPL OYMENT_COU NTRY] = '' Djibouti''  ' + 
        1756                                    'AND [DEPL OYMENT_STA RT_DATE] >  ''2001091 1'' '; 
        1757     ELSE
        1758     IF @Depl oymentGrou p = 'South westAsiaAf ter911'
        1759         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'' ) ' +
        1760                                  ' AND [DEPLO YMENT_STAR T_DATE] >  ''20010911 ''  ';
        1761     ELSE
        1762     IF @Depl oymentGrou p = 'Pre91 1'
        1763         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'')  ' +     
        1764                                  '  AND [DEPL OYMENT_STA RT_DATE] B ETWEEN ''1 9900802''  AND ''2001 0911''  ';
        1765     IF ISNUL L(@Deploym entGroup,' ') > ''
        1766       EXECUT E(@Query);
        1767      
        1768     SET @Que ry = '
        1769       WITH e ligible 
        1770         AS (  
        1771              SELECT [RE GISTRANT_I D],MIN([CR EATED]) AS  DateEligi ble
        1772                FROM [AH OBPR].[PRO CESS_METRI CS]
        1773               WHERE [PR OCESS_METR ICS_VALUE]  IN (''Eli gible'','' Reviewed -  Eligible' ')
        1774               GROUP BY  [REGISTRAN T_ID]
        1775            ) ,
        1776         part icipant 
        1777         AS (
        1778            S ELECT [REG ISTRANT_ID ], MAX([CR EATED]) AS  DateParti cipant
        1779               FROM [AHO BPR].[PROC ESS_METRIC S]
        1780              WHERE [PRO CESS_METRI CS_VALUE]  = ''Partic ipant''   
        1781              GROUP BY [ REGISTRANT _ID]
        1782              )        
        1783           SE LECT reg.R EGISTRANT_ ID
        1784                          ,(reg.LAS T_NAME + ' ', '' + re g.FIRST_NA ME) AS Nam e
        1785                          ,stat.REG ISTRANT_ST ATUS
        1786                          ,svc.SERV ICE_STATUS
        1787                          ,QUESTION NAIRE_COMP LETED_DATE
        1788                          ,ISNULL(r eg.REQUEST _SEEN_RESP ONSE, ''Un known'') A S REQUEST_ SEEN_RESPO NSE
        1789                          ,ISNULL(r eg.HEALTH_ CONCERNS_R ESPONSE,'' No'') AS H EALTH_CONC ERNS_RESPO NSE
        1790                          ,ISNULL(i nst.Name,' ''') AS In stitutionN ame
        1791                          ,CONVERT( VARCHAR(10 ), respons eStat.QUES TIONNAIRE_ COMPLETED_ DATE, 101)  AS QUESTI ONNAIRE_CO MPLETED_Di splay
        1792                          ,CASE WHE N DatePart icipant >  DateEligib le THEN DA TEDIFF(Day ,DateEligi ble,DatePa rticipant)  ELSE 0 EN D AS DaysE ligibleToP articipant
        1793            , reg.BIRTH_ DATE AS Bi rthDate
        1794            , CONVERT(VA RCHAR(10),  reg.BIRTH _DATE, 101 ) AS Birth DateDispla y
        1795              FROM AHOBP R.REGISTRA NT reg
        1796                    JOIN  AHOBPR.ST D_REGISTRA NT_STATUS  stat 
        1797                      ON  reg.STD_R EGISTRANT_ STATUS_ID  = stat.STD _REGISTRAN T_STATUS_I D
        1798                    JOIN  AHOBPR.ST D_SERVICE_ STATUS svc
        1799                      ON  svc.STD_S ERVICE_STA TUS_ID = r eg.STD_SER VICE_STATU S_ID
        1800                    JOIN  AHOBPR.FO RM_RESPONS E resp 
        1801                      ON  resp.REGI STRANT_ID  = reg.REGI STRANT_ID
        1802                    JOIN  AHOBPR.FO RM_RESPONS E_STATUS r esponseSta t
        1803                      ON  responseS tat.FORM_R ESPONSE_ID  = resp.FO RM_RESPONS E_ID
        1804       JOIN e ligible 
        1805         ON r eg.REGISTR ANT_ID = e ligible.RE GISTRANT_I D
        1806       JOIN p articipant  
        1807         ON r eg.REGISTR ANT_ID = p articipant .REGISTRAN T_ID                      
        1808                    LEFT  JOIN AHOB PR.VIEW_FA CILITY_LOO KUP inst
        1809                      ON  inst.ID =  reg.STD_I NSTITUTION _ID
        1810            W HERE respo nseStat.QU ESTIONNAIR E_COMPLETE D_DATE BET WEEN ''' + CONVERT(VA RCHAR(20),  @StartDat e,121) + 
        1811                                                           ''' AND ' '' + CONVE RT(VARCHAR (20), @End Date,121)  + ''' ';
        1812  
        1813     IF ISNUL L(@Registr antStatus, '') > ''
        1814              SET @Query  = @Query  + ' AND st at.REGISTR ANT_STATUS  = ''' + @ Registrant Status + ' '' ';
        1815  
        1816     IF ISNUL L(@SvcStat us,'') > ' '
        1817              SET @Query  = @Query  + ' AND sv c.SERVICE_ STATUS = ' '' +  @Svc Status + ' '' ';
        1818  
        1819     IF ISNUL L(@HealthC oncern,'')  > ''
        1820              SET @Query  = @Query  + ' AND IS NULL(reg.H EALTH_CONC ERNS_RESPO NSE,''No'' ) = ''' +   @HealthCo ncern + '' ' ';
        1821  
        1822     IF ISNUL L(@Request Seen,'') >  ''
        1823              SET @Query  = @Query  + 'AND ISN ULL(reg.RE QUEST_SEEN _RESPONSE,  ''Unknown '') = '''  +  @Reques tSeen + '' ' ';
        1824  
        1825     IF ISNUL L(@Deploym entGroup,' ') > ''
        1826              SET @Query  = @Query  + 'AND EXI STS(SELECT  * FROM #D eployments  WHERE #De ployments. REGISTRANT _ID = reg. REGISTRANT _ID) ';
        1827  
        1828     IF @Assi gnedLocati onType = ' NLA' 
        1829       SET @Q uery = @Qu ery + ' AN D reg.STD_ INSTITUTIO N_ID IS NU LL ' ;
        1830  
        1831     IF @Assi gnedLocati onType = ' VISN' 
        1832       SET @Q uery = @Qu ery + ' AN D EXISTS(S ELECT * FR OM AHOBPR. VIEW_FACIL ITY_LOOKUP  inst ' +
        1833                                                                  '  WHERE inst .ID = reg. STD_INSTIT UTION_ID '  + 
        1834                                                                  '    AND inst .VisnID =  ''' + @Ass ignedLocat ionKey + ' '') ';
        1835    
        1836     IF @Assi gnedLocati onType = ' Base' 
        1837       SET @Q uery = @Qu ery + ' AN D EXISTS(S ELECT * FR OM AHOBPR. VIEW_FACIL ITY_LOOKUP  inst ' +
        1838                                                          ' WHERE in st.ID = re g.STD_INST ITUTION_ID  ' +
        1839                                                          '   AND in st.BASE_ID  = ' + CON VERT(VARCH AR(20),@As signedInst itutionId)  + ') '
        1840    
        1841     IF @Assi gnedLocati onType = ' Institutio n' 
        1842       SET @Q uery = @Qu ery + ' AN D reg.STD_ INSTITUTIO N_ID = ' +  CONVERT(V ARCHAR(20) ,@Assigned Institutio nId);
        1843  
        1844     IF @Eval uatedLocat ionType =  'NLA' 
        1845       SET @Q uery = @Qu ery + ' AN D NOT EXIS TS( SELECT  * FROM AH OBPR.REGIS TRANT_VISI T eval ' +
        1846                                                                ' WH ERE eval.R EGISTRANT_ VISIT_ID =  reg.REGIS TRANT_ID '  +
        1847                                                                '    AND eval.E VALUATION_ FLAG = ''Y '') ' ; 
        1848    
        1849     IF @Eval uatedLocat ionType =  'VISN' 
        1850       SET @Q uery = @Qu ery + ' AN D EXISTS(S ELECT * FR OM AHOBPR. REGISTRANT _VISIT eva l ' +
        1851                                                            ' JOIN A HOBPR.VIEW _FACILITY_ LOOKUP ins t ON inst. ID = eval. STD_INSTIT UTION_ID '  +
        1852                                                          ' WHERE ev al.REGISTR ANT_VISIT_ ID = reg.R EGISTRANT_ ID ' +
        1853                                                            ' AND ev al.EVALUAT ION_FLAG =  ''Y'' ' +
        1854                                                            ' AND in st.VisnID  = ''' + @E valuatedLo cationKey  + ''') '; 
        1855    
        1856     IF @Eval uatedLocat ionType =  'Base' 
        1857       SET @Q uery = @Qu ery +  ' A ND EXISTS( SELECT * F ROM AHOBPR .REGISTRAN T_VISIT ev al ' +
        1858                                                            ' JOIN A HOBPR.VIEW _FACILITY_ LOOKUP ins t ON inst. ID = eval. STD_INSTIT UTION_ID '  +
        1859                                                          ' WHERE ev al.REGISTR ANT_VISIT_ ID = reg.R EGISTRANT_ ID ' +
        1860                                                            ' AND ev al.EVALUAT ION_FLAG =  ''Y'' ' +
        1861                                                            ' AND in st.BASE_ID  = ' + CON VERT(VARCH AR(20),@Ev aluatedIns titutionId ) + ') ';
        1862     
        1863     IF @Eval uatedLocat ionType =  'Instituti on' 
        1864       SET @Q uery = @Qu ery +  ' A ND EXISTS( SELECT * F ROM AHOBPR .REGISTRAN T_VISIT ev al ' +
        1865                                                            ' JOIN A HOBPR.VIEW _FACILITY_ LOOKUP ins t ON inst. ID = eval. STD_INSTIT UTION_ID '  +
        1866                                                          ' WHERE ev al.REGISTR ANT_VISIT_ ID = reg.R EGISTRANT_ ID ' +
        1867                                                            ' AND ev al.EVALUAT ION_FLAG =  ''Y'' ' +
        1868                                                            ' AND ev al.STD_INS TITUTION_I D = ' + CO NVERT(VARC HAR(20),@E valuatedIn stitutionI d)  + ') '
        1869  
        1870     SET @Que ry = @Quer y + ' ORDE R BY respo nseStat.QU ESTIONNAIR E_COMPLETE D_DATE ';
        1871  
        1872     PRINT @Q uery;
        1873     
        1874     EXECUTE( @Query);
        1875         
        1876     DROP TAB LE #Deploy ments;                                                                                                                 
        1877   END
        1878  
        1879   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] 
        1880   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] '20 140101', ' 20150101',  NULL, NUL L, 'Unknow n'
        1881   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, ' Participan t'
        1882   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, 'Sepa rated'
        1883   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  'Yes'
        1884   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  'No'
        1885   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  'Unknown'
        1886   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, 'Ye s'
        1887   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, 'No '
        1888   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, NUL L, 'Afgh91 1'
        1889   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, NUL L, 'Iraq91 1'
        1890   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, NUL L, 'Southw estAsiaAft er911'
        1891   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, NUL L, 'Djibou tiAfter911 '
        1892   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] NUL L, NULL, N ULL, NULL,  NULL, NUL L, 'Pre911 '
        1893  
        1894   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails]
        1895   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @As signedLoca tionType =  'NLA'
        1896   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @As signedLoca tionType =  'VISN', @ AssignedLo cationKey  = 'V16'
        1897   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @As signedLoca tionType =  'Base', @ AssignedLo cationKey  = '1000089 '
        1898   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @As signedLoca tionType =  'Institut ion', @Ass ignedLocat ionKey = ' 1000089'
        1899   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails]
        1900   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @Ev aluatedLoc ationType  = 'NLA'
        1901   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @Ev aluatedLoc ationType  = 'VISN',  @Evaluated LocationKe y = 'V16'
        1902   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @Ev aluatedLoc ationType  = 'Base',  @Evaluated LocationKe y = '10000 89'
        1903   -- exec [A HOBPR].[SP _ReportPar ticipantDe tails] @Ev aluatedLoc ationType  = 'Institu tion', @Ev aluatedLoc ationKey =  '1000089'
        1904   GO
        1905  
        1906   INSERT INT O [dbo].[D atabaseCha ngeLog]
        1907               ([MajorRe leaseNumbe r]
        1908               ,[MinorRe leaseNumbe r]
        1909               ,[PointRe leaseNumbe r]
        1910               ,[Hotfix]
        1911               ,[ScriptN ame]
        1912               ,[ScriptD escription ]
        1913               ,[TargetR egistry]
        1914               ,[DateApp lied])
        1915        VALUE S
        1916               ('$(Major ReleaseNum ber)'
        1917               ,'$(Minor ReleaseNum ber)'
        1918               ,'$(Point ReleaseNum ber)'
        1919               ,0
        1920               ,'Registr y.AHOBPR.D atabase.Bu ild.1.0.51 .sql'
        1921                            ,'Regis try.AHOBPR .Database. Build.1.0. 51.sql Scr ipt'
        1922               ,'AHOBPR'
        1923               ,GETDATE( ));
        1924   GO
        1925  
        1926   PRINT '';
        1927   PRINT 'Reg istry.AHOB PR.Databas e.Build.1. 0.51.sql S cript Comp lete.';
        1928   PRINT '';
        1929   PRINT 'Com pleted ' +  CAST(GETD ATE() AS v archar(20) ) + '.';
        1930  
        1931   ---------- ---------- ---------- ---
        1932   -- END OF  GENERATED  DEPLOYMENT  --
        1933   ---------- ---------- ---------- ---