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

VAFCTFPR.m

Go to the documentation of this file.
  1. VAFCTFPR ;ALB/JLU,CML-MFU PROCESSING ROUTINE ;06/25/98
  1. ;;5.3;Registration;**149,261,255,307,414,474,520,712**;Aug 13, 1993;Build 7
  1. ;Reference to EXC^RGHLLOG and START^RGHLLOG supported by IA #2796
  1. ;
  1. EN ;This entry point is used to process the Master File Update Message.
  1. ;It is called by the VAFC MFU-TFL ClIENT when a MFU message is received
  1. ;There are no inputs or outputs
  1. ;
  1. ;quit if Master Patient Index (MPI) is not installed
  1. S X="MPIF001" X ^%ZOSF("TEST") Q:'$T
  1. S X="MPIFQ0" X ^%ZOSF("TEST") Q:'$T
  1. S X="RGRSBUL1" X ^%ZOSF("TEST") Q:'$T
  1. S X="RGRSBULL" X ^%ZOSF("TEST") Q:'$T
  1. K X N ICN,PDFN,TYPE,VAFCER,VAFCARR,SG
  1. N VAFC,MFNQUIT,VAFCI,MSG,MFUPT,INST,PDLT,VAFCTFT
  1. MFN ;Read Treating Facility MFN M05 (PROCESS LOGIC) msg into VAFC()
  1. F VAFCI=1:1 X HLNEXT Q:HLQUIT'>0 S VAFC(VAFCI)=HLNODE
  1. MFNP ;Process in the TF updates messages
  1. S VAFCI="" F S VAFCI=$O(VAFC(VAFCI)) Q:'VAFCI!($G(MFNQUIT)=1) S MSG=VAFC(VAFCI),SG=$E(MSG,1,3) D:SG?2A1(1A,1N) PICK
  1. Q
  1. INIT ;Process in the ADT A04/A08 (routing logic)
  1. F VAFCI=1:1 X HLNEXT Q:HLQUIT'>0 S (MSG,VAFC(VAFCI))=HLNODE,SG=$E(HLNODE,1,3) D:SG?2A1(1A,1N) PICK
  1. Q
  1. PICK ;check routine for segment entry point
  1. I $T(@SG)]"" D @SG
  1. I $T(@SG)="" Q
  1. Q
  1. MSH ;;MSH
  1. ;process the MSH segment
  1. D START^RGHLLOG($G(HLMTIENS))
  1. S (HLFS,HL("FS"))=$E(MSG,4),(HLECH,HL("ECH"))=$E(MSG,5,8)
  1. S VAFCARR("SENDING SITE")=$P(MSG,HL("FS"),4)
  1. Q
  1. EVN ;;EVN
  1. ;process the EVN segment
  1. S STATN=+$$SITE^VASITE()_"^"_$$FMDATE^HLFNC($P(MSG,HL("FS"),3))
  1. Q
  1. PID ;;PID
  1. ;process the PID segment
  1. S PDFN=+$P(MSG,HL("FS"),4)
  1. Q
  1. MFI ;;MFI
  1. ;process the MFI segment
  1. N NXTSGMT,VAFCMPI
  1. S MFUPT=$P(MSG,HL("FS"),2)
  1. ;master file update type is not TFL SET quit flag
  1. I MFUPT'="TFL" S MFNQUIT=1 Q
  1. N HLCOMP
  1. S HLCOMP=$E(HL("ECH"),1)
  1. S TYPE=$P(MSG,HL("FS"),4)
  1. ;is this coming from the CMOR if so pass a '1' to FILE to end transmission
  1. S VAFCTFT=0 I TYPE="REP" S VAFCTFT=1
  1. S VAFCARR("CMOR")=$P($P(MSG,HL("FS"),8),HLCOMP,1)
  1. S NXTSGMT=$G(VAFC(+$O(VAFC(VAFCI))))
  1. I $P(NXTSGMT,HL("FS"))="MFE" S ICN=$P($P(NXTSGMT,HL("FS"),5),HLCOMP,4) I $G(ICN)="" S MFNQUIT=1 D EXC^RGHLLOG(210,"Msg#"_$G(HL("MID"))_" failed to Update TF from "_$G(VAFCARR("SENDING SITE"))_". ICN not sent.",$G(PDFN)) Q
  1. ;check for CMOR mismatch
  1. S PDFN=$$GETDFN^MPIF001(ICN)
  1. I +$G(PDFN)<0 S MFNQUIT=1 D EXC^RGHLLOG(210,"Msg#"_$G(HL("MID"))_" failed to update TF from "_$G(VAFCARR("SENDING SITE"))_" for ICN#"_$G(ICN)) Q
  1. S VAFCMPI=$$MPINODE^MPIFAPI(PDFN)
  1. ;if from CMOR delete all TF's and replace with CMOR's list (need to log exception if problems deleting TF's)
  1. I TYPE="REP" D
  1. . ;if CMOR mismatch quit the exception will be logged in MFE subroutine
  1. .;**712 NO NEED TO CHECK CMOR ANYMORE I $P($G(VAFCMPI),"^",3)'=$G(VAFCARR("CMOR")) Q
  1. . S VAFCER=$$DELALLTF^VAFCTFU(ICN) I VAFCER S MFNQUIT=1 D EXC^RGHLLOG(212,"Msg#"_$G(HL("MID"))_" failed to Delete ALL TF's for ICN#"_$G(ICN),$G(PDFN)) Q
  1. Q
  1. MFE ;;MFE
  1. ;process the MFE segment
  1. N HLCOMP,NXTSGMT
  1. S HLCOMP=$E(HL("ECH"),1)
  1. S PDLT=$$FMDATE^HLFNC($P(MSG,HL("FS"),4))
  1. S INST=$P($P(MSG,HL("FS"),5),HLCOMP) ; **520 REMOVE + AND GET PIECE
  1. S INST=$$LKUP^XUAF4(INST) ; **520 REMOVE +
  1. I INST="" S MFNQUIT=1 Q ; log exception, set MFNQUIT flag and quit
  1. S PDFN=$$GETDFN^MPIF001(ICN)
  1. D Q:$G(MFNQUIT)=1
  1. .;if unable to get DFN from ICN set MFNQUIT flag and quit
  1. .I +$G(PDFN)<0 S MFNQUIT=1 D EXC^RGHLLOG(210,"Msg#"_$G(HL("MID"))_" failed to update TF from "_$G(VAFCARR("SENDING SITE"))_" for ICN#"_$G(ICN)) Q
  1. .N VAFCDATA,LOCNAME,LASTNAME,LOCSSN,LOCICN,LOCCMOR
  1. .S LOCNAME=$$GET1^DIQ(2,+PDFN_",",.01)
  1. .S LASTNAME=$P(LOCNAME,",",1)
  1. .S LOCSSN=$$GET1^DIQ(2,+PDFN_",",.09)
  1. .S LOCICN=+$$GETICN^MPIF001(PDFN)
  1. .S LOCCMOR=$$GETVCCI^MPIF001(PDFN)
  1. .;CMOR MISMATCH or CMOR = null log exception, set MFNQUIT flag and quit
  1. .;**712 NO NEED TO CHECK CMOR ANYMORE
  1. .;I LOCCMOR'=VAFCARR("CMOR")!(VAFCARR("CMOR")="") D Q
  1. .;.D EXC^RGHLLOG(211,"Msg#"_$G(HL("MID"))_" failed to update from "_$G(VAFCARR("SENDING SITE"))_" for "_$G(LOCNAME)_" ICN#"_$G(ICN)_" due to mismatch CMOR "_$G(VAFCARR("CMOR"))_"/"_$G(LOCCMOR)_" (local)",$G(PDFN)) S MFNQUIT=1
  1. ;check next segment, if it exist and it is a ZET segment quit and let the ZET module add the TF
  1. S NXTSGMT=$G(VAFC(+$O(VAFC(VAFCI)))) I $P($G(NXTSGMT),HL("FS"))="ZET" Q
  1. D FILE^VAFCTFU(PDFN,INST_"^"_$G(PDLT),$G(VAFCTFT))
  1. Q
  1. ZET ;;ZET
  1. ;process Patient's Date Last Treated Event Type, ZET segment
  1. K PDLTET
  1. S PDLTET=$P(MSG,HL("FS"),2)
  1. D FILE^VAFCTFU(PDFN,INST_"^"_PDLT_"^"_PDLTET,$G(VAFCTFT))
  1. Q
  1. TFPRQ Q
  1. ;
  1. POPQ Q
  1. ;
  1. UP ;entry point to process local A04 messages.
  1. ;This is call by the VAFC TFL-UPDATE CLIENT
  1. N STATN,PDFN,VAFCARR,HLFS,HLECH,SG,VAFCI
  1. N VAFC
  1. D INIT
  1. ;file the TF and trigger the TF update
  1. D FILE^VAFCTFU(PDFN,+$$SITE^VASITE,1)
  1. UPQ Q