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

BIEXPRT6.m

Go to the documentation of this file.
  1. BIEXPRT6 ;IHS/CMI/MWR - EXPORT IMMUNIZATION RECORDS; OCT 15, 2010
  1. ;;8.5;IMMUNIZATION;**13**;AUG 01,2016
  1. ;;* MICHAEL REMILLARD, DDS * CIMARRON MEDICAL INFORMATICS, FOR IHS *
  1. ;; EXPORT IMMUNIZATION RECORDS: BUILD PATIENT HISTORY EXPORT FOR FORECASTING.
  1. ;; CALLED BY BIEXPRT3.
  1. ;; PATCH 8: New routine to accommodate new TCH Forecaster TCHHIST+0
  1. ;; PATCH 13: Pass Flu Season Start & End Dates to TCH. TCHHIST+128
  1. ;
  1. ;
  1. ;
  1. ;********** PATCH 8, v8.5, MAR 15,2014, IHS/CMI/MWR
  1. ;---> New Entry Point called from HISTORY+99^BIEXPRT3.
  1. ;----------
  1. TCHHIST(BIFDT,BIDUZ2,BINF) ;EP
  1. ;---> Called by BIEXPRT3.
  1. ;---> Construct ^BITMP($J,2 nodes for Forecast exports from the
  1. ;---> ^BITMP($J,1 nodes (gathered in ^BIEXPRT2).
  1. ;---> This prepares the string of Patient Data to be sent to
  1. ;---> TCH for forecasting.
  1. ;---> Parameters:
  1. ; 1 - BIFDT (opt) Forecast Date (date used to calc Imms due).
  1. ; 2 - BIDUZ2 (opt) User's DUZ(2) for BISITE parameters,
  1. ; which affect forecasting rules.
  1. ; 3 - BINF (opt) Array of Vaccine IEN's that should not be forecast.
  1. ;
  1. ;---> If no Forecast Date passed, set it equal to today.
  1. S:'$G(BIFDT) BIFDT=DT
  1. ;
  1. ;---> If no BIDUZ2, try DUZ(2); otherwise, defaults will be used.
  1. S:'$G(BIDUZ2) BIDUZ2=$G(DUZ(2))
  1. ;
  1. N BIDFN S BIDFN=0
  1. F S BIDFN=$O(^BITMP($J,1,BIDFN)) Q:'BIDFN D
  1. .N BIAGE,BIDOSES,BITMP1 S BIDOSES=0
  1. .;---> Set Patient Age in Years for this Forecast Date.
  1. .S BIAGE=$$AGE^BIUTL1(BIDFN,1,BIFDT)
  1. .;
  1. .;---> Date used for Forecast (Field 1).
  1. .S BITMP1=$$FMTCHDT^BIUTL5(BIFDT)
  1. .;
  1. .;---> Forecasting Mode: Minimum vs. Recommended Age (Field 2).
  1. .S BITMP1=BITMP1_U_$$MINAGE^BIUTL2(BIDUZ2)
  1. .;
  1. .;********** PATCH 8, v8.5, MAR 15,2014, IHS/CMI/MWR
  1. .;---> Transmit Grace Period option instead of version.
  1. .;---> Version (Field 3).
  1. .;S BITMP1=BITMP1_U_$$RULES^BIUTL2(BIDUZ2)
  1. .;---> Grace Period (Field 3).
  1. .S BITMP1=BITMP1_U_$P($G(^BISITE(BIDUZ2,0)),U,21)
  1. .;
  1. .;---> Reserved for future use (Field 4).
  1. .S BITMP1=BITMP1_U_0
  1. .;
  1. .;---> Reserved for future use (Field 5).
  1. .S BITMP1=BITMP1_U_0
  1. .;
  1. .;---> Personal ID: Patient Name and Chart# (Field 6)
  1. .S BITMP1=BITMP1_U_$$NAME^BIUTL1(BIDFN)
  1. .S BITMP1=BITMP1_" Chart#: "_$$HRCN^BIUTL1(BIDFN)
  1. .;
  1. .;---> User Note: DFN (Field 7)
  1. .S BITMP1=BITMP1_U_BIDFN
  1. .;
  1. .;---> Date of Birth (Field 8).
  1. .S BITMP1=BITMP1_U_$$FMTCHDT^BIUTL5($$DOB^BIUTL1(BIDFN))
  1. .;
  1. .;---> Gender (Field 9).
  1. .S BITMP1=BITMP1_U_$$SEXW^BIUTL1(BIDFN)
  1. .;
  1. .;---> Mother HBsAg Status: P,N,U,A (Field 10).
  1. .S BITMP1=BITMP1_U_$$MOTHER^BIUTL11(BIDFN)
  1. .;
  1. .;---> Build array of contraindicated HL7 Codes for this Patient.
  1. .N BICT D CONTRA^BIUTL11(BIDFN,.BICT)
  1. .;
  1. .;---> Pertussis Indication (Field 11).
  1. .D
  1. ..;---> If patient has contra to DTP or DTaP, pass contra to pertussis.
  1. ..N I,J S J=0 F I=1,11,20 I $D(BICT(I)) S J=1 Q
  1. ..S BITMP1=BITMP1_U_J
  1. .;
  1. .;---> Diphtheria Indication (Field 12).
  1. .D
  1. ..;---> If pt has contra to DT-PEDS or TD-Adult, pass contra to Diph.
  1. ..N I,J S J=0 F I=28,9 I $D(BICT(I)) S J=1 Q
  1. ..S BITMP1=BITMP1_U_J
  1. .;
  1. .;---> Tetanus Indication (Field 13).
  1. .D
  1. ..;---> If pt has contra to TET TOX,
  1. ..;---> pass contra to Tetanus.
  1. ..N I,J S J=0 F I=28,9,35 I $D(BICT(I)) S J=1 Q
  1. ..S BITMP1=BITMP1_U_J
  1. .;
  1. .;---> Hib Indication (Field 14).
  1. .D
  1. ..;---> If pt has contra to any HIB, pass contra to HIB.
  1. ..N I,J S J=0 F I=17,46,47,48,49 I $D(BICT(I)) S J=1 Q
  1. ..S BITMP1=BITMP1_U_J
  1. .;
  1. .;---> HBIG Indication (Field 15).
  1. .S BITMP1=BITMP1_U_$S($D(BICT(30)):1,1:0)
  1. .;
  1. .;---> HepB Indication (Field 16).
  1. .S BITMP1=BITMP1_U_$S($D(BICT(45)):1,1:0)
  1. .;
  1. .;---> OPV Indication (Field 17).
  1. .;---> 2003: ImmServe no longer forecasts OPV.
  1. .;S BITMP1=BITMP1_U_$S($D(BICT(2)):1,$D(BINF(2)):1,1:0)
  1. .S BITMP1=BITMP1_U_0
  1. .;
  1. .;---> IPV Indication (Field 18).
  1. .S BITMP1=BITMP1_U_$S($D(BICT(10)):1,1:0)
  1. .;
  1. .;---> Measles Indication (Field 19).
  1. .S BITMP1=BITMP1_U_$S($D(BICT(5)):1,1:0)
  1. .;
  1. .;---> Mumps Indication (Field 20).
  1. .S BITMP1=BITMP1_U_$S($D(BICT(7)):1,1:0)
  1. .;
  1. .;---> Rubella Indication (Field 21).
  1. .S BITMP1=BITMP1_U_$S($D(BICT(6)):1,1:0)
  1. .;
  1. .;---> Varicella Indication (Field 22).
  1. .S BITMP1=BITMP1_U_$S($D(BICT(21)):1,1:0)
  1. .;
  1. .;---> HepA Indication (Field 23).
  1. .S BITMP1=BITMP1_U_$S($D(BICT(85)):1,1:0)
  1. .;
  1. .;---> Rotavirus Indication (Field 24).
  1. .S BITMP1=BITMP1_U_$S($D(BICT(74)):1,1:0)
  1. .;
  1. .;---> Pneumococcal Indication (Field 25).
  1. .;********** PATCH 8, v8.5, MAR 15,2014, IHS/CMI/MWR
  1. .;---> Add ALL Pneumos.
  1. .D
  1. ..;---> If pt has contra to any Pneumo, pass contra to Pneumo.
  1. ..N I,J S J=0 F I=33,100,109,133 I $D(BICT(I)) S J=1 Q
  1. ..S BITMP1=BITMP1_U_J
  1. .;
  1. .;---> Influenza Indication (Field 26).
  1. .;********** PATCH 13, v8.5, AUG 01,2016, IHS/CMI/MWR
  1. .;---> Pass Flu Season Start & End Dates to TCH.
  1. .;S BITMP1=BITMP1_U_$S($D(BICT(88)):1,1:0)
  1. .D
  1. ..;---> If Flu contraindicated, concat 1 and quit.
  1. ..I $D(BICT(88)) S BITMP1=BITMP1_U_1 Q
  1. ..;---> Pass Site's Flu season dates.
  1. ..S BITMP1=BITMP1_U_$$FLUDATS^BIUTL8(BIDUZ2)
  1. .;**********
  1. .;
  1. .;---> Meningococcal Indication (Field 27).
  1. .S BITMP1=BITMP1_U_$S($D(BICT(32)):1,1:0)
  1. .;
  1. .;---> HPV Indication (Field 28).
  1. .S BITMP1=BITMP1_U_$S($D(BICT(62)):1,1:0)
  1. .;
  1. .;---> H1N1 Indication (Field 29).
  1. .D
  1. ..;---> If pt has contra to any H1N1, pass contra to H1N1.
  1. ..N I,J S J=0 F I=125,126,127,128 I $D(BICT(I)) S J=1 Q
  1. ..S BITMP1=BITMP1_U_J
  1. .;
  1. .;********** PATCH 8, v8.5, MAR 15,2014, IHS/CMI/MWR
  1. .;---> Add Zoster Contraindication field.
  1. .;---> Zoster Indication (Field 30).
  1. .S BITMP1=BITMP1_U_$S($D(BICT(121)):1,1:0)
  1. .;
  1. .;---> Delimiter between Patient Case Data and Imm History Doses.
  1. .S BITMP1=BITMP1_U_"~~~"
  1. .;**********
  1. .;
  1. .;
  1. .N BIMM,BITMP S BIMM=0,BITMP=""
  1. .F S BIMM=$O(^BITMP($J,1,BIDFN,BIMM)) Q:'BIMM D
  1. ..N BIDATE,Y S BIDATE=0
  1. ..F S BIDATE=$O(^BITMP($J,1,BIDFN,BIMM,BIDATE)) Q:'BIDATE D
  1. ...N BIVIMM,Y S BIVIMM=0
  1. ...F S BIVIMM=$O(^BITMP($J,1,BIDFN,BIMM,BIDATE,BIVIMM)) Q:'BIVIMM D
  1. ....;---> Tack on V Imm IEN for matching ImmServe History.
  1. ....N BIDOSE S Y=^BITMP($J,1,BIDFN,BIMM,BIDATE,BIVIMM)_"^"_BIVIMM
  1. ....D DOSES(Y,BIAGE,.BIDOSE,.BIDOSES)
  1. ....S BITMP=BITMP_BIDOSE
  1. .;
  1. .;---> Allow for Maximum Global Length to be as small as 255.
  1. .;---> This gets picked up in +63^BIEXPRT4.
  1. .S BITMP=BITMP1_BITMP
  1. .S ^BITMP($J,2,BIDFN,1,1,1)=$E(BITMP,1,250)
  1. .S:$L(BITMP)>250 ^BITMP($J,2,BIDFN,1,1,1,1)=$E(BITMP,251,500)
  1. .S:$L(BITMP)>500 ^BITMP($J,2,BIDFN,1,1,1,2)=$E(BITMP,501,750)
  1. .S:$L(BITMP)>750 ^BITMP($J,2,BIDFN,1,1,1,3)=$E(BITMP,751,1000)
  1. .S:$L(BITMP)>1000 ^BITMP($J,2,BIDFN,1,1,1,4)=$E(BITMP,1001,1250)
  1. .S:$L(BITMP)>1250 ^BITMP($J,2,BIDFN,1,1,1,5)=$E(BITMP,1251,1500)
  1. .S:$L(BITMP)>1500 ^BITMP($J,2,BIDFN,1,1,1,6)=$E(BITMP,1501,1750)
  1. .S:$L(BITMP)>1750 ^BITMP($J,2,BIDFN,1,1,1,7)=$E(BITMP,1751,2000)
  1. Q
  1. ;
  1. ;----------
  1. DOSES(Y,BIAGE,BIDOSE,BIDOSES) ;EP
  1. ;---> Add data (4 TCH fields) for one dose to BITMP.
  1. ;---> Parameters:
  1. ; 1 - Y (req) Data for one visit, stored in ^BITMP($J,1,BIDFN...
  1. ; CVX Code^Dose Override^TCH Date^V Imm IEN.
  1. ; 2 - BIAGE (req) Patient Age in years (for translating Td).
  1. ; 3 - BIDOSE (ret) Data returned for one "Input Dose":
  1. ; Dose Note(V Imm IEN)^CVX Code^Date of Dose
  1. ; ^Dose Override^Reserved^Reserved
  1. ; 4 - BIDOSES (ret) Total number of doses collected (not used for now).
  1. ;
  1. Q:$G(Y)=""
  1. S:$G(BIDOSE)="" BIDOSE=""
  1. S:$G(BIDOSES)="" BIDOSES=0
  1. ;
  1. ;---> Quit if no Dose CVX Code or if NULL.
  1. Q:"NULL"[$P(Y,U,1)
  1. ;
  1. ;---> Dose Note - ^V Imm IEN (Field 1).
  1. S BIDOSE=$P(Y,U,4)
  1. ;
  1. ;---> Dose HL7/CVX Code (Field 2) * * * ALL OUTGOING TRANSLATIONS HERE * * *
  1. ;***** TRANSLATIONS NECESSARY??? ****
  1. D
  1. .;---> If this is an Adult Td Booster and patient age>7, send -10 to ImmServe.
  1. .;I $P(Y,U,1)=9!($P(Y,U,1)=113) I BIAGE>6 S BIDOSE=BIDOSE_U_-10 Q
  1. .;
  1. .;---> If this is Tdap, send -13 to ImmServe.
  1. .;
  1. .;********** PATCH 2, v8.5, MAY 15,2012, IHS/CMI/MWR
  1. .;---> Include CVX 20 (DTaP) in translation to -13, so that DTaP satisfies Tdap.
  1. .;---> During Beta Test decision was made to abandon this for now, due to
  1. .;---> complications. However, Tdap CVX 115 translated to -13 on 7yrs and older.
  1. .;I $P(Y,U,1)=115 I BIAGE>6 S BIDOSE=BIDOSE_U_-13 Q
  1. .;I $P(Y,U,2)=115!($P(Y,U,2)=20) I BIAGE>6 S BIDOSE=BIDOSE_U_-13 Q
  1. .;**********
  1. .;
  1. .;********** PATCH 2, v8.4.2, Oct 15,2010, IHS/CMI/MWR
  1. .;---> Translate new Flu CVX Codes 140 & 141 to 15 until Immserve can accommodate.
  1. .;---> If this is a new Flu, send 15.
  1. .;
  1. .;********** PATCH 5, v8.5, JUL 01,2013, IHS/CMI/MWR
  1. .;---> Recognize new Flu Codes.
  1. .;I ($P(Y,U,2)=140)!($P(Y,U,2)=141) S BIDOSE=BIDOSE_U_15 Q
  1. .;N Z S Z=($P(Y,U,1))
  1. .;I (Z=149)!(Z=150)!(Z=151)!(Z=153)!(Z=155)!(Z=158) S BIDOSE=BIDOSE_U_15 Q
  1. .;**********
  1. .;
  1. .;---> No translation of this dose.
  1. .S BIDOSE=BIDOSE_U_$P(Y,U,1)
  1. ;
  1. ;
  1. ;---> Date of Dose Administration--Visit Date (Field 3).
  1. S BIDOSE=BIDOSE_U_$P(Y,U,3)
  1. ;
  1. ;---> Dose Override: (Field 4).
  1. ;---> 0=Exclude if violates screening rules
  1. ;---> 1=Include even if violates screening rules
  1. ;---> 2=Exclude per user input (invalidated by user, e.g., expired vaccine).
  1. D
  1. .;---> Interpret Dose Override for ImmServe.
  1. .N X S X=(+$P(Y,U,2))
  1. .D:X
  1. ..I X=9 S X=1 Q
  1. ..S X=2
  1. .S BIDOSE=BIDOSE_U_X
  1. ;
  1. ;---> Reserved for future use (Field 5).
  1. S BIDOSE=BIDOSE_"^0"
  1. ;
  1. ;---> Reserved for future use (Field 6).
  1. S BIDOSE=BIDOSE_"^0"
  1. ;
  1. ;---> End of Dose Delimiter.
  1. S BIDOSE=BIDOSE_"|||"
  1. ;
  1. ;---> Keep count of doses.
  1. S BIDOSES=BIDOSES+1
  1. Q