SCAPMC20 ;ALB/REW - Team APIs:APPTTM ; 20 Mar 1996
;;5.3;Scheduling;**41,1015**;AUG 13, 1993;Build 21
;;1.0
ACOUTPT(DFN,SCFIELDA,SCERR) ;add/edit a record in OUTPATIENT PROFILE #404.41
; input:
; DFN = pointer to PATIENT file (#2)
; SCFIELDA= array of additional fields to be added
; SCERR = array NAME to store error messages.
; [ex. ^TMP("ORXX",$J)]
;
; Output:
; Returned = ok?^404.41 ien^new?
; SCERR() = Array of DIALOG file messages(errors) .
; Foramt:
; Subscript: Sequential # from 1 to n
; Piece Description
; 1 IEN of DIALOG file
N SCEXIST
N SCESEQ,SCPARM,SCIEN,SC,SCFLD
G:'$$OKDATA APTTMQ ;check/setup variables
S SCEXIST=$D(^SCPT(404.41,DFN,0))#2
IF SCEXIST D
.IF $D(SCFIELDA) D
..S SCFLD=0
..F S SCFLD=$O(@SCFIELDA@(SCFLD)) Q:'SCFLD D
...S SC($J,404.41,(+DFN)_",",SCFLD)=@SCFIELDA@(SCFLD)
.D FILE^DIE("E","SC($J)",SCERR)
ELSE D
.S SCIEN(1)=DFN
.S SC($J,404.41,"+1,",.01)="`"_DFN
.IF $D(SCFIELDA) D
..S SCFLD=0
..F S SCFLD=$O(@SCFIELDA@(SCFLD)) Q:'SCFLD D
...S SC($J,404.41,"+1,",SCFLD)=@SCFIELDA@(SCFLD)
.D UPDATE^DIE("E","SC($J)","SCIEN",SCERR)
.IF $D(@SCERR)!($G(SCIEN(1))'=DFN) S @SCERR=1 K SCIEN
.ELSE D
..S SCEXIST=0
APTTMQ Q '$D(@SCERR@(0))_U_+$G(DFN)_U_'$G(SCEXIST)
;
OKDATA() ;setup/check variables
N SCOK
S SCOK=1
D INIT^SCAPMCU1(.SCOK)
IF '$D(^DPT(DFN,0)) D S SCOK=0
. S SCPARM("PATIENT")=DFN
. D ERR^SCAPMCU1(SCESEQ,4045101,.SCPARM,"",.SCERR)
Q SCOK
;
MAKEMANY(DFNA,SCOLDASS,SCBADASS,SCNEWASS) ;Not supported for use by PCMM Only
; DFNA - DFN ARRAY
; SCOLDASS - Subset of DFNA that were previously assigned
; SCBADASS - Subset of DFNA that could not be assigned
; SCNEWASS - Subset of DFNA that were newly assigned
; Return: total^new^old^bad
; Note: No input error checking!!
N DFN,SCX,SCOUTFLD,SCBADOUT,SCBADCNT,SCNEWCND,SCOLDCNT
S (SCBADCNT,SCNEWCNT,SCOLDCNT)=0
S DFN=0
F S DFN=$O(@DFNA@(DFN)) Q:'DFN D
.S SCOUTFLD(.04)=1
.S SCX=$$ACOUTPT(DFN,"SCOUTFLD","SCBADOUT")
.IF 'SCX D
..S @SCBADASS@(DFN)=""
..S SCBADCNT=SCBADCNT+1
.ELSE D
..IF $P(SCX,U,3) D
...S @SCNEWASS@(DFN)=""
...S SCNEWCNT=SCNEWCNT+1
..ELSE D
...S @SCOLDASS@(DFN)=""
...S SCOLDCNT=SCOLDCNT+1
Q (SCOLDCNT+SCNEWCNT)_U_SCNEWCNT_U_SCOLDCNT_U_SCBADCNT
;
PTPCNOTM(SCOUTA,SCDATE) ;Not Supported For Use by PCMM Only
; SCOUTA - Output array of DFNs that are PC but no Team Now
N DFN,SCPC
S DFN=0
F S DFN=$O(^SCPT(404.41,"APC",DFN)) Q:'DFN S SCPC=$O(^(DFN)) Q:'SCPC D
.Q:$D(^TMP("SCMC",$J,"EXCLUDE PT","SCPTA",+DFN))
.S:'$$GETPCTM^SCAPMCU2(DFN,SCDATE,1) @SCOUTA@(DFN)=DFN_U_$P($G(^DPT(DFN,0)),U,1)
Q
SCAPMC20 ;ALB/REW - Team APIs:APPTTM ; 20 Mar 1996
+1 ;;5.3;Scheduling;**41,1015**;AUG 13, 1993;Build 21
+2 ;;1.0
ACOUTPT(DFN,SCFIELDA,SCERR) ;add/edit a record in OUTPATIENT PROFILE #404.41
+1 ; input:
+2 ; DFN = pointer to PATIENT file (#2)
+3 ; SCFIELDA= array of additional fields to be added
+4 ; SCERR = array NAME to store error messages.
+5 ; [ex. ^TMP("ORXX",$J)]
+6 ;
+7 ; Output:
+8 ; Returned = ok?^404.41 ien^new?
+9 ; SCERR() = Array of DIALOG file messages(errors) .
+10 ; Foramt:
+11 ; Subscript: Sequential # from 1 to n
+12 ; Piece Description
+13 ; 1 IEN of DIALOG file
+14 NEW SCEXIST
+15 NEW SCESEQ,SCPARM,SCIEN,SC,SCFLD
+16 ;check/setup variables
IF '$$OKDATA
GOTO APTTMQ
+17 SET SCEXIST=$DATA(^SCPT(404.41,DFN,0))#2
+18 IF SCEXIST
Begin DoDot:1
+19 IF $DATA(SCFIELDA)
Begin DoDot:2
+20 SET SCFLD=0
+21 FOR
SET SCFLD=$ORDER(@SCFIELDA@(SCFLD))
IF 'SCFLD
QUIT
Begin DoDot:3
+22 SET SC($JOB,404.41,(+DFN)_",",SCFLD)=@SCFIELDA@(SCFLD)
End DoDot:3
End DoDot:2
+23 DO FILE^DIE("E","SC($J)",SCERR)
End DoDot:1
+24 IF '$TEST
Begin DoDot:1
+25 SET SCIEN(1)=DFN
+26 SET SC($JOB,404.41,"+1,",.01)="`"_DFN
+27 IF $DATA(SCFIELDA)
Begin DoDot:2
+28 SET SCFLD=0
+29 FOR
SET SCFLD=$ORDER(@SCFIELDA@(SCFLD))
IF 'SCFLD
QUIT
Begin DoDot:3
+30 SET SC($JOB,404.41,"+1,",SCFLD)=@SCFIELDA@(SCFLD)
End DoDot:3
End DoDot:2
+31 DO UPDATE^DIE("E","SC($J)","SCIEN",SCERR)
+32 IF $DATA(@SCERR)!($GET(SCIEN(1))'=DFN)
SET @SCERR=1
KILL SCIEN
+33 IF '$TEST
Begin DoDot:2
+34 SET SCEXIST=0
End DoDot:2
End DoDot:1
APTTMQ QUIT '$DATA(@SCERR@(0))_U_+$GET(DFN)_U_'$GET(SCEXIST)
+1 ;
OKDATA() ;setup/check variables
+1 NEW SCOK
+2 SET SCOK=1
+3 DO INIT^SCAPMCU1(.SCOK)
+4 IF '$DATA(^DPT(DFN,0))
Begin DoDot:1
+5 SET SCPARM("PATIENT")=DFN
+6 DO ERR^SCAPMCU1(SCESEQ,4045101,.SCPARM,"",.SCERR)
End DoDot:1
SET SCOK=0
+7 QUIT SCOK
+8 ;
MAKEMANY(DFNA,SCOLDASS,SCBADASS,SCNEWASS) ;Not supported for use by PCMM Only
+1 ; DFNA - DFN ARRAY
+2 ; SCOLDASS - Subset of DFNA that were previously assigned
+3 ; SCBADASS - Subset of DFNA that could not be assigned
+4 ; SCNEWASS - Subset of DFNA that were newly assigned
+5 ; Return: total^new^old^bad
+6 ; Note: No input error checking!!
+7 NEW DFN,SCX,SCOUTFLD,SCBADOUT,SCBADCNT,SCNEWCND,SCOLDCNT
+8 SET (SCBADCNT,SCNEWCNT,SCOLDCNT)=0
+9 SET DFN=0
+10 FOR
SET DFN=$ORDER(@DFNA@(DFN))
IF 'DFN
QUIT
Begin DoDot:1
+11 SET SCOUTFLD(.04)=1
+12 SET SCX=$$ACOUTPT(DFN,"SCOUTFLD","SCBADOUT")
+13 IF 'SCX
Begin DoDot:2
+14 SET @SCBADASS@(DFN)=""
+15 SET SCBADCNT=SCBADCNT+1
End DoDot:2
+16 IF '$TEST
Begin DoDot:2
+17 IF $PIECE(SCX,U,3)
Begin DoDot:3
+18 SET @SCNEWASS@(DFN)=""
+19 SET SCNEWCNT=SCNEWCNT+1
End DoDot:3
+20 IF '$TEST
Begin DoDot:3
+21 SET @SCOLDASS@(DFN)=""
+22 SET SCOLDCNT=SCOLDCNT+1
End DoDot:3
End DoDot:2
End DoDot:1
+23 QUIT (SCOLDCNT+SCNEWCNT)_U_SCNEWCNT_U_SCOLDCNT_U_SCBADCNT
+24 ;
PTPCNOTM(SCOUTA,SCDATE) ;Not Supported For Use by PCMM Only
+1 ; SCOUTA - Output array of DFNs that are PC but no Team Now
+2 NEW DFN,SCPC
+3 SET DFN=0
+4 FOR
SET DFN=$ORDER(^SCPT(404.41,"APC",DFN))
IF 'DFN
QUIT
SET SCPC=$ORDER(^(DFN))
IF 'SCPC
QUIT
Begin DoDot:1
+5 IF $DATA(^TMP("SCMC",$JOB,"EXCLUDE PT","SCPTA",+DFN))
QUIT
+6 IF '$$GETPCTM^SCAPMCU2(DFN,SCDATE,1)
SET @SCOUTA@(DFN)=DFN_U_$PIECE($GET(^DPT(DFN,0)),U,1)
End DoDot:1
+7 QUIT