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

SCDXHLDR.m

Go to the documentation of this file.
  1. SCDXHLDR ;ALB/JLU;Ambulatory care event handler;4/30/96
  1. ;;5.3;Scheduling;**44,99,126,66,132,245,782**;5/1/96;Build 10
  1. ;This routine is the Ambulatory care event handler. It will hang on
  1. ;the Scheduling event driver and monitor the types of events. When a
  1. ;check out, edit to a check out or deletion of a check out occurs this
  1. ;routine will update the Transmitted outpatient encounter file.
  1. ;
  1. EN ;Main entry point
  1. ;
  1. I $D(SDSTPAMB) G ENQ ;this will stop the logging of events.
  1. I '$D(SDAMEVT) G ENQ
  1. I SDAMEVT'>4!(SDAMEVT>9) G ENQ ;check out, add/edit and add/edit change
  1. N SDOE,SDPROC,SDBEFORE,SDAFTER,EVTDT,CLINIC,XMIT
  1. S SDPROC=0
  1. F S SDPROC=$O(^TMP("SDEVT",$J,SDHDL,SDPROC)) Q:'SDPROC I SDPROC'=4 DO
  1. .S SDOE=0
  1. .F S SDOE=$O(^TMP("SDEVT",$J,SDHDL,SDPROC,"SDOE",SDOE)) Q:'SDOE DO
  1. ..K XMIT
  1. ..D NOW^%DTC S EVTDT=%
  1. ..S SDAFTER=$G(^TMP("SDEVT",$J,SDHDL,SDPROC,"SDOE",SDOE,0,"AFTER"))
  1. ..S SDBEFORE=$G(^("BEFORE")) ;naked reference from previous line
  1. ..;
  1. ..;Screen out test patients
  1. ..S DFN=$S((SDAFTER'=""):$P(SDAFTER,U,2),(SDBEFORE'=""):$P(SDBEFORE,U,2),1:0)
  1. ..I DFN Q:$$TESTPAT^VADPT(DFN)
  1. ..;
  1. ..; screen out non counts
  1. ..I SDAFTER]"" S CLINIC=$P(SDAFTER,U,4) Q:$$NONCNT($P(SDAFTER,U,4))
  1. ..I SDBEFORE]"" S CLINIC=$P(SDBEFORE,U,4) Q:$$NONCNT($P(SDBEFORE,U,4))
  1. ..;
  1. ..; handling of delete encounters and check outs
  1. ..I SDAFTER]"",SDBEFORE]"",SDAFTER'=SDBEFORE,'$$COMPL(SDAFTER) D LOAD("DELETE",SDOE,EVTDT,SDBEFORE) Q ;DELETION OF A CHECK OUT
  1. ..I SDBEFORE]"",SDAFTER']"",SDPROC=2,'+$P(SDBEFORE,U,6) D LOAD("DELETE",SDOE,EVTDT,SDBEFORE) Q ;delete of a stand alone add/edit
  1. ..I SDBEFORE]"",SDAFTER']"",SDPROC=2,+$P(SDBEFORE,U,6) Q ;delete of add/edit from an appt. IT HAS ALREADY BEEN MARKED
  1. ..;;;I SDBEFORE]"",SDAFTER']"",SDPROC=2,+$P(SDBEFORE,U,6) D LOAD("EDIT",SDOE,EVTDT,SDBEFORE) Q ;THIS IS FROM ABOVE. KEPT FOR REFERENCE
  1. ..;
  1. ..;screen out not checked out encounters
  1. ..I '$S(SDAFTER]"":$$COMPL(SDAFTER),SDBEFORE]"":$$COMPL(SDBEFORE),1:0) Q
  1. ..;
  1. ..;any loads or edits
  1. ..I SDBEFORE]"",SDAFTER]"" D LOAD("EDIT",SDOE,EVTDT) ;edit of C/O
  1. ..I SDBEFORE']"",SDAFTER]"" D LOAD("ADD",SDOE,EVTDT) ;new encounter at C/O
  1. ..Q
  1. .Q
  1. ;
  1. ENQ ;
  1. Q
  1. ;
  1. NONCNT(IEN) ;this function determines if the clinic is non count or not
  1. ;INPUT IEN the poitner to the hospital location.
  1. ;OUTPUT 1 if a non count
  1. ; 0 if not a non count
  1. I '$D(IEN) S ANS=0 G NONCNTQ
  1. I 'IEN S ANS=0 G NONCNTQ
  1. S ANS=$S($P(^SC(IEN,0),U,17)="Y":1,1:0)
  1. NONCNTQ Q ANS
  1. ;
  1. COMPL(NODE) ;this function call returns whether or not the check out
  1. ;process is complete or not. 1 for complete 0 for not
  1. ;
  1. Q $S(+$P(NODE,U,7):1,1:0)
  1. ;
  1. LOAD(ACTION,IEN,EVTDT,NODE) ;
  1. ;ACTION is what type of action caused this event
  1. ;IEN is the pointer to the outpatient encounter file
  1. ;EVTDT is the date this action occured
  1. ;NODE is the zero node of the outpatient encounter file
  1. ;
  1. N EVNT,PAR
  1. ;
  1. I ACTION'="DELETE" DO
  1. .I $D(^SCE(IEN,0)) S PAR=$P(^SCE(IEN,0),U,6)
  1. .E S PAR=$P(NODE,U,6)
  1. .S IEN=$S(+PAR:PAR,1:IEN)
  1. .S EVNT=$S(ACTION="ADD":1,1:2)
  1. .S XMIT=$$FINDXMIT^SCDXFU01(IEN)
  1. .I 'XMIT S XMIT=$$CRTXMIT^SCDXFU01(IEN,"",EVTDT)
  1. .I +XMIT>0 D STREEVNT^SCDXFU01(XMIT,EVNT,EVTDT),XMITFLAG^SCDXFU01(XMIT,0)
  1. .Q
  1. ;
  1. I ACTION="DELETE" DO
  1. .N DELENT,TRANENT,DELENCT,PAR,NTNEED
  1. .S PAR=$P(NODE,U,6)
  1. .S IEN=$S(+PAR:PAR,1:IEN)
  1. .;
  1. .;Encounter never transmitted to or accepted by NPCD
  1. .I (('$$XMITED^SCDXFU03(IEN))&('$$ACCEPTED^SCDXFU03(IEN))) S NTNEED=""
  1. .;Another parent encounter has same Visit ID (i.e. duplicate encounter)
  1. .I ($$VIDCNT^SCDXFU03($P(NODE,"^",20),IEN)) S NTNEED=""
  1. .;
  1. .S DELENT=$$CRTDEL^SCDXFU02($P(NODE,U,1),$P(NODE,U,2),EVTDT,NODE)
  1. .I DELENT<0 S DELENT=$$DELXMIT^SCDXFU03(IEN,1) Q
  1. .;
  1. .S XMIT=$$CRTXMIT^SCDXFU01(IEN,DELENT,EVTDT)
  1. .I XMIT<0 S DELENT=$$DELXMIT^SCDXFU03(IEN,1) Q
  1. .;
  1. .;Delete entry in transmission file (409.73) - not needed
  1. .I $D(NTNEED) S DELENT=$$DELXMIT^SCDXFU03(DELENT,2) Q
  1. .;
  1. .D XMITFLAG^SCDXFU01(XMIT,0)
  1. .Q
  1. Q
  1. ;
  1. VALIDATE(XMIT,CLINIC) ;this entry point performs the validation at check out.
  1. ;
  1. ;INPUT - XMIT this is the IEN of an entry in the transmit file 409.73
  1. S XMIT=+$G(XMIT)
  1. S CLINIC=+$G(CLINIC)
  1. I XMIT<1!(CLINIC<1) G VALQ
  1. N VAL
  1. S VAL=$$VALWL^SCMSVUT2(+$G(CLINIC))
  1. I VAL<1 G VALQ
  1. I 'SDMODE,'$D(ZTQUEUED),'$D(VALQUIET) W !!,"Performing Ambulatory Care Validation Checks.",!
  1. S ERR=$$VALIDATE^SCMSVUT2(XMIT)
  1. I SDMODE!($D(ZTQUEUED))!($D(VALQUIET))!($G(SDMOD)=2) G VALQ ;Add check for VSE GUI indicator SDMOD - SD*5.3*782
  1. I ERR<1 DO G VALQ
  1. .W !,"No validation errors found!"
  1. .Q
  1. S DIR(0)="Y"
  1. S DIR("B")="YES"
  1. S DIR("A")="Do you wish to correct the validation errors"
  1. D ^DIR
  1. K DIR
  1. I Y<1 G VALQ
  1. ;
  1. D ENP^SCENI0(XMIT)
  1. ;
  1. VALQ Q
  1. ;
  1. FINAL(VISIT,PXKVST) ;
  1. ;INPUT VISIT - the IEN of the visit at hand.
  1. ;
  1. Q:$D(SDIEMM)
  1. Q:'$D(VISIT)
  1. Q:VISIT=""
  1. Q:$D(VALSTP)
  1. Q:$D(^TMP("PXKSAVE",$J))
  1. N ENC,CLN,XMT,SDMODE
  1. S ENC=0
  1. F S ENC=$O(^SCE("AVSIT",VISIT,ENC)) Q:ENC="" I $P(^SCE(ENC,0),U,6)="" Q
  1. I ENC="" Q
  1. Q:'$D(^SCE(ENC,0))
  1. Q:'$$COMPL(^SCE(ENC,0))
  1. S CLN=$P(^SCE(ENC,0),U,4)
  1. S XMT=+$O(^SD(409.73,"AENC",ENC,0))
  1. I 'XMT Q
  1. S SDMODE=0
  1. D TERM
  1. D VALIDATE(XMT,CLN)
  1. Q
  1. ;
  1. TERM ;this is to reset the io variables for lsitman to function properly
  1. ;when coming from PCE.
  1. N X
  1. S X="IORVON;IORVOFF;IOIL;IOSTBM;IOSC;IORC;IOEDEOP;IOINHI;IOINORM;IOUON;IOUOFF;IOBON;IOBOFF;IOSGR0"
  1. ;;;S X="IORVON;IORVOFF;IOSC;IORC;IOEDEOP;IOINHI;IOINORM;IOUON;IOUOFF;IOBON;IOBOFF;IOSGR0"
  1. D ENDR^%ZISS
  1. Q
  1. ;
  1. OK() ;
  1. I SDAMEVT=6,SDBEFORE="",SDAFTER]"" Q 0
  1. Q 1
  1. ;