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

BYIMRT.m

Go to the documentation of this file.
  1. BYIMRT ;IHS/CIM/THL - IMMUNIZATION DATA EXCHANGE;
  1. ;;2.0;BYIM IMMUNIZATION DATA EXCHANGE;**3,4,5,6,7,8**;JUL 11, 2017;Build 310
  1. ;;CONTINUATION OF BYIMIMM
  1. ;
  1. ;REAL-TIME PROCESSING
  1. ;
  1. ;-----
  1. RT ;EP;FOR REAL TIME QUERIES
  1. F D RT1 Q:$D(BYIMQUIT)
  1. K BYIMQUIT
  1. Q
  1. ;-----
  1. RT1 ;REAL TIME
  1. D PATH^BYIMIMM6
  1. K BYIMQTX,BYIMQUIT
  1. S BYIMQTX=$S(BYIMQT=1:"VXQ",1:"QBP")
  1. N RT
  1. W @IOF
  1. W !!?10,"Real-Time Query Options - Version: ",BYIMVER
  1. K DIR
  1. S DIR(0)="SO^1:Get a Patient's Immunizations FROM State IIS;2:Send a Patient's Immunizations TO State IIS;3:Review State IIS Responses;4:Check for Additional Response Messages"
  1. S DIR("A")="Select the action type"
  1. D ^DIR
  1. K DIR
  1. I 'Y S BYIMQUIT=1 Q
  1. S RT=$S(Y=1:"VXQ",Y=2:"VXU",Y=3:"RESP",Y=4:"RTIN",1:"")
  1. I RT="RESP" D RESP K BYIMQUIT Q
  1. I RT="RTIN" D Q
  1. .W !!,"Checking for query responses that have not yet been processed."
  1. .W !!,"Please stand by..."
  1. .H 4
  1. .N BYIMRTIN
  1. .S BYIMRTIN=1
  1. .D RTIN
  1. .W !!,"Please check 'Review State IIS Responses' for new IIS responses."
  1. .D PAUSE^BYIMIMM6
  1. .K BYIMQUIT
  1. D PAT
  1. Q:'$D(^TMP($J,"BYIM RT"))
  1. D SEND
  1. K ^TMP($J,"BYIM RT")
  1. Q
  1. ;-----
  1. PAT ;
  1. K ^TMP($J,"BYIM RT")
  1. I RT="VXU" D ALL
  1. W !!,"Select patient(s) to send to the State Immunization Registry"
  1. F D P1 Q:$D(BYIMQUIT)
  1. K BYIMQUIT
  1. Q
  1. ;-----
  1. P1 ;SELECT MULTIPE PATIENTS
  1. K DIE,DIC,DINUM,DR,DA,DD,DO,DIK,DLAYGO
  1. S DIC=9000001
  1. S DIC("A")="Select "_$S($D(^TMP($J,"BYIM RT")):"another ",1:"")_"patient: "
  1. S DIC(0)="AEQM"
  1. W !
  1. D ^DIC
  1. K DIE,DIC,DINUM,DR,DA,DD,DO,DIK,DLAYGO
  1. I Y<1 S BYIMQUIT="" Q
  1. S ^TMP($J,"BYIM RT",+Y)=""
  1. D RTPAT
  1. Q
  1. ;-----
  1. SEND ;SEND RT QUERY
  1. W !!,$S(RT="VXQ":"A 'Query for Vaccination Record ("_BYIMQTX_")'",1:"An 'Unsolicited Vaccine Record Update (VXU)'")," will be sent for:"
  1. D RTPAT
  1. K DIR
  1. S DIR(0)="YO"
  1. S DIR("A")="Do you want to proceed"
  1. S DIR("B")="YES"
  1. W !
  1. D ^DIR
  1. K DIR
  1. Q:Y'=1
  1. I '$D(ZTQUEUED)&$D(^TMP($J,"BYIM RT")) D
  1. .W !!,"Please stand by. This may take a couple of seconds...",!
  1. S DFN=0
  1. F S DFN=$O(^TMP($J,"BYIM RT",DFN)) Q:'DFN D
  1. .D:RT="VXQ" VXQ(DFN)
  1. .D:RT="VXU" VXU(DFN)
  1. .K ^TMP($J,"BYIM RT",DFN)
  1. K ^TMP($J,"BYIM RT")
  1. D PAUSE^BYIMIMM6
  1. Q
  1. ;-----
  1. RTPAT ;DISPLAY PATIENTS FOR RT QUERY
  1. N DFN
  1. W !
  1. S DFN=0
  1. F S DFN=$O(^TMP($J,"BYIM RT",DFN)) Q:'DFN D
  1. .W !," *** ",$P(^DPT(DFN,0),U)," *** "
  1. Q
  1. ;-----
  1. VXQ(DFN) ;EP;TO SEND VXQ MESSAGE
  1. W:'$D(ZTQUEUED) !,"Query being sent for: ",$J(DFN,6)," ",$P(^DPT(DFN,0),U)
  1. D DELAY
  1. S Y=$$VXQX(DFN)
  1. Q
  1. DELAY Q:$D(ZTQUEUED)
  1. W " "
  1. F J=1:1:3 W "." H 1
  1. Q
  1. ;-----
  1. VXU(DFN) ;EP;TO SEND VXU MESSAGE
  1. N VST
  1. S VST=$O(^AUPNVSIT("AC",DFN,9999999999),-1)
  1. Q:'VST
  1. S Y=$$V04^BYIMIMM(VST,BYIMALL)
  1. W:'$D(ZTQUEUED) !,"Immunization record being sent for: ",$J(DFN,6)," ",$P(^DPT(DFN,0),U)
  1. D DELAY
  1. S INHF=+Y
  1. Q:'INHF
  1. S BYIMUIF=$O(^INTHU("AT",INHF,0))
  1. Q:'BYIMUIF
  1. D LOGD^BYIMIMM4(DFN,"E")
  1. D RXR(BYIMUIF)
  1. S BYIMSTP="VXU"
  1. D SFILE(BYIMUIF,DFN,BYIMSTP)
  1. D CLEANVXU(BYIMUIF)
  1. Q
  1. ;-----
  1. RSP ;EP;IMMUNIZATION DATA EXCHANGE
  1. S BHLDEST="D DEST^INHUSEN"
  1. S INDEST("RSPK11")="HL IHS IZV04 RSP IN"
  1. X BHLDEST
  1. Q
  1. ;-----
  1. RESP ;EP;REVIEW RT RESPONSE FILES
  1. K BYIMQUIT
  1. F D RESP1 Q:$D(BYIMQUIT)
  1. Q
  1. ;-----
  1. RESP1 ;REVIEW RESPONSES
  1. K BYIMQUIT
  1. K ^TMP($J,"BYIM RT")
  1. N DFN,RT
  1. W @IOF
  1. W !!?10,"Review Responses from the State IIS"
  1. K DIR
  1. S DIR(0)="SO^1:Review Immunizations ready to add to RPMS;2:Review Query Response Messages"
  1. S DIR("A")="Select the action type"
  1. W !
  1. D ^DIR
  1. K DIR,BYIMQUIT
  1. I 'Y S BYIMQUIT=1 Q
  1. S RT=$S(Y=1:"START",1:"NON")
  1. I RT="START" D START Q
  1. F D NON Q:$D(BYIMQUIT)
  1. K BYIMQUIT
  1. Q
  1. ;-----
  1. START ;
  1. W @IOF
  1. W !!?10,"All NEW immunizations for Query Responses from the state"
  1. W !!?10,"that can be added to RPMS will be listed below."
  1. W !!
  1. S DIR("A")="Press <ENTER> to review immunizations, press '^' to exit"
  1. D PAUSE^BYIMIMM6
  1. Q:'Y
  1. D START^BYIMIMM1
  1. Q
  1. ;-----
  1. NON ;EP;TO REVIEW NON-IMMUNIZATION IIS RESPONSES
  1. W @IOF
  1. W !!?10,"Select Responses by Patient or Date"
  1. K DIE,DIC,DINUM,DR,DA,DD,DO,DIK,DLAYGO
  1. S DIC="^BYIMRT("
  1. S DIC(0)="AEMQ"
  1. S DIC("A")="Select Query Date or Patient: "
  1. S DIC("S")="I $P(^(0),U,2)=""E"""
  1. W !
  1. D ^DIC
  1. K DIE,DIC,DINUM,DR,DA,DD,DO,DIK,DLAYGO
  1. I Y<0 S BYIMQUIT=1 Q
  1. D DISP(+Y)
  1. Q
  1. ;-----
  1. RTIMP(FILE) ;EP;TO AUTOMATICALLY IMPORT REAL-TIME MESSAGES
  1. K BYIMQUIT
  1. N AUTOIMP,AUTOADD,DIR
  1. S AUTOIMP=$P($G(^BYIMPARA(DUZ(2),0)),U,4)
  1. S AUTOADD=$P($G(^BYIMPARA(DUZ(2),0)),U,5)
  1. D PATH^BYIMIMM6
  1. Q:IPATH=""
  1. S Y=$$OPEN^%ZISH(IPATH,FILE,"R")
  1. Q:Y
  1. N BYIMJ,BYIMX,UIF
  1. S UIF=""
  1. S BYIMJ=0
  1. ;F U IO R BYIMX:DTIME D:BYIMX="" CLOSE^%ZISH() Q:BYIMX="" D
  1. ;.I BYIMX["MSH|" D Q:'UIF
  1. ;..D NEWUIF
  1. ;.I BYIMX["MSH|" D NEWUIF Q:'UIF
  1. ;.S BYIMJ=BYIMJ+1
  1. ;.S ^INTHU(UIF,3,BYIMJ,0)=BYIMX_"|CR|"
  1. D LOG(UIF,"I",FILE)
  1. N BYIMXX
  1. S BYIMXX=0
  1. F S BYIMXX=$O(^BYIMTMP($J,"BYIM IMM",BYIMXX)) Q:'BYIMXX D
  1. .D SET1^BYIMIMM1(BYIMXX)
  1. Q
  1. ;-----
  1. LOG(UIF,ACT,FILE) ;LOG RT FILE
  1. Q:'$G(UIF)
  1. S ^BYIMTMP($J,"BYIM IMM",UIF)=""
  1. N XX,DFN
  1. S DFN=$P(FILE,"_",2)
  1. S MID=""
  1. S XX=0
  1. S:MID'["IHS-" MID=""
  1. D RTLOG(FILE,ACT,IPATH,DFN,UIF,MID,0)
  1. Q
  1. ;-----
  1. VXQX(BYIMPAT) ;PEP;send query request for patient IEN - BYIMPAT
  1. ;BYIMPAT - PATIENT DFN/IEN
  1. ;RETURNS GIS HL7 MESSAGE CREATION MESSAGE
  1. ;
  1. I '$G(BYIMPAT)!'$D(^DPT(+$G(BYIMPAT),0)) Q "No Patient identified for DFN "_$G(BYIMPAT)
  1. D PATH^BYIMIMM6
  1. S BYIMQTX=$S(BYIMQT=1:"VXQ",1:"QBP")
  1. N BYIMDEST,INH,INDA,INA
  1. S INDA=BYIMPAT
  1. S INDA(2,1)=BYIMPAT
  1. S INDA(9000001,1)=BYIMPAT
  1. S INA("QNM",INDA)=""
  1. S BYIMDEST=$S(BYIMQT=1:"HL IHS IZV04 V01VXQ OUT PARENT",1:"HL IHS IZV04 QBP OUT PARENT")
  1. D ^INHF(BYIMDEST,.INDA,.INA)
  1. H 2
  1. I $G(INHF) D
  1. .S BYIMUIF=$O(^INTHU("AT",INHF,0))
  1. .Q:'BYIMUIF
  1. .S BYIMSTP=BYIMQTX
  1. .D SFILE(BYIMUIF,BYIMPAT,BYIMSTP)
  1. D EOJ^BYIMIMM
  1. Q $$MSG^BYIMIMM(INHF)
  1. ;-----
  1. SFILE(BYIMUIF,BYIMPAT,BYIMSTP) ;EP;TO SEND RT FILE VIA HL7 BRIDGE
  1. ;BYIMUIF - THE IEN OF THE ^INTHU( ENTRY FOR THE MESSAGE
  1. ;BYIMPAT - THE IEN OF PATIENT
  1. ;BYIMSTP - MESSAGE TYPE
  1. Q:'$G(BYIMUIF)!'$G(BYIMPAT)
  1. S BYIMSTP=$TR(BYIMSTP,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")
  1. S MID=""
  1. D PATH^BYIMIMM6
  1. D NOW^%DTC
  1. S QFILE="izrt"_BYIMSTP_$TR(BYIMVER,".")_"_"_$E("000000",1,6-$L(BYIMPAT))_BYIMPAT_"_"_($P(%,".")+17000000)_"_"_$P(%,".",2)_$E("000000",1,6-$L($P(%,".",2)))_".dat"
  1. S ACT="W"
  1. D FILE(OPATH,QFILE,ACT,BYIMUIF,BYIMPAT,BYIMSTP)
  1. Q
  1. FILE(PATH,FILE,ACT,BYIMUIF,BYIMPAT,BYIMSTP) ;SEND FILE
  1. ;OPATH - PATH FOR TRANSMISSION
  1. ;FILE - FILE NAME
  1. ;ACT - ACTION
  1. ;BYIMUIF - IEN IN ^INTHU
  1. ;BYIMPAT - PATIENT DFN
  1. ;BYIMSTP -
  1. S Y=$$OPEN^%ZISH(PATH,FILE,ACT)
  1. I Y D Q
  1. .D EXPBULL^BYIMIMM4(FILE,0,PATH)
  1. .D RTLOG(FILE,"E",PATH,BYIMPAT,BYIMUIF,MID,1)
  1. N X,XX
  1. D REFUSAL^BYIMSEG1(BYIMPAT,BYIMUIF)
  1. S X=""
  1. S XX=0
  1. F S XX=$O(^INTHU(BYIMUIF,3,XX)) Q:'XX S READ=^(XX,0) D F1
  1. D CLOSE^%ZISH()
  1. D RTLOG(QFILE,"E",OPATH,BYIMPAT,BYIMUIF,MID,0)
  1. Q:BYIMBDG<1
  1. N BYIMRTIN
  1. S BYIMRTIN=0
  1. D RTIN
  1. Q
  1. ;-----
  1. F1 ;WRTIE OUT EACH LINE
  1. S X=X_$P(READ,"|CR|")
  1. Q:READ'["|CR|"
  1. S:X["MSH|" MID=$P(X,"|",10)
  1. S:'BYIMIN1&($E(X,1,4)["IN1|"!($E(X,1,4)["IN2|")) X=""
  1. S:$E(X,1,5)="RXR||" X=""
  1. S:X["RXR|ZZZ" X=""
  1. S:X["OBX|"&(X["V00") X=""
  1. S:"|MSH|FHS|BHS|BTS|FTS|"'[("|"_$E(X,1,3)_"|") X=$TR(X,"\&")
  1. I X]"" U IO W X,!
  1. S X=""
  1. Q
  1. ;-----
  1. RTIN ;EP;CHECK REAL-TIME INBOUND FILES
  1. N DIR,FILE
  1. D PATH^BYIMIMM6
  1. S DIR=$$LIST^%ZISH(IPATH,"izrt*",.DIR)
  1. N IN
  1. S IN=0
  1. F S IN=$O(DIR(IN)) Q:'IN S FILE=DIR(IN) D:FILE]""
  1. .Q:$D(^BYIMRT("ACT",FILE,"I"))
  1. .D RTIMP(FILE)
  1. .I $G(BYIMRTIN) W !,FILE," processed..."
  1. Q
  1. ;-----
  1. RTDEST ;EP;CHECK DESTINATION GLOBAL FOR RT MESSAGES
  1. S BYIMDEST=$S(BYIMVER["2.3":"HL IHS IZV04 V01VXQ OUT PARENT",1:"HL IHS IZV04 QBP OUT PARENT")
  1. S BYIMDDA=$O(^INRHD("B",BYIMDEST,0))
  1. Q:'BYIMDDA
  1. N PRI
  1. S PRI=0
  1. F S PRI=$O(^INLHDEST(BYIMDDA,PRI)) Q:'PRI D
  1. .N BYIMDT
  1. .S BYIMDT=""
  1. .F S BYIMDT=$O(^INLHDEST(BYIMDDA,PRI,BYIMDT)) Q:BYIMDT="" D
  1. ..N BYIMUIF
  1. ..S BYIMUIF=0
  1. ..F S BYIMUIF=$O(^INLHDEST(BYIMDDA,PRI,BYIMDT,BYIMUIF)) Q:'BYIMUIF D
  1. ...Q:'$D(^INTHU(BYIMUIF,3))
  1. ...D UIF(BYIMUIF)
  1. Q
  1. ;-----
  1. UIF(BYIMUIF) ;PROCESS UIF
  1. Q:'$G(BYIMUIF)
  1. Q:'$D(^INTHU(BYIMUIF,3))
  1. N XX
  1. S XX=$G(^INTHU(BYIMUIF,3,2))
  1. Q:XX=""
  1. N DFN,HRN,LOC,HRN,LOCDA,X,Y,Z
  1. S HRN=""
  1. S:XX["PID|" HRN=$P(XX,"|",4)
  1. S:XX["QRD|" HRN=$P($P(XX,"|",9),U)
  1. S:XX["QPD|" HRN=$P(XX,"|",3)
  1. S LOC=$E(HRN,1,6)
  1. S HRN=+$E(HRN,7,12)
  1. S LOCDA=$O(^AUTTLOC("C",LOC,0))
  1. Q:'LOCDA!'HRN
  1. S DFN=""
  1. S X=0
  1. F S X=$O(^AUPNPAT("D",HRN,X)) Q:'X!DFN I $D(^AUPNPAT("D",HRN,X,LOCDA)) S DFN=X
  1. Q:'DFN
  1. S BYIMSTP="IN"
  1. D SFILE(BYIMUIF,DFN,BYIMSTP)
  1. Q
  1. ;-----
  1. RTLOG(FILE,ACT,PATH,DFN,UIF,MID,STAT) ;EP;
  1. ;LOG EXPORT/IMPORT FILES THAT HAVE BEEN PROCESSED
  1. ;FILE = NAME OF FILE IMPORTED OR EXPORTED
  1. ;ACT = ACTION - 'I'MPORT OR 'E'XPORT
  1. ;PATH = DRIVE/DIRECTORY FILE SENT TO
  1. ;DFN = DFN OF PATIENT FOR QUERY/RESPONSE
  1. ;UIF = IEN OF THE UNIVERSAL MESSAGE ENTRY
  1. ;MID = MESSAGE ID ASSIGNED FOR THE UNIVERSAL MESSAGE ENTRY
  1. ;STAT = TRANSMITTION STATUS
  1. Q:$G(FILE)=""!($G(ACT)="")
  1. K DIE,DIC,DINUM,DR,DA,DD,DO,DIK,DLAYGO
  1. S X=FILE
  1. S DIC="^BYIMRT("
  1. S DIC(0)="L"
  1. S DIC("DR")=".02////"_ACT_";.03////"_PATH_";.04////"_DFN_";.05////"_($P(FILE,"_",3)-17000000)_"."_$P($P(FILE,"_",4),".")_";.06////"_MID_";.07////"_UIF_";.08////"_$G(STAT)
  1. D FILE^DICN
  1. K DIE,DIC,DINUM,DR,DA,DD,DO,DIK,DLAYGO
  1. Q:Y<1
  1. S RTLDA=+Y
  1. S ^BYIMRT(RTLDA,1,0)="^90480.21"
  1. N X
  1. S X=0
  1. F S X=$O(^INTHU(UIF,3,X)) Q:'X S ^BYIMRT(RTLDA,1,X,0)=^(X,0),Z=X
  1. S $P(^BYIMRT(RTLDA,1,0),U,3)=Z
  1. S $P(^BYIMRT(RTLDA,1,0),U,4)=Z
  1. Q
  1. ;-----
  1. DISP(RTLDA) ;DISPLAY RESPONSE FILE
  1. D HDR
  1. N XX,BYIMQUIT
  1. S MID=$P(^BYIMRT(RTLDA,0),U,6)
  1. S FILE=$P(^BYIMRT(RTLDA,0),U)
  1. S XX=0
  1. S MIDDA=$O(^BYIMRT("ACT",FILE,"I",0))
  1. I 'MIDDA D Q
  1. .W !!,"No response on file yet for this query."
  1. .D PAUSE^BYIMIMM6
  1. D MID
  1. K BYIMQUIT
  1. Q
  1. ;-----
  1. HDR ;QUERY RESPONSE DISPLAY HEADER
  1. W @IOF
  1. HDR1 W !!,"Query for Patient",?26,"Query Date",?38,"Query file"
  1. W !,"------------------------",?26,"----------",?38,"-------------------------------"
  1. N X0
  1. S X0=$G(^BYIMRT(RTLDA,0))
  1. W !,$P($G(^DPT(+$P(X0,U,4),0)),U)
  1. S X1=$P(X0,U,5)
  1. W ?26,$E(X1,4,5),"/",$E(X1,6,7),"/",$E(X1,1,3)+1700
  1. W ?38,$P(X0,U)
  1. Q
  1. ;-----
  1. HDR2 ;DISPLAY RELATED MESSAGE
  1. W !!!,"HL7 Response Message"
  1. W:$P(^BYIMRT(MIDDA,0),U,6)]"" " ID: ",$P(^(0),U,6)
  1. W !,"*******************************************************"
  1. W !
  1. Q
  1. ;-----
  1. NEWUIF ;CREATE INTHU ENTRY
  1. K DIE,DIC,DINUM,DR,DA,DD,DO,DIK,DLAYGO
  1. D NOW^%DTC
  1. S X=%
  1. S DIC="^INTHU("
  1. S DIC(0)="L"
  1. D FILE^DICN
  1. K DIE,DIC,DINUM,DR,DA,DD,DO,DIK,DLAYGO
  1. S UIF=+Y
  1. Q
  1. ;-----
  1. MID ;DISPLAY MESSAGE RESPONSES
  1. S MIDDA=0
  1. F S MIDDA=$O(^BYIMRT("ACT",FILE,"I",MIDDA)) Q:'MIDDA!$G(BYIMQUIT) D MID1
  1. K BYIMQUIT
  1. Q
  1. ;-----
  1. MID1 ;
  1. D HDR2
  1. N XX,BYIMQUIT
  1. S XX=0
  1. F S XX=$O(^BYIMRT(MIDDA,1,XX)) Q:'XX!$D(BYIMQUIT) S X=^(XX,0) D
  1. .I X["MSH|",X["|VXU" D DVXU(X) S BYIMQUIT=1 Q
  1. .W !,X
  1. .I IOST["C-",IOSL<($Y+4) D PAUSE^BYIMIMM6 S:X[U BYIMQUIT=1 W @IOF
  1. D PAUSE^BYIMIMM6
  1. Q
  1. ;-----
  1. VXQV01(UIF) ;EP;TO DISPLAY VXQ^V01 QUERY
  1. ;UIF - IEN OF THE UNIVERSAL INTERFACE ENTRY
  1. Q:'$G(UIF)
  1. S MSH=$G(^INTHU(UIF,3,1,0))
  1. S QRD=$G(^INTHU(UIF,3,2,0))
  1. S QRF=$G(^INTHU(UIF,3,1,0))
  1. Q:MSH=""
  1. W !!,"Message ID: ",$P(MSH,"|",10)
  1. W !,"Patient HRN: ",+$E($P(QRD,"|",9),7,12)," Facility: ",$P($G(^DIC(4,+$E($P(QRD,"|",9),1,6),0)),U)
  1. Q
  1. ;-----
  1. RXR(BYIMUIF) ;EP;CLEAN OUT BLANK RXR AND '0' OBX segments
  1. N X,Y
  1. S X=0
  1. F S X=$O(^INTHU(BYIMUIF,3,X)) Q:'X S Y=^(X,0) D
  1. .K:$E(Y,1,5)="RXR||" ^INTHU(BYIMUIF,3,X,0)
  1. .K:Y["OBX|"&(Y["V00") ^INTHU(BYIMUIF,3,X,0)
  1. Q
  1. ;-----
  1. DVXU(X) ;DISPLAY RT VXU MESSAGE
  1. N DISP,HDR
  1. S XX=XX
  1. F S XX=$O(^BYIMRT(MIDDA,1,XX)) Q:'XX!$G(BYIMQUIT) S X=^(XX,0) D
  1. .D:X["PID|" PID(X)
  1. .D:X["RXA|" RXA(X)
  1. Q:'$D(DISP)
  1. F J=1:1:6 W !,HDR(J)
  1. N XX,YY
  1. S XX=""
  1. F S XX=$O(DISP(XX)) Q:XX=""!$G(BYIMQUIT) D
  1. .S YY=""
  1. .F S YY=$O(DISP(XX,YY)) Q:YY=""!$G(BYIMQUIT) S Z=DISP(XX,YY) D
  1. ..W !,XX,?12,YY
  1. ..W ?39,$J($P(Z,U),4)
  1. ..W ?45,$P(Z,U,2)
  1. ..W ?54,$P(Z,U,3)
  1. ..W ?69,$P(Z,U,4)
  1. .I IOST["C-",IOSL<($Y+4) D
  1. ..D PAUSE^BYIMIMM6
  1. ..S:X[U BYIMQUIT=1
  1. ..Q:$G(BYIMQUIT)
  1. ..W @IOF
  1. ..F J=1:1:6 W !,HDR(J)
  1. Q
  1. MSH ;DISPLAY RT MSH SEGMENT
  1. W !,$TR($P(X,"|",3),"^"," ")," ",$TR($P(X,"|",4),"^"," ")," "
  1. S Y=$P(X,"|",7)
  1. W $E(Y,1,4),"-",$E(Y,5,6),"-",$E(Y,7,8)," ",$P(X,"|",9)," ",$P(X,"|",11)
  1. Q
  1. ;-----
  1. PID(X) ;DISPLAY RT PID SEGMENT
  1. N Y,Z
  1. S Y="NAME"
  1. S $E(Y,33)="DOB"
  1. S $E(Y,45)="SEX"
  1. S HDR(1)=Y
  1. S HDR(2)="------------------------------ ---------- ---"
  1. S Y=$P(X,"|",6)
  1. S Y=$P(Y,U)_","_$P(Y,U,2)_" "_$P(Y,U,3)
  1. S Z=$P(X,"|",8)
  1. S $E(Y,33)=$E(Z,1,4)_"-"_$E(Z,5,6)_"-"_$E(Z,7,8)
  1. S $E(Y,45)=$P(X,"|",9)
  1. S HDR(3)=Y
  1. S HDR(4)=""
  1. S Y="ADMIN DATE"
  1. S $E(Y,13)="CVX VACCINE NAME"
  1. S $E(Y,40)="QUAN"
  1. S $E(Y,46)="TYPE"
  1. S $E(Y,55)="LOT NO."
  1. S $E(Y,70)="EXP. DATE"
  1. S HDR(5)=Y
  1. S Y="----------"
  1. S $E(Y,13)="--- --------------------"
  1. S $E(Y,40)="----"
  1. S $E(Y,46)="-------"
  1. S $E(Y,55)="-------------"
  1. S $E(Y,70)="---------"
  1. S HDR(6)=Y
  1. Q
  1. ;-----
  1. RXA(X) ;DISPLAY RT RXA SEGMENT
  1. N Y,Z,AD,IMM,QUAN,TYPE,LOT,EXP
  1. S Y=$P(X,"|",4)
  1. S AD=$E(Y,1,4)_"-"_$E(Y,5,6)_"-"_$E(Y,7,8)
  1. S Y=$P(X,"|",6)
  1. S CVX=$P(Y,U)
  1. S IMM=$J(CVX,3)_" "_$E($P(Y,U,2),1,20)
  1. S QUAN=$TR($P(X,"|",7),"^")
  1. S TYPE=$TR($E($P($P(X,"|",10),U,2),1,7),"^")
  1. S LOT=$TR($P(X,"|",16),"^")
  1. S Y=$TR($P(X,"|",17),"^")
  1. S EXP=$E(Y,1,4)_"-"_$E(Y,5,6)_"-"_$E(Y,7,8)
  1. S DISP(AD,IMM)=QUAN_U_TYPE_U_LOT_U_EXP
  1. Q
  1. ;-----
  1. ALL ;EP;TO SPECIFY NEW ONLY OR ALL IMMUNIZATIONS
  1. K BYIMALL
  1. W !!,"Which immunizations should be include:"
  1. K DIR
  1. S DIR(0)="SO^1:NEW/EDITED Immunizations (not previously exported);2:ALL Immunizations for exported patient(s)"
  1. S DIR("A")="Send NEW or ALL Immunizations"
  1. S DIR("B")="NEW/EDITED Immunizations"
  1. D ^DIR
  1. K DIR
  1. I 'Y S BYIMQUIT=1 Q
  1. S BYIMALL=+Y
  1. Q
  1. ;-----
  1. CLEANVXU(BYIMUIF) ;REMOVE INLHDEST REMNANT FOR RT MESSAGES
  1. Q:'$G(BYIMUIF)
  1. N X,Y,Z
  1. S X=0
  1. F S X=$O(^INLHDEST(X)) Q:'X D
  1. .S Y=""
  1. .F S Y=$O(^INLHDEST(X,Y)) Q:Y="" D
  1. ..S Z=""
  1. ..F S Z=$O(^INLHDEST(X,Y,Z)) Q:Z="" K ^INLHDEST(X,Y,Z,BYIMUIF)
  1. Q
  1. ;