| [613] | 1 | SCAPMC8 ;;bp/cmf - List of Practitioners for a Position ; 7/12/99 10:03am
 | 
|---|
 | 2 |  ;;5.3;Scheduling;**41,177**;AUG 13, 1993
 | 
|---|
 | 3 |  ;;1.0
 | 
|---|
 | 4 |  ;
 | 
|---|
 | 5 | PRTP(SCTP,SCDATES,SCLIST,SCERR,SCPRCPTR,SCALLHIS) ;-- list of practitioners for position  (bp/cmf 177-->SCPRCPTR,SCALLHIS param added)
 | 
|---|
 | 6 |  ; input:
 | 
|---|
 | 7 |  ;  SCTP = ien of TEAM POSITION[required]
 | 
|---|
 | 8 |  ;  SCDATES("BEGIN") = begin date to search (inclusive)
 | 
|---|
 | 9 |  ;                      [default: TODAY]
 | 
|---|
 | 10 |  ;         ("END")   = end date to search (inclusive)
 | 
|---|
 | 11 |  ;                       [default: DT]
 | 
|---|
 | 12 |  ;         ("INCL")  = 1: only use pracitioners who were on
 | 
|---|
 | 13 |  ;                       team for entire date range
 | 
|---|
 | 14 |  ;                     0: anytime in date range
 | 
|---|
 | 15 |  ;                       [default: 1]
 | 
|---|
 | 16 |  ;  SCLIST= array NAME for output 
 | 
|---|
 | 17 |  ;  SCERR = array NAME to store error messages.
 | 
|---|
 | 18 |  ;          [ex. ^TMP("ORXX",$J)]
 | 
|---|
 | 19 |  ;  SCPRCPTR = 1: return preceptor sub-array in SCLIST
 | 
|---|
 | 20 |  ;                       [default: 0]
 | 
|---|
 | 21 |  ;  SCALLHIS = 1: return unfiltered sub-array in SCLIST
 | 
|---|
 | 22 |  ;                       [default: 0]
 | 
|---|
 | 23 |  ;
 | 
|---|
 | 24 |  ; Output:
 | 
|---|
 | 25 |  ;  SCLIST(scn) = array of practitioners
 | 
|---|
 | 26 |  ;             Format:
 | 
|---|
 | 27 |  ;               scn: Sequential # from 1 to n
 | 
|---|
 | 28 |  ;               Piece     Description
 | 
|---|
 | 29 |  ;                 1       IEN of NEW PERSON file entry (#200)
 | 
|---|
 | 30 |  ;                 2       Name of person
 | 
|---|
 | 31 |  ;                 3       IEN of TEAM POSITION file (#404.57)
 | 
|---|
 | 32 |  ;                 4       Name of Position
 | 
|---|
 | 33 |  ;                 5       IEN OF USR CLASS(8930) of POSITION (404.57)
 | 
|---|
 | 34 |  ;                 6       USR Class Name
 | 
|---|
 | 35 |  ;                 7       IEN of STANDARD POSITION (#403.46)
 | 
|---|
 | 36 |  ;                 8       Standard Role (Position) Name
 | 
|---|
 | 37 |  ;                 9       Activation Date for 404.52 (not 404.59!)
 | 
|---|
 | 38 |  ;                 10      Inactivation Date for 404.52
 | 
|---|
 | 39 |  ;                 11      IEN of Position Asgn History (404.52)
 | 
|---|
 | 40 |  ;                 12      IEN of Current(=DT) Preceptor Position
 | 
|---|
 | 41 |  ;                 13      Name of Current(=DT) Preceptor Position
 | 
|---|
 | 42 |  ;
 | 
|---|
 | 43 |  ;  SCLIST(scn,'PR',scn1) = sub-array of preceptors
 | 
|---|
 | 44 |  ;             Format: same as SCLIST(scn) PLUS
 | 
|---|
 | 45 |  ;               scn1: Sequential number from 1 to n
 | 
|---|
 | 46 |  ;                Piece    Description
 | 
|---|
 | 47 |  ;                 14      precept start date
 | 
|---|
 | 48 |  ;                 15      precept end date
 | 
|---|
 | 49 |  ;                 16      IEN of Preceptor Asgn History (404.53)
 | 
|---|
 | 50 |  ;
 | 
|---|
 | 51 |  ;  SCLIST("ALL",file,scn2) = sub array of all asgns within date range
 | 
|---|
 | 52 |  ;             Format:
 | 
|---|
 | 53 |  ;               file: 404.52 or 404.53
 | 
|---|
 | 54 |  ;               scn2: Sequential number form 1 to n
 | 
|---|
 | 55 |  ;                Piece    Description
 | 
|---|
 | 56 |  ;                 1       status int [1:active,0:inactive]
 | 
|---|
 | 57 |  ;                 2       status ext ["ACTIVE","INACTIVE"]
 | 
|---|
 | 58 |  ;                 3       status FM date
 | 
|---|
 | 59 |  ;                 4       status ext date
 | 
|---|
 | 60 |  ;                 5       file = 404.52: practitioner ien (200)
 | 
|---|
 | 61 |  ;                              = 404.53: prec tm pos ien (404.57)
 | 
|---|
 | 62 |  ;                 6       file = 404.52: practitioner name
 | 
|---|
 | 63 |  ;                              = 404.53: prec tm pos name
 | 
|---|
 | 64 |  ;                 7       ien of [file] history
 | 
|---|
 | 65 |  ;
 | 
|---|
 | 66 |  ;  SCLIST('SCPR',sc200,sctp,scact,scn)=""
 | 
|---|
 | 67 |  ;
 | 
|---|
 | 68 |  ;  SCLIST('CH')= position asgn history status
 | 
|---|
 | 69 |  ;             Format:
 | 
|---|
 | 70 |  ;                Piece    Description
 | 
|---|
 | 71 |  ;                 1       [1:corrupt hist file,0:ok]
 | 
|---|
 | 72 |  ;                 2       global first act hist date
 | 
|---|
 | 73 |  ;                 3       global first act hist ien
 | 
|---|
 | 74 |  ;
 | 
|---|
 | 75 |  ;  SCLIST('PR','CH')= preceptor asgn history status       
 | 
|---|
 | 76 |  ;             Format:
 | 
|---|
 | 77 |  ;                Piece    Description
 | 
|---|
 | 78 |  ;                 1       [1:corrupt hist file,0:ok]
 | 
|---|
 | 79 |  ;                 2       global first act hist date
 | 
|---|
 | 80 |  ;                 3       global first act hist ien
 | 
|---|
 | 81 |  ;
 | 
|---|
 | 82 |  ;  SCERR() = Array of DIALOG file messages(errors)
 | 
|---|
 | 83 |  ;             Format:
 | 
|---|
 | 84 |  ;  @SCERR@(0) = Number of errors, undefined if none
 | 
|---|
 | 85 |  ;               Subscript: Sequential # from 1 to n
 | 
|---|
 | 86 |  ;               Piece     Description
 | 
|---|
 | 87 |  ;                 1       IEN of DIALOG file
 | 
|---|
 | 88 |  ;   Returned: 1 if ok, 0 if error
 | 
|---|
 | 89 |  ;
 | 
|---|
 | 90 |  ; -- initialize control variables
 | 
|---|
 | 91 |  ;
 | 
|---|
 | 92 | ST N SCPOSNM,SCPOS0,SCEFF,SCPRTP,SCTPNODE,SCVALHIS,SCI,SCN,SCSTOP
 | 
|---|
 | 93 |  N SCP1,SCP2,SCP3,SCP4,SCP5,SCP6,SCP7,SCP8,SCP9,SCP10,SCP11,SCP12
 | 
|---|
 | 94 |  N SCLSEQ,SCRN,SCESEQ,SCPARM,SCP,SCBEGIN,SCEND,SCINCL,SCDTS
 | 
|---|
 | 95 |  ;
 | 
|---|
 | 96 |  G:'$$OKDATA PRACQ                          ; no team pos/date array
 | 
|---|
 | 97 |  G:'$D(^SCTM(404.52,"AIDT",SCTP)) PRACQ     ; no history
 | 
|---|
 | 98 |  ;
 | 
|---|
 | 99 |  S SCPRCPTR=$S(+$G(SCPRCPTR):1,1:0)
 | 
|---|
 | 100 |  S SCALLHIS=$S(+$G(SCALLHIS):1,1:0)
 | 
|---|
 | 101 |  ;
 | 
|---|
 | 102 |  S @SCLIST@("CH")=$$VALHIST^SCAPMCU5(404.52,SCTP,"SCVALHIS")
 | 
|---|
 | 103 |  G:'$$ACTHIST^SCAPMCU5("SCVALHIS","SCDATES") PRACQ
 | 
|---|
 | 104 |  ;G:'$$ACTHIST^SCAPMCU2(404.52,SCTP,SCDATES,.SCERR,"SCPRTP") PRACQ
 | 
|---|
 | 105 |  G:'$D(SCVALHIS) TPALL                      ; no coherent history
 | 
|---|
 | 106 |  ;
 | 
|---|
 | 107 |  ; get static return pieces
 | 
|---|
 | 108 |  S SCP3=SCTP                                ;tm pos ien
 | 
|---|
 | 109 |  S SCTPNODE=$G(^SCTM(404.57,SCTP,0))        ;tm pos node
 | 
|---|
 | 110 |  S SCP4=$P(SCTPNODE,U)                      ;tm pos name
 | 
|---|
 | 111 |  S SCP5=$P(SCTPNODE,U,13)                   ;user class pointer
 | 
|---|
 | 112 |  S SCP6=$P($G(^USR(8930,+SCP5,0)),U)        ;user class name
 | 
|---|
 | 113 |  S SCP7=$P(SCTPNODE,U,3)                    ;std pos pointer
 | 
|---|
 | 114 |  S SCP8=$P($G(^SD(403.46,+SCP7,0)),U)       ;std pos name
 | 
|---|
 | 115 |  S SCP12=$$OKPREC3^SCMCLK(SCTP,DT)          ;prec tm pos ien^name
 | 
|---|
 | 116 |  ;
 | 
|---|
 | 117 |  ; --    get list from position assignments
 | 
|---|
 | 118 |  S SCRN=0
 | 
|---|
 | 119 |  S SCEFF=-(SCEND+.000001)
 | 
|---|
 | 120 |  F  S SCEFF=$O(^SCTM(404.52,"AIDT",SCTP,1,SCEFF)) Q:'SCEFF  D
 | 
|---|
 | 121 |  . ;Q:'$$ACTHIST^SCAPMCU2(404.52,SCTP,SCDATES,.SCERR,"SCPRTP")
 | 
|---|
 | 122 |  . S SCP11=""                                ; posn act hist ien
 | 
|---|
 | 123 |  . F  S SCP11=$O(^SCTM(404.52,"AIDT",SCTP,1,SCEFF,SCP11),-1) Q:'SCP11  D
 | 
|---|
 | 124 |  . . Q:'$D(SCVALHIS("I",SCP11))
 | 
|---|
 | 125 |  . . S SCP1=+$P($G(^SCTM(404.52,SCP11,0)),U,3)   ;practitioner ien
 | 
|---|
 | 126 |  . . S SCP2=$P($G(^VA(200,+SCP1,0)),U)           ;practitioner name
 | 
|---|
 | 127 |  . . S SCI=$O(SCVALHIS("I",SCP11,0))
 | 
|---|
 | 128 |  . . S SCP9=$O(SCVALHIS(SCI,0))                  ;hist start date
 | 
|---|
 | 129 |  . . Q:$D(@SCLIST@("SCPR",SCP1,SCTP,SCP9))
 | 
|---|
 | 130 |  . . S SCP10=$P(SCVALHIS(SCI,SCP9,SCP11),U)      ;hist end date
 | 
|---|
 | 131 |  . . Q:'$$DTCHK^SCAPU1(SCBEGIN,SCEND,SCINCL,SCP9,SCP10)
 | 
|---|
 | 132 |  . . S SCRN=SCRN+1
 | 
|---|
 | 133 |  . . S @SCLIST@(0)=SCRN
 | 
|---|
 | 134 |  . . S @SCLIST@("SCPR",SCP1,SCTP,SCP9,SCRN)=""
 | 
|---|
 | 135 |  . . S @SCLIST@(SCRN)=SCP1_U_SCP2_U_SCP3_U_SCP4_U_SCP5_U_SCP6_U_SCP7_U_SCP8_U_SCP9_U_SCP10_U_SCP11_U_SCP12
 | 
|---|
 | 136 |  . . Q
 | 
|---|
 | 137 |  . Q
 | 
|---|
 | 138 |  ;
 | 
|---|
 | 139 |  I $G(@SCLIST@(0))>0,+SCPRCPTR D PRCTP^SCAPMC8P
 | 
|---|
 | 140 | TPALL I +SCALLHIS D TPALL^SCAPMC8A(404.52)
 | 
|---|
 | 141 |  ;
 | 
|---|
 | 142 | PRACQ Q $G(SCERR(0))<1  ;bp/djb 7/12/99
 | 
|---|
 | 143 |  ;
 | 
|---|
 | 144 | OKDATA() ;check/setup variables - return 1 if ok/0 if error
 | 
|---|
 | 145 |  N SCOK
 | 
|---|
 | 146 |  S SCOK=1
 | 
|---|
 | 147 |  D INIT^SCAPMCU1(.SCOK) ; set default dates & error array (if undefined)
 | 
|---|
 | 148 |  IF '$D(^SCTM(404.57,+$G(SCTP),0)) D  S SCOK=0
 | 
|---|
 | 149 |  . S SCPARM("POSITION")=$G(SCTP,"Undefined")
 | 
|---|
 | 150 |  . D ERR^SCAPMCU1(.SCESEQ,4045101,.SCPARM,"",.SCERR)
 | 
|---|
 | 151 |  ; -- is it a valid TEAM ien passed (Error # 4045101 in DIALOG file)
 | 
|---|
 | 152 |  IF '$D(^SCTM(404.57,+$G(SCTP),0))!('$D(SCDATES)) D  S SCOK=0
 | 
|---|
 | 153 |  . S SCPARM("POSITION")=$S('$D(SCTP):"Undefined",1:SCTP)
 | 
|---|
 | 154 |  . S SCPARM("DATES")=$S('$D(SCDATES):"Undefined",1:SCDATES)
 | 
|---|
 | 155 |  . D ERR^SCAPMCU1(SCESEQ,4045101,.SCPARM,"",.SCERR)
 | 
|---|
 | 156 |  Q SCOK
 | 
|---|
 | 157 |  ;
 | 
|---|