| 1 | SCAPMC33  ;BP/DJB - Get Provider Array For a Pt Tm Pos ; 5/24/99 12:39pm | 
|---|
| 2 | ;;5.3;Scheduling;**177**;May 01, 1999 | 
|---|
| 3 | ; | 
|---|
| 4 | PRPTTP(PTTMPOS,SCDATES,SCLIST,SCERR,SCALLHIS,ADJDATE) ;Get provider array for | 
|---|
| 5 | ;a Patient Team Position Assignment (#404.43). | 
|---|
| 6 | ; | 
|---|
| 7 | ; Input: | 
|---|
| 8 | ;          PTTMPOS - Pointer to entry in PATIENT TEAM POSITION | 
|---|
| 9 | ;                    ASSIGNMENT file (#404.43). | 
|---|
| 10 | ; SCDATES("BEGIN") - Begin date to search (inclusive). | 
|---|
| 11 | ;                    Default 1=Assign Date field in file 404.43. | 
|---|
| 12 | ;                    Default 2=DT | 
|---|
| 13 | ;          ("END"  - End date to search (inclusive). | 
|---|
| 14 | ;                    Default 1=Unassign Date field in file 404.43. | 
|---|
| 15 | ;                    Default 2=DT | 
|---|
| 16 | ;         ("INCL") - 1: Only use pracitioners who were on | 
|---|
| 17 | ;                       team for entire date range | 
|---|
| 18 | ;                    0: Anytime in date range. | 
|---|
| 19 | ;                    Default=1. | 
|---|
| 20 | ;           SCLIST - Array name to store returned data. | 
|---|
| 21 | ;            SCERR - Array name to store error messages. | 
|---|
| 22 | ;                    Ex: ^TMP("ORXX",$J). | 
|---|
| 23 | ;         SCALLHIS - 1: Return unfiltered sub-array in SCLIST | 
|---|
| 24 | ;          ADJDATE - 1: Adjust Start/End dates of provider so they | 
|---|
| 25 | ;                       don't exceed Assign/Unassign dates of Patient | 
|---|
| 26 | ;                       Team Position Assignment. | 
|---|
| 27 | ;Output: | 
|---|
| 28 | ;         SCLIST() - Array of practitioners. See PRTP^SCAPMC8 | 
|---|
| 29 | ;          SCERR() - Array of error msg. See PRTP^SCAPMC8 | 
|---|
| 30 | ;Returned: 1 if ok, 0 if error | 
|---|
| 31 | ; | 
|---|
| 32 | ;Declare variables | 
|---|
| 33 | NEW EDATE,ND,OK,SDATE,TMPOSPTR | 
|---|
| 34 | ; | 
|---|
| 35 | ;Initialize variables | 
|---|
| 36 | S OK=0 | 
|---|
| 37 | I $D(SCERR) KILL @SCERR | 
|---|
| 38 | ; | 
|---|
| 39 | ;Check input | 
|---|
| 40 | I '$G(PTTMPOS) G QUIT | 
|---|
| 41 | I '$D(^SCPT(404.43,PTTMPOS,0)) G QUIT | 
|---|
| 42 | ; | 
|---|
| 43 | ;Get data | 
|---|
| 44 | S ND=$G(^SCPT(404.43,PTTMPOS,0)) ;Zero node of 404.43 | 
|---|
| 45 | S TMPOSPTR=$P(ND,U,2) ;...........Team Position IEN | 
|---|
| 46 | I 'TMPOSPTR G QUIT | 
|---|
| 47 | S SDATE=$P(ND,U,3) ;..............Assigned Date | 
|---|
| 48 | S EDATE=$P(ND,U,4) ;..............Unassigned Date | 
|---|
| 49 | ; | 
|---|
| 50 | S OK=$$ADJUST1(SDATE,EDATE) | 
|---|
| 51 | G:'OK QUIT | 
|---|
| 52 | S OK=$$PRTP^SCAPMC(TMPOSPTR,.SCDATES,.SCLIST,.SCERR,1,.SCALLHIS) | 
|---|
| 53 | G:'OK QUIT | 
|---|
| 54 | G:'$D(SCLIST(0)) QUIT | 
|---|
| 55 | ; | 
|---|
| 56 | I $G(ADJDATE) D ADJUST2 ;Adjust Start/End Dates. | 
|---|
| 57 | ; | 
|---|
| 58 | QUIT Q OK | 
|---|
| 59 | ; | 
|---|
| 60 | ADJUST1(SDATE,EDATE) ;Adjust SCDATES to Assign/Unassign Dates in 404.43. | 
|---|
| 61 | ; | 
|---|
| 62 | NEW OK | 
|---|
| 63 | S OK=0 | 
|---|
| 64 | ; | 
|---|
| 65 | ;Set defaults | 
|---|
| 66 | I '$G(@SCDATES@("BEGIN")) S @SCDATES@("BEGIN")=SDATE | 
|---|
| 67 | I '$G(@SCDATES@("END")) S @SCDATES@("END")=EDATE | 
|---|
| 68 | I '@SCDATES@("BEGIN") S @SCDATES@("BEGIN")=DT | 
|---|
| 69 | I '@SCDATES@("END") S @SCDATES@("END")=DT | 
|---|
| 70 | ; | 
|---|
| 71 | ;Quit if requested date range is outside of 404.43 date range. | 
|---|
| 72 | I SDATE,@SCDATES@("END")<SDATE G ADJQUIT | 
|---|
| 73 | I EDATE,@SCDATES@("BEGIN")>EDATE G ADJQUIT | 
|---|
| 74 | ; | 
|---|
| 75 | ;Adjust requested date range if it is wider than 404.43 date range. | 
|---|
| 76 | I SDATE>@SCDATES@("BEGIN") S @SCDATES@("BEGIN")=SDATE | 
|---|
| 77 | I EDATE,@SCDATES@("END")>EDATE S @SCDATES@("END")=EDATE | 
|---|
| 78 | S OK=1 | 
|---|
| 79 | ADJQUIT Q OK | 
|---|
| 80 | ; | 
|---|
| 81 | ADJUST2 ;Adjust Assigned/Unassigned Dates in SCLIST array so they don't | 
|---|
| 82 | ;exceed requested date range.. | 
|---|
| 83 | ; | 
|---|
| 84 | NEW DATA,POSH,PREH | 
|---|
| 85 | Q:'$D(@SCLIST) | 
|---|
| 86 | ; | 
|---|
| 87 | ;Position History | 
|---|
| 88 | S POSH=0 | 
|---|
| 89 | F  S POSH=$O(@SCLIST@(POSH)) Q:'POSH  D  ; | 
|---|
| 90 | . S DATA=$G(@SCLIST@(POSH)) | 
|---|
| 91 | . ; | 
|---|
| 92 | . ;Adjust Begin Date | 
|---|
| 93 | . I $P(DATA,U,9)<@SCDATES@("BEGIN") D  ; | 
|---|
| 94 | . . ;Update main node | 
|---|
| 95 | . . S $P(@SCLIST@(POSH),U,9)=@SCDATES@("BEGIN") | 
|---|
| 96 | . . ; | 
|---|
| 97 | . . ;Update "SCPR" node | 
|---|
| 98 | . . K @SCLIST@("SCPR",$P(DATA,U,1),$P(DATA,U,3),$P(DATA,U,9),POSH) | 
|---|
| 99 | . . S @SCLIST@("SCPR",$P(DATA,U,1),$P(DATA,U,3),@SCDATES@("BEGIN"),POSH)="" | 
|---|
| 100 | . ; | 
|---|
| 101 | . ;Adjust End Date | 
|---|
| 102 | . I $P(DATA,U,10)>@SCDATES@("END") D  ; | 
|---|
| 103 | . . S $P(@SCLIST@(POSH),U,10)=@SCDATES@("END") | 
|---|
| 104 | . ; | 
|---|
| 105 | . ;Preceptor History | 
|---|
| 106 | . S PREH=0 | 
|---|
| 107 | . F  S PREH=$O(@SCLIST@(POSH,"PR",PREH)) Q:'PREH  D  ; | 
|---|
| 108 | . . S DATA=$G(@SCLIST@(POSH,"PR",PREH)) | 
|---|
| 109 | . . ; | 
|---|
| 110 | . . ;Adjust Begin Date | 
|---|
| 111 | . . I $P(DATA,U,9)<@SCDATES@("BEGIN") D  ; | 
|---|
| 112 | . . . ;Update "PR" node | 
|---|
| 113 | . . . S $P(@SCLIST@(POSH,"PR",PREH),U,9)=@SCDATES@("BEGIN") | 
|---|
| 114 | . . . ;Update "SCPR" node | 
|---|
| 115 | . . . K @SCLIST@(POSH,"SCPR",$P(DATA,U,1),$P(DATA,U,3),$P(DATA,U,9),PREH) | 
|---|
| 116 | . . . S @SCLIST@(POSH,"SCPR",$P(DATA,U,1),$P(DATA,U,3),@SCDATES@("BEGIN"),PREH)="" | 
|---|
| 117 | . . ; | 
|---|
| 118 | . . ;Adjust End Date | 
|---|
| 119 | . . I $P($G(@SCLIST@(POSH,"PR",PREH)),U,10)>@SCDATES@("END") D  ; | 
|---|
| 120 | . . . S $P(@SCLIST@(POSH,"PR",PREH),U,10)=@SCDATES@("END") | 
|---|
| 121 | Q | 
|---|