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