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

VAFCADT1.m

Go to the documentation of this file.
  1. VAFCADT1 ;ALB/RJS - HL7 PATIENT MOVEMENT EVENTS - APRIL 13,1995 ; 7/12/04 1:49pm
  1. ;;5.3;Registration;**91,179,992**;Aug 13, 1993;Build 5
  1. ;HL7v1.6
  1. ;This Routine is executed as an item protocol on the DGPM Patient
  1. ;Movement Event Driver. It's purpose is to determine what event
  1. ;has occurred. Has an Admission been created ? Has a Transfer with
  1. ;an associated Specialty Transfer been deleted ? This routine
  1. ;contains the logic to determine this.
  1. ;
  1. ;In certain instances, one HL7 message will be sent. In other
  1. ;instances portions (or the entire) history of an admission may
  1. ;be sent.
  1. ;
  1. ;A Portion of the history will be sent, if that portion
  1. ;is affected by the insertion or deletion of an event.
  1. ;
  1. ;You can run this software in the foreground and turn on a trace of
  1. ;this software, by defining the node ^TMP("VAFCADT1",$J)
  1. ;
  1. Q:'$P($$SEND^VAFHUTL(),"^",2)
  1. ;S ^TMP("VAFCADT1",$J)=1
  1. N VATRACE,VAFH
  1. MERGE VAFH=^UTILITY("DGPM",$J)
  1. I '($G(DGQUIET)) D
  1. . W !,"Executing HL7 ADT Messaging"
  1. . I $D(^TMP("VAFCADT1",$J)) S VATRACE=1
  1. ; DG*5.3*992 - Call INITIZE directly instead of queuing to avoid timing issues when reinstating orders after readmission from observation ward
  1. D INITIZE
  1. ;I $D(VATRACE) D G EXIT
  1. ;. D INITIZE
  1. ;N ZTDESC,ZTRTN,ZTSAVE,ZTIO,ZTDTH
  1. ;S ZTDESC="HL7 ADT MESSAGE",ZTRTN="INITIZE^VAFCADT1",ZTSAVE("DGPMP")="",ZTSAVE("DGPMA")="",ZTIO="",ZTSAVE("DGPMDA")="",ZTSAVE("DFN")="",ZTDTH=$H,ZTSAVE("VAFH(")=""
  1. ;D ^%ZTLOAD
  1. EXIT ;
  1. I $D(ZTQUEUED) S ZTREQ="@"
  1. D KILL^HLTRANS
  1. K ^TMP("HLS",$J)
  1. Q
  1. ;
  1. INITIZE ;;;can't do v1.6 it here, need event for init
  1. ;S HLNDAP="PIMS HL7" D INIT^HLTRANS
  1. ;S HLNDAP="PIMS HL7" D INIT^HLFNC2("VAFH "_EVENT,.HL)
  1. ;I $D(HLERR) Q
  1. ;I $D(HL)<2 Q
  1. D EVENT,EXIT
  1. Q
  1. EVENT ;
  1. I $G(DGPMP)=""&($G(DGPMA)="") Q
  1. N EVENT,TYPE,VAFHDT,ADMSSN,ADMDATE,IEN,PIVOT,PIVCHK,HISTORY
  1. N OLDDATE,PV1,GARBAGE,MOVETYPE
  1. ;
  1. ;I DGPMP="" and DGPMA'="" it means we're adding a new ADMISSION,
  1. ;TRANSFER, DISCHARGE, or SPECIALTY TRANSFER to the Patient Movement
  1. ;File
  1. ;
  1. I (DGPMP="")&(DGPMA'="") D G EXIT
  1. . ;
  1. . D SETVARS^VAFCADT4(DGPMA,DGPMDA) ; TYPE,VAFHDT,ADMSSN,IEN
  1. . ;
  1. . ;I TYPE=3 it means we're inserting a DISCHARGE
  1. . ;
  1. . I (TYPE=3) S EVENT="A03" D Q
  1. . . W:$D(VATRACE) !,1.3
  1. . . S MOVETYPE=$$MOVETYPE^VAFCADT4(DGPMA)
  1. . . I MOVETYPE=41 D 41^VAFCADT5(DFN) Q
  1. . . I MOVETYPE=46 D 46^VAFCADT5(DFN) Q
  1. . . S PIVCHK=$$PIVCHK^VAFHPIVT(DFN,$$ADMDATE^VAFCADT4(ADMSSN),1,ADMSSN_";DGPM(")
  1. . . S PIVOT=$$PIVNW^VAFHPIVT(DFN,$$ADMDATE^VAFCADT4(ADMSSN),1,ADMSSN_";DGPM(")
  1. . . I +PIVCHK>0 D BLDMSG^VAFCADT2(DFN,"A03",VAFHDT,"05",IEN,+PIVOT) Q
  1. . . K HISTORY
  1. . . D BLDHIST^VAFCADT3(DFN,ADMSSN,"HISTORY")
  1. . . D ENTIRE^VAFCADT4(+PIVOT)
  1. . ;
  1. . ;I TYPE=1 it means we're inserting an ADMISSION
  1. . ;
  1. . I (TYPE=1) D Q
  1. . . W:$D(VATRACE) !,1.1
  1. . . D PIVINIT^VAFCADT4(DFN,$$ADMDATE^VAFCADT4(ADMSSN),ADMSSN)
  1. . . D BLDMSG^VAFCADT2(DFN,"A01",VAFHDT,"05",IEN,+PIVOT)
  1. . ;
  1. . ;I TYPE=2 it means we're inserting a TRANSFER
  1. . ;
  1. . I (TYPE=2) D Q
  1. . . W:$D(VATRACE) !,1.2
  1. . . S MOVETYPE=$$MOVETYPE^VAFCADT4(DGPMA)
  1. . . I MOVETYPE=13 D 13^VAFCADT5(DFN) Q
  1. . . I MOVETYPE=14 D 14^VAFCADT5(DFN) Q
  1. . . I MOVETYPE=43 D 43^VAFCADT5(DFN) Q
  1. . . I MOVETYPE=44 D 44^VAFCADT5(DFN) Q
  1. . . K HISTORY
  1. . . D BLDHIST^VAFCADT3(DFN,ADMSSN,"HISTORY")
  1. . . D PIVINIT^VAFCADT4(DFN,$$ADMDATE^VAFCADT4(ADMSSN),ADMSSN)
  1. . . D ADDING^VAFCADT4(DFN,"A02",VAFHDT,+PIVOT,+PIVCHK) Q
  1. . ;
  1. . ;I TYPE=6 it means we're inserting a standalone SPECIALTY TRANSFER
  1. . ;
  1. . I (TYPE=6) D Q
  1. . . W:$D(VATRACE) !,1.6
  1. . . K HISTORY
  1. . . D BLDHIST^VAFCADT3(DFN,ADMSSN,"HISTORY")
  1. . . D PIVINIT^VAFCADT4(DFN,$$ADMDATE^VAFCADT4(ADMSSN),ADMSSN)
  1. . . D ADDING^VAFCADT4(DFN,"A08",VAFHDT,+PIVOT,+PIVCHK) Q
  1. ;
  1. ;If DGPMP'="" and DGPMA'="" it means we're editing an existing
  1. ;ADMISSION, DISCHARGE, TRANSFER, or SPECIALTY TRANSFER
  1. ;
  1. I (DGPMP'="")&(DGPMA'="") D G EXIT
  1. . ;
  1. . D SETVARS^VAFCADT4(DGPMA,DGPMDA)
  1. . S EVENT="A08",OLDDATE=$P(DGPMP,"^",1)
  1. . K HISTORY
  1. . D BLDHIST^VAFCADT3(DFN,ADMSSN,"HISTORY")
  1. . I '$D(HISTORY) Q
  1. . ;
  1. . ;I TYPE=1 it means we're editing an existing ADMISSION
  1. . ;
  1. . I (TYPE=1) D Q
  1. . . W:$D(VATRACE) !,2.1
  1. . . ;
  1. . . ;If the DATE/TIME of the admission is one of the fields
  1. . . ;that's been edited, it demands special treatment
  1. . . ;
  1. . . I VAFHDT'=OLDDATE D Q
  1. . . . K HL D INIT^HLFNC2("VAFC ADT-A11 SERVER",.HL) ; doit here before dgbuild
  1. . . . I $D(HL)#2 Q
  1. . . . S PV1=$$DGBUILD^VAFHAPV1(DGPMP,",3,7,10,18,44,45")
  1. . . . S PIVCHK=$$PIVCHK^VAFHPIVT(DFN,OLDDATE,1,ADMSSN_";DGPM(")
  1. . . . ;
  1. . . . I +PIVCHK>0 D
  1. . . . . S PIVOT=$$PIVNW^VAFHPIVT(DFN,OLDDATE,1,ADMSSN_";DGPM(")
  1. . . . . D BLDMSG^VAFCADT2(DFN,"A11",OLDDATE,"05","",+PIVOT,PV1)
  1. . . . . S GARBAGE=$$UPDATE^VAFHUTL(+PIVOT,"","",1)
  1. . . . S PIVOT=$$PIVNW^VAFHPIVT(DFN,VAFHDT,1,ADMSSN_";DGPM(")
  1. . . . D:+PIVOT>0 ENTIRE^VAFCADT4(+PIVOT)
  1. . . ;
  1. . . I VAFHDT=OLDDATE D Q
  1. . . . ;
  1. . . . D PIVINIT^VAFCADT4(DFN,VAFHDT,ADMSSN)
  1. . . . ;
  1. . . . I +PIVCHK'>0 D ENTIRE^VAFCADT4(+PIVOT) Q
  1. . . . ;
  1. . . . I +PIVCHK>0 D INSERT^VAFCADT4(DFN,"A08",VAFHDT,+PIVOT) Q
  1. . ;
  1. . ;I TYPE=2 it means we're editing an existing TRANSFER
  1. . ;
  1. . I (TYPE=2) D Q
  1. . . W:$D(VATRACE) !,2.2
  1. . . ;
  1. . . D PIVINIT^VAFCADT4(DFN,$$ADMDATE^VAFCADT4(ADMSSN),ADMSSN)
  1. . . ;
  1. . . I VAFHDT'=OLDDATE D Q
  1. . . . ;
  1. . . . I +PIVCHK'>0 D ENTIRE^VAFCADT4(+PIVOT) Q
  1. . . . ;
  1. . . . I +PIVCHK>0 D Q
  1. . . . . D DELETE^VAFCADT4(DFN,"A12",OLDDATE,+PIVOT,2.2)
  1. . . . . D INSERT^VAFCADT4(DFN,"A02",VAFHDT,+PIVOT)
  1. . . ;
  1. . . I VAFHDT=OLDDATE D Q
  1. . . . ;
  1. . . . I +PIVCHK'>0 D ENTIRE^VAFCADT4(+PIVOT) Q
  1. . . . ;
  1. . . . I +PIVCHK>0 D INSERT^VAFCADT4(DFN,"A08",VAFHDT,+PIVOT) Q
  1. . ;
  1. . ;I TYPE=3 it means we're editing an existing DISCHARGE
  1. . ;
  1. . I (TYPE=3) D Q
  1. . . W:$D(VATRACE) !,2.3
  1. . . ;
  1. . . D PIVINIT^VAFCADT4(DFN,$$ADMDATE^VAFCADT4(ADMSSN),ADMSSN)
  1. . . I VAFHDT'=OLDDATE D Q
  1. . . . ;
  1. . . . I +PIVCHK'>0 D ENTIRE^VAFCADT4(+PIVOT) Q
  1. . . . I +PIVCHK>0 D Q
  1. . . . . D BLDMSG^VAFCADT2(DFN,"A13",OLDDATE,"05",IEN,+PIVOT)
  1. . . . . D BLDMSG^VAFCADT2(DFN,"A03",VAFHDT,"05",IEN,+PIVOT)
  1. . . ;
  1. . . I VAFHDT=OLDDATE D Q
  1. . . . I +PIVCHK'>0 D ENTIRE^VAFCADT4(+PIVOT) Q
  1. . . . I +PIVCHK>0 D BLDMSG^VAFCADT2(DFN,EVENT,VAFHDT,"05",IEN,+PIVOT) Q
  1. . ;
  1. . ;I TYPE=6 it means we're editing an existing SPECIALTY TRANSFER
  1. . ;
  1. . I (TYPE=6) D Q
  1. . . W:$D(VATRACE) !,2.6
  1. . . ;
  1. . . D PIVINIT^VAFCADT4(DFN,$$ADMDATE^VAFCADT4(ADMSSN),ADMSSN)
  1. . . ;
  1. . . I VAFHDT'=OLDDATE D Q
  1. . . . ;
  1. . . . I +PIVCHK'>0 D ENTIRE^VAFCADT4(+PIVOT) Q
  1. . . . ;
  1. . . . I +PIVCHK>0 D Q
  1. . . . . D DELETE^VAFCADT4(DFN,"A08",OLDDATE,+PIVOT,2.6)
  1. . . . . D INSERT^VAFCADT4(DFN,"A08",VAFHDT,+PIVOT)
  1. . . ;
  1. . . I VAFHDT=OLDDATE D Q
  1. . . . ;
  1. . . . I +PIVCHK'>0 D ENTIRE^VAFCADT4(+PIVOT) Q
  1. . . . ;
  1. . . . I +PIVCHK>0 D INSERT^VAFCADT4(DFN,"A08",VAFHDT,+PIVOT) Q
  1. ;
  1. ;If DGPMP'="" and DGPMA="" it means we're deleting an ADMISSION,
  1. ;TRANSFER, DISCHARGE, or SPECIALTY TRANSFER
  1. ;
  1. I (DGPMP'="")&(DGPMA="") D G EXIT
  1. . D SETVARS^VAFCADT4(DGPMP,DGPMDA)
  1. . K HISTORY
  1. . D BLDHIST^VAFCADT3(DFN,ADMSSN,"HISTORY")
  1. . ;
  1. . ;If TYPE=1 it means we're deleting an ADMISSION
  1. . ;
  1. . I (TYPE=1) S EVENT="A11" D Q
  1. . . W:$D(VATRACE) !,3.1
  1. . . S PIVCHK=$$PIVCHK^VAFHPIVT(DFN,VAFHDT,1,ADMSSN_";DGPM(")
  1. . . ;
  1. . . I +PIVCHK'>0 Q
  1. . . K HL D INIT^HLFNC2("VAFC ADT-A11 SERVER",.HL) ; doit here before dgbuild
  1. . . I $D(HL)#2 Q
  1. . . S PV1=$$DGBUILD^VAFHAPV1(DGPMP,",3,7,10,18,44,45")
  1. . . S PIVOT=$$PIVNW^VAFHPIVT(DFN,VAFHDT,1,ADMSSN_";DGPM(")
  1. . . D BLDMSG^VAFCADT2(DFN,EVENT,VAFHDT,"05","",+PIVOT,PV1)
  1. . . N GARBAGE
  1. . . S GARBAGE=$$UPDATE^VAFHUTL(+PIVOT,"","",1)
  1. . ;
  1. . ;If TYPE=2 it means we're deleting a TRANSFER
  1. . ;
  1. . I (TYPE=2) S EVENT="A12" D Q
  1. . . W:$D(VATRACE) !,3.2
  1. . . ;
  1. . . D PIVINIT^VAFCADT4(DFN,$$ADMDATE^VAFCADT4(ADMSSN),ADMSSN)
  1. . . ;
  1. . . I +PIVCHK'>0 D ENTIRE^VAFCADT4(+PIVOT) Q
  1. . . ;
  1. . . I +PIVCHK>0 D DELETE^VAFCADT4(DFN,EVENT,VAFHDT,+PIVOT,3.2) Q
  1. . ;
  1. . ;If TYPE=3 it means we're deleting a DISCHARGE
  1. . ;
  1. . I (TYPE=3) S EVENT="A13" D Q
  1. . . W:$D(VATRACE) !,3.3
  1. . . ;
  1. . . D PIVINIT^VAFCADT4(DFN,$$ADMDATE^VAFCADT4(ADMSSN),ADMSSN)
  1. . . ;
  1. . . I +PIVCHK'>0 D ENTIRE^VAFCADT4(+PIVOT) Q
  1. . . ;
  1. . . I +PIVCHK>0 D BLDMSG^VAFCADT2(DFN,EVENT,VAFHDT,"05","",+PIVOT) Q
  1. . ;
  1. . ;If TYPE=6 it means we're deleting a SPECIALTY TRANSFER
  1. . ;
  1. . I (TYPE=6) S EVENT="A08" D Q
  1. . . W:$D(VATRACE) !,3.6
  1. . . ;
  1. . . D PIVINIT^VAFCADT4(DFN,$$ADMDATE^VAFCADT4(ADMSSN),ADMSSN)
  1. . . ;
  1. . . I +PIVCHK'>0 D ENTIRE^VAFCADT4(+PIVOT) Q
  1. . . ;
  1. . . I +PIVCHK>0 D DELETE^VAFCADT4(DFN,EVENT,VAFHDT,+PIVOT,3.6) Q