| 1 | SCAPMC19 ;ALB/REW - Team API's ; 12 Jan 99  9:10 AM
 | 
|---|
| 2 |  ;;5.3;Scheduling;**41,174**;AUG 13, 1993
 | 
|---|
| 3 |  ;;1.0
 | 
|---|
| 4 | ACPRTP(SC200,SCTP,SCFIELDA,SCEFF,SCERR) ; assign practitioner to position
 | 
|---|
| 5 |  ; input:
 | 
|---|
| 6 |  ;  SC200   = New Person File (#200) Pointer
 | 
|---|
| 7 |  ;  SCTP    = Pointer To Team Position File (#404.57)
 | 
|---|
| 8 |  ;  SCFIELDA= array of extra field entries - scfielda('fld#')=value
 | 
|---|
| 9 |  ;     -Note: Only used if BRAND NEW POSITION - team fields (404.57)
 | 
|---|
| 10 |  ;  SCEFF   = date to activate/inactivate [default=DT]
 | 
|---|
| 11 |  ;  SCERR = array NAME to store error messages.
 | 
|---|
| 12 |  ;          [ex. ^TMP("ORXX",$J)]
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  ; Output:
 | 
|---|
| 15 |  ;  SCERR() = Array of DIALOG file messages(errors) .
 | 
|---|
| 16 |  ;             Foramt:
 | 
|---|
| 17 |  ;               Subscript: Sequential # from 1 to n
 | 
|---|
| 18 |  ;               Piece     Description
 | 
|---|
| 19 |  ;                 1       IEN of DIALOG file
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  ;              1      2      3      4      5
 | 
|---|
| 22 |  ;  Returned: status^histien^actdt^inactdt^sctm
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 |  N SCTPDTS,SCXX,SCOK,SCHIST,SCACTP,SCSTATUS
 | 
|---|
| 26 |  N SCPTAIEN,SCESEQ,SCPARM,SCIEN
 | 
|---|
| 27 |  G:'$$OKDATA() QT
 | 
|---|
| 28 |  S SCSTATUS=$G(@SCFIELDA@(.04))
 | 
|---|
| 29 |  S SCTPDTS("BEGIN")=SCEFF
 | 
|---|
| 30 |  S SCTPDTS("END")=3990101
 | 
|---|
| 31 |  ;for inactive check for any activity in future
 | 
|---|
| 32 |  ;for active check for continuous activity in future
 | 
|---|
| 33 |  S SCTPDTS("INCL")='SCSTATUS
 | 
|---|
| 34 |  S SCOK=0
 | 
|---|
| 35 |  IF "^1^0^"'[(U_SCSTATUS_U) D  G QT
 | 
|---|
| 36 |  .S SCOK=-1
 | 
|---|
| 37 |  .S SCPARM("POSITION")=$G(SCTP,"Undefined")
 | 
|---|
| 38 |  .S SCPARM("PRACTITIONER")=$G(SC200,"Undefined")
 | 
|---|
| 39 |  .S SCPARM("MESSAGE")="Required Field: #.04 = "_SCSTATUS
 | 
|---|
| 40 |  .D ERR^SCAPMCU1(.SCESEQ,4045200,.SCPARM,"",.SCERR)
 | 
|---|
| 41 |  ;is position already active or will be in future?
 | 
|---|
| 42 |  S SCHIST=$P($$ACTHIST^SCAPMCU2(404.52,SCTP,"SCTPDTS",.SCERR,"SCXX"),U,1,4)
 | 
|---|
| 43 |  ;inactivation must be after activation date
 | 
|---|
| 44 |  IF ('SCSTATUS)&($P(SCHIST,U,3)'<SCEFF) D  G QT
 | 
|---|
| 45 |  . S SCPARM("PRACTITIONER")=$G(SC200,"Undefined")
 | 
|---|
| 46 |  . S SCPARM("POSITION")=$G(SCTP,"Undefined")
 | 
|---|
| 47 |  . S SCPARM("MESSAGE")="Inactivation Date must not be equal to Inactivation Date"
 | 
|---|
| 48 |  . D ERR^SCAPMCU1(.SCESEQ,4045200,.SCPARM,"",.SCERR)
 | 
|---|
| 49 |  ;must inactivate same practitioner who was last activated
 | 
|---|
| 50 |  S SCOLD200=$P($G(^SCTM(404.52,+$P(SCHIST,U,2),0)),U,3)
 | 
|---|
| 51 |  IF ('SCSTATUS)&(SCOLD200&(SCOLD200'=SC200)) D  G QT
 | 
|---|
| 52 |  . S SCOK=-1
 | 
|---|
| 53 |  . S SCPARM("PRACTITIONER")=$G(SC200,"Undefined")
 | 
|---|
| 54 |  . S SCPARM("MESSAGE")="Inactivation must be for same practitioner who was last activated"
 | 
|---|
| 55 |  . D ERR^SCAPMCU1(.SCESEQ,4045200,.SCPARM,"",.SCERR)
 | 
|---|
| 56 |  IF (+SCHIST+SCSTATUS)=1!('$D(^SCTM(404.52,"B",SCTP))) D  ;procede if not at state now
 | 
|---|
| 57 |  .S SC($J,404.52,"+1,",.01)=SCTP
 | 
|---|
| 58 |  .S SC($J,404.52,"+1,",.02)=SCEFF
 | 
|---|
| 59 |  .S SC($J,404.52,"+1,",.03)=SC200
 | 
|---|
| 60 |  .IF $D(SCFIELDA) D
 | 
|---|
| 61 |  ..S SCFLD=0
 | 
|---|
| 62 |  ..F  S SCFLD=$O(@SCFIELDA@(SCFLD)) Q:'SCFLD  D
 | 
|---|
| 63 |  ...S SC($J,404.52,"+1,",SCFLD)=@SCFIELDA@(SCFLD)
 | 
|---|
| 64 |  .D UPDATE^DIE("","SC($J)","SCIEN",.SCERR)
 | 
|---|
| 65 |  .IF '$G(@SCERR@(0))<1 D
 | 
|---|
| 66 |  .S:SCSTATUS SCHIST=SCSTATUS_U_SCIEN(1)_U_SCEFF_U
 | 
|---|
| 67 |  .S:'SCSTATUS SCHIST=SCSTATUS_U_SCIEN(1)_U_$P(SCHIST,U,3)_U_SCEFF
 | 
|---|
| 68 |  .S SCOK=1
 | 
|---|
| 69 | QT Q SCOK_U_$G(SCHIST)
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 | OKDATA() ;
 | 
|---|
| 72 |  ;setup/check variables for acTP call
 | 
|---|
| 73 |  N SCOK,SCFLD
 | 
|---|
| 74 |  S SCOK=1
 | 
|---|
| 75 |  D INIT^SCAPMCU1(.SCOK)
 | 
|---|
| 76 |  S:'$G(SCEFF) SCEFF=DT
 | 
|---|
| 77 |  IF '$D(^VA(200,+$G(SC200),0)) D
 | 
|---|
| 78 |  . S SCPARM("PRACTITIONER")=$G(SC200,"Undefined")
 | 
|---|
| 79 |  . D ERR^SCAPMCU1(.SCESEQ,4045201,.SCPARM,"",.SCERR)
 | 
|---|
| 80 |  IF '$D(^SCTM(404.57,+$G(SCTP),0)) D
 | 
|---|
| 81 |  . S SCPARM("POSITION")=$G(SCTP,"Undefined")
 | 
|---|
| 82 |  . D ERR^SCAPMCU1(.SCESEQ,4045701,.SCPARM,"",.SCERR)
 | 
|---|
| 83 |  F SCFLD=.04,.05 IF '($D(@SCFIELDA@(SCFLD))#2) D
 | 
|---|
| 84 |  . S SCPARM("PRACTITIONER")=$G(SC200,"Undefined")
 | 
|---|
| 85 |  . S SCPARM("MESSAGE")="Undefined history fields"
 | 
|---|
| 86 |  . D ERR^SCAPMCU1(.SCESEQ,4045200,.SCPARM,"",.SCERR)
 | 
|---|
| 87 |  Q SCOK
 | 
|---|