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