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

BHLPV1I.m

Go to the documentation of this file.
BHLPV1I ; cmi/flag/maw - BHL Process Inbound PV1 Segment ;
 ;;3.01;BHL IHS Interfaces with GIS;**1**;JUN 01, 2002
 ;
 ;this routine will file the inbound PV1 segment, it will also
 ;create a visit from the information contained in the segment
 ;we will not modify visits via hl7
 ;
MAIN ;-- this is the main routine driver
 D FILE,EOJ
 Q
 ;
FILE ;-- get the data and file it
 S BHLDA=0 F  S BHLDA=$O(@BHLTMP@(BHLDA)) Q:BHLDA=""!(BHLDA>1)  D
 . S BHLAPLL=$P($G(@BHLTMP@(BHLDA,3)),CS)
 . I BHLAPLL="" S BHLAPLL=$G(@BHLTMP@(BHLDA,39))
 . S BHLAPLL=$O(^AUTTLOC("B",BHLAPLL,0))
 . S (BHLOI,BHLCLN)=$P($G(@BHLTMP@(BHLDA,3)),CS,2)
 . S BHLADMT="DIRECT"
 . ;S BHLATD=$P($G(@BHLTMP@(BHLDA,7)),CS) ; if provider code is passed
 . S BHLATD=$P($G(@BHLTMP@(BHLDA,7)),CS,2)
 . ;I BHLATD'="" S BHLATD=$O(^DIC(6,"GIHS",BHLATD,0)) if prv code is passed
 . ;I BHLATD'="" S BHLATD=$$VAL^XBDIQ1(6,BHLATD,.01) ;if name
 . S BHLCDT=$G(@BHLTMP@(BHLDA,9))
 . S BHLTVIEN=$G(@BHLTMP@(BHLDA,19))  ;visit ien
 . I BHLTVIEN'="" D
 .. S BHLVERR=$$VSTCHK(BHLTVIEN)
 . I $G(BHLVERR) S BHLERCD="NOVMTCH" X BHLERR Q
 . S BHLDD=$G(@BHLTMP@(BHLDA,36))
 . I BHLDD'="" S BHLDD=$$VAL^XBDIQ1(405.1,BHLDD,.01)
 . S BHLADTM=$G(@BHLTMP@(BHLDA,44))
 . S %DT="TX",X=BHLADTM D ^%DT S BHLADTM=Y
 . S BHLDDTM=$G(@BHLTMP@(BHLDA,45))
 . S %DT="TX",X=BHLDDTM D ^%DT S BHLDDTM=Y
 . S BHLDADS=$G(@BHLTMP@(BHLDA,10))
 . S BHLDADS=$S(BHLDADS'="":$O(^DIC(45.7,"B",BHLDADS,0)),1:"")
 . I BHLDADS'="" S BHLDADS=$$VAL^XBDIQ1(45.7,BHLDADS,.01)
 . S BHLDDDS=$G(@BHLTMP@(BHLDA,10))
 . S BHLDDDS=$S(BHLDDDS'="":$O(^DIC(45.7,"B",BHLDDDS,0)),1:"")
 . I BHLDDDS'="" S BHLDDDS=$$VAL^XBDIQ1(45.7,BHLDDDS,.01)
 . I $O(BHL("ZV1",0)) D FILE^BHLZV1I
 . Q:$D(BHLERR("FATAL"))
 . I BHLET="A01" D @BHLET
 . I BHLET="A03" D @BHLET Q
 . I BHLET="A06" D @BHLET
 . I BHLET="A08" D @BHLET
 . I BHLET="A11" D @BHLET Q
 . I BHLAPLL="" S BHLAPLL=DUZ(2)
 . S APCDALVR("APCDDATE")=BHLADTM
 . S APCDALVR("APCDPAT")=BHLPAT
 . S APCDALVR("APCDLOC")=BHLAPLL
 . S APCDALVR("APCDCLN")=BHLCLN
 . D UP
 . Q:$D(BHLERR("FATAL"))
 . I $O(BHL("ZV1",0)) D VF^BHLZV1I
 . D PRV
 Q
 ;
A01 ;-- this is an A01 event, we need to update as current patient
 S BHLCLN=""
 S BHLFL=2,BHLFLD=.1,BHLVAL=BHLDWRD,BHLX=BHLPAT X BHLDIE
 S BHLDSC="H" ;service category
 Q
 ;use the following if we want observations
 I $G(@BHLTMP@(BHLDA,10))="OBSERVATION" D
 . S BHLDSC="O"
 . S BHLCLN=$O(^DIC(40.7,"B","OBSERVATION",0))
 ;admitting diagnosis will be in DG1 segment
 Q
 ;
A03 ;-- add v hosp
 Q:$G(@BHLTMP@(BHLDA,10))="OBSERVATION"
 Q:'$G(APCDALVR("APCDVSIT"))
 S APCDALVR("APCDPAT")=BHLPAT
 S APCDALVR("APCDLOOK")=BHLDDTM
 S APCDALVR("APCDATMP")="[APCDALVR 9000010.02 (ADD)]"
 S APCDALVR("APCDTADS")=BHLDADS
 S APCDALVR("APCDTDCS")=BHLDDDS
 S APCDALVR("APCDTAT")=BHLADMT
 S APCDALVR("APCDTDT")=BHLDD
 D ^APCDALVR
 I $D(APCDALVR("APCDAFLG")) S BHLERCD="NOVHOSP" X BHLERR Q
 S BHLFL=2,BHLFLD=.1,BHLVAL="@",BHLX=BHLPAT X BHLDIE
 Q
 ;
A06 ;-- create a hospitalization visit from A06
 S BHLCLN=""
 S BHLFL=2,BHLFLD=.1,BHLVAL=BHLDWRD,BHLX=BHLPAT X BHLDIE
 S BHLDSC="H" ;service category
 I $G(@BHLTMP@(BHLDA,10))="OBSERVATION" D
 . S BHLDSC="O"
 . S BHLCLN=$O(^DIC(40.7,"B","OBSERVATION",0))
 Q
 ;
A08 ;-- just in case they update the patient 
 I $G(@BHLTMP@(BHLDA,10))="OBSERVATION" D
 . S BHLDSC="O"
 . S BHLCLN=$O(^DIC(40.7,"B","OBSERVATION",0))
 Q
 ;
A11 ;-- cancel admit for a patient
 S AUPNVSIT=$O(^AUPNVSIT("AXT",BHLACCT,0))
 Q:AUPNVSIT=""
 S BHLPRIEN=$O(^AUPNVPRV("AD",AUPNVSIT,0))
 Q:BHLPRIEN=""
 S DIK="^AUPNVPRV(",DA=BHLPRIEN D ^DIK
 D DEL^AUPNVSIT
 Q
 ;
UP ;-- this is for an all events except for the A03 event
 S APCDALVR("APCDTYPE")=BHLDVT
 S APCDALVR("APCDCAT")=BHLDSC
 D ^APCDALV
 I $D(APCDAFLG("ERR")) S BHLERCD="NOVST" X BHLERR Q
 S BHLVSIT=APCDALVR("APCDVSIT")
 S BHLFL=9000010,BHLFLD=1211,BHLVAL=BHLACCT,BHLX=BHLVSIT X BHLDIE
 Q
 ;
PRV ;-- let's set up the v provider file
 D PP
 Q:BHLPRV=""
 D CHKV
 Q:$G(BHLMTCH)
 D UPV
 Q
 ;
PP ;-- get the primary provider      
 S BHLPRV=BHLATD
 K BHLMTCH
 Q
 ;
CHKV ;-- check the v provider file
 S BHLVDA=0  F  S BHLVDA=$O(^AUPNVPRV("AD",BHLVSIT,BHLVDA)) Q:BHLVDA=""!$D(BHLMTCH)  D
 . S BHLVPRV=$$VAL^XBDIQ1(6,$P(^AUPNVPRV(BHLVDA,0),U),.01)
 . I BHLVPRV=BHLPRV S BHLMTCH=1
 Q:$D(BHLMTCH)
 Q
 ;
UPV ;-- create the v provider file entry if none exists
 S APCDALVR("APCDATMP")="[APCDALVR 9000010.06 (ADD)]"
 S APCDALVR("APCDTPRO")=BHLATD
 S APCDALVR("APCDTPS")="P"
 D ^APCDALVR
 I $D(APCDALVR("APCDAFLG")) S BHLERCD="NOVPRV" X BHLERR Q
 Q
 ;
VSTCHK(VIEN)       ;-- check the visit information to see if match
 I '$D(^AUPNVSIT(VIEN,0)) Q 1
 I $P($G(^AUPNVSIT(VIEN,0)),U,5)'=BHLPAT Q 1
 I $P($G(^AUPNVSIT(VIEN,0)),U)'=BHLEXVDT Q 1
 I $P($G(^AUPNVSIT(VIEN,0)),U,8)'=BHLCLN Q 1
 Q 0
 ;
EOJ ;-- kill variables and quit
 K @BHLTMP
 K BHLAPL,BHLADMT,BHLATD,BHLCDT,BHLDD,BHLDTL,BHLADTM,BHLDDTM,BHLTPB
 K BHLCL,BHLWIA,BHLLVOS,BHLELG,BHLAB,BHLDDS,BHLOL,BHLADS,BHLNOC
 K BHLMREL,BHLAOB,BHLAN,BHLAF,BHLTC,BHLSB,BHLNOV,BHLHVN,BHLVNDR
 K BHLACT,BHLTM,BHLPYS,BHLPRV,BHLVPRV,BHLVDA,BHLPDA,P,BHLCLN
 Q
 ;