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

BGOVPRC.m

Go to the documentation of this file.
  1. BGOVPRC ; IHS/BAO/TMD - Manage V PROCEDURE ;15-Jan-2015 08:13;du
  1. ;;1.1;BGO COMPONENTS;**1,3,11,12,14**;Mar 20, 2007;Build 5
  1. ; Add/edit V Procedure entry
  1. ; INP = V File IEN [1] ^ ICD0 IEN [2] ^ Visit IEN [3] ^ Patient IEN [4] ^ Event Date [5] ^ Diagnosis [6] ^
  1. ; Principal [7] ^ Narrative [8] ^ Infection [9] ^ Operating Provider [10] ^ Anesthesiologist [11] ^
  1. ; Anesthesia Time [12] ^ Location IEN [13] ^ Outside Location [14] ^ Historical [15] ^ Allow dups [16]
  1. SET(RET,INP) ;EP
  1. N VIEN,VCAT,VFIEN,TYPE,DFN,EVNTDT,DX,PRIN,NARR,INFECT,OPRPRV,ANESTH,ANESTIME
  1. N LOCIEN,OUTLOC,HIST,APCDVSIT,APCDDATE,FNEW,FDA,VFNEW,DUPS,X,Y,FNUM,PROCDT,IMP
  1. S RET="",FNUM=$$FNUM
  1. S VFIEN=+INP
  1. S VFNEW='VFIEN
  1. S TYPE=+$P(INP,U,2)
  1. S (VIEN,APCDVSIT)=+$P(INP,U,3)
  1. I $$AICD^BGOUTL2 D
  1. .S (Y,APCDDATE)=+$G(^AUPNVSIT(VIEN,0))
  1. .S X=$$ICDOP^ICDEX(TYPE,Y,"","I")
  1. .I $P(X,U,1)=-1 S RET="-1^You may not use this ICD procedure for this visit date, please use visit services to assign this procedure" Q
  1. .I $P(X,U,10)'=1 S RET="-1^ICD procedure code is not active. Use visit service to enter an ICD procedure" Q
  1. .S IMP=$$IMP^ICDEX("10P",DT) ;Get the implementaton date
  1. .I IMP>Y D ;This needs to be an ICD-9 code
  1. ..I $P(X,U,15)'=2 S RET="-1^You may not use this ICD procedure for this visit date, please use visit services to assign this procedure" Q
  1. .I IMP<Y D
  1. ..I $P(X,U,15)'=31 S RET="-1^You may not use this ICD procedure for this visit date, please use visit services to assign this procedure" Q
  1. E D
  1. .S X=$G(^ICD0(TYPE,0))
  1. .I '$L(X) S RET=$$ERR^BGOUTL(1096) Q
  1. .I $P(X,U,9) S RET=$$ERR^BGOUTL(1097) Q
  1. .S X=$P(X,U,11)
  1. .S Y=+$G(^AUPNVSIT(VIEN,0))
  1. .I X,Y,$$FMDIFF^XLFDT(Y,X)>-1 S RET=$$ERR^BGOUTL(1097) Q
  1. Q:RET
  1. S DFN=+$P(INP,U,4)
  1. S EVNTDT=$$CVTDATE^BGOUTL($P(INP,U,5))
  1. I EVNTDT="" S EVNTDT=$P($G(^AUPNVSIT(VIEN,0)),U,1)
  1. S PROCDT=$P(EVNTDT,".",1)
  1. S DX=$P(INP,U,6)
  1. S PRIN=$P(INP,U,7)
  1. S RET=$$FNDNARR^BGOUTL2($P(INP,U,8))
  1. Q:RET<0
  1. S NARR=$S(RET:"`"_RET,1:""),RET=""
  1. S INFECT=$P(INP,U,9)
  1. S OPRPRV=$P(INP,U,10)
  1. S ANESTH=$P(INP,U,11)
  1. S ANESTIME=$P(INP,U,12)
  1. S LOCIEN=$P(INP,U,13)
  1. S OUTLOC=$P(INP,U,14)
  1. S HIST=$P(INP,U,15)
  1. S DUPS=$P(INP,U,16)
  1. I 'VIEN,'HIST S RET=$$ERR^BGOUTL(1002) Q
  1. S VCAT=$P($G(^AUPNVSIT(VIEN,0)),U,7)
  1. S:VCAT="E" HIST=1
  1. I HIST D Q:RET<0
  1. .S RET=$$MAKEHIST^BGOUTL(DFN,EVNTDT,$S($L(OUTLOC):OUTLOC,1:LOCIEN),VIEN)
  1. .S:RET>0 VIEN=RET
  1. S RET=$$CHKVISIT^BGOUTL(VIEN,DFN)
  1. Q:RET
  1. I 'VFIEN D Q:'VFIEN
  1. .D VFNEW^BGOUTL2(.RET,FNUM,TYPE,VIEN,$S('DUPS:"Procedure",1:""))
  1. .S:RET>0 VFIEN=RET,RET=""
  1. S FDA=$NA(FDA(FNUM,VFIEN_","))
  1. S @FDA@(.01)="`"_TYPE
  1. S @FDA@(.04)=NARR
  1. S @FDA@(.05)=$S(DX:"`"_DX,1:"")
  1. S @FDA@(.06)=PROCDT
  1. S @FDA@(.07)=PRIN
  1. S @FDA@(.08)=INFECT
  1. S @FDA@(.11)=$S(OPRPRV:"`"_OPRPRV,1:"")
  1. S @FDA@(.12)=$S(ANESTH:"`"_ANESTH,1:"")
  1. S @FDA@(.13)=ANESTIME
  1. S @FDA@(1201)=$S(EVNTDT:EVNTDT,1:"N")
  1. S @FDA@(1204)="`"_DUZ
  1. ;Patch 11 Set date entered
  1. I VFNEW D
  1. .S @FDA@(1216)="N"
  1. .S @FDA@(1217)="`"_DUZ
  1. ;Patch 11 Set last modified
  1. S @FDA@(1218)="N"
  1. S @FDA@(1219)="`"_DUZ
  1. S RET=$$UPDATE^BGOUTL(.FDA,"E")
  1. I RET,VFNEW,$$DELETE^BGOUTL(FNUM,VFIEN)
  1. D:'RET VFEVT^BGOUTL2(FNUM,VFIEN,'VFNEW)
  1. S:'RET RET=VFIEN
  1. Q
  1. ; INP = Lookup Value [1] ^ VIEN [2]
  1. ; LKP = Text to lookup
  1. ; VIEN = Visit IEN
  1. LOOKUP(RET,INP) ;Lookup an ICD0 term with this call after AICD patch is installed
  1. N GBL,LKP,FROM,DIR,MAX,XREF,INP2,RET2,I,CNT,VIEN,VDT,ROOT,X,Y,VER,OUT,SYS
  1. N FLDS,IEN,IMP
  1. S GBL=80.1
  1. S RET=$$TMPGBL
  1. K ^TMP("ICD0",$J)
  1. S LKP=$P(INP,U,1)
  1. Q:LKP="" RET
  1. S VIEN=$P(INP,U,2)
  1. S VDT=""
  1. I +VIEN S VDT=$$GET1^DIQ(9000010,VIEN,.01,"I")
  1. I VDT="" S VDT=DT
  1. S FLDS=".01"
  1. S CNT=0
  1. S FROM=LKP
  1. S DIR=1
  1. S MAX=999,XREF="D"
  1. S INP2="80.1"_U_LKP_U_FROM_U_DIR_U_MAX_U_XREF_"^^^"_U_VDT
  1. D DICLKUP^BGOUTL(.RET2,INP2)
  1. M RET=RET2
  1. Q
  1. ; Return V File #
  1. FNUM() Q 9000010.08
  1. TMPGBL(X) ;EP
  1. K ^TMP("BGOPRC",$J) Q $NA(^($J))