PXSCH3 ;ISL/JVS - SCHEDULING REDESIGN PROCEDURES-PRV #3 ;6/11/96
;;1.0;PCE PATIENT CARE ENCOUNTER;;Aug 12, 1996
; Variable List
;
; PRVNOD0 Provider node data
; PRVNOD12 Providr node dat
; PXSCT Counter provider to set Promary/Secondary
; PXSINDX Index for ^tmp("PXK" global
; PXSPR The main Provider
; PXSPRV The Provider being Processed
;
PRV ;Create nodes for Providers
Q:'$D(PXS("PROVIDER"))
S PXSCT=0
S PXSPRV=0 F S PXSPRV=$O(PXS("PROVIDER",PXSPRV)) Q:PXSPRV="" D
.S PXSINDX=PXSINDX+1
.S PXSCT=PXSCT+1
.D PRVNOD
Q
PRVNOD ;
S PRVNOD0="",$P(PRVNOD0,"^")=+$G(PXS("PROVIDER",PXSPRV))
S $P(PRVNOD0,"^",2)=$G(PXS("PATIENT")) ;PROVIDER
S $P(PRVNOD0,"^",3)=$G(PXS("VISIT")) ;VISIT
S $P(PRVNOD0,"^",4)=$S(PXSCT=1:"P",PXSCT>1:"S",1:"") ;PRIMARY/SECONDARY
S PRVNOD12=""
;S $P(PRVNOD12,"^")=$G(PXS("DATE")) ;DATE AND TIME
;S $P(PRVNOD12,"^",3)=$G(PXS("STOP CODE ORIG")) ;CLINIC STOP
;S $P(PRVNOD12,"^",4)=$G(PXSPR) ;PROVIDER
;S $P(PRVNOD12,"^",5)=$G(PXS("CLINIC")) ;HOSPITAL LOCATION
;S $P(PRVNOD12,"^",7)=$P(PRVNOD0,"^",3) ;SECONDARY VISIT
S ^TMP("PXK",$J,"PRV",PXSINDX+1,0,"AFTER")=$G(PRVNOD0)
S ^TMP("PXK",$J,"PRV",PXSINDX+1,0,"BEFORE")=""
S ^TMP("PXK",$J,"PRV",PXSINDX+1,12,"AFTER")=$G(PRVNOD12)
S ^TMP("PXK",$J,"PRV",PXSINDX+1,12,"BEFORE")=""
S ^TMP("PXK",$J,"PRV",PXSINDX+1,"IEN")=""
S ^TMP("PXK",$J,"SOR")=8
S ^TMP("PXK",$J,"VST",1,"IEN")=$G(PXS("VISIT"))
PRVDUP ;Look for duplicates on the same visit
N XPFG,XP
S (XPFG,XP)=0 F Q:XPFG S XP=$O(^AUPNVPRV("AD",PXS("VISIT"),XP)) Q:XP="" D
.I $P(^AUPNVPRV(XP,0),"^",1)=+$G(PXS("PROVIDER",PXSPRV)) D
..S ^TMP("PXK",$J,"PRV",PXSINDX+1,0,"BEFORE")=$G(^AUPNVPRV(XP,0))
..S ^TMP("PXK",$J,"PRV",PXSINDX+1,12,"BEFORE")=$G(^AUPNVPRV(XP,12))
..S ^TMP("PXK",$J,"PRV",PXSINDX+1,"IEN")=XP
..S XPFG=1
Q
PXSCH3 ;ISL/JVS - SCHEDULING REDESIGN PROCEDURES-PRV #3 ;6/11/96
+1 ;;1.0;PCE PATIENT CARE ENCOUNTER;;Aug 12, 1996
+2 ; Variable List
+3 ;
+4 ; PRVNOD0 Provider node data
+5 ; PRVNOD12 Providr node dat
+6 ; PXSCT Counter provider to set Promary/Secondary
+7 ; PXSINDX Index for ^tmp("PXK" global
+8 ; PXSPR The main Provider
+9 ; PXSPRV The Provider being Processed
+10 ;
PRV ;Create nodes for Providers
+1 IF '$DATA(PXS("PROVIDER"))
QUIT
+2 SET PXSCT=0
+3 SET PXSPRV=0
FOR
SET PXSPRV=$ORDER(PXS("PROVIDER",PXSPRV))
IF PXSPRV=""
QUIT
Begin DoDot:1
+4 SET PXSINDX=PXSINDX+1
+5 SET PXSCT=PXSCT+1
+6 DO PRVNOD
End DoDot:1
+7 QUIT
PRVNOD ;
+1 SET PRVNOD0=""
SET $PIECE(PRVNOD0,"^")=+$GET(PXS("PROVIDER",PXSPRV))
+2 ;PROVIDER
SET $PIECE(PRVNOD0,"^",2)=$GET(PXS("PATIENT"))
+3 ;VISIT
SET $PIECE(PRVNOD0,"^",3)=$GET(PXS("VISIT"))
+4 ;PRIMARY/SECONDARY
SET $PIECE(PRVNOD0,"^",4)=$SELECT(PXSCT=1:"P",PXSCT>1:"S",1:"")
+5 SET PRVNOD12=""
+6 ;S $P(PRVNOD12,"^")=$G(PXS("DATE")) ;DATE AND TIME
+7 ;S $P(PRVNOD12,"^",3)=$G(PXS("STOP CODE ORIG")) ;CLINIC STOP
+8 ;S $P(PRVNOD12,"^",4)=$G(PXSPR) ;PROVIDER
+9 ;S $P(PRVNOD12,"^",5)=$G(PXS("CLINIC")) ;HOSPITAL LOCATION
+10 ;S $P(PRVNOD12,"^",7)=$P(PRVNOD0,"^",3) ;SECONDARY VISIT
+11 SET ^TMP("PXK",$JOB,"PRV",PXSINDX+1,0,"AFTER")=$GET(PRVNOD0)
+12 SET ^TMP("PXK",$JOB,"PRV",PXSINDX+1,0,"BEFORE")=""
+13 SET ^TMP("PXK",$JOB,"PRV",PXSINDX+1,12,"AFTER")=$GET(PRVNOD12)
+14 SET ^TMP("PXK",$JOB,"PRV",PXSINDX+1,12,"BEFORE")=""
+15 SET ^TMP("PXK",$JOB,"PRV",PXSINDX+1,"IEN")=""
+16 SET ^TMP("PXK",$JOB,"SOR")=8
+17 SET ^TMP("PXK",$JOB,"VST",1,"IEN")=$GET(PXS("VISIT"))
PRVDUP ;Look for duplicates on the same visit
+1 NEW XPFG,XP
+2 SET (XPFG,XP)=0
FOR
IF XPFG
QUIT
SET XP=$ORDER(^AUPNVPRV("AD",PXS("VISIT"),XP))
IF XP=""
QUIT
Begin DoDot:1
+3 IF $PIECE(^AUPNVPRV(XP,0),"^",1)=+$GET(PXS("PROVIDER",PXSPRV))
Begin DoDot:2
+4 SET ^TMP("PXK",$JOB,"PRV",PXSINDX+1,0,"BEFORE")=$GET(^AUPNVPRV(XP,0))
+5 SET ^TMP("PXK",$JOB,"PRV",PXSINDX+1,12,"BEFORE")=$GET(^AUPNVPRV(XP,12))
+6 SET ^TMP("PXK",$JOB,"PRV",PXSINDX+1,"IEN")=XP
+7 SET XPFG=1
End DoDot:2
End DoDot:1
+8 QUIT