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

BIREPP3.m

Go to the documentation of this file.
  1. BIREPP3 ;IHS/CMI/MWR - REPORT, PCV; AUG 10,2010
  1. ;;8.5;IMMUNIZATION;;SEP 01,2011
  1. ;;* MICHAEL REMILLARD, DDS * CIMARRON MEDICAL INFORMATICS, FOR IHS *
  1. ;; VIEW OR PRINT REPORT.
  1. ;
  1. ;
  1. ;----------
  1. GETIMMS(BIBEGDT,BIENDDT,BICC,BIUP) ;EP
  1. ;---> Get Immunizations from V Files.
  1. ;---> Parameters:
  1. ; 1 - BIBEGDT (req) Begin Visit Date.
  1. ; 2 - BIENDDT (req) End Visit Date.
  1. ; 3 - BICC (req) Current Community array.
  1. ; 4 - BIUP (req) User Population/Group (r,i,u,a).
  1. ;
  1. ;---> Set begin and end dates for search through PATIENT File.
  1. ;
  1. Q:'$G(BIBEGDT) Q:'$G(BIENDDT)
  1. ;---> Begin at earliest possible DOB (kids born the day after
  1. ;---> 5 years prior to the End Date).
  1. N N S N=($E(BIENDDT,1,3)-5)_$E(BIENDDT,4,7)
  1. F S N=$O(^DPT("ADOB",N)) Q:(N>BIENDDT!('N)) D
  1. .S BIDFN=0
  1. .F S BIDFN=$O(^DPT("ADOB",N,BIDFN)) Q:'BIDFN D
  1. ..D CHKSET(BIDFN,.BICC,BIUP,BIBEGDT,BIENDDT)
  1. Q
  1. ;
  1. ;
  1. ;----------
  1. CHKSET(BIDFN,BICC,BIUP,BIBEGDT,BIENDDT) ;EP
  1. ;---> Check if this patient fits criteria; if so, set DFN
  1. ;---> in ^TMP("BIREPQ1".
  1. ;---> Parameters:
  1. ; 1 - BIDFN (req) Patient IEN.
  1. ; 2 - BICC (req) Current Community array.
  1. ; 3 - BIUP (req) User Population/Group (r,i,u,a).
  1. ; 4 - BIBEGDT (req) Begin Visit Date.
  1. ; 5 - BIENDDT (req) End Visit Date.
  1. ;
  1. Q:'$G(BIDFN)
  1. Q:'$D(BICC)
  1. Q:'$D(BIUP)
  1. Q:'$G(BIBEGDT)
  1. Q:'$G(BIENDDT)
  1. ;
  1. ;---> Quit if patient not less than 60 months (5 yrs) old on the End Date.
  1. S BIAGE=$$AGE^BIUTL1(BIDFN,2,BIENDDT)
  1. Q:(BIAGE'?1N.N) Q:(BIAGE>59)
  1. ;
  1. N BIHCF S BIHCF($G(DUZ(2)))=""
  1. ;---> Filter for standard Patient Population parameter.
  1. Q:'$$PPFILTR^BIREP(BIDFN,.BIHCF,BIENDDT,BIUP)
  1. ;
  1. ;---> Quit if Current Community doesn't match.
  1. Q:$$CURCOM^BIEXPRT2(BIDFN,.BICC)
  1. ;
  1. ;---> *** Okay, this patient is in the denominator. *****************
  1. ;
  1. ;---> Get Age Groups string (12345) for this patient.
  1. N BIAGRPS S BIAGRPS=$$AGEGRP(BIAGE)
  1. ;
  1. ;---> Get Lastname,Firstname.
  1. N BIPNAME S BIPNAME=$$NAME^BIUTL1(BIDFN)
  1. ;
  1. ;---> Store in denominator total.
  1. N BIAGRP,I F I=1:1 S BIAGRP=$E(BIAGRPS,I) Q:'BIAGRP D
  1. .S ^TMP("BIREPP1",$J,"TOTALPATS",BIAGRP)=$G(^TMP("BIREPP1",$J,"TOTALPATS",BIAGRP))+1
  1. ;
  1. ;---> Store patient for export (even if no PCV's).
  1. S ^TMP("BIREPP1",$J,"BIDFN",BIDFN,"EXPORT")=""
  1. ;
  1. ;---> Store patient for viewing Denominator.
  1. S ^TMP("BIDUL",$J,1,BIAGE,BIPNAME,BIDFN)=""
  1. ;
  1. ;---> RPC to gather Immunization History.
  1. N BI31,BIDE,BIRETVAL,BIRETERR,I S BI31=$C(31)_$C(31),BIRETVAL=""
  1. ;---> 25=CVX, 55=Vaccine Group IEN, 56=Date of Visit (Fileman), 65=Dose Override.
  1. F I=25,55,56,65 S BIDE(I)=""
  1. ;---> Fourth parameter=0: Do not return Skin Tests.
  1. ;---> Fifth parameter=0: Split out combinations as if given individually.
  1. D IMMHX^BIRPC(.BIRETVAL,BIDFN,.BIDE,0,0)
  1. ;
  1. ;---> If BIRETERR has a value, store it and quit.
  1. S BIRETERR=$P(BIRETVAL,BI31,2)
  1. Q:BIRETERR]""
  1. Q:BIRETVAL["NO RECORDS"
  1. ;
  1. ;---> Set BIHX=to a valid Immunization History.
  1. N BIHX S BIHX=$P(BIRETVAL,BI31,1)
  1. ;
  1. ;---> Add this Patient's History to stats.
  1. N I,Y
  1. ;---> Loop through "^"-pieces of Imm History, getting data.
  1. F I=1:1 S Y=$P(BIHX,U,I) Q:Y="" D
  1. .;
  1. .;---> Quit (don't count) if Visit was AFTER Quarter Ending Date.
  1. .N BIDATE S BIDATE=$P(Y,"|",4)
  1. .Q:(BIDATE>BIENDDT)
  1. .;
  1. .;---> Quit (don't count) if Vaccine Group is not Pneumo (IEN in ^BISERT=11).
  1. .Q:($P(Y,"|",3)'=11)
  1. .;
  1. .;---> Set CVX Code and Invalid Code (Dose Override).
  1. .N BICVX S BICVX=$P(Y,"|",2)
  1. .N BINVLD S BINVLD=$P(Y,"|",5) D
  1. ..I (BINVLD>0)&(BINVLD<9) S BINVLD=$$DOVER^BIUTL8(BINVLD,1) Q
  1. ..S BINVLD=""
  1. .;
  1. .;---> EXPORT, store data lines.
  1. .;---> Use "," for CSV delimiter in Export.
  1. .N Q,D S Q="""",D=Q_","_Q
  1. .N X S X=BICVX_D_$$SLDT1^BIUTL5($P(Y,"|",4))_D_BINVLD_D
  1. .;--->Add or update patient node for export.
  1. .N Y S Y=$G(^TMP("BIREPP1",$J,"BIDFN",BIDFN,"EXPORT"))
  1. .S ^TMP("BIREPP1",$J,"BIDFN",BIDFN,"EXPORT")=Y_X
  1. .;
  1. .;---> REPORT, store patient tallies.
  1. .;---> For each Age Group to which this patient belongs, update doses of PCV13 received.
  1. .Q:BICVX'=133
  1. .;
  1. .S Y=$G(^TMP("BIREPP1",$J,"BIDFN",BIDFN,BIAGRPS,"DOSES"))
  1. .S ^TMP("BIREPP1",$J,"BIDFN",BIDFN,BIAGRPS,"DOSES")=Y+1
  1. .;
  1. .;---> Do not include this dose in the Total PCV13 Doses Administered if it is not in
  1. .;---> the requested DATE RANGE.
  1. .Q:(BIDATE<BIBEGDT) Q:(BIDATE>(BIENDDT+.9999))
  1. .;
  1. .;---> Update Total PCV13 Doses Administered.
  1. .N BIAGRP,I F I=1:1 S BIAGRP=$E(BIAGRPS,I) Q:'BIAGRP D
  1. ..S ^TMP("BIREPP1",$J,"TOTALPCV13",BIAGRP)=$G(^TMP("BIREPP1",$J,"TOTALPCV13",BIAGRP))+1
  1. ;
  1. Q
  1. ;
  1. ;
  1. TALLY ;EP
  1. ;---> Tally up the numbers of children in each age group who have received
  1. ;---> 1, 3, or 4 doses.
  1. ;
  1. N BIDFN S BIDFN=0
  1. F S BIDFN=$O(^TMP("BIREPP1",$J,"BIDFN",BIDFN)) Q:'BIDFN D
  1. .N BIAGRPS S BIAGRPS=0 S BIAGRPS=$O(^TMP("BIREPP1",$J,"BIDFN",BIDFN,BIAGRPS))
  1. .Q:'BIAGRPS
  1. .N BIDOSES S BIDOSES=$G(^TMP("BIREPP1",$J,"BIDFN",BIDFN,BIAGRPS,"DOSES"))
  1. .Q:'BIDOSES
  1. .N BIAGRP,I F I=1:1 S BIAGRP=$E(BIAGRPS,I) Q:'BIAGRP D
  1. ..N Z S Z=$G(^TMP("BIREPP1",$J,"TALLY",1,BIAGRP))
  1. ..S ^TMP("BIREPP1",$J,"TALLY",1,BIAGRP)=Z+1
  1. ..Q:(BIDOSES=1)
  1. ..N Z S Z=$G(^TMP("BIREPP1",$J,"TALLY",3,BIAGRP))
  1. ..S ^TMP("BIREPP1",$J,"TALLY",3,BIAGRP)=Z+1
  1. ..Q:(BIDOSES=3)
  1. ..N Z S Z=$G(^TMP("BIREPP1",$J,"TALLY",4,BIAGRP))
  1. ..S ^TMP("BIREPP1",$J,"TALLY",4,BIAGRP)=Z+1
  1. ;
  1. Q
  1. ;
  1. ;
  1. ;----------
  1. AGEGRP(BIAGE) ;EP
  1. ;---> Return Patient's Age GroupS.
  1. ;---> Parameters:
  1. ; 1 - BIAGE (req) Patient's age in months.
  1. ;
  1. ;---> NOTE: All patients at this point fall into Age Group 1 (0-59 months).
  1. N X S X=1
  1. I BIAGE>1,BIAGE<24 S X=X_2
  1. I BIAGE>23,BIAGE<60 S X=X_3
  1. I BIAGE>5,BIAGE<12 S X=X_4
  1. I BIAGE>11,BIAGE<24 S X=X_5
  1. Q X