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

BGOVIMM.m

Go to the documentation of this file.
  1. BGOVIMM ;IHS/BAO/TMD - IMMUNIZATION mgt ;24-Mar-2015 16:10;PLS
  1. ;;1.1;BGO COMPONENTS;**1,3,4,5,6,9,10,11,12,13,14**;Mar 20, 2007;Build 5
  1. ; Returns the version # of the Immunization package
  1. VERSION(RET,DUMMY) ;
  1. S RET=$$VER^BILOGO
  1. Q
  1. ; Return the ICD9 code IEN for a vaccine
  1. IMMICD(TYPE,VIEN,ACTV) ;EP
  1. N X,ICD,ICDIEN,DATE
  1. S ICD=$P($G(^AUTTIMM(TYPE,0)),U,14),ICDIEN=""
  1. I ICD'="" D
  1. .I $$AICD^BGOUTL2 D
  1. ..S ICDIEN=$P($$ICDDX^ICDEX(ICD,$$NOW^XLFDT,"","I"),U,1)
  1. .E D
  1. ..S ICDIEN=$P($$ICDDX^ICDCODE(ICD,$$NOW^XLFDT),U,1)
  1. I ICDIEN,$G(ACTV) D
  1. .S DATE=$S($G(VIEN):+$G(^AUPNVSIT(VIEN,0)),1:"")
  1. .S X=$$CHKICD^BGOVPOV(ICDIEN,DATE)
  1. .S:X<0 ICDIEN=X
  1. Q ICDIEN
  1. ; Return the CPT code IEN for a vaccine and visit
  1. IMMCPT(TYPE,VIEN,ACTV) ;EP
  1. Q $$IMMCPT^BGOVIMM2(.TYPE,.VIEN,.ACTV)
  1. ; Get the patient's immunization defaults and contraindications
  1. ; INP = Patient IEN ^ Immunization Type IEN
  1. ; Returned as:
  1. ; RET(0) = Default Lot # [1] ^ Default Volume [2] ^ Default VIS Date [3]
  1. ; RET(n) = Contraindication IEN [1] ^ Contraindication Text [2] ^ Date Noted [3]
  1. LOADIMM(RET,INP) ;EP
  1. N DFN,IMM,X,N,D,DFLTLOT,DFLTVOL,DFLTVISD,CNT
  1. S RET(0)=$$ERR^BGOUTL(1008)
  1. S DFN=+INP
  1. Q:'DFN
  1. S IMM=+$P(INP,U,2)
  1. Q:'IMM
  1. S X=$G(^AUTTIMM(IMM,0))
  1. S DFLTLOT=$P(X,U,4)
  1. S DFLTVOL=$P(X,U,18)
  1. I $E(DFLTVOL,1,1)="." S DFLTVOL="0"_DFLTVOL
  1. S DFLTVISD=$$FMTDATE^BGOUTL($P(X,U,13))
  1. S RET(0)=DFLTLOT_U_DFLTVOL_U_DFLTVISD
  1. S (X,CNT)=0
  1. F S X=$O(^BIPC("AC",DFN,IMM,X)) Q:'X D
  1. .S N=$P($G(^BIPC(X,0)),U,3),D=$P(^(0),U,4)
  1. .Q:'N
  1. .Q:$P($G(^BICONT(N,0)),U,2)
  1. .S CNT=CNT+1,RET(CNT)=N_U_$P($G(^BICONT(N,0)),U)_U_D
  1. Q
  1. ; Get immunization history
  1. ; INP = Patient IEN[1]^Record Types[2]
  1. ; RET returned as a list of records in one of the following formats:
  1. ; For immunizations:
  1. ; I^Imm Name[2]^Visit Date[3]^V File IEN[4]^Other Location[5]^Group[6]^Imm IEN[7]^Lot[8]^
  1. ; Reaction[9]^VIS Date[10]^Age[11]^Visit Date[12]^Provider IEN~Name[13]^Inj Site[14]^
  1. ; Volume[15]^Visit IEN[16]^Visit Category[17]^Full Name[18]^Location IEN~Name[19]^
  1. ; Visit Locked[20]^Event Date/Time[21]^Dose Override[22]^VPED IEN[23]^VFC eligibility[24]^Manufacturer[25]^Admin Notes[26]
  1. ; For forecast:
  1. ; F^Imm Name[2]^Status[3]
  1. ; For contraindications:
  1. ; C^Contra IEN[2]^Imm Name[3]^Reason[4]^Date[5]
  1. ; For refusals:
  1. ; R^Refusal IEN[2]^Type IEN[3]^Type Name[4]^Item IEN[5]^Item Name[6]^Provider IEN[7]^
  1. ; Provider Name[8]^Date[9]^Locked[10]^Reason[11]^Comment[12]
  1. GET(RET,INP) ;EP
  1. N BIRESULT,DFN,DLM,HX,ELE,CNT,VIEN,DOB,BIPDSS,VIMM,TYPE,P,A,I,J,K,X,V,VFC,ADMIN
  1. N XREF,FNUM,OFF,BIPDSSA,OR,LOT,LOTIEN,MANUF
  1. S RET=$$TMPGBL^BGOUTL
  1. S DFN=+INP,INP=$P(INP,U,2)
  1. Q:'DFN
  1. S:INP="" INP="IFCR"
  1. S BIPDSS=""
  1. S DLM=$C(31,31),HX="",V="|",CNT=0
  1. S XREF=$$VFPTXREF^BGOUTL2,FNUM=$$FNUM,OFF=$S($G(DUZ("AG"))="I":0,1:9999999)
  1. D:INP["F" IMMFORC^BIRPC(.HX,DFN,"","","",.BIPDSS)
  1. S P=$P(HX,DLM,2),V="|"
  1. S:'$L(P) P=$P(HX,DLM)
  1. I $L(P) F I=1:1:$L(P,U) D:$L($P(P,U,I)) ADD("F^"_$P(P,U,I))
  1. S HX=""
  1. D:INP["C" CONTRAS^BIRPC5(.HX,DFN)
  1. S P=$P(HX,DLM,2)
  1. S:'$L(P) P=$P(HX,DLM)
  1. I $L(P) F I=1:1:$L(P,U) D:$L($P(P,U,I)) ADD("C^"_$P(P,U,I))
  1. S HX="",P=1
  1. ;MSC/MGH - 07/08/09 - Branching for compatibility with Vista and RPMS
  1. I DUZ("AG")="I" D
  1. .;IHS/MSC/MGH patch 6 added field 77 VFC
  1. .;IHS/MSC/MGH patch 10 field 69 aded
  1. .;IHS/MSC/MGH patch 13 field 85 added
  1. .F I=4,21,24,36,27,30,33,44,51,57,60,61,67,68,76,35,9,34,0,0,65,77,69,87 S P=P+1 S:I ELE(I)=P
  1. .D:INP["I" IMMHX^BIRPC(.HX,DFN,.ELE,0)
  1. .S P=$P(HX,DLM,2),V="|"
  1. .I $L(P) D ADD("I^"_P) Q ; Error
  1. .S HX=$P(HX,DLM)
  1. .F I=1:1 S P=$P(HX,U,I) Q:P="" D
  1. ..Q:$P(P,V)'="I"
  1. ..S A="I",J=0,K=1
  1. ..F S J=$O(ELE(J)) Q:'J S K=K+1,$P(A,V,ELE(J))=$P(P,V,K)
  1. ..S VIMM=+$P(A,V,4),VIEN=$P(A,V,16),TYPE=$P(A,V,7),VFC=$P(A,V,23),OR=$P(A,V,22)
  1. ..S ADMIN=$P(A,V,25)
  1. ..S LOT=$P(A,V,8)
  1. ..I LOT'="" D
  1. ...S LOTIEN=$O(^AUTTIML("B",LOT,""))
  1. ...S MANUF=$$GET1^DIQ(9999999.41,LOTIEN,.02)
  1. ...I MANUF'="" S $P(A,V,26)=MANUF
  1. ..;IHS/MSC/MGH call added for INVALID DOSE
  1. ..S BIPDSSA=0
  1. ..I $$PDSS^BIUTL8($P(A,V,4),$P(A,V,24),BIPDSS) D
  1. ...S Z=$P(A,V,2),BIPDSSA=1
  1. ...S $P(A,V,2)=Z_"--INVALID SEE IMMSERVE--"
  1. ..I OR'="" D
  1. ...S Z=$P(A,V,2)
  1. ...S OR=$S(OR=1:"INVALID--BAD STORAGE",OR=2:"INVALID--DEFECTIVE",OR=3:"INVALID--EXPIRED",OR=4:"INVALID--ADMIN ERROR",OR=5:"FORCED VALID",1:"@")
  1. ...S $P(A,V,2)=Z_"-- "_OR
  1. ...;End patch 10 changes
  1. ..S:$P(A,V,10)="NO DATE" $P(A,V,10)=""
  1. ..S X=$P(A,V,14)
  1. ..S:$L(X) $P(A,V,14)=X_"~"_$$EXTERNAL^DILFD(9000010.11,.09,,X)
  1. ..D GI1(13,200),GI1(19,9999999.06)
  1. ..;IHS/MSC/MGH Patch 11 Add leading zero
  1. ..I $E($P(A,V,15),1,1)="." S $P(A,V,15)="0"_$P(A,V,15)
  1. ..S $P(A,V,20)=$$ISLOCKED^BEHOENCX(VIEN)
  1. ..S $P(A,V,21)=$P($G(^AUPNVIMM(VIMM,12)),U)
  1. ..S $P(A,V,23)=$$FNDPED(VIEN,$$IMMCPT(TYPE,VIEN))
  1. ..;S $P(A,V,24)=$S(VFC=0:"Unknown",VFC=1:"Not Eligible",VFC=2:"Medicaid",VFC=3:"Uninsured",VFC=4:"Am Indian/AK Native",VFC=5:"Federally Qualified",VFC=6:"State-specific Elig",VFC=7:"Local-specific Elig",1:"")
  1. ..;Next line changed for patch 13
  1. ..S $P(A,V,24)=$$GET1^DIQ(9002084.83,VFC,.02)
  1. ..D ADD(A)
  1. E D
  1. .N REC,LP,X,Y,Z,FNUM
  1. .S FNUM=9000010.11,OFF=9999999
  1. .S LP="" F S LP=$O(^AUPNVIMM("C",DFN,LP)) Q:'LP D
  1. ..S X=$G(^AUPNVIMM(LP,0))
  1. ..Q:$P(X,U,2)'=DFN
  1. ..S $P(X,U,8,99)=$P($G(^AUPNVIMM(LP,9999999)),U,8,99)
  1. ..S Y=$G(^AUTTIMM(+X,0))
  1. ..Q:'$L(Y)
  1. ..S VIEN=+$P(X,U,3)
  1. ..S Z=$G(^AUPNVSIT(VIEN,0))
  1. ..Q:'$L(Z)
  1. ..S REC="I"
  1. ..S REC=REC_U_$P(Y,U,2) ; Imm Short
  1. ..S REC=REC_U_$$FMTDATE^BGOUTL(+Z) ; Visit Date
  1. ..S REC=REC_U_LP ; V File IEN
  1. ..S REC=REC_U_$P($G(^AUPNVSIT(VIEN,21)),U) ; Other Loc
  1. ..S REC=REC_U_$$GET1^DIQ(FNUM,LP,.09) ; Group
  1. ..S REC=REC_U_+X ; Imm IEN
  1. ..S REC=REC_U_$$GET1^DIQ(9999999.41,+$P(X,U,5),.01) ; Lot
  1. ..S REC=REC_U_$$GET1^DIQ(FNUM,LP,.06) ; Reaction
  1. ..S REC=REC_U_$$ENTRY^CIAUDT($P(X,U,12)) ; VIS Date
  1. ..S DOB=$$GET1^DIQ(2,DFN,.03,"I")
  1. ..S REC=REC_U_$$GETAGE^BGOVSK(+Z,DOB) ; Age
  1. ..S REC=REC_U_$$ENTRY^CIAUDT(+Z,0) ; Visit Date
  1. ..S REC=REC_U_$$GI2($P($G(^AUPNVIMM(LP,12)),U,4),200) ; Provider
  1. ..S REC=REC_U_$P(X,U,9)_"~"_$$GET1^DIQ(FNUM,LP,.09+OFF) ; Inj Site
  1. ..S REC=REC_U_$P(X,U,11) ; Volume
  1. ..S REC=REC_U_VIEN ; Visit IEN
  1. ..S REC=REC_U_$P(Z,U,7) ; Visit Cat
  1. ..S REC=REC_U_$P(Y,U) ; Full Name
  1. ..S REC=REC_U_$$GI2($P(Z,U,6),9999999.06) ; Location
  1. ..S REC=REC_U_$$ISLOCKED^BEHOENCX(VIEN) ; Visit Loc
  1. ..D ADD(REC)
  1. I INP["R" D
  1. .N ARRAY,CNT2,Z,STR,SAVE,SAVE2,DATA
  1. .S CNT2=0,ARRAY="DATA"
  1. .D REFGET^BGOUTL2(.ARRAY,DFN,9999999.14,.CNT2)
  1. .S Z=0 F S Z=$O(@ARRAY@(Z)) Q:Z="" D
  1. ..S STR=$G(@ARRAY@(Z))
  1. ..S SAVE=$P(STR,U,13),SAVE2=$P(STR,U,11)
  1. ..I SAVE'="" S $P(STR,U,11)=SAVE,$P(STR,U,13)=SAVE2
  1. ..D ADD(STR)
  1. Q
  1. GI1(PC,FN) ;EP
  1. N X
  1. S X=+$P(A,V,PC)
  1. S:X $P(A,V,PC)=X_"~"_$$GET1^DIQ(FN,X,.01)
  1. Q
  1. GI2(PC,FN) ;EP
  1. Q $S(PC:PC_"~"_$$GET1^DIQ(FN,PC,.01),1:"")
  1. ; Delete an immunization
  1. ; VIMM = V File IEN
  1. ; FLG = Delete flag where
  1. ; 0: V File and codes (default)
  1. ; 1: V File only
  1. ; 2: Codes only
  1. DEL(RET,VIMM,FLG) ;EP
  1. N VIEN,TYPE,CPT,ICD,INJS,DATE,DFN,PRV,VPED,X0,X12
  1. S RET=""
  1. S VIMM=+$G(VIMM),FLG=+$G(FLG)
  1. S X0=$G(^AUPNVIMM(VIMM,0)),X12=$G(^(12))
  1. I 'X0 S RET=$$ERR^BGOUTL(1080) Q
  1. S TYPE=+X0,DFN=$P(X0,U,2),VIEN=$P(X0,U,3),INJS=$P(X0,U,9)
  1. S DATE=+X12,PRV=$P(X12,U,4)
  1. S:'DATE DATE=+$G(^AUPNVSIT(VIEN,0))
  1. D:FLG'=2 BIDEL(.RET,VIMM,$$FNUM)
  1. Q:RET!(FLG=1)
  1. S CPT=$$IMMCPT(TYPE,VIEN),ICD=$$IMMICD(TYPE,VIEN),VPED=$$FNDPED(VIEN,CPT)
  1. ;IHS/MSC/MGH Patch 13 CPT codes no longer added or deleted
  1. ;S:CPT>0 RET=$$DELCPT(CPT,ICD,VIEN,DFN,PRV,INJS,DATE,VPED)
  1. Q:RET
  1. D:VPED DEL^BGOVPED(,VPED)
  1. ;IHS/MSC/MGG Patch 13 ICD code no longer added or deleted
  1. ;S:ICD>0 RET=$$DELICD(ICD,VIEN,DFN,PRV)
  1. Q
  1. ; Immunization education topic IEN
  1. IMMTOP() Q $O(^AUTTEDT("B","IM-INFORMATION",0))
  1. ; Find patient ed entry corresponding to immunization CPT code
  1. FNDPED(VIEN,CPT) ;
  1. N VPED,TOP,X,CPTIEN
  1. Q:'CPT ""
  1. S VPED=0,TOP=$$IMMTOP
  1. ;MSC/MGH HOTFIX 13
  1. S CPTIEN=$$CODEN^ICPTCOD(CPT)
  1. F S VPED=$O(^AUPNVPED("AD",VIEN,VPED)) Q:'VPED S X=$G(^AUPNVPED(VPED,0)) I +X=TOP,$P(X,U,9)=CPTIEN Q
  1. Q VPED
  1. ; Call BI delete
  1. BIDEL(RET,VFIEN,FNUM) ;EP
  1. N GBL,DATA,VIEN
  1. S GBL=$$ROOT^DILFD(FNUM,,1)
  1. S DATA=$G(@GBL@(VFIEN,0)),VIEN=$P(DATA,U,3)
  1. S RET=$$CHKVISIT^BGOUTL(VIEN)
  1. Q:RET
  1. D DELETE^BIRPC3(.RET,VFIEN,$S(FNUM=$$FNUM:"I",1:"S"))
  1. S RET=$$IMMERR(RET)
  1. D:'RET VFEVT^BGOUTL2(FNUM,VFIEN,2,DATA)
  1. Q
  1. ; Delete ICD9 code
  1. DELICD(ICD,VIEN,DFN,PRV) ;EP
  1. N RET,VPOV,X0,X12
  1. Q:"E"[$P($G(^AUPNVSIT(VIEN,0)),U,7)!'$G(ICD) ""
  1. S VPOV=0
  1. F S VPOV=$O(^AUPNVPOV("AD",VIEN,VPOV)) Q:'VPOV D Q:$D(RET)
  1. .S X0=$G(^AUPNVPOV(VPOV,0)),X12=$G(^(12))
  1. .Q:ICD'=+X0
  1. .I $G(PRV),$P(X12,U,4)'=PRV Q
  1. .D VFDEL^BGOUTL2(.RET,9000010.07,VPOV)
  1. Q $G(RET)
  1. ; Delete CPT code(s)
  1. DELCPT(CPT,ICD,VIEN,DFN,PRV,SITE,DATE,CNSL) ;EP
  1. N RET
  1. S RET=""
  1. ;Patch 9 IHS/MSC/MGH CPT codes no longer added or deleted
  1. Q RET
  1. Q:"E"[$P($G(^AUPNVSIT(VIEN,0)),U,7) ""
  1. S:CPT CPT=$$ADJCPT(CPT,DFN,DATE,.CNSL)
  1. S:CPT RET=$$DC1(CPT,VIEN,.PRV)
  1. Q:RET RET
  1. I 'RET D
  1. .N C
  1. .I SITE'="O",SITE'="IN" F C=90465,90466,90471,90472 S C(C)=""
  1. .E F C=90467,90468,90473,90474 S C(C)=""
  1. .S RET=$$DC1(.C,VIEN,.PRV,.ICD)
  1. I 'RET D
  1. .N C
  1. .S C=$$SYRCPT(SITE)
  1. .S:C RET=$$DC1(C,VIEN,.PRV)
  1. Q RET
  1. ; Delete CPT in visit
  1. DC1(CPTS,VIEN,PRV,ICD) ;
  1. N C,X0,X12,VCPT,RET,QTY
  1. S VCPT=0
  1. S:$D(CPTS)=1 CPTS(CPTS)=""
  1. F S VCPT=$O(^AUPNVCPT("AD",VIEN,VCPT)) Q:'VCPT D Q:$D(RET)
  1. .S X0=$G(^AUPNVCPT(VCPT,0)),X12=$G(^(12)),C=$P(X0,U)
  1. .Q:$G(PRV)'=$P(X12,U,4)
  1. .Q:$G(ICD)'=$P(X0,U,5)
  1. .Q:'$D(CPTS(C))
  1. .S QTY=$P(X0,U,16)
  1. .I QTY>1 D
  1. ..D SETQTY^BGOVCPT(.RET,VCPT_U_(QTY-1))
  1. .E D VFDEL^BGOUTL2(.RET,9000010.18,VCPT)
  1. Q $G(RET)
  1. ; Get syringe CPT
  1. SYRCPT(SITE) ;
  1. Q $S(SITE="O":"",SITE="IN":"",1:$O(^ICPT("B","A4206",0)))
  1. ; Get administration CPT
  1. ADMINCPT(VIEN,CPT,SITE) ;
  1. N C,X,Y,CPT2,CNT
  1. S (X,Y,CNT)=0,CPT2=90471
  1. F S X=$O(^AUPNVCPT("AD",VIEN,X)) Q:'X!Y D
  1. .S C=$P($G(^AUPNVCPT(X,0)),U)
  1. .S:(C=90471)!(C=90473)!(C=90465)!(C=90467) CPT2=90472
  1. .S:C=CPT Y=1
  1. Q:Y "" ; Already exists
  1. S:SITE="O"!(SITE="IN") CPT2=$S(CPT2=90471:90473,1:90474)
  1. Q CPT2
  1. ; Adjust CPT code for age
  1. ADJCPT(CPT,DFN,DATE,CNSL) ;
  1. Q $S('$G(CNSL,1):CPT,$$PTAGE^BGOUTL(DFN,DATE)'<8:CPT,CPT=90471:90465,CPT=90472:90466,CPT=90473:90467,CPT=90474:90468,1:CPT)
  1. ; Add an ICD9 code
  1. ADDICD(ICDIEN,VIEN,DFN,PRV) ;EP
  1. N X,Y,RET,APCDALVR,DLAYGO,ICD,ICDNAME
  1. Q:$$GET^XPAR("ALL","BGO IMM STOP ADDING ICD CODES") 0
  1. S (X,Y)=0
  1. F S X=$O(^AUPNVPOV("AD",VIEN,X)) Q:'X!Y S Y=ICDIEN=$P($G(^AUPNVPOV(X,0)),U)
  1. ;IHS/MSC/MGH Patch 12
  1. I $$AICD^BGOUTL2 S ICDNAME=$$ICDDX^ICDEX(+ICDIEN,$$NOW^XLFDT,"","I")
  1. E S ICDNAME=$P($G(^ICD9(+ICDIEN,0)),U,3)
  1. D:'Y SET^BGOVPOV(.RET,U_VIEN_U_"`"_ICDIEN_U_DFN_U_ICDNAME_"^^^^^^^^^^"_PRV)
  1. Q $G(RET)
  1. ; Add/Edit immunization
  1. ; INP = Visit IEN [1] ^ Historical [2] ^ Patient IEN [3] ^ Imm IEN [4] ^ V File IEN [5] ^
  1. ; Provider IEN [6] ^ Location [7] ^ Other Location [8] ^ Imm Date [9] ^ Lot # [10] ^
  1. ; Reaction [11] ^ VIS Date [12] ^ Dose Override [13] ^ Inj Site [14] ^ Volume [15] ^
  1. ; Counselled [16] ^ VFC Eligibility [17] ^ admin comments [18]
  1. SET(RET,INP) ;EP
  1. N V,CPT,ICD,VFIEN,VOL,OVRD,VIEN,DFN,TYPE,LOT,RXN,PRV,VISD,CNSL
  1. N EVNTDT,LOCIEN,OUTLOC,HIST,CAT,INJS,IMMNM,FNUM,VFNEW,ARG,OFF,VFC,VFCIEN
  1. S RET="",FNUM=$$FNUM,V="|"
  1. S OFF=$S($G(DUZ("AG"))="I":0,1:9999999)
  1. S VIEN=+INP
  1. S HIST=$P(INP,U,2)
  1. I 'VIEN,'HIST S RET=$$ERR^BGOUTL(1002) Q
  1. S DFN=+$P(INP,U,3)
  1. S TYPE=+$P(INP,U,4)
  1. S VFIEN=$P(INP,U,5)
  1. S VFNEW='VFIEN
  1. S PRV=$P(INP,U,6)
  1. S LOCIEN=$P(INP,U,7)
  1. S OUTLOC=$P(INP,U,8)
  1. S EVNTDT=$$CVTDATE^BGOUTL($P(INP,U,9))
  1. I 'DFN!'TYPE S RET=$$ERR^BGOUTL(1008) Q
  1. S CAT=$P($G(^AUPNVSIT(VIEN,0)),U,7)
  1. S:CAT="E" HIST=1
  1. I HIST D Q:RET<0
  1. .S PRV=""
  1. .S RET=$$MAKEHIST^BGOUTL(DFN,EVNTDT,$S($L(OUTLOC):OUTLOC,1:LOCIEN),VIEN)
  1. .S:RET>0 VIEN=RET,CAT="E",RET=""
  1. S RET=$$CHKVISIT^BGOUTL(VIEN,DFN)
  1. Q:RET
  1. S LOT=$P(INP,U,10)
  1. S RXN=$P(INP,U,11) ; Reaction
  1. S VISD=$P(INP,U,12)
  1. S OVRD=$P(INP,U,13) ; Dose override
  1. S INJS=$$TOINTRNL^BGOUTL(FNUM,.09+OFF,$P(INP,U,14)) ; Immun Site
  1. ;IHS/MSC/MGH Patch 11 take the + off to save 0.5 mg
  1. S VOL=$P(INP,U,15)
  1. S CNSL=$P(INP,U,16) ; Patient/family counselled
  1. S VFC=$P(INP,U,17) ;VFC elig for children
  1. I VFC'="" D
  1. .S VFCIEN=$O(^BIELIG("C",VFC,""))
  1. S:'$L(CNSL) CNSL=$P($G(^VA(200,DUZ,"PS")),U)&($$PTAGE^BGOUTL(DFN,EVNTDT)<8)
  1. S ADMIN=$P(INP,U,18)
  1. I 'VFIEN D Q:RET
  1. .S IMMNM=$$GET1^DIQ(9999999.14,TYPE,.01)
  1. .D VFCHK^BGOUTL2(.RET,FNUM,TYPE,IMMNM,VIEN)
  1. I VFIEN,'HIST D DEL(,VFIEN,2)
  1. S ARG=$$BIARG("I",VIEN,VFIEN,TYPE,PRV)
  1. S:LOT $P(ARG,V,5)=LOT
  1. S:RXN $P(ARG,V,15)=RXN
  1. S $P(ARG,V,16)=$G(VFCIEN)
  1. S $P(ARG,V,17)=VISD
  1. S $P(ARG,V,19)=OVRD
  1. S $P(ARG,V,20)=INJS
  1. S $P(ARG,V,21)=VOL
  1. S $P(ARG,V,27)=ADMIN
  1. I 'HIST D Q:RET
  1. .;IHS/MSC/MGH Patch 13 stop adding ICD codes
  1. .;S ICD=$$IMMICD(TYPE,VIEN,1),CPT=0
  1. .;IHS/MSC/MGH patch 9 stop adding CPT codes
  1. .;IHS/MSC/MGH this part put back to add CPT to education
  1. .S CPT=$$IMMCPT(TYPE,VIEN,1)
  1. .;MSC/MGH HOTFIX moved to P14
  1. .S CPT=$$CODEN^ICPTCOD(CPT)
  1. .;S:ICD<0 RET=ICD
  1. .;S:CPT<0 RET=CPT
  1. D BISET(.RET,ARG,FNUM,TYPE,VIEN,VFIEN,EVNTDT)
  1. Q:HIST!(RET'>0)
  1. I RET'<0,CNSL D
  1. .N RET1,TOP
  1. .S TOP=$$IMMTOP
  1. .Q:'TOP
  1. .D SET^BGOVPED(.RET1,U_TOP_U_DFN_U_VIEN_U_PRV_"^^^^"_CPT_"^^^^"_EVNTDT_"^^^^^1")
  1. .S:RET1 RET=RET1
  1. I RET'<0,$G(ICD) D
  1. .N RET1
  1. .;Remove adding ICD codes in Patch 13
  1. .;S RET1=$$ADDICD(ICD,VIEN,DFN,PRV)
  1. .S:RET1 RET=RET1
  1. Q
  1. ; Set data using BI add/edit call
  1. BISET(RET,ARG,FNUM,TYPE,VIEN,VFIEN,EVNTDT) ;EP
  1. N VFNEW,FDA
  1. S VFNEW='VFIEN
  1. D ADDEDIT^BIRPC3(.RET,ARG)
  1. S RET=$$IMMERR(.RET)
  1. Q:RET
  1. D VFFND^BGOUTL2(.VFIEN,FNUM,TYPE,VIEN)
  1. S FDA=$NA(FDA(FNUM,VFIEN_","))
  1. S @FDA@(1201)=$S(EVNTDT:EVNTDT,1:"")
  1. ;IHS/MSC/MGH new fields added patch 11
  1. I VFNEW D
  1. .S @FDA@(1216)="N"
  1. .S @FDA@(1217)="`"_DUZ
  1. S @FDA@(1218)="N"
  1. S @FDA@(1219)="`"_DUZ
  1. I FNUM=9000010.11 D
  1. .;Patch 6 Updated to capture user last update
  1. .S @FDA@(1214)="`"_DUZ
  1. I $$UPDATE^BGOUTL(.FDA,"E@")
  1. D VFEVT^BGOUTL2(FNUM,VFIEN,'VFNEW)
  1. S RET=VFIEN
  1. Q
  1. ; Format argument for BI add/edit call
  1. BIARG(REC,VIEN,VFIEN,ITM,PRV) ;EP
  1. N X,V,X0,X21
  1. S V="|",X=REC,X0=$G(^AUPNVSIT(VIEN,0)),X21=$G(^(21))
  1. S $P(X,V,2)=$P(X0,U,5)
  1. S $P(X,V,3)=ITM
  1. S $P(X,V,6)=$P(X0,U)
  1. S $P(X,V,7)=$P(X0,U,6)
  1. S $P(X,V,8)=$P(X21,U)
  1. S $P(X,V,9)=$P(X0,U,7)
  1. S $P(X,V,10)=VIEN
  1. S:VFIEN $P(X,V,11)=VFIEN
  1. S:PRV $P(X,V,18)=PRV
  1. S $P(X,V,23)=DUZ(2)
  1. Q X
  1. ; Format error message from immunization package
  1. IMMERR(MSG) ;EP
  1. N X
  1. S X=$P($G(MSG),$C(31),3)
  1. S:X[" #" X=$P(X," #")
  1. Q $S($L(X):$$ERR^BGOUTL(1082,X),1:"")
  1. ; Add record to output
  1. ADD(X) S CNT=CNT+1,@RET@(CNT)=$TR(X,"|",U)
  1. Q
  1. ; Return V File #
  1. FNUM() Q 9000010.11