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

BGOVIMM2.m

Go to the documentation of this file.
  1. BGOVIMM2 ;IHS/BAO/TMD BGO - IMMUNIZATION mgt;20-Jan-2015 11:20;PLS
  1. ;;1.1;BGO COMPONENTS;**1,3,4,6,10,11,12,13,14**;Mar 20, 2007;Build 16
  1. ;---------------------------------------------
  1. ; Get case data
  1. GETCASE(RET,DFN) ;EP
  1. K RET
  1. I '$D(^BIP(DFN,0)) S RET(0)=$$ERR^BGOUTL(1083)
  1. E D GETS^DIQ(9002084,DFN,".1;.09;.13;.08;.16;.12;.15;.11","IE","RET")
  1. Q
  1. ; Add/edit patient immunization registry entry
  1. ; INP = Patient IEN [1] ^ Case Manager IEN [2] ^ Parent [3] ^ Other Info [4] ^ Activate Flag [5] ^
  1. ; Inactive Date [6] ^ Inactive Reason [7] ^ Tx Location [8] ^ Forecast Inf/Pneu [9] ^
  1. ; Mother HBSAg Status [10]
  1. SETREG(RET,INP) ;EP
  1. N DFNX,CM,PARENT,OTH,ACTIVATE,INACT,REAS,MOV,FLU,HBSAG,FDA
  1. S RET=""
  1. S DFNX=+$G(INP)
  1. I '$D(^DPT(DFNX,0)) S RET=$$ERR^BGOUTL(1001) Q
  1. S CM=$P(INP,U,2)
  1. S PARENT=$P(INP,U,3)
  1. S OTH=$P(INP,U,4)
  1. S ACTIVATE=$P(INP,U,5)
  1. S INACT=$P(INP,U,6)
  1. S REAS=$P(INP,U,7)
  1. S MOV=$P(INP,U,8)
  1. S FLU=$P(INP,U,9)
  1. S HBSAG=$P(INP,U,10)
  1. D:'$D(^BIP(DFNX)) ADDPAT^BIPATE(DFNX,DUZ(2),.RET)
  1. S RET=$$IMMERR^BGOVIMM(.RET)
  1. Q:RET
  1. S FDA=$NA(FDA(9002084,DFNX_","))
  1. I $L(ACTIVATE),$P(^BIP(DFNX,0),U,8) S (INACT,REAS,MOV)="@"
  1. S:CM @FDA@(.1)="`"_CM
  1. S @FDA@(.09)=PARENT
  1. S @FDA@(.13)=OTH
  1. S @FDA@(.08)=INACT
  1. S @FDA@(.16)=REAS
  1. S @FDA@(.12)=MOV
  1. S @FDA@(.15)=FLU
  1. S @FDA@(.11)=HBSAG
  1. S RET=$$UPDATE^BGOUTL(.FDA,"E")
  1. Q
  1. ; Get Primary Provider for VIMM IEN
  1. PRIPRV(RET,VIMMIEN) ;EP
  1. S RET=$$PRIPRV^BGOUTL($P($G(^AUPNVIMM(+VIMMIEN,0)),U,3))
  1. Q
  1. ; Retrieve lot #'s associated with a vaccine
  1. ; IMM = Immunization type IEN
  1. ; Returned as a list of records in the format:
  1. ; Lot IEN ^ Name ^ Manufacturer ^ Exp Date
  1. LOT(RET,IMM) ;EP
  1. N CNT,FLG,LOT
  1. S RET=$$TMPGBL^BGOUTL
  1. S CNT=0,IMM=+$G(IMM),FLG=IMM
  1. F D:IMM Q:FLG S IMM=$O(^AUTTIML("C",IMM)) Q:'IMM
  1. .S LOT=0
  1. .F S LOT=$O(^AUTTIML("C",IMM,LOT)) Q:'LOT D
  1. ..N X,NAME,MANUFAC,EXPDT
  1. ..S X=$G(^AUTTIML(LOT,0))
  1. ..Q:'$L(X)
  1. ..Q:$P(X,U,3)=1
  1. ..;IHS/MSC/MGH P14 Facility specific lot
  1. ..Q:(($P(X,U,14))&($P(X,U,14)'=$G(DUZ(2)))) ""
  1. ..S NAME=$P(X,U)
  1. ..S MANUFAC=$P(X,U,2)
  1. ..S:MANUFAC MANUFAC=$P($G(^AUTTIMAN(MANUFAC,0)),U)
  1. ..S EXPDT=$$FMTDATE^BGOUTL($P(X,U,9))
  1. ..S CNT=CNT+1,@RET@(CNT)=LOT_U_NAME_U_MANUFAC_U_EXPDT
  1. Q
  1. ; Add a contraindication
  1. ; INP = Patient IEN [1] ^ Vaccine IEN [2] ^ Reason IEN [3] ^ Visit Date [4]
  1. SETCONT(RET,INP) ;EP
  1. N DATE,REFDT,DFN,VACP,RSN,FDA,NEW,IEN,IENX,X,CT
  1. S CT=""
  1. S DFN=+INP
  1. I '$D(^DPT(DFN,0)) S RET=$$ERR^BGOUTL(1001) Q
  1. S VACP=+$P(INP,U,2)
  1. I '$D(^AUTTIMM(VACP,0)) S RET=$$ERR^BGOUTL(1084) Q
  1. S RSN=+$P(INP,U,3)
  1. S DATE=$P(INP,U,4)
  1. S IEN=0
  1. F S IEN=$O(^BIPC("B",DFN,IEN)) Q:'IEN D Q:$D(X)
  1. .S X=$G(^BIPC(IEN,0))
  1. .I +X=DFN,$P(X,U,2)=VACP,$P(X,U,3)=RSN Q
  1. .K X
  1. S NEW='IEN
  1. S FDA=$NA(FDA(9002084.11,$S(NEW:"+1,",1:IEN_",")))
  1. S @FDA@(.01)="`"_DFN
  1. S @FDA@(.02)="`"_VACP
  1. S @FDA@(.03)="`"_RSN
  1. ;IHS/MSC/MGH Patch 10 save date for refusal file
  1. S DATE=$S(DATE:DATE,1:DT)
  1. S @FDA@(.04)=DATE
  1. S RET=$$UPDATE^BGOUTL(.FDA,"E",.IENX)
  1. Q:RET
  1. S:NEW IEN=$G(IENX(1))
  1. ;IHS/MSC/MGH add concept CT for refusal contraindication only
  1. I $$UP^XLFSTR($P($G(^BICONT(RSN,0)),U))["REFUSAL" D
  1. .S CT=443390004
  1. .S RET=$$REFSET2^BGOUTL2(DFN,DATE,VACP,"IMMUNIZATION","R","","","",CT)
  1. S:'RET RET=IEN
  1. D:RET>0 BRDCAST^CIANBEVT("CONTRAINDICATION."_DFN_".IMMUNIZATION",IEN_U_$G(CIA("UID"))_U_'NEW)
  1. Q
  1. ; Delete a contraindication
  1. DELCONT(RET,IEN) ;EP
  1. N DFN
  1. S DFN=+$G(^BIPC(IEN,0))
  1. Q:'DFN
  1. ;S RET=$$DELETE^BGOUTL("^BIPC(",IEN)
  1. D DELCONT^BIRPC4(.RET,IEN)
  1. D:'RET BRDCAST^CIANBEVT("CONTRAINDICATION."_DFN_".IMMUNIZATION",IEN_U_$G(CIA("UID"))_U_2)
  1. Q
  1. ; Get contraindication reasons
  1. ; Returns a list of records in the format:
  1. ; IEN ^ Name
  1. GETCONT(RET,DUMMY) ;EP
  1. N CNT,X,Y
  1. S RET=$$TMPGBL^BGOUTL
  1. S (X,CNT)=0
  1. F S X=$O(^BICONT(X)) Q:'X D
  1. .S Y=$P($G(^BICONT(X,0)),U)
  1. .S:$L(Y) CNT=CNT+1,@RET@(CNT)=X_U_Y
  1. Q
  1. ; Return immunization profile
  1. PROFILE(RET,DFN) ;EP
  1. D IMMPROF^BIRPC(.RET,+DFN,"","")
  1. S:$A($G(@RET@(1)))=31 @RET@(1)=$$IMMERR^BGOVIMM(@RET@(1))
  1. Q
  1. ; Return fully resolved immunization letter
  1. ; INP = Patient IEN [1] ^ Letter IEN [2] ^ Text of Date/Location Line [3] ^ Forecast Date [4]
  1. PRINT(RET,INP) ;EP
  1. N BIDFN,BIDLOC,BIFDT,BIPCS,BILET,S,N
  1. S RET=$NA(^UTILITY($J,"W"))
  1. K @RET
  1. S BIDFN=+INP
  1. S BILET=$P(INP,U,2)
  1. S BIDLOC=$P(INP,U,3)
  1. S BIFDT=$P(INP,U,4)
  1. S S=$S($D(^BISITE(DUZ(2),0)):DUZ(2),1:+^AUTTSITE(1,0))
  1. S BILET=$S(BILET=1:$P($G(^BISITE(S,0)),U,4),1:$P($G(^BISITE(S,0)),U,13))
  1. I 'BILET S @RET@(1,0)="ERROR: Missing letter template" Q
  1. D BUILD^BILETPR1(BIDFN,BILET,BIDLOC,BIFDT)
  1. I '$D(^TMP("BILET",$J)) S @RET@(1,0)="ERROR: Blank letter template" Q
  1. ; Resolve embedded functions
  1. S N=0
  1. F S N=$O(^TMP("BILET",$J,N)) Q:'N D
  1. .N X,DIWL,DIWR,DIWF
  1. .S X=^TMP("BILET",$J,N,0),DIWL=1,DIWR=80,DIWF="N"
  1. .D ^DIWP
  1. K ^TMP("BILET",$J)
  1. S ^UTILITY($J,"W",1)=""
  1. Q
  1. ;Determine patient's age, if the site is an IHS site,and the default value for the VFC
  1. ;INP=DFN of patient
  1. ;RET= [1] IHS (Y/N)^ [2] Age ^ [3] Default
  1. GETVFC(RET,INP) ;EP call to get the VFC default for a patient
  1. N IHS,AGE,DEFAULT,DFN
  1. K RET
  1. S IHS="N",AGE="",DEFAULT=""
  1. S DFN=$P(INP,U,1)
  1. I DUZ("AG")="I" D
  1. .;IHS/MSC/MGH P11 no longer age dependent
  1. .S IHS="Y"
  1. .S AGE=$$PTAGE^BGOUTL(DFN)
  1. .;I AGE<19 D
  1. .S DEFAULT=$$BENTYP^BIUTL11(DFN)
  1. .I DEFAULT=1 S DEFAULT="Am Indian/AK Native"
  1. S RET=IHS_U_AGE_U_DEFAULT
  1. Q
  1. ; Add CPT code(s)
  1. ADDCPT(CPT,ICD,VIEN,DFN,PRV,SITE,DATE,CNSL) ;EP
  1. ;IHS/MSC/MGH Patch 9 CPT codes no longer added or deleted
  1. Q 0
  1. N RET,CPT2,CPT3
  1. Q:$$GET^XPAR("ALL","BGO IMM STOP ADDING CPT CODES") 0
  1. S:'$G(DATE) DATE=+$G(^AUPNVSIT(VIEN,0))
  1. S CPT2=$$ADMINCPT^BGOVIMM(VIEN,CPT,SITE),CPT3=$$SYRCPT^BGOVIMM(SITE),RET=0
  1. Q:'CPT2 RET ; Already exists
  1. S CPT=$$ADJCPT^BGOVIMM(CPT,DFN,DATE,.CNSL),CPT2=$$ADJCPT^BGOVIMM(CPT2,DFN,DATE,.CNSL)
  1. S RET=$$ADDCPT^BGOVCPT(CPT,,VIEN,DFN,PRV)
  1. S:RET'<0 RET=$$ADDCPT^BGOVCPT(CPT2,.ICD,VIEN,DFN,PRV)
  1. I 'RET,CPT3 S RET=$$ADDCPT^BGOVCPT(CPT3,,VIEN,DFN,PRV)
  1. Q RET
  1. ; Return the CPT code IEN for a vaccine and visit
  1. IMMCPT(TYPE,VIEN,ACTV) ;EP
  1. N X,CVX,CPT,AGE,DFN,DATE
  1. Q:'VIEN $$ERR^BGOUTL(1002)
  1. S DFN=$P($G(^AUPNVSIT(VIEN,0)),U,5),DATE=+$G(^(0))
  1. Q:'DFN!'DATE $$ERR^BGOUTL(1003)
  1. S AGE=$$PTAGE^BGOUTL(DFN,DATE)
  1. S X=$G(^AUTTIMM(TYPE,0))
  1. S CVX=$P(X,U,3)
  1. S CPT=$P(X,U,11)
  1. I CVX=15 S CPT=$S(AGE>2:90658,1:90657) ;ihs=90757
  1. E I CVX=43 S CPT=$S(AGE>18:90746,1:90743) ;ihs=90743
  1. E I CVX=111 S CPT=90660 ;ihs=none
  1. I CPT,$G(ACTV) D
  1. .;IHS/MSC/MGH HOTFIX P13
  1. .S X=$$CHKCPT^BGOVCPT(CPT,DATE,1)
  1. .S:X<0 CPT=X
  1. Q CPT
  1. ;DKA Added DFN to satisfy RPC call from EHR component
  1. GETELIG(RET,DFN) ;Return active eligibility codes
  1. N ACT,CNT,IEN,NODE
  1. S RET=$$TMPGBL^BGOUTL
  1. S CNT=0
  1. S ACT="" F S ACT=$O(^BIELIG("AC",0,ACT)) Q:ACT="" D
  1. .S IEN=0 F S IEN=$O(^BIELIG("AC",0,ACT,IEN)) Q:'+IEN D
  1. ..S CNT=CNT+1
  1. ..S NODE=$G(^BIELIG(IEN,0))
  1. ..S @RET@(CNT)=IEN_U_$P(NODE,U,1)_U_$P(NODE,U,2)_U_$P(NODE,U,4)
  1. Q