Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: SCAPMCA1

SCAPMCA1.m

Go to the documentation of this file.
  1. SCAPMCA1 ;BP-CIOFO/KEITH - Get all assignment info. (cont.) ; 30 Jul 99 3:29 PM
  1. ;;5.3;Scheduling;**177,1015**;AUG 13, 1993;Build 21
  1. ;
  1. GETDAT ;Get assignment data
  1. ;
  1. GETTM ;Get team information
  1. S SCI=$$TMPT^SCAPMC(DFN,.SCDT,,SCRATCH1)
  1. S SCI=0 F S SCI=$O(^TMP("SCRATCH1",$J,SCI)) Q:'SCI D
  1. .S SCTMD=^TMP("SCRATCH1",$J,SCI),SCTM=+SCTMD,SCPTA=+$P(SCTMD,U,3)
  1. .Q:SCTM'>0 ;invalid TEAM ifn
  1. .Q:SCPTA'>0 ;invalid PATIENT TEAM ASSIGNMENT ifn
  1. .S @SCARR@(DFN,"TM",SCTM,SCPTA)=SCTMD
  1. .Q
  1. K @SCRATCH1
  1. ;
  1. GETPOS ;Get position information
  1. S SCI=$$TPPT^SCAPMC(DFN,.SCDT,,,,,,SCRATCH1)
  1. S SCI=0 F S SCI=$O(^TMP("SCRATCH1",$J,SCI)) Q:'SCI D
  1. .S SCPOSD=^TMP("SCRATCH1",$J,SCI)
  1. .S SCTM=$P(SCPOSD,U,3),SCPTPA=$P(SCPOSD,U,4),SCPOS=+SCPOSD
  1. .Q:SCPOS'>0 ;invalid TEAM POSITION ifn
  1. .Q:SCTM'>0 ;invalid TEAM ifn
  1. .Q:SCPTPA'>0 ;invalid PATIENT TEAM POSITION ASSIGNMENT ifn
  1. .S SCPTPA0=$G(^SCPT(404.43,SCPTPA,0))
  1. .S SCPTA=+SCPTPA0,SCPCPOSF=$P(SCPTPA0,U,5)
  1. .Q:SCPTA'>0 ;invalid PATIENT TEAM ASSIGNMENT ifn
  1. .S @SCARR@(DFN,"TM",SCTM,SCPTA,"POS",SCPTPA)=SCPOSD
  1. .D SETF(SCPCPOSF,"POS",SCPOSD)
  1. .S SCADT=$P(SCPOSD,U,5) ;position activate date
  1. .S:'SCADT SCADT=SCDT("BEGIN")
  1. .S SCIDT=$P(SCPOSD,U,6) ;position inactivate date
  1. .S:'SCIDT SCIDT=SCDT("END")
  1. .;xref team pc position assignments
  1. .I SCPCPOSF S @SCARR@(DFN,"TM",SCTM,SCPTA,"PC",SCADT,SCIDT)=""
  1. .K SCDT2 D DTRADJ(SCADT,SCIDT,.SCDT,.SCDT2)
  1. .;
  1. .;Get provider information
  1. .K @SCRATCH2
  1. .S SCII=$$PRTPC^SCAPMC(SCPOS,.SCDT2,SCRATCH2,"ERR",1,1),SCII=0
  1. .F S SCII=$O(^TMP("SCRATCH2",$J,SCII)) Q:'SCII D
  1. ..F SCSUB="PROV-U","PROV-P" S SCIII="" D
  1. ...F S SCIII=$O(^TMP("SCRATCH2",$J,SCII,SCSUB,SCIII)) Q:SCIII="" D
  1. ....S SCPRD=^TMP("SCRATCH2",$J,SCII,SCSUB,SCIII)
  1. ....S SCPAH=+$P(SCPRD,U,11) ;position assignment history ifn
  1. ....S @SCARR@(DFN,"TM",SCTM,SCPTA,"POS",SCPTPA,"PROV",SCPAH)=SCPRD
  1. ....D SETF(SCPCPOSF,$S(SCSUB="PROV-P"&SCPCPOSF:"AP",1:"PR"),SCPRD)
  1. ....Q
  1. ...Q
  1. ..S SCIII=""
  1. ..F S SCIII=$O(^TMP("SCRATCH2",$J,SCII,"PREC",SCIII)) Q:SCIII="" D
  1. ...S SCPRD=^TMP("SCRATCH2",$J,SCII,"PREC",SCIII)
  1. ...S SCPPOS=+$P(SCPRD,U,3),SCPPOSD=$$PPOS(SCPRD,SCPPOS)
  1. ...S @SCARR@(DFN,"TM",SCTM,SCPTA,"POS",SCPTPA,"PPOS",SCPPOS)=SCPPOSD
  1. ...D SETF(SCPCPOSF,"PPOS",SCPPOSD) S SCPAH=+$P(SCPRD,U,11)
  1. ...S @SCARR@(DFN,"TM",SCTM,SCPTA,"POS",SCPTPA,"PPOS",SCPPOS,"PPROV",SCPAH)=SCPRD
  1. ...D SETF(SCPCPOSF,$S(SCPCPOSF:"PR",1:"PPR"),SCPRD)
  1. ...Q
  1. ..Q
  1. .Q
  1. ;Set team "flat" nodes
  1. S SCTM=0 F S SCTM=$O(@SCARR@(DFN,"TM",SCTM)) Q:'SCTM S SCPTA=0 D
  1. .F S SCPTA=$O(@SCARR@(DFN,"TM",SCTM,SCPTA)) Q:'SCPTA D
  1. ..S SCTMD=$G(@SCARR@(DFN,"TM",SCTM,SCPTA)) Q:'$L(SCTMD)
  1. ..D SETF($P(SCTMD,U,8)=1,"TM",SCTMD)
  1. ..Q
  1. .Q
  1. Q
  1. ;
  1. GAP(SCTAC,SCTINAC,SCADT,SCIDT) ;Determine if a gap exists in pc assignments
  1. N GAP
  1. S GAP=0 D G1(SCADT,SCIDT)
  1. Q GAP
  1. ;
  1. G1(SCADT,SCIDT) ;Loop through position assignments
  1. N X1,X2,X
  1. S SCADT=$O(@SCARR@(DFN,"TM",SCTM,SCPTA,"PC",SCIDT-1))
  1. I 'SCADT S GAP=(SCIDT<SCTINAC) Q
  1. S X1=SCADT,X2=SCIDT D ^%DTC I X>1 S GAP=1 Q
  1. S SCIDT=$O(@SCARR@(DFN,"TM",SCTM,SCPTA,"PC",SCADT,""),-1)
  1. I SCIDT'<SCTINAC Q
  1. D G1(SCADT,SCIDT) Q
  1. ;
  1. PPOS(SCSTR,SCPPOS) ;Get preceptor position information
  1. ;Input: SCSTR=preceptor data string from PRTP^SCAPMC
  1. ;Input: SCPPOS=preceptor TEAM POSITION ifn
  1. ;Output: position information data string as defined in ^SCAPMCA
  1. ;
  1. N SCX,SCI,SCPPOS0
  1. S SCPPOS0=$G(^SCTM(404.57,+SCPPOS,0))
  1. Q:'$L(SCPPOS0) ""
  1. S SCX(1)=SCPPOS ;position ifn
  1. S SCX(2)=$P(SCPPOS0,U) ;position name
  1. S SCX(3)=$P(SCPPOS0,U,2) ;team ifn
  1. S SCX(4)=$P(SCPOSD,U,4) ;patient team position assignment ifn
  1. S SCX(5)=$P(SCSTR,U,5) ;effective date
  1. S SCX(6)=$P(SCSTR,U,6) ;inactive date
  1. S SCX(7)=$P(SCPPOS0,U,3) ;role ifn
  1. S SCX(8)=$P($G(^SD(403.46,+SCX(7),0)),U) ;role name
  1. S SCX(9)=$P(SCPPOS0,U,13) ;user class ifn
  1. S SCX(10)=$P($G(^USR(8930,+SCX(9),0)),U) ;user class name
  1. S SCX(11)=$P(SCPOSD,U,11) ;patient team assignment ifn
  1. S SCX(12)="" ;preceptor position
  1. S SCX="" F SCI=1:1:12 S $P(SCX,U,SCI)=SCX(SCI)
  1. Q SCX
  1. ;
  1. DTRADJ(ADT,IDT,SCDT,SCDT2) ;Adjust dates for provider information
  1. ;Input: ADT=activate date for patient team position assignment
  1. ;Input: IDT=inactivate date for patient team position assignment
  1. ;Input: SCDT=array of dates from calling program (pass by reference)
  1. ;Input: SCDT2=array to return adjusted dates (pass by reference)
  1. ;
  1. S SCDT2("BEGIN")=$S(SCADT>SCDT("BEGIN"):SCADT,1:SCDT("BEGIN"))
  1. S SCDT2("END")=$S('SCIDT:SCDT("END"),SCIDT<SCDT("END"):SCIDT,1:SCDT("END"))
  1. S SCDT2("INCL")=SCDT("INCL"),SCDT2="SCDT2"
  1. Q
  1. ;
  1. SETF(SCPC,SUB,DATA) ;Set "flat" array node
  1. ;Input: SCPC=PC/NPC flag
  1. ;Input: SUB=subscript value
  1. ;Input: DATA=data string
  1. N X,CT
  1. S X=$S(SCPC>0:"PC",1:"NPC"),SUB=X_SUB
  1. S @SCARR@(DFN,SUB,0)=@SCARR@(DFN,SUB,0)+1
  1. S CT=@SCARR@(DFN,SUB,0),@SCARR@(DFN,SUB,CT)=DATA
  1. Q