| 1 | SCAPMCA ;BP-CIOFO/KEITH - API to return all patient assignment information ;7/8/99  18:16 | 
|---|
| 2 | ;;5.3;Scheduling;**177**;AUG 13, 1993 | 
|---|
| 3 | ; | 
|---|
| 4 | GETALL(DFN,SCDT,SCARR) ;Get all assignment information | 
|---|
| 5 | ;Input: DFN=patient ifn | 
|---|
| 6 | ;Input: SCDT=date range and "include" values (optional) where | 
|---|
| 7 | ;       SCDT("BEGIN")=begin date | 
|---|
| 8 | ;       SCDT("END")=end date | 
|---|
| 9 | ;       SCDT("INCL")='1' for assignments active during entire date | 
|---|
| 10 | ;                    range, '0' for assignments active at any time | 
|---|
| 11 | ;                    during date range. | 
|---|
| 12 | ;                 ***If undefined, "BEGIN" and "END" = DT, "INCL" = 0 | 
|---|
| 13 | ;       SCARR=name of array to return data (default ^TMP("SC",$J,...) | 
|---|
| 14 | ; | 
|---|
| 15 | ;Output: '0' for error, '1' otherwise | 
|---|
| 16 | ;Output: array returned in SCARR in hierarchical format (returned only | 
|---|
| 17 | ;        if assignments exist) | 
|---|
| 18 | ; | 
|---|
| 19 | ; @SCARR@(DFN,"TM",a,b)=team data | 
|---|
| 20 | ; @SCARR@(DFN,"TM",a,b,"POS",c)=position data | 
|---|
| 21 | ; @SCARR@(DFN,"TM",a,b,"POS",c,"PROV",d)=provider data | 
|---|
| 22 | ; @SCARR@(DFN,"TM",a,b,"POS",c,"PPOS",e)=preceptor position data | 
|---|
| 23 | ; @SCARR@(DFN,"TM",a,b,"POS",c,"PPOS",e,"PPROV",f)=preceptor | 
|---|
| 24 | ;                                                       provider data | 
|---|
| 25 | ; | 
|---|
| 26 | ; where:  a = TEAM file (#404.51) ifn | 
|---|
| 27 | ;         b = PATIENT TEAM ASSIGNMENT file (#404.42) ifn | 
|---|
| 28 | ;         c = PATIENT TEAM POSITION ASSIGNMENT file (#404.43) ifn | 
|---|
| 29 | ;         d = POSITION ASSIGNMENT HISTORY file (#404.52) ifn | 
|---|
| 30 | ;         e = TEAM POSITION file (#404.57) ifn | 
|---|
| 31 | ;         f = POSITION ASSIGNMENT HISTORY file (#404.52) ifn | 
|---|
| 32 | ; | 
|---|
| 33 | ;Output: array returned in SCARR in "flat" format (the zeroeth nodes | 
|---|
| 34 | ;        of this array are always returned -- equal to zero if no | 
|---|
| 35 | ;        assignments exist. | 
|---|
| 36 | ; | 
|---|
| 37 | ; @SCARR@(DFN,"NPCPOS",0)=non-PC position count | 
|---|
| 38 | ; @SCARR@(DFN,"NPCPOS",n)=non-PC position data | 
|---|
| 39 | ; @SCARR@(DFN,"NPCPPOS",0)=non-PC preceptor position count | 
|---|
| 40 | ; @SCARR@(DFN,"NPCPPOS",n)=non-PC preceptor position data | 
|---|
| 41 | ; @SCARR@(DFN,"NPCPPR",0)=non-PC preceptor provider count | 
|---|
| 42 | ; @SCARR@(DFN,"NPCPPR",n)=non-PC preceptor provider data | 
|---|
| 43 | ; @SCARR@(DFN,"NPCPR",0)=non-PC provider count | 
|---|
| 44 | ; @SCARR@(DFN,"NPCPR",n)=non-PC provider data | 
|---|
| 45 | ; @SCARR@(DFN,"NPCTM",0)=non-PC team count | 
|---|
| 46 | ; @SCARR@(DFN,"NPCTM",n)=non-PC team data | 
|---|
| 47 | ; @SCARR@(DFN,"PCAP",0)=PC associate provider count | 
|---|
| 48 | ; @SCARR@(DFN,"PCAP",n)=PC associate provider data | 
|---|
| 49 | ; @SCARR@(DFN,"PCPOS",0)=PC position count | 
|---|
| 50 | ; @SCARR@(DFN,"PCPOS",n)=PC position data | 
|---|
| 51 | ; @SCARR@(DFN,"PCPPOS",0)=PC preceptor position count | 
|---|
| 52 | ; @SCARR@(DFN,"PCPPOS",n)=PC preceptor position data | 
|---|
| 53 | ; @SCARR@(DFN,"PCPR",0)=PC provider count | 
|---|
| 54 | ; @SCARR@(DFN,"PCPR",n)=PC provider data | 
|---|
| 55 | ; @SCARR@(DFN,"PCTM",0)=PC team count | 
|---|
| 56 | ; @SCARR@(DFN,"PCTM",n)=PC team data | 
|---|
| 57 | ; | 
|---|
| 58 | ; where:  n = incrementing number 1 to 'n'. | 
|---|
| 59 | ; | 
|---|
| 60 | ;                 --output array data strings-- | 
|---|
| 61 | ; | 
|---|
| 62 | ; Team information data: | 
|---|
| 63 | ; | 
|---|
| 64 | ;               Piece     Description | 
|---|
| 65 | ;                 1       IEN of TEAM file entry | 
|---|
| 66 | ;                 2       Name of team | 
|---|
| 67 | ;                 3       IEN of file #404.42 (Pt Tm Assignment) | 
|---|
| 68 | ;                 4       current effective date | 
|---|
| 69 | ;                 5       current inactivate date (if any) | 
|---|
| 70 | ;                 6       pointer to 403.47 (purpose) | 
|---|
| 71 | ;                 7       Name of Purpose | 
|---|
| 72 | ;                 8       Is this the pt's PC Team? | 
|---|
| 73 | ; | 
|---|
| 74 | ; Position information data: | 
|---|
| 75 | ; | 
|---|
| 76 | ;               Piece     Description | 
|---|
| 77 | ;                 1       IEN of TEAM POSITION File (#404.57) | 
|---|
| 78 | ;                 2       Name of Position | 
|---|
| 79 | ;                 3       IEN of Team #404.51 | 
|---|
| 80 | ;                 4       IEN of file #404.43 (Pt Tm Pos Assign) | 
|---|
| 81 | ;                 5       current effective date | 
|---|
| 82 | ;                 6       current inactivate date (if any) | 
|---|
| 83 | ;                 7       pointer to 403.46 (role) | 
|---|
| 84 | ;                 8       Name of Standard Role | 
|---|
| 85 | ;                 9       pointer to User Class (#8930) | 
|---|
| 86 | ;                10       Name of User Class | 
|---|
| 87 | ;                11       Pointer to patient team assignment (404.42) | 
|---|
| 88 | ; | 
|---|
| 89 | ; Provider information data: | 
|---|
| 90 | ; | 
|---|
| 91 | ;               Piece     Description | 
|---|
| 92 | ;                 1       IEN of NEW PERSON file entry (#200) | 
|---|
| 93 | ;                 2       Name of person | 
|---|
| 94 | ;                 3       IEN of TEAM POSITION file (#404.57) | 
|---|
| 95 | ;                 4       Name of Position | 
|---|
| 96 | ;                 5       IEN OF USR CLASS(#8930) of POSITION(#404.57) | 
|---|
| 97 | ;                 6       USR Class Name | 
|---|
| 98 | ;                 7       IEN of STANDARD POSITION (#403.46) | 
|---|
| 99 | ;                 8       Standard Role (Position) Name | 
|---|
| 100 | ;                 9       Activation Date for 404.52 (not 404.59!) | 
|---|
| 101 | ;                10       Inactivation Date for 404.52 | 
|---|
| 102 | ;                11       IEN of Position Ass History (404.52) | 
|---|
| 103 | ;                12       IEN of Preceptor Position | 
|---|
| 104 | ;                13       Name of Preceptor Position | 
|---|
| 105 | ; | 
|---|
| 106 | ;  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
|---|
| 107 | ; | 
|---|
| 108 | SETUP N SCI,SCX,SCRATCH1,SCADT,SCIDT,SCII,SCIII,SCPAH,SCPCPOSF,SCPCTF | 
|---|
| 109 | N SCPOS,SCPOSD,SCPOSPRC,SCPPOS,SCPPOS0,SCPPOSD,SCPPROVD,SCPRD | 
|---|
| 110 | N SCPROVD,SCPTA,SCPTPA,SCRATCH2,SCSUB,SCTM,SCTMD,SCPOSPDT,SCPTPA0 | 
|---|
| 111 | Q:'$D(^DPT(DFN,0)) 0 | 
|---|
| 112 | I '$D(SCDT("BEGIN")),$D(SCDT("END")) S SCDT("BEGIN")=SCDT("END") | 
|---|
| 113 | I '$D(SCDT("END")),$D(SCDT("BEGIN")) S SCDT("END")=SCDT("BEGIN") | 
|---|
| 114 | I '$D(SCDT("BEGIN"))&'$D(SCDT("END")) S (SCDT("BEGIN"),SCDT("END"))=DT | 
|---|
| 115 | S SCX=SCDT("BEGIN") I SCX>SCDT("END") S SCDT("BEGIN")=SCDT("END"),SCDT("END")=SCX | 
|---|
| 116 | S SCDT="SCDT" | 
|---|
| 117 | I $L($G(SCDT("INCL")))'=1!("01"'[$G(SCDT("INCL"))) S SCDT("INCL")=0 | 
|---|
| 118 | I '$L($G(SCARR)) S SCARR="^TMP(""SC"",$J)" K @SCARR@(DFN) | 
|---|
| 119 | S SCX="NPCPOS^NPCPPOS^NPCPPR^NPCPR^NPCTM^PCAP^PCPOS^PCPPOS^PCPR^PCTM" | 
|---|
| 120 | F SCI=1:1:10 S @SCARR@(DFN,$P(SCX,U,SCI),0)=0  ;initialize flat array | 
|---|
| 121 | S SCRATCH1="^TMP(""SCRATCH1"",$J)" K @SCRATCH1 | 
|---|
| 122 | S SCRATCH2="^TMP(""SCRATCH2"",$J)" K @SCRATCH2 | 
|---|
| 123 | D GETDAT^SCAPMCA1 | 
|---|
| 124 | K ^TMP("SCRATCH1",$J),^TMP("SCRATCH2",$J) | 
|---|
| 125 | Q 1 | 
|---|