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

BIUTL8.m

Go to the documentation of this file.
  1. BIUTL8 ;IHS/CMI/MWR - UTIL: PATLKUP, PRTLST, ZGBL; MAY 10, 2010
  1. ;;8.5;IMMUNIZATION;**13**;AUG 01,2016
  1. ;;* MICHAEL REMILLARD, DDS * CIMARRON MEDICAL INFORMATICS, FOR IHS *
  1. ;; UTILITY: PATIENT LOOKUP, DUPTEST, PRINT LIST, K/ZGBL, KILLALL.
  1. ;; HFSPATH, IMMSVDIR.
  1. ;; PATCH 2: Correct 19yrs and older logic. VFCSET+7
  1. ;; PATCH 3: Display Elig Code Local Text. ELIGLAB+0
  1. ;; PATCH 8: Problem Dose changes to accommodate new forecaster. PDSS+11
  1. ;; PATCH 9: Fix so that TAB key will not skip Eligibility. ELIGLAB+10
  1. ;; Return the IP Address used for the TCH Forecaster. IPTCH
  1. ;; Add default of V01 (Ineligible) for patients 19 and over. VFCSET+14
  1. ;; PATCH 10: Screen code for PPD Lot Number in Lot Number File. LOTSCRS+0
  1. ;; PATCH 13: Return Flu Season Start and End Dates. FLUDATS+0
  1. ;
  1. ;----------
  1. PATLKUP(BIDFN,BIADD,DUZ2,BIPOP) ;EP
  1. ;---> BI Patient Lookup.
  1. ;---> Parameters:
  1. ; 1 - BIDFN (ret) Patient DFN or -1 if failed.
  1. ; 2 - BIADD (opt) ="ADD" If ADD capability during lookup.
  1. ; 3 - DUZ2=DUZ(2) (opt) If not set, will=User's DUZ(2).
  1. ; 4 - BIPOP (ret) BIPOP=1 If DTOUT or DUOUT.
  1. ;
  1. ;---> Example: D PATLKUP^BIUTL8(.BIDFN)
  1. ; D PATLKUP^BIUTL8(.BIDFN,"ADD") - May ADD Patient to IMM
  1. ;
  1. N DFN,DIC,X,Y
  1. S (BIDFN,BIPOP)=0 D SETVARS^BIUTL5
  1. S:$G(DUZ2)]"" DUZ(2)=DUZ2
  1. S DIC="^AUPNPAT(",DIC(0)="AEMQ"
  1. S DIC("A")=" Select Patient Name or Chart#: "
  1. D ^DIC
  1. I $D(DUOUT)!($D(DTOUT)) S BIPOP=1 Q
  1. S BIDFN=+Y
  1. ;---> Lookup unsuccessful or aborted.
  1. Q:Y<0
  1. ;
  1. ;---> If Patient does not exist in BI PATIENT File, add.
  1. I '$D(^BIP(BIDFN,0)) D Q
  1. .;
  1. .;---> If patient is deceased, add as Inactive, Deceased, and quit.
  1. .I $$DECEASED^BIUTL1(BIDFN) D ADDPAT^BIPATE(BIDFN,DUZ(2),,$G(DT),"d") Q
  1. .N BIERR
  1. .;
  1. .;---> If patient is over 18, or if user does not have BIZ EDIT PATIENTS Key,
  1. .;---> then add as Inactive, "Never Activated," and quit.
  1. .I ($$AGE^BIUTL1(BIDFN,1)>18)!($G(BIADD)'="ADD") D Q
  1. ..D ADDPAT^BIPATE(BIDFN,DUZ(2),.BIERR,$G(DT),"n")
  1. ..I $G(BIERR)]"" W !!?3,BIERR D DIRZ^BIUTL3() S BIPOP=1
  1. .;
  1. .;---> User may edit.
  1. .W !!?3,$$NAME^BIUTL1(BIDFN)
  1. .W " is being added to the Immunization Database",!,"for the first time."
  1. .W !!?3,"Should this patient be added as Active or Inactive?"
  1. .N DIR
  1. .S DIR("?")=" Enter A for Active or I for Inactive."
  1. .S DIR(0)="SM^A:Active;I:Inactive"
  1. .S DIR("A")=" Enter A (Active) or I (Inactive)"
  1. .S DIR("B")="A"
  1. .;S DIR("B")=$S($$AGE^BIUTL1(BIDFN,1)<19:"A",1:"I")
  1. .D ^DIR W !
  1. .I $D(DIRUT) S BIPOP=1 Q
  1. .N BINACT S BINACT=$S(Y="I":$G(DT),1:"")
  1. .N BINACTR S BINACTR=$S(BINACT:"n",1:"")
  1. .D ADDPAT^BIPATE(BIDFN,DUZ(2),.BIERR,BINACT,BINACTR)
  1. .I $G(BIERR)]"" W !!?3,BIERR D DIRZ^BIUTL3() S BIPOP=1
  1. ;
  1. ;
  1. ;---> If this Patient is already in the Imm Database and <36 months
  1. ;---> but is Inactive, query.
  1. Q:$$AGE^BIUTL1(BIDFN,2,$G(DT))>35
  1. ;Q:'$$INACT^BIUTL1(BIDFN) ;vvv83
  1. Q:($$INACT^BIUTL1(BIDFN)="")
  1. Q:($G(BIADD)'="ADD")
  1. ;
  1. W !!?3,"This patient is less than 36 months old and ",$$SEX^BIUTL1(BIDFN,3)
  1. W !?3,"Immunization Status is INACTIVE."
  1. W !!?3,"Should this patient's Status be changed to ACTIVE?",!
  1. N DIR
  1. S DIR(0)="YA",DIR("A")=" Enter Yes or No: "
  1. S DIR("?",1)=" Enter YES to change this patient's Status to Active."
  1. S DIR("?")=" Enter No to leave it Inactive."
  1. D ^DIR W !
  1. D:Y=1
  1. .N BIFLD,BIERR S BIFLD(.08)="",BIFLD(.16)=""
  1. .D FDIE^BIFMAN(9002084,BIDFN,.BIFLD,.BIERR,1)
  1. .I $G(BIERR)]"" W !!?3,BIERR D DIRZ^BIUTL3() S BIPOP=1
  1. Q
  1. ;
  1. ;
  1. ;----------
  1. VFCSET ;EP
  1. ;---> Load Vaccine Eligibility. Called by LOADVIS^BIUTL7.
  1. ;---> If Patient Ben Type is 01 (Am Indian/AK Native), set VFC default=4.
  1. ;
  1. Q:$G(BI("P"))]""
  1. Q:'$G(BIDFN)
  1. Q:$$BENTYP^BIUTL11(BIDFN,2)'="01"
  1. ;
  1. ;********** PATCH 2, v8.5, MAY 15,2012, IHS/CMI/MWR
  1. ;--->Correct 19yrs and older logic.
  1. N BIDATE,X,Y S X=$P($G(BI("E"))," ")
  1. D ^%DT S BIDATE=Y
  1. Q:'BIDATE
  1. ;
  1. ;********** PATCH 9, v8.5, OCT 01,2014, IHS/CMI/MWR
  1. ;---> Add default of V01 (Ineligible) for patients 19 and over.
  1. ;
  1. ;--> If patient was less than 19yrs set default=V01 and quit.
  1. ;Q:($$AGE^BIUTL1(BIDFN,1,BIDATE)>18)
  1. I ($$AGE^BIUTL1(BIDFN,1,BIDATE)<19) S BI("P")=4 Q
  1. ;---> Otherwise patient is adult, set default="V01".
  1. S BI("P")=1
  1. ;
  1. ;********** 9/2012: CHANGE HERE TO MAKE DEFAULT CONDITIONAL UPON ACTIVE STATUS.
  1. Q
  1. ;
  1. ;
  1. ;********** PATCH 3, v8.5, SEP 10,2012, IHS/CMI/MWR
  1. ;---> Display Elig Code Label Text.
  1. ;----------
  1. ELIGLAB(X) ;EP
  1. ;---> Called by Post Action field of Field 10.5 on BI FORM-IMM VISIT ADD/EDIT.
  1. ;---> Display Elibigility Code Local Text besind Elig Code.
  1. ;---> Parameters:
  1. ; 1 - X (req) IEN of Elig Code in ^BIELIG.
  1. ;
  1. Q:'$G(X)
  1. N Y S Y=$G(^BIELIG(+X,0))
  1. Q:(Y="")
  1. ;
  1. ;********** PATCH 9, v8.5, OCT 01,2014, IHS/CMI/MWR
  1. ;---> Fix so that TAB key will not skip Eligibility.
  1. ;D PUT^DDSVALF(10.6,,,$P(Y,U)_" - "_$P(Y,U,4))
  1. D PUT^DDSVALF(10.6,,," - "_$P(Y,U,4))
  1. Q
  1. ;**********
  1. ;
  1. ;----------
  1. DUPTEST(BIERR,BIDATA,BIOIEN) ;EP
  1. ;---> Test to be sure a duplicate Immunization or Skin Test
  1. ;---> is not being added.
  1. ;---> Parameters:
  1. ; 1 - BIERR (ret) Text of Error Code if any, otherwise null.
  1. ; 2 - BIDATA (req) String of data for the Visit to be added.
  1. ; 3 - BIOIEN (opt) IEN of V IMM or V SKIN being edited (if
  1. ; not new).
  1. ;
  1. ;---> Pieces of BIDATA:
  1. ; -----------------
  1. ; 1 - A (req) "I"=Immunization Visit, "S"=Skin Text Visit.
  1. ; 2 - B (req) DFN of patient.
  1. ; 3 - C (req) Vaccine or Skin Test .01 pointer.
  1. ; 6 - D (req) Date of Visit.
  1. ;
  1. N A,B,BI31,C,D,V,X S BI31=$C(31)_$C(31),V="|",X=""
  1. S A=$P(BIDATA,V,1)
  1. S B=$P(BIDATA,V,2) Q:'B
  1. S C=$P(BIDATA,V,3) Q:'C
  1. S D=9999999-$P($P(BIDATA,V,6),".") Q:'D
  1. ;
  1. ;---> Check for duplicate visit.
  1. D
  1. .;---> If this is a new Immunization or Skin Test,
  1. .;---> and there exists a duplicate, report the error.
  1. .I '$G(BIOIEN),A="I",$D(^AUPNVIMM("AA",B,C,D)) S X=423 Q
  1. .I '$G(BIOIEN),A="S",$D(^AUPNVSK("AA",B,C,D)) S X=424 Q
  1. .;
  1. .;---> If the existing xref is not that of the edited visit,
  1. .;---> and there exists a duplicate, report the error.
  1. .;---> For an Immunization.
  1. .I A="I" D Q
  1. ..N N S N=0
  1. ..F S N=$O(^AUPNVIMM("AA",B,C,D,N)) Q:'N I N,N'=BIOIEN S X=423
  1. .;
  1. .;---> For a Skin Test.
  1. .I A="S" D Q
  1. ..N N S N=0
  1. ..F S N=$O(^AUPNVSK("AA",B,C,D,N)) Q:'N I N,N'=BIOIEN S X=424
  1. ;
  1. I X D ERRCD^BIUTL2(X,.BIERR) S BIERR=BI31_BIERR
  1. Q
  1. ;
  1. ;
  1. ;----------
  1. PRTLST(BITNOD) ;EP
  1. ;---> Print Listman list instead of displaying it.
  1. ;---> Parameters:
  1. ; 1 - BITNOD (req) Node in ^TMP global where list is stored.
  1. ;
  1. ;---> Variables:
  1. ; 1 - VALMHDR (req) Array containing header code.
  1. ;
  1. N BICRT S BICRT=$S(($E(IOST)="C")!(IOST["BROWSER"):1,1:0)
  1. N BIPAGE,BIPOP S BIPAGE=0,BIPOP=0
  1. N BI31 S BI31=$C(31)_$C(31)
  1. U IO
  1. ;---> To eliminate control chars from printouts.
  1. I BICRT D FULL^VALM1 W @IOF
  1. D PHEADER(.BIPAGE)
  1. ;
  1. ;---> Loop through ^TMP, writing lines of report.
  1. N N S N=0
  1. F S N=$O(^TMP(BITNOD,$J,N)) Q:'N D Q:BIPOP
  1. .N BITEXT S BITEXT=^TMP(BITNOD,$J,N,0)
  1. .;---> Set BIN=number of lines in this record (=number of $C(30)'s).
  1. .N BIN S BIN=$P(BITEXT,BI31,2)
  1. .S BIN=$L(BIN,$C(30))-1
  1. .;
  1. .;---> If this is not the very first line, and if this record
  1. .;---> won't fit on the bottom of this page, do formfeed and header.
  1. .I N>1 I $Y+BIN+3>IOSL D Q:BIPOP W @IOF D PHEADER(.BIPAGE)
  1. ..D:BICRT DIRZ^BIUTL3(.BIPOP)
  1. .;
  1. .W !,$P(BITEXT,BI31)
  1. ;
  1. W:'BICRT @IOF D:(BICRT&('BIPOP)) DIRZ^BIUTL3()
  1. D ^%ZISC
  1. Q
  1. ;
  1. ;
  1. ;----------
  1. PHEADER(BIPAGE) ;EP
  1. ;---> Print header for PRTLST above.
  1. ;---> Parameters:
  1. ; 1 - BIPAGE (req) Last page# printed.
  1. ;
  1. S:'$G(BIPAGE) BIPAGE=0 S BIPAGE=BIPAGE+1
  1. N N S N=0
  1. F S N=$O(VALMHDR(N)) Q:'N D
  1. .;---> If this is line 2 of the header, append page#.
  1. .I N=2 S $E(VALMHDR(2),70,79)=" page "_BIPAGE
  1. .W !,VALMHDR(N)
  1. W !,$$SP^BIUTL5(79,"=")
  1. Q
  1. ;
  1. ;
  1. ;----------
  1. KGBL(BIGBL) ;EP
  1. ;---> Kill a global. Global should include leading "^".
  1. ;---> Parameters:
  1. ; 1 - BIGBL (req) Global to be zeroed out (must include "^").
  1. ;
  1. S:BIGBL["(" BIGBL=$P(BIGBL,"(")
  1. F S BIGBL=$Q(@BIGBL) Q:BIGBL="" K @BIGBL
  1. Q
  1. ;
  1. ;
  1. ;----------
  1. ZGBL(BIGBL) ;EP
  1. ;---> Zero out (delete ALL DATA) in a Fileman file.
  1. ;---> Parameters:
  1. ; 1 - BIGBL (req) Global to be zeroed out.
  1. ;
  1. Q:$G(BIGBL)=""
  1. N N,X S U="^"
  1. S:$E(BIGBL)'=U BIGBL=U_BIGBL
  1. S:BIGBL["(" BIGBL=$P(BIGBL,"(")
  1. Q:'$D(@(BIGBL_"(0)"))
  1. S N=-1,X=$P(@(BIGBL_"(0)"),U,1,2)
  1. F S N=$O(@(BIGBL_"("""_N_""")")) Q:N="" K @(BIGBL_"("""_N_""")")
  1. S @(BIGBL_"(0)")=X
  1. Q
  1. ;
  1. ;
  1. ;----------
  1. KILLALL(BIGLOBS) ;EP
  1. ;---> Clean up local variables.
  1. ;---> Parameters:
  1. ; 1 - BIGLOBS (opt) If BIGLOBS=1 kill temp globals too.
  1. ;
  1. ;---> XB call to kill local variables.
  1. D EN^XBVK("BI")
  1. D EN^XBVK("DI")
  1. ;
  1. ;---> FILEMAN KILLS.
  1. D DKILLS^BIFMAN
  1. D CLEAN^DILF
  1. K I,M,N,X,Y,Z,ZTRTN,ZTSAVE
  1. ;
  1. Q:'$G(BIGLOBS)
  1. ;---> Clean up temp globals.
  1. K ^BITMP($J)
  1. ;
  1. Q
  1. ;
  1. ;---> Other ways:
  1. ;---> MSM
  1. ;S X="BI" F S X=$O(@X) Q:$E(X,1,2)'="BI" K @X
  1. ;S X="DI" F S X=$O(@X) Q:$E(X,1,2)'="BI" K @X
  1. ;---> DSM
  1. ;S X="BI" F S X=$ZSORT(@X) Q:$E(X,1,2)'="BI" K @X
  1. ;S X="DI" F S X=$ZSORT(@X) Q:$E(X,1,2)'="BI" K @X
  1. Q
  1. ;
  1. ;
  1. ;----------
  1. HFSPATH(DUZ2) ;EP
  1. ;---> Return the Host File Path (directory) as set in the
  1. ;---> in the BI SITE PARAMETERS File.
  1. ;---> Parameters:
  1. ; 1 - DUZ2 (opt) User's DUZ(2), otherwise IEN of Site in
  1. ; RPMS SITE PARAMETERS File.
  1. ;
  1. S:'$G(DUZ2) DUZ2=$P($G(^AUTTSITE(1,0)),"^")
  1. Q $P($G(^BISITE(+DUZ2,0)),"^",14)
  1. ;
  1. ;
  1. ;********** PATCH 9, v8.5, OCT 01,2014, IHS/CMI/MWR
  1. ;---> IP Address for TCH Forecaster.
  1. ;----------
  1. IPTCH(DUZ2) ;EP
  1. ;---> Return the IP Address used for the TCH Forecaster
  1. ;---> in the BI SITE PARAMETERS File.
  1. ;---> Parameters:
  1. ; 1 - DUZ2 (opt) User's DUZ(2), otherwise IEN of Site in
  1. ; RPMS SITE PARAMETERS File.
  1. ;
  1. S:'$G(DUZ2) DUZ2=$P($G(^AUTTSITE(1,0)),"^")
  1. N BIIP S BIIP=$P($G(^BISITE(+DUZ2,0)),"^",30)
  1. S:'BIIP BIIP="127.0.0.1"
  1. Q BIIP
  1. ;**********
  1. ;
  1. ;----------
  1. IMMSVDIR(DUZ2) ;EP
  1. ;---> Return the MSM Home Directory as set in the
  1. ;---> in the BI SITE PARAMETERS File.
  1. ;---> Parameters:
  1. ; 1 - DUZ2 (opt) User's DUZ(2), otherwise IEN of Site in
  1. ; RPMS SITE PARAMETERS File.
  1. ;
  1. S:'$G(DUZ2) DUZ2=$P($G(^AUTTSITE(1,0)),"^")
  1. Q $P($G(^BISITE(+DUZ2,0)),"^",18)
  1. ;
  1. ;
  1. ;----------
  1. PDSS(BIVIEN,BICOMP,BIPDSS) ;EP
  1. ;---> Return 1 if this V Imm IEN is contained in the ImmServe
  1. ;---> Problem Dose IEN string; return 0 if not.
  1. ;---> Parameters:
  1. ; 1 - BIVIEN (req) Visit IEN of this immunization.
  1. ; 2 - BICOMP (req) Vaccine Component CVX Code.
  1. ; 2 - BIPDSS (req) String of ImmServe Problem Dose IENs.
  1. ;
  1. Q:'$G(BIVIEN) 0
  1. Q:'$G(BICOMP) 0
  1. Q:'$D(BIPDSS) 0
  1. ;********** PATCH 8, v8.5, MAR 15,2014, IHS/CMI/MWR
  1. ;---> Concat leading zero if single digit.
  1. ;I $L(BICOMP)=1 S BICOMP="0"_BICOMP
  1. N I,X,Y,Z S X=0
  1. ;
  1. ;---> Ignore component CVX for now.
  1. S Y=BIVIEN_"%"_BICOMP
  1. F I=1:1 S Z=$P(BIPDSS,U,I) Q:Z="" I Y=Z S X=1 Q
  1. ;---> Just check for V Imm IEN.
  1. ;F I=1:1 S Z=$P(BIPDSS,U,I) Q:Z="" I BIVIEN=Z S X=1 Q
  1. ;**********
  1. ;
  1. Q X
  1. ;
  1. ;
  1. ;----------
  1. DOVER(X,Z) ;EP
  1. ;---> Return text of Dose Override Code.
  1. ;---> Parameters:
  1. ; 1 - X (req) Code for Dose Override text.
  1. ; 2 - Z (opt) If Z=1 return Short form (remove "INVALID--" from text).
  1. ;
  1. Q:'$G(X) ""
  1. Q:$G(Z) $P($P($P($G(^DD(9000010.11,.08,0)),X_":",2),";"),"--",2)
  1. Q $P($P($G(^DD(9000010.11,.08,0)),X_":",2),";")
  1. ;
  1. ;********** PATCH 10, v8.5, MAY 30,2015, IHS/CMI/MWR
  1. ;---> Screen code for PPD Lot Number in Lot Number File.
  1. ;----------
  1. LOTSCRS ;EP
  1. ;---> Set Screen for Lot Number selection in Screen field of
  1. ;---> "Form Only Field Parameters" of the Form BI FORM-SKIN VISIT ADD/EDIT
  1. ;---> when selecting Lot Number.
  1. ;---> Screen: If this Lot Number is Active, AND if the Skin Test selected is
  1. ;---> PPD, AND if EITHER [it has no specific Location] OR its Facility
  1. ;---> matches the user's Facility/Location (DUZ(2))].
  1. ;
  1. ;S DIR("S")="I 0"
  1. S DIR("S")="I $P(^"_"(0),U,3)=0,+$G(BI(""B""))=2,$D(^AUTTIML(""C"",203,Y))"
  1. S DIR("S")=DIR("S")_",(('$P($G(^AUTTIML(Y,0)),U,14))!($P($G(^AUTTIML(Y,0)),U,14)=$G(DUZ(2))))"
  1. Q
  1. ;
  1. ;---> Next line: Concat to avoid suspected naked ref.
  1. ;S DIR("S")="I $P(^"_"(0),U,3)=0,($G(BI(""B""))=""""!$D(^AUTTIML(""C"",+$G(BI(""B"")),Y)))"
  1. ;S DIR("S")=DIR("S")_",(('$P($G(^AUTTIML(Y,0)),U,14))!($P($G(^AUTTIML(Y,0)),U,14)=$G(DUZ(2))))"
  1. Q
  1. ;**********
  1. ;
  1. ;
  1. ;********** PATCH 13, v8.5, AUG 01,2016, IHS/CMI/MWR
  1. ;---> Return Flu Season Start and End Dates.
  1. ;----------
  1. FLUDATS(DUZ2) ;PEP - Return Flu Season Start and End Dates.
  1. ;---> Return the Flu Season Start and End Dates in the BI SITE PARAMETERS File
  1. ;---> in the form: mm/dd%mm/dd
  1. ;---> Parameters:
  1. ; 1 - DUZ2 (opt) User's DUZ(2), otherwise IEN of Site in
  1. ; RPMS SITE PARAMETERS File.
  1. ;
  1. S:'$G(DUZ2) DUZ2=$P($G(^AUTTSITE(1,0)),"^")
  1. N X,Y
  1. S X=$P($G(^BISITE(+DUZ2,0)),"^",31),Y=$P($G(^BISITE(+DUZ2,0)),"^",32)
  1. I X'?2N1"/"2N S X="08/01"
  1. I Y'?2N1"/"2N S Y="04/01"
  1. Q X_"%"_Y
  1. ;**********