- PXKMAIN ;ISL/JVS,PKR,ISA/Zoltan - Main Routine for Data Capture ;03/12/2020
- ;;1.0;PCE PATIENT CARE ENCOUNTER;**22,59,73,88,69,117,130,124,174,164,210,215,216,211**;Aug 12, 1996;Build 454
- ;+This routine is responsible for:
- ;+
- ;+LOCAL VARIABLE LIST:
- ;+ PXFG = Stop flag with duplicate of delete
- ;+ PXKAFT = After node
- ;+ PXKBEF = Before node
- ;+ PXKAV = Pieces from the after node
- ;+ PXKBV = Pieces from the before node
- ;+ PXKERROR = Set when there is an error
- ;+ PXKFGAD = ADD flag
- ;+ PXKFGED = EDIT flag
- ;+ PXKFGDE = DELETE flag
- ;+ PXKSEQ = Sequence number in PXK TMP global
- ;+ PXKCAT = Category of entry (CPT,MSR,VST...)
- ;+ PXKREF = Root of temp global
- ;+ PXKPIEN = IEN of v file or the visit file
- ;+ PXKREF = The original reference we are ordering off of
- ;+ PXKRT = name of the node in the v file
- ;+ PXKRTN = routine name for the file routine
- ;+ PXKSOR = the data source for this entry
- ;+ PXKSUB = the subscript the data is located on the v file
- ;+ PXKVST = the visit IEN
- ;+ PXKDUZ = the DUZ of the user
- ;+ *PXKHLR* = A variable set by calling routine so that duplicate
- ;+ PXKERROR messages aren't produced.
- ;
- W !,"This is not an entry point" Q
- EN1 ;+Main entry point to read ^TMP("PXK", Global
- ;+ Partial ^TMP Global Structure when called:
- ;+ ^TMP("PXK",$J,"SOR") = Source ien
- ;+
- ;+ ^TMP("PXK",$J,"VST",1,0,"BEFORE") = the 0-node of the visit file
- ;+ ^TMP("PXK",$J,"VST",1,0,"AFTER") = 0-node after changes.
- ;+ ^TMP("PXK",$J,"VST",provider counter,"IEN") = ""
- ;+
- ;+ ^TMP("PXK",$J,"PRV",provider counter,0,"BEFORE") = ""
- ;+ ^TMP("PXK",$J,"PRV",provider counter,0,"AFTER") = Provider id^DFN^Visitien^'P' or 'S' for primary/secondary
- ;+ ^TMP("PXK",$J,"PRV",provider counter,"IEN") = ""
- ;+ ^TMP("PXK",$J,"PRV",provider counter,"BEFORE") = ""
- ;+ ^TMP("PXK",$J,"PRV",provider counter,"AFTER") = ^Package ien^Source ien
- ;+
- N LOCK,PXKDUZ,VISITIEN
- K PXKERROR
- I '$G(PXKDUZ) S PXKDUZ=$S($G(DUZ):DUZ,1:.5)
- D VST(.VISITIEN,PXKDUZ,.LOCK)
- I LOCK=0 S PXAERRF=4 Q
- I VISITIEN>0 D UNLOCK^PXLOCK(VISITIEN,PXKDUZ)
- Q
- ;
- ;VST ;--Check for visit node and get one created or quit.
- VST(VISITIEN,PXKDUZ,LOCK) ;--Check for visit node and get one created or quit.
- S LOCK=0,VISITIEN=""
- I '$G(^TMP("PXK",$J,"VST",1,"IEN")) D VSIT^PXKVST
- I +$G(^TMP("PXK",$J,"VST",1,"IEN"))=-1 S PXKERROR("VISIT")="Visit Tracking could not get a visit." Q
- I +$G(^TMP("PXK",$J,"VST",1,"IEN"))=-2 S PXKERROR("VISIT")="PCE is not activated in Visit Tracking Parameters and thus cannot create visits." Q
- I +$G(^TMP("PXK",$J,"VST",1,"IEN"))<1 S PXKERROR("VISIT")="Did not get a visit^"_$G(^TMP("PXK",$J,"VST",1,"IEN")) Q
- S VISITIEN=^TMP("PXK",$J,"VST",1,"IEN")
- S LOCK=$$LOCK^PXLOCK(VISITIEN,PXKDUZ,2,.PXKERROR)
- I LOCK=0 Q
- ;
- NEW ;--New variables and set main variables
- N PXKDFN,PXKSOR,PXKVST,PXKSEQ,PXFG,PXKAFT,PXKBEF,PXKAUDIT
- N PXKCAT,PXKCO,PXKER,PXKFGAD,PXKFGED,PXKFGDE,PXKNOD,PXKPCE
- N PXKPIEN,PXKREF,PXKRTN,PXKSORR,PXKSUB,PXKVCAT
- N PXKPTR,PXDFG,PX,PXJJ,PXJJJ,PXKAFT8,PXKAFTR,PXKGN,PXKN,PXKNOW,PXKP
- N PXKRRT,PXKVRTN,PXKRT,PXKFVDLM,TMPPX
- PRVTYPE ;---DO PROVIDER TYPE--PXKMAIN2
- D PRVTYPE^PXKMAIN2
- ;
- SET ;--SET VARIABLES NECESSARY
- ;'DA' should not be defined at this point
- N DA ;PX*1.0*117
- ;
- S PXFG=0,TMPPX="^",PXKLAYGO="",PXDFG=0
- SOURCE S PXKSOR=$G(^TMP("PXK",$J,"SOR")) D Q:$D(PXKERROR("SOURCE"))
- .S PXKCO("SOR")=PXKSOR
- .I $D(PXKSOR)']"" S PXKERROR("SOURCE")="" Q
- VISIT S (PXKVST,VSIT("IEN"))=$G(^TMP("PXK",$J,"VST",1,"IEN"))
- ORDER ;--$ORDER Through the ^TMP("PXK", global setting variables
- S PXKREF="^TMP(""PXK"",$J)"
- CATEG S PXKCAT="" F S (PXKCAT,PXKVCAT)=$O(@PXKREF@(PXKCAT)) Q:PXKCAT="" D
- .I PXKCAT="VST" S PXKVCAT="SIT"
- .S PXKRTN="PXKF"_PXKCAT
- .S X=PXKRTN X ^%ZOSF("TEST") Q:'$T
- SEQUE .S PXKSEQ=0 F S PXKSEQ=$O(@PXKREF@(PXKCAT,PXKSEQ)) K PXKAV,PXKBV S PXFG=0 Q:'PXKSEQ D
- ..S PXKPIEN=$G(@PXKREF@(PXKCAT,PXKSEQ,"IEN")),(PXKFGAD,PXKFGDE,PXKFGED,PXDFG)=0
- SUBSCR ..S PXKSUB="" F S PXKSUB=$O(@PXKREF@(PXKCAT,PXKSEQ,PXKSUB)) Q:PXKSUB["IEN" Q:PXFG=1 Q:PXDFG=1 D
- AFTER ...S PXKAFT(PXKSUB)=$G(@PXKREF@(PXKCAT,PXKSEQ,PXKSUB,"AFTER"))
- BEFORE ...S PXKBEF(PXKSUB)=$G(@PXKREF@(PXKCAT,PXKSEQ,PXKSUB,"BEFORE"))
- ...I PXKCAT="CPT",PXKSUB=1 D SUBSCR^PXKMOD
- ...I PXKCAT="IMM",PXKSUB?1(1"2",1"3",1"11") D MULT
- ...D LOOP^PXKMAIN1 I PXKSUB=0 D ERROR^PXKMAIN1
- ...S PXDFG=0 I $G(PXKAV(0,1))["@"!('$D(PXKAV(0,1))) S PXKAFT(PXKSUB)="" K PXKAV(0) S PXDFG=1
- ..Q:PXFG=1
- ..I $D(PXKAV),'$D(PXKBV) S PXKSORR=PXKSOR_"-A "_PXKDUZ,PXKFGAD=1 I PXKCAT["VST" S PXKFGAD=0
- ..I '$D(PXKAV),$D(PXKBV) S PXKFGDE=1,PXKFVDLM="" D
- ...S PXKRT=$P($T(GLOBAL^@PXKRTN),";;",2)_"("_PXKPIEN_")" I $D(@PXKRT) D CHKAUD,DELETE^PXKMAIN1,EN1^PXKMASC S PXFG=1 K PXKRT Q
- ..I 'PXKFGAD,'PXKFGDE D
- ...I PXKCAT="VST" D CQDEL
- ...D CLEAN^PXKMAIN1
- ...I $D(PXKAV) S PXKSORR=PXKSOR_"-E "_PXKDUZ,PXKFGED=1 I PXKCAT="VST",'$D(PXKBV),$D(PXKVST) S PXKFGED=0
- ..I 'PXKFGAD,'PXKFGDE,'PXKFGED,PXKCAT["VST" D EN1^PXKMASC
- ..I PXKFGAD=1 D Q:PXFG
- ...D ERROR^PXKMAIN1
- ...I $D(PXKERROR(PXKCAT,PXKSEQ)) S PXFG=1
- ...D:'PXFG DUP^PXKMAIN1
- ...I PXFG=1 D Q
- ....Q:PXKCAT'="CPT"
- ....I $G(@PXKREF@(PXKCAT,PXKSEQ,"IEN"))]"" D REMOVE^PXCEVFIL(@PXKREF@(PXKCAT,PXKSEQ,"IEN"))
- ...;FILE^PXKMAIN1 MAKES THE ENTRY
- ...D:'PXKPIEN FILE^PXKMAIN1
- ...S:'$G(DA) DA=PXKPIEN
- ...D AUD2^PXKMAIN1,DRDIE^PXKMAIN1,EN1^PXKMASC
- ..I PXKFGED=1,PXKCAT'="VST" S PXKRT=$P($T(GLOBAL^@PXKRTN),";;",2)_"("_PXKPIEN_")" Q:'$D(@PXKRT) S DA=PXKPIEN D DUP^PXKMAIN1 Q:PXFG=1 D AUD12^PXKMAIN1,CHKAUD,DRDIE^PXKMAIN1,EN1^PXKMASC
- ..I PXKFGED=1,PXKCAT="VST" S PXKRT=$P($T(GLOBAL^@PXKRTN),";;",2)_"("_PXKPIEN_")" Q:'$D(@PXKRT) S DA=PXKPIEN D DUP^PXKMAIN1 Q:PXFG=1 D DRDIE^PXKMAIN1,EN1^PXKMASC
- ..D SPEC2^PXKMAIN2
- ..D EN^PXKMCODE
- ..K PXKAFT,PXKBEF
- I $D(^TMP("PXKSAVE",$J)) D RECALL^PXKMAIN2
- D EXIT
- Q
- ;
- MULT ; Add multiples to PXKAFT, PXKBEF, PXKAV, PXKBV arrays
- ;
- N PXKSUBIEN,PXKI
- ;
- S PXKSUBIEN=0
- F S PXKSUBIEN=$O(@PXKREF@(PXKCAT,PXKSEQ,PXKSUB,PXKSUBIEN)) Q:'PXKSUBIEN D
- . ;
- . I $D(@PXKREF@(PXKCAT,PXKSEQ,PXKSUB,PXKSUBIEN,"AFTER")) D
- . . S PXKAFT(PXKSUB,PXKSUBIEN)=$G(@PXKREF@(PXKCAT,PXKSEQ,PXKSUB,PXKSUBIEN,"AFTER"))
- . . F PXKI=1:1:$L(PXKAFT(PXKSUB,PXKSUBIEN),"^") D
- . . . I $P(PXKAFT(PXKSUB,PXKSUBIEN),"^",PXKI)'="" S PXKAV(PXKSUB,PXKSUBIEN,PXKI)=$P(PXKAFT(PXKSUB,PXKSUBIEN),"^",PXKI)
- . ;
- . I $D(@PXKREF@(PXKCAT,PXKSEQ,PXKSUB,PXKSUBIEN,"BEFORE")) D
- . . S PXKBEF(PXKSUB,PXKSUBIEN)=$G(@PXKREF@(PXKCAT,PXKSEQ,PXKSUB,PXKSUBIEN,"BEFORE"))
- . . F PXKI=1:1:$L(PXKBEF(PXKSUB,PXKSUBIEN),"^") D
- . . . I $P(PXKBEF(PXKSUB,PXKSUBIEN),"^",PXKI)'="" S PXKBV(PXKSUB,PXKSUBIEN,PXKI)=$P(PXKBEF(PXKSUB,PXKSUBIEN),"^",PXKI)
- ;
- I $G(@PXKREF@(PXKCAT,PXKSEQ,PXKSUB,0,"AFTER"))="@" D
- . S PXKAFT(PXKSUB,0)="@"
- . S PXKAV(PXKSUB,0)="@"
- ;
- Q
- ;
- CHKAUD ; Check and turn on Auditing
- I PXKCAT="IMM" D TURNON^DIAUTL(9000010.11,"*","y")
- Q
- ;
- EXIT ;--EXIT
- I $D(PXKFVDLM) D MODIFIED^VSIT(PXKVST)
- K PXKPXD,TMPPX
- K DA,DR,PXKI,PXKJ,PXKLAYGO,PXKDUZ,PXKAFT8,PXKAFTR,VSIT("IEN")
- Q
- ;
- EVENT ;--ENTRY POINT TO POST EXECUTE PCE'S EVENT
- ;Setting the variable PXKNOEVT=1 will stop the event from being
- ;fired off whenever any data is sent into PCE
- ;
- ;PX*1*124 AUTO-POPULATE THE ENCOUNTER SC/EI BASED ON THE ENCOUNTER DX'S
- ;PX*1.0*164 Relocate the PXCECCLS call
- I $D(^TMP("PXKCO",$J)) D
- . S PXKVVST=+$O(^TMP("PXKCO",$J,0))
- . I $G(PXKVVST),$D(^AUPNVSIT(PXKVVST)) D VST^PXCECCLS(PXKVVST) ;PX*1.0*174
- ;
- I $G(PXKNOEVT) K ^TMP("PXKCO",$J) Q
- D EVENT^PXKMASC
- Q
- ;
- CQDEL ;Classification question deletion check
- I PXKCAT'="VST" Q
- S PXJ="" F S PXJ=$O(PXKBV(800,PXJ)) Q:'PXJ I PXKBV(800,PXJ)'="" I '$D(PXKAV(800,PXJ)) S PXKAV(800,PXJ)="@"
- K PXJ Q
- ;
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPXKMAIN 7800 printed Jan 18, 2025@03:30:27 Page 2
- PXKMAIN ;ISL/JVS,PKR,ISA/Zoltan - Main Routine for Data Capture ;03/12/2020
- +1 ;;1.0;PCE PATIENT CARE ENCOUNTER;**22,59,73,88,69,117,130,124,174,164,210,215,216,211**;Aug 12, 1996;Build 454
- +2 ;+This routine is responsible for:
- +3 ;+
- +4 ;+LOCAL VARIABLE LIST:
- +5 ;+ PXFG = Stop flag with duplicate of delete
- +6 ;+ PXKAFT = After node
- +7 ;+ PXKBEF = Before node
- +8 ;+ PXKAV = Pieces from the after node
- +9 ;+ PXKBV = Pieces from the before node
- +10 ;+ PXKERROR = Set when there is an error
- +11 ;+ PXKFGAD = ADD flag
- +12 ;+ PXKFGED = EDIT flag
- +13 ;+ PXKFGDE = DELETE flag
- +14 ;+ PXKSEQ = Sequence number in PXK TMP global
- +15 ;+ PXKCAT = Category of entry (CPT,MSR,VST...)
- +16 ;+ PXKREF = Root of temp global
- +17 ;+ PXKPIEN = IEN of v file or the visit file
- +18 ;+ PXKREF = The original reference we are ordering off of
- +19 ;+ PXKRT = name of the node in the v file
- +20 ;+ PXKRTN = routine name for the file routine
- +21 ;+ PXKSOR = the data source for this entry
- +22 ;+ PXKSUB = the subscript the data is located on the v file
- +23 ;+ PXKVST = the visit IEN
- +24 ;+ PXKDUZ = the DUZ of the user
- +25 ;+ *PXKHLR* = A variable set by calling routine so that duplicate
- +26 ;+ PXKERROR messages aren't produced.
- +27 ;
- +28 WRITE !,"This is not an entry point"
- QUIT
- EN1 ;+Main entry point to read ^TMP("PXK", Global
- +1 ;+ Partial ^TMP Global Structure when called:
- +2 ;+ ^TMP("PXK",$J,"SOR") = Source ien
- +3 ;+
- +4 ;+ ^TMP("PXK",$J,"VST",1,0,"BEFORE") = the 0-node of the visit file
- +5 ;+ ^TMP("PXK",$J,"VST",1,0,"AFTER") = 0-node after changes.
- +6 ;+ ^TMP("PXK",$J,"VST",provider counter,"IEN") = ""
- +7 ;+
- +8 ;+ ^TMP("PXK",$J,"PRV",provider counter,0,"BEFORE") = ""
- +9 ;+ ^TMP("PXK",$J,"PRV",provider counter,0,"AFTER") = Provider id^DFN^Visitien^'P' or 'S' for primary/secondary
- +10 ;+ ^TMP("PXK",$J,"PRV",provider counter,"IEN") = ""
- +11 ;+ ^TMP("PXK",$J,"PRV",provider counter,"BEFORE") = ""
- +12 ;+ ^TMP("PXK",$J,"PRV",provider counter,"AFTER") = ^Package ien^Source ien
- +13 ;+
- +14 NEW LOCK,PXKDUZ,VISITIEN
- +15 KILL PXKERROR
- +16 IF '$GET(PXKDUZ)
- SET PXKDUZ=$SELECT($GET(DUZ):DUZ,1:.5)
- +17 DO VST(.VISITIEN,PXKDUZ,.LOCK)
- +18 IF LOCK=0
- SET PXAERRF=4
- QUIT
- +19 IF VISITIEN>0
- DO UNLOCK^PXLOCK(VISITIEN,PXKDUZ)
- +20 QUIT
- +21 ;
- +22 ;VST ;--Check for visit node and get one created or quit.
- VST(VISITIEN,PXKDUZ,LOCK) ;--Check for visit node and get one created or quit.
- +1 SET LOCK=0
- SET VISITIEN=""
- +2 IF '$GET(^TMP("PXK",$JOB,"VST",1,"IEN"))
- DO VSIT^PXKVST
- +3 IF +$GET(^TMP("PXK",$JOB,"VST",1,"IEN"))=-1
- SET PXKERROR("VISIT")="Visit Tracking could not get a visit."
- QUIT
- +4 IF +$GET(^TMP("PXK",$JOB,"VST",1,"IEN"))=-2
- SET PXKERROR("VISIT")="PCE is not activated in Visit Tracking Parameters and thus cannot create visits."
- QUIT
- +5 IF +$GET(^TMP("PXK",$JOB,"VST",1,"IEN"))<1
- SET PXKERROR("VISIT")="Did not get a visit^"_$GET(^TMP("PXK",$JOB,"VST",1,"IEN"))
- QUIT
- +6 SET VISITIEN=^TMP("PXK",$JOB,"VST",1,"IEN")
- +7 SET LOCK=$$LOCK^PXLOCK(VISITIEN,PXKDUZ,2,.PXKERROR)
- +8 IF LOCK=0
- QUIT
- +9 ;
- NEW ;--New variables and set main variables
- +1 NEW PXKDFN,PXKSOR,PXKVST,PXKSEQ,PXFG,PXKAFT,PXKBEF,PXKAUDIT
- +2 NEW PXKCAT,PXKCO,PXKER,PXKFGAD,PXKFGED,PXKFGDE,PXKNOD,PXKPCE
- +3 NEW PXKPIEN,PXKREF,PXKRTN,PXKSORR,PXKSUB,PXKVCAT
- +4 NEW PXKPTR,PXDFG,PX,PXJJ,PXJJJ,PXKAFT8,PXKAFTR,PXKGN,PXKN,PXKNOW,PXKP
- +5 NEW PXKRRT,PXKVRTN,PXKRT,PXKFVDLM,TMPPX
- PRVTYPE ;---DO PROVIDER TYPE--PXKMAIN2
- +1 DO PRVTYPE^PXKMAIN2
- +2 ;
- SET ;--SET VARIABLES NECESSARY
- +1 ;'DA' should not be defined at this point
- +2 ;PX*1.0*117
- NEW DA
- +3 ;
- +4 SET PXFG=0
- SET TMPPX="^"
- SET PXKLAYGO=""
- SET PXDFG=0
- SOURCE SET PXKSOR=$GET(^TMP("PXK",$JOB,"SOR"))
- Begin DoDot:1
- +1 SET PXKCO("SOR")=PXKSOR
- +2 IF $DATA(PXKSOR)']""
- SET PXKERROR("SOURCE")=""
- QUIT
- End DoDot:1
- if $DATA(PXKERROR("SOURCE"))
- QUIT
- VISIT SET (PXKVST,VSIT("IEN"))=$GET(^TMP("PXK",$JOB,"VST",1,"IEN"))
- ORDER ;--$ORDER Through the ^TMP("PXK", global setting variables
- +1 SET PXKREF="^TMP(""PXK"",$J)"
- CATEG SET PXKCAT=""
- FOR
- SET (PXKCAT,PXKVCAT)=$ORDER(@PXKREF@(PXKCAT))
- if PXKCAT=""
- QUIT
- Begin DoDot:1
- +1 IF PXKCAT="VST"
- SET PXKVCAT="SIT"
- +2 SET PXKRTN="PXKF"_PXKCAT
- +3 SET X=PXKRTN
- XECUTE ^%ZOSF("TEST")
- if '$TEST
- QUIT
- SEQUE SET PXKSEQ=0
- FOR
- SET PXKSEQ=$ORDER(@PXKREF@(PXKCAT,PXKSEQ))
- KILL PXKAV,PXKBV
- SET PXFG=0
- if 'PXKSEQ
- QUIT
- Begin DoDot:2
- +1 SET PXKPIEN=$GET(@PXKREF@(PXKCAT,PXKSEQ,"IEN"))
- SET (PXKFGAD,PXKFGDE,PXKFGED,PXDFG)=0
- SUBSCR SET PXKSUB=""
- FOR
- SET PXKSUB=$ORDER(@PXKREF@(PXKCAT,PXKSEQ,PXKSUB))
- if PXKSUB["IEN"
- QUIT
- if PXFG=1
- QUIT
- if PXDFG=1
- QUIT
- Begin DoDot:3
- AFTER SET PXKAFT(PXKSUB)=$GET(@PXKREF@(PXKCAT,PXKSEQ,PXKSUB,"AFTER"))
- BEFORE SET PXKBEF(PXKSUB)=$GET(@PXKREF@(PXKCAT,PXKSEQ,PXKSUB,"BEFORE"))
- +1 IF PXKCAT="CPT"
- IF PXKSUB=1
- DO SUBSCR^PXKMOD
- +2 IF PXKCAT="IMM"
- IF PXKSUB?1(1"2",1"3",1"11")
- DO MULT
- +3 DO LOOP^PXKMAIN1
- IF PXKSUB=0
- DO ERROR^PXKMAIN1
- +4 SET PXDFG=0
- IF $GET(PXKAV(0,1))["@"!('$DATA(PXKAV(0,1)))
- SET PXKAFT(PXKSUB)=""
- KILL PXKAV(0)
- SET PXDFG=1
- End DoDot:3
- +5 if PXFG=1
- QUIT
- +6 IF $DATA(PXKAV)
- IF '$DATA(PXKBV)
- SET PXKSORR=PXKSOR_"-A "_PXKDUZ
- SET PXKFGAD=1
- IF PXKCAT["VST"
- SET PXKFGAD=0
- +7 IF '$DATA(PXKAV)
- IF $DATA(PXKBV)
- SET PXKFGDE=1
- SET PXKFVDLM=""
- Begin DoDot:3
- +8 SET PXKRT=$PIECE($TEXT(GLOBAL^@PXKRTN),";;",2)_"("_PXKPIEN_")"
- IF $DATA(@PXKRT)
- DO CHKAUD
- DO DELETE^PXKMAIN1
- DO EN1^PXKMASC
- SET PXFG=1
- KILL PXKRT
- QUIT
- End DoDot:3
- +9 IF 'PXKFGAD
- IF 'PXKFGDE
- Begin DoDot:3
- +10 IF PXKCAT="VST"
- DO CQDEL
- +11 DO CLEAN^PXKMAIN1
- +12 IF $DATA(PXKAV)
- SET PXKSORR=PXKSOR_"-E "_PXKDUZ
- SET PXKFGED=1
- IF PXKCAT="VST"
- IF '$DATA(PXKBV)
- IF $DATA(PXKVST)
- SET PXKFGED=0
- End DoDot:3
- +13 IF 'PXKFGAD
- IF 'PXKFGDE
- IF 'PXKFGED
- IF PXKCAT["VST"
- DO EN1^PXKMASC
- +14 IF PXKFGAD=1
- Begin DoDot:3
- +15 DO ERROR^PXKMAIN1
- +16 IF $DATA(PXKERROR(PXKCAT,PXKSEQ))
- SET PXFG=1
- +17 if 'PXFG
- DO DUP^PXKMAIN1
- +18 IF PXFG=1
- Begin DoDot:4
- +19 if PXKCAT'="CPT"
- QUIT
- +20 IF $GET(@PXKREF@(PXKCAT,PXKSEQ,"IEN"))]""
- DO REMOVE^PXCEVFIL(@PXKREF@(PXKCAT,PXKSEQ,"IEN"))
- End DoDot:4
- QUIT
- +21 ;FILE^PXKMAIN1 MAKES THE ENTRY
- +22 if 'PXKPIEN
- DO FILE^PXKMAIN1
- +23 if '$GET(DA)
- SET DA=PXKPIEN
- +24 DO AUD2^PXKMAIN1
- DO DRDIE^PXKMAIN1
- DO EN1^PXKMASC
- End DoDot:3
- if PXFG
- QUIT
- +25 IF PXKFGED=1
- IF PXKCAT'="VST"
- SET PXKRT=$PIECE($TEXT(GLOBAL^@PXKRTN),";;",2)_"("_PXKPIEN_")"
- if '$DATA(@PXKRT)
- QUIT
- SET DA=PXKPIEN
- DO DUP^PXKMAIN1
- if PXFG=1
- QUIT
- DO AUD12^PXKMAIN1
- DO CHKAUD
- DO DRDIE^PXKMAIN1
- DO EN1^PXKMASC
- +26 IF PXKFGED=1
- IF PXKCAT="VST"
- SET PXKRT=$PIECE($TEXT(GLOBAL^@PXKRTN),";;",2)_"("_PXKPIEN_")"
- if '$DATA(@PXKRT)
- QUIT
- SET DA=PXKPIEN
- DO DUP^PXKMAIN1
- if PXFG=1
- QUIT
- DO DRDIE^PXKMAIN1
- DO EN1^PXKMASC
- +27 DO SPEC2^PXKMAIN2
- +28 DO EN^PXKMCODE
- +29 KILL PXKAFT,PXKBEF
- End DoDot:2
- End DoDot:1
- +30 IF $DATA(^TMP("PXKSAVE",$JOB))
- DO RECALL^PXKMAIN2
- +31 DO EXIT
- +32 QUIT
- +33 ;
- MULT ; Add multiples to PXKAFT, PXKBEF, PXKAV, PXKBV arrays
- +1 ;
- +2 NEW PXKSUBIEN,PXKI
- +3 ;
- +4 SET PXKSUBIEN=0
- +5 FOR
- SET PXKSUBIEN=$ORDER(@PXKREF@(PXKCAT,PXKSEQ,PXKSUB,PXKSUBIEN))
- if 'PXKSUBIEN
- QUIT
- Begin DoDot:1
- +6 ;
- +7 IF $DATA(@PXKREF@(PXKCAT,PXKSEQ,PXKSUB,PXKSUBIEN,"AFTER"))
- Begin DoDot:2
- +8 SET PXKAFT(PXKSUB,PXKSUBIEN)=$GET(@PXKREF@(PXKCAT,PXKSEQ,PXKSUB,PXKSUBIEN,"AFTER"))
- +9 FOR PXKI=1:1:$LENGTH(PXKAFT(PXKSUB,PXKSUBIEN),"^")
- Begin DoDot:3
- +10 IF $PIECE(PXKAFT(PXKSUB,PXKSUBIEN),"^",PXKI)'=""
- SET PXKAV(PXKSUB,PXKSUBIEN,PXKI)=$PIECE(PXKAFT(PXKSUB,PXKSUBIEN),"^",PXKI)
- End DoDot:3
- End DoDot:2
- +11 ;
- +12 IF $DATA(@PXKREF@(PXKCAT,PXKSEQ,PXKSUB,PXKSUBIEN,"BEFORE"))
- Begin DoDot:2
- +13 SET PXKBEF(PXKSUB,PXKSUBIEN)=$GET(@PXKREF@(PXKCAT,PXKSEQ,PXKSUB,PXKSUBIEN,"BEFORE"))
- +14 FOR PXKI=1:1:$LENGTH(PXKBEF(PXKSUB,PXKSUBIEN),"^")
- Begin DoDot:3
- +15 IF $PIECE(PXKBEF(PXKSUB,PXKSUBIEN),"^",PXKI)'=""
- SET PXKBV(PXKSUB,PXKSUBIEN,PXKI)=$PIECE(PXKBEF(PXKSUB,PXKSUBIEN),"^",PXKI)
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +16 ;
- +17 IF $GET(@PXKREF@(PXKCAT,PXKSEQ,PXKSUB,0,"AFTER"))="@"
- Begin DoDot:1
- +18 SET PXKAFT(PXKSUB,0)="@"
- +19 SET PXKAV(PXKSUB,0)="@"
- End DoDot:1
- +20 ;
- +21 QUIT
- +22 ;
- CHKAUD ; Check and turn on Auditing
- +1 IF PXKCAT="IMM"
- DO TURNON^DIAUTL(9000010.11,"*","y")
- +2 QUIT
- +3 ;
- EXIT ;--EXIT
- +1 IF $DATA(PXKFVDLM)
- DO MODIFIED^VSIT(PXKVST)
- +2 KILL PXKPXD,TMPPX
- +3 KILL DA,DR,PXKI,PXKJ,PXKLAYGO,PXKDUZ,PXKAFT8,PXKAFTR,VSIT("IEN")
- +4 QUIT
- +5 ;
- EVENT ;--ENTRY POINT TO POST EXECUTE PCE'S EVENT
- +1 ;Setting the variable PXKNOEVT=1 will stop the event from being
- +2 ;fired off whenever any data is sent into PCE
- +3 ;
- +4 ;PX*1*124 AUTO-POPULATE THE ENCOUNTER SC/EI BASED ON THE ENCOUNTER DX'S
- +5 ;PX*1.0*164 Relocate the PXCECCLS call
- +6 IF $DATA(^TMP("PXKCO",$JOB))
- Begin DoDot:1
- +7 SET PXKVVST=+$ORDER(^TMP("PXKCO",$JOB,0))
- +8 ;PX*1.0*174
- IF $GET(PXKVVST)
- IF $DATA(^AUPNVSIT(PXKVVST))
- DO VST^PXCECCLS(PXKVVST)
- End DoDot:1
- +9 ;
- +10 IF $GET(PXKNOEVT)
- KILL ^TMP("PXKCO",$JOB)
- QUIT
- +11 DO EVENT^PXKMASC
- +12 QUIT
- +13 ;
- CQDEL ;Classification question deletion check
- +1 IF PXKCAT'="VST"
- QUIT
- +2 SET PXJ=""
- FOR
- SET PXJ=$ORDER(PXKBV(800,PXJ))
- if 'PXJ
- QUIT
- IF PXKBV(800,PXJ)'=""
- IF '$DATA(PXKAV(800,PXJ))
- SET PXKAV(800,PXJ)="@"
- +3 KILL PXJ
- QUIT
- +4 ;