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

APCSHLO.m

Go to the documentation of this file.
  1. APCSHLO ;cmi/flag/maw - APCL ILI CDC HL7 Export 5/12/2010 9:26:17 AM
  1. ;;3.0;IHS PCC REPORTS;**28**;FEB 05, 1997
  1. ;
  1. ;
  1. ;ihs/cmi/maw - 9/8/2010 added new segments based on patch 5 requirements
  1. ;
  1. ILI(TYPE) ;EP - lets create the ILI HL7 export here
  1. D BATCH(.HLPARM,TYPE)
  1. D APCSDATA(.HLMSTATE,.HLPARM,TYPE)
  1. I $G(HLMSTATE("IEN")) D GL(HLMSTATE("IEN"),TYPE) ;ihs/cmi/maw 11/23/2010 added $G
  1. Q
  1. ;
  1. BATCH(HLPARM,TYP) ;-- start the message batch here
  1. S HLPARM("COUNTRY")="USA"
  1. S HLPARM("VERSION")="2.5.1"
  1. I '$$NEWBATCH^HLOAPI(.HLPARM,.HLMSTATE,.ERROR) D Q
  1. . S ERR=$G(ERR)
  1. Q
  1. ;
  1. APCSDATA(HLMSTATE,HLPARM,TYP) ;-- loop through ^APCSDATA here and create each message
  1. N APCSDA,APCSCNT,APCSREC
  1. S APCSCNT=0
  1. S APCSDA=0 F S APCSDA=$O(^APCSDATA($J,APCSDA)) Q:'APCSDA D
  1. . S APCSCNT=APCSCNT+1
  1. . S APCSREC=$G(^APCSDATA($J,APCSDA))
  1. . N I
  1. . I TYP="ILI" F I=1:1:106 S APCSREC(I)=$P(APCSREC,",",I)
  1. . I TYP="ILILAB" D NEWMSG(.HLMSTATE,.HLPARM,APCSDA,"ORU","R01",TYP) Q
  1. . D NEWMSG(.HLMSTATE,.HLPARM,.APCSREC,"ADT","A08",TYP)
  1. Q
  1. ;
  1. NEWMSG(HLST,HLPM,RC,MTYPE,EVNTTYPE,TYP) ;EP
  1. N ARY,HLQ,APPARMS,HLMSGIEN,HLECH,HLFS,ERR,WHO
  1. N LN,HL1,HRCN,FLD,LP,X,LN
  1. S LN=0
  1. S HLPM("MESSAGE TYPE")=MTYPE
  1. S HLPM("EVENT")=EVNTTYPE
  1. ;S HLPM("VERSION")="2.5.1"
  1. I '$$ADDMSG^HLOAPI(.HLST,.HLPM,.ERR) D Q
  1. .S ERR=$G(ERR)
  1. S HLFS=HLPM("FIELD SEPARATOR")
  1. S HLECH=HLPM("ENCODING CHARACTERS")
  1. S HL1("ECH")=HLECH
  1. S HL1("FS")=HLFS
  1. S HL1("Q")=""
  1. S HL1("VER")=HLPM("VERSION")
  1. ;Create segments
  1. ;
  1. D EVN(MTYPE,EVNTTYPE)
  1. I TYP="ILI" D
  1. . I '$D(ERR) D PID(.RC)
  1. . I '$D(ERR) D PV1(.RC)
  1. . I '$D(ERR),$G(RC(8))]"" D DG1(.RC,1,RC(8))
  1. . I '$D(ERR),$G(RC(9))]"" D DG1(.RC,2,RC(9))
  1. . I '$D(ERR),$G(RC(10))]"" D DG1(.RC,3,RC(10))
  1. . I '$D(ERR),$G(RC(11))]"" D OBX(.RC)
  1. . I '$D(ERR) D ZLI(.RC)
  1. . ;I '$D(ERR),$G(RC(23))]"" D ZAV(.RC,1,RC(23),RC(24))
  1. . ;I '$D(ERR),$G(RC(25))]"" D ZAV(.RC,2,RC(25),RC(26))
  1. . ;I '$D(ERR),$G(RC(27))]"" D ZAV(.RC,3,RC(27),RC(28))
  1. . ;I '$D(ERR),$G(RC(29))]"" D ZAV(.RC,4,RC(29),RC(30))
  1. . I '$D(ERR),$G(RC(23))]"" D ZSR(.RC,1,RC(45))
  1. . I '$D(ERR),$G(RC(25))]"" D ZSR(.RC,2,RC(46))
  1. . I '$D(ERR),$G(RC(27))]"" D ZSR(.RC,3,RC(47))
  1. . I '$D(ERR),$G(RC(29))]"" D ZSR(.RC,4,RC(48))
  1. . I '$D(ERR),$G(RC(66))]"" D ZAN(.RC)
  1. . I '$D(ERR),$G(RC(71))]"" D ZCV(.RC)
  1. . ;I '$D(ERR),$G(RC(49))]"" D ZAE(.RC,1,RC(49))
  1. . ;I '$D(ERR),$G(RC(50))]"" D ZAE(.RC,2,RC(50))
  1. . ;I '$D(ERR),$G(RC(51))]"" D ZAE(.RC,3,RC(51))
  1. . ;I '$D(ERR),$G(RC(52))]"" D ZAE(.RC,4,RC(52))
  1. . ;I '$D(ERR),$G(RC(53))]"" D ZAS(.RC,1,RC(53),RC(54))
  1. . ;I '$D(ERR),$G(RC(53))]"" D ZAS(.RC,1,RC(55),RC(56))
  1. . ;I '$D(ERR),$G(RC(53))]"" D ZAS(.RC,1,RC(57),RC(58))
  1. . ;do ZAN here
  1. . ;do ZCV here
  1. I TYPE="ILILAB" D
  1. . I '$D(ERR) D PIDLAB(RC)
  1. . I '$D(ERR) D ZIDLAB(RC)
  1. . I '$D(ERR) D PV1LAB(RC)
  1. . I '$D(ERR) D OBXLAB(RC)
  1. . S APCSFCNT=0
  1. . I '$D(ERR) D DG1LAB(RC)
  1. . I '$D(ERR) D PR1LAB(RC) ;TODO set this up for CPT's, need to look at loris lab code
  1. . K APCSFCNT
  1. I '$D(ERR) D
  1. .; Define sending and receiving parameters
  1. .S APPARMS("SENDING APPLICATION")="RPMS-ILI"
  1. .S APPARMS("ACCEPT ACK TYPE")="AL" ;Commit ACK type
  1. .S APPARMS("APP ACK RESPONSE")="AACK^APCLSHL" ;Callback when 'application ACK' is received
  1. .S APPARMS("ACCEPT ACK RESPONSE")="CACK^APCLSHL" ;Callback when 'commit ACK' is received
  1. .S APPARMS("APP ACK TYPE")="AL" ;Application ACK type
  1. .S APPARMS("QUEUE")="ILI ADT" ;Incoming QUEUE
  1. .S WHO("RECEIVING APPLICATION")="CDC"
  1. .S WHO("FACILITY LINK NAME")="ILI"
  1. .;S WHO("STATION NUMBER")=11555 ;Used for testing on external RPMS system
  1. .I '$$SENDONE^HLOAPI1(.HLST,.APPARMS,.WHO,.ERR) D
  1. .. S ERR=$G(ERR)
  1. .;. NOTIF(DFN,"Unable to send HL7 message."_$S($D(ERR):" ERR:"_$G(ERR),1:""))
  1. Q
  1. ;
  1. AACK ; EP - Application ACK callback - called when AA, AE or AR is received.
  1. N DATA,AACK,XQAID,XQDATA,XQA,XQAMSG,MSGID
  1. Q:'$G(HLMSGIEN)
  1. S MSGID=$P($G(^HLB(+HLMSGIEN,0)),U)
  1. S AACK=$G(^HLB(HLMSGIEN,4))
  1. I $P(AACK,U,3)'["|AA|" D
  1. .S XQAMSG="ILI message "_MSGID_" did not receive a correct application ack."
  1. .S XQAID="ILI,"_MSGID_","_50
  1. .S XQDATA=$P(AACK,U,3)
  1. .S XQA("G.APCS ILI")=""
  1. .D SETUP^XQALERT
  1. Q
  1. ;
  1. CACK ; EP - Commit ACK callback - called when CA, CE or CR is received.
  1. N CACK,XQAID,XQAMSG,XQA,XQDATA,MSGID
  1. S MSGID=$P($G(^HLB(+HLMSGIEN,0)),U)
  1. S CACK=$G(^HLB(HLMSGIEN,4))
  1. I $P(CACK,U,3)'["|CA|" D
  1. .S XQAMSG="ILI message "_MSGID_" did not receive a correct commit acknowledgement."
  1. .S XQAID="ILI,"_MSGID_","_50
  1. .S XQDATA=$P(CACK,U,3)
  1. .S XQA("G.APCS ILI")=""
  1. .D SETUP^XQALERT
  1. Q
  1. ;
  1. ERR ;
  1. Q
  1. ;
  1. EVN(MTYPE,EVNTTYPE) ;Create the EVN segment
  1. N %,X,FLD,VAL
  1. D NOW^%DTC
  1. S X=$$HLDATE^HLFNC(%,"TS")
  1. D SET(.ARY,"EVN",0)
  1. D SET(.ARY,EVNTTYPE,1)
  1. ;S FLD=MTYPE_"^"_EVNTTYPE
  1. ;F LP=1:1:$L(FLD,$E(HLECH)) S VAL=$P(FLD,$E(HLECH),LP) D
  1. ;.D SET(.ARY,VAL,5,LP)
  1. D SET(.ARY,X,2)
  1. ;D SET(.ARY,"01",4)
  1. S X=$$ADDSEG^HLOAPI(.HLST,.ARY,.ERR)
  1. Q
  1. ; Create PID segment
  1. PID(R) ;EP
  1. S HLQ=HL1("Q")
  1. D SET(.ARY,"PID",0)
  1. D SET(.ARY,1,1)
  1. D SET(.ARY,R(1),2)
  1. D SET(.ARY,R(2),3) ; Patient HRN
  1. D SET(.ARY,R(3),8)
  1. D SET(.ARY,$$HLD(R(4)),7)
  1. D SET(.ARY,R(5),11,8)
  1. S X=$$ADDSEG^HLOAPI(.HLST,.ARY,.ERR)
  1. ;I $D(ERR) D NOTIF(DFN,ERR)
  1. Q
  1. ;
  1. ; Create PID segment
  1. PIDLAB(R) ;EP
  1. N PID,PID3,PID8,PID7
  1. S PID=$G(^APCSDATA($J,R,"PID"))
  1. S PID3=$P(PID,U)
  1. S PID8=$P(PID,U,2)
  1. S PID7=$P(PID,U,3)
  1. S HLQ=HL1("Q")
  1. D SET(.ARY,"PID",0)
  1. D SET(.ARY,1,1)
  1. D SET(.ARY,PID3,3) ; Patient HRN
  1. D SET(.ARY,PID8,8)
  1. D SET(.ARY,PID7,7)
  1. S X=$$ADDSEG^HLOAPI(.HLST,.ARY,.ERR)
  1. ;I $D(ERR) D NOTIF(DFN,ERR)
  1. Q
  1. ;
  1. ZIDLAB(R) ;-- create the ZID segment
  1. N ZID,ZID1
  1. S ZID=$G(^APCSDATA($J,R,"ZID"))
  1. S ZID1=$P(ZID,U)
  1. D SET(.ARY,"ZID",0)
  1. D SET(.ARY,1,1)
  1. D SET(.ARY,ZID1,2)
  1. S X=$$ADDSEG^HLOAPI(.HLST,.ARY,.ERR)
  1. Q
  1. ;
  1. PV1(R) ;-- setup the JVN PV1 segment
  1. D SET(.ARY,"PV1",0)
  1. D SET(.ARY,1,1)
  1. D SET(.ARY,R(6),3,1)
  1. D SET(.ARY,R(41),3,2)
  1. D SET(.ARY,R(12),15)
  1. D SET(.ARY,R(16),36)
  1. D SET(.ARY,$$HLD(R(7)),44)
  1. D SET(.ARY,$$HLD(R(17)),45)
  1. S X=$$ADDSEG^HLOAPI(.HLST,.ARY,.ERR)
  1. ;I $D(ERR) D NOTIF(DFN,ERR)
  1. Q
  1. ;
  1. PV1LAB(R) ;-- setup the PV1 LAB segment
  1. N PV1,PV13,PV132,PV115,PV144,PV145
  1. S PV1=$G(^APCSDATA($J,R,"PV1"))
  1. S PV13=$P(PV1,U,1)
  1. S PV132=$P(PV1,U,2)
  1. S PV115=$P(PV1,U,3)
  1. S PV144=$P(PV1,U,4)
  1. S PV145=$P(PV1,U,5)
  1. D SET(.ARY,"PV1",0)
  1. D SET(.ARY,1,1)
  1. D SET(.ARY,PV13,3,1)
  1. D SET(.ARY,PV132,3,2)
  1. D SET(.ARY,PV115,15)
  1. D SET(.ARY,PV144,44)
  1. D SET(.ARY,PV145,45)
  1. S X=$$ADDSEG^HLOAPI(.HLST,.ARY,.ERR)
  1. ;I $D(ERR) D NOTIF(DFN,ERR)
  1. Q
  1. ;
  1. DG1(R,SQ,DG13) ;-- set the repeating DG1
  1. D SET(.ARY,"DG1",0)
  1. D SET(.ARY,SQ,1)
  1. D SET(.ARY,"ICD",2)
  1. D SET(.ARY,DG13,3)
  1. S X=$$ADDSEG^HLOAPI(.HLST,.ARY,.ERR)
  1. Q
  1. ;
  1. DG1LAB(R) ;-- set the repeating DG1
  1. N BDA,DG1,DG13
  1. S BDA=0 F S BDA=$O(^APCSDATA($J,R,"DG1",BDA)) Q:'BDA D
  1. . S DG1=$G(^APCSDATA($J,R,"DG1",BDA))
  1. . S DG13=$P(DG1,U)
  1. . S APCSFCNT=APCSFCNT+1
  1. . ;D SET(.ARY,"DG1",0)
  1. . D SET(.ARY,"FT1",0)
  1. . D SET(.ARY,APCSFCNT,1)
  1. . ;D SET(.ARY,"ICD",2)
  1. . ;D SET(.ARY,DG13,3)
  1. . D SET(.ARY,DG13,19)
  1. . S X=$$ADDSEG^HLOAPI(.HLST,.ARY,.ERR)
  1. Q
  1. ;
  1. PR1LAB(R) ;-- set the repeating DG1
  1. N BDA,PR1,PR13
  1. S BDA=0 F S BDA=$O(^APCSDATA($J,R,"PR1",BDA)) Q:'BDA D
  1. . S PR1=$G(^APCSDATA($J,R,"PR1",BDA))
  1. . S PR13=$P(PR1,U)
  1. . S APCSFCNT=APCSFCNT+1
  1. . D SET(.ARY,"FT1",0)
  1. . D SET(.ARY,+$G(APCSFCNT),1)
  1. . D SET(.ARY,PR13,25)
  1. . ;D SET(.ARY,"PR1",0)
  1. . ;D SET(.ARY,BDA,1)
  1. . ;D SET(.ARY,"CPT",2)
  1. . ;D SET(.ARY,PR13,3)
  1. . S X=$$ADDSEG^HLOAPI(.HLST,.ARY,.ERR)
  1. Q
  1. ;
  1. OBX(R) ;-- setup the ILI OBX segment
  1. D SET(.ARY,"OBX",0)
  1. D SET(.ARY,1,1)
  1. D SET(.ARY,"ST",2)
  1. D SET(.ARY,"TMP",3)
  1. D SET(.ARY,R(11),5)
  1. S X=$$ADDSEG^HLOAPI(.HLST,.ARY,.ERR)
  1. Q
  1. ;
  1. OBXLAB(R) ;-- setup the ILI OBX segment
  1. N BDA,OBX,OBX1,OBX2,OBX31,OBX32,OBX5
  1. S BDA=0 F S BDA=$O(^APCSDATA($J,R,"OBX",BDA)) Q:'BDA D
  1. . S OBX=$G(^APCSDATA($J,R,"OBX",BDA))
  1. . S OBX1=$P(OBX,U)
  1. . S OBX2=$P(OBX,U,2)
  1. . S OBX3=$P(OBX,U,3)
  1. . I OBX3'="TMP" D
  1. .. S OBX31=$P(OBX3,"~")
  1. .. S OBX32=$P(OBX3,"~",2)
  1. . S OBX5=$P(OBX,U,4)
  1. . D SET(.ARY,"OBX",0)
  1. . D SET(.ARY,OBX1,1)
  1. . D SET(.ARY,OBX2,2)
  1. . I '$G(OBX31) D SET(.ARY,OBX3,3)
  1. . I $G(OBX31) D
  1. .. I $G(OBX31)]"" D SET(.ARY,OBX31,3,1)
  1. .. D SET(.ARY,OBX32,3,2)
  1. . D SET(.ARY,OBX5,5)
  1. . S X=$$ADDSEG^HLOAPI(.HLST,.ARY,.ERR)
  1. Q
  1. ;
  1. ZLI(R) ;-- setup the ILI ZLI segment
  1. D SET(.ARY,"ZLI",0)
  1. D SET(.ARY,1,1)
  1. D SET(.ARY,R(13),2)
  1. D SET(.ARY,$$HLD(R(14)),3)
  1. D SET(.ARY,R(15),4)
  1. D SET(.ARY,R(18),5)
  1. D SET(.ARY,$$HLD(R(19)),6)
  1. D SET(.ARY,R(20),7)
  1. D SET(.ARY,R(21),8)
  1. D SET(.ARY,R(22),9)
  1. D SET(.ARY,R(33),10)
  1. D SET(.ARY,R(34),11)
  1. D SET(.ARY,R(35),12)
  1. D SET(.ARY,R(36),13)
  1. D SET(.ARY,R(37),14)
  1. D SET(.ARY,$$HLD(R(38)),15)
  1. D SET(.ARY,R(39),16)
  1. D SET(.ARY,$$HLD(R(40)),17)
  1. D SET(.ARY,R(42),18)
  1. D SET(.ARY,R(43),19)
  1. D SET(.ARY,R(44),20)
  1. D SET(.ARY,R(59),21)
  1. D SET(.ARY,R(60),22)
  1. D SET(.ARY,R(61),23)
  1. D SET(.ARY,R(62),24)
  1. D SET(.ARY,R(63),25)
  1. D SET(.ARY,R(64),26)
  1. D SET(.ARY,R(65),27)
  1. S X=$$ADDSEG^HLOAPI(.HLST,.ARY,.ERR)
  1. Q
  1. ;
  1. ZAV(R,SQ,ZAV2,ZAV3) ;-- setup the ILI ZAV segment
  1. D SET(.ARY,"ZAV",0)
  1. D SET(.ARY,SQ,1)
  1. D SET(.ARY,$$HLD(ZAV2),2)
  1. D SET(.ARY,ZAV3,3)
  1. S X=$$ADDSEG^HLOAPI(.HLST,.ARY,.ERR)
  1. Q
  1. ;
  1. ZSR(R,SQ,ZSR2) ;-- setup the ILI ZSR segment
  1. D SET(.ARY,"ZSR",0)
  1. D SET(.ARY,SQ,1)
  1. D SET(.ARY,ZSR2,2)
  1. S X=$$ADDSEG^HLOAPI(.HLST,.ARY,.ERR)
  1. Q
  1. ;
  1. ZAE(R,SQ,ZAE2) ;-- setup the ILI ZAE segment
  1. D SET(.ARY,"ZAE",0)
  1. D SET(.ARY,SQ,1)
  1. D SET(.ARY,ZAE2,2)
  1. S X=$$ADDSEG^HLOAPI(.HLST,.ARY,.ERR)
  1. Q
  1. ;
  1. ZAS(R,SQ,ZAS2,ZAS3) ;-- setup the ILI ZAS segment
  1. D SET(.ARY,"ZAS",0)
  1. D SET(.ARY,SQ,1)
  1. D SET(.ARY,ZAS2,2)
  1. D SET(.ARY,$$HLD(ZAS3),3)
  1. S X=$$ADDSEG^HLOAPI(.HLST,.ARY,.ERR)
  1. Q
  1. ;
  1. ZAN(R) ;-- setup the ILI ZAN segment
  1. N I,ZANC,VAL
  1. S ZANC=1
  1. F I=66:1:70 D
  1. . I $G(R(I))]"" D
  1. .. S VAL=$G(R(I))
  1. .. D SET(.ARY,"ZAN",0)
  1. .. D SET(.ARY,ZANC,1)
  1. .. D SET(.ARY,VAL,2)
  1. .. S X=$$ADDSEG^HLOAPI(.HLST,.ARY,.ERR)
  1. .. S ZANC=ZANC+1
  1. Q
  1. ;
  1. ZCV(R) ;-- setup the ILI ZCV segment
  1. N J,ZCVC,VALC,VALD
  1. S ZCVC=1
  1. F I=71:2:105 D
  1. . I $G(R(I))]"" D
  1. .. S VALC=$G(R(I))
  1. .. S VALD=$G(R(I+1))
  1. .. D SET(.ARY,"ZCV",0)
  1. .. D SET(.ARY,ZCVC,1)
  1. .. D SET(.ARY,VALC,2)
  1. .. D SET(.ARY,VALD,3)
  1. .. S X=$$ADDSEG^HLOAPI(.HLST,.ARY,.ERR)
  1. Q
  1. ;
  1. ; Create MSA segment
  1. MSA ;EP
  1. N MSA
  1. D SET(.ARY,"MSA",0)
  1. D SET(.ARY,"AA",1)
  1. D SET(.ARY,"TODO-MSGID",2)
  1. D SET(.ARY,"Transaction Successful",3)
  1. ;D SET(.ARY,"todo-010",4)
  1. S MSA=$$ADDSEG^HLOAPI(.HLST,.ARY)
  1. Q
  1. ; Create MSH segment
  1. ;EP
  1. N MSH
  1. D SET(.ARY,"MSH",0)
  1. S MSH=$$ADDSEG^HLOAPI(.HLST,.ARY)
  1. Q
  1. SET(ARY,V,F,C,S,R) ;EP
  1. D SET^HLOAPI(.ARY,.V,.F,.C,.S,.R)
  1. Q
  1. ; Fix for non-working ZIPCODE Field trigger in File 2
  1. FIXZIP(DFN,ZIP) ;EP
  1. Q:$G(ZIP) ZIP
  1. Q $$GET1^DIQ(2,DFN,.116)
  1. ;
  1. HLD(FDT) ;-- convert to HL7 date
  1. I $G(FDT)="" Q ""
  1. N D
  1. S %DT="X"
  1. S X=FDT D ^%DT
  1. S D=$$FMTHL7^XLFDT(Y)
  1. Q D
  1. ;
  1. GL(IN,TYP) ;-- write out the batch to a global for saving in APCSSLAB
  1. K ^APCSTMP($J)
  1. N BDA,BDO,HLODAT,MSH,MSGP,MSG
  1. S APCSCNT=0
  1. S MSG=$P($G(^HLB(IN,0)),U,2)
  1. S BDA=0 F S BDA=$O(^HLB(IN,3,BDA)) Q:'BDA D
  1. . S MSH=""
  1. . S MSGP=$P($G(^HLB(IN,3,BDA,0)),U)
  1. . S BDO=0 F S BDO=$O(^HLB(IN,3,BDA,BDO)) Q:'BDO D
  1. .. S HLOMSH=$G(^HLB(IN,3,BDA,BDO))
  1. .. S MSH=MSH_HLOMSH
  1. . D SETGL(MSH)
  1. . D REST(MSG,MSGP)
  1. D WRITE(TYP)
  1. Q
  1. ;
  1. REST(M,MP) ;-- write out the remainder of the segments to the global
  1. N MDA,DATA,MCNT
  1. S MCNT=0
  1. S MDA=0 F S MDA=$O(^HLA(M,2,MP,1,MDA)) Q:'MDA D
  1. . S DATA=$G(^HLA(M,2,MP,1,MDA,0))
  1. . Q:DATA=""
  1. . D SETGL(DATA)
  1. Q
  1. ;
  1. SETGL(D) ;-- set the temp global
  1. S APCSCNT=APCSCNT+1
  1. S ^APCSTMP($J,APCSCNT)=D
  1. Q
  1. ;
  1. WRITE(T) ; use XBGSAVE to save the temp global (APCSDATA) to a delimited
  1. ; file that is exported to the IE system
  1. N XBGL,XBQ,XBQTO,XBNAR,XBMED,XBFLT,XBUF,XBFN,APCSFN
  1. S XBGL="APCSTMP",XBMED="F",XBQ="N",XBFLT=1,XBF=$J,XBE=$J
  1. S XBNAR="EPI "_TYP_"_HL7 EXPORT"
  1. S APCSASU=$P($G(^AUTTLOC($P(^AUTTSITE(1,0),U),0)),U,10) ;asufac for file name
  1. S (XBFN,APCSFN)="EPI"_TYP_"HL7_"_APCSASU_"_"_$$DATE(DT)_".txt"
  1. S XBS1="SURVEILLANCE ILI SEND"
  1. ;
  1. D ^XBGSAVE
  1. ;
  1. I XBFLG'=0 D
  1. . I XBFLG(1)="" W:'$D(ZTQUEUED) !!,TYP_" HL7 file successfully created",!!
  1. . I XBFLG(1)]"" W:'$D(ZTQUEUED) !!,TYP_" HL7 file NOT successfully created",!!
  1. . W:'$D(ZTQUEUED) !,"File was NOT successfully transferred to IHS/CDC",!,"you will need to manually ftp it.",!
  1. . W:'$D(ZTQUEUED) !,XBFLG(1),!!
  1. D SETLOG
  1. K ^APCSTMP($J),APCSCNT
  1. Q
  1. DATE(D) ;EP
  1. Q (1700+$E(D,1,3))_$E(D,4,5)_$E(D,6,7)
  1. ;
  1. SETLOG ;EP
  1. ;create entry with start date of DT
  1. N APCLFDA,APCLIENS,APCLERR
  1. S APCLIENS="+2,"_1_","
  1. S APCLFDA(9001003.313,APCLIENS,.01)=DT
  1. S APCLFDA(9001003.313,APCLIENS,.02)=APCSFN
  1. S APCLFDA(9001003.313,APCLIENS,.05)=$S(XBFLG:0,1:1)
  1. S APCLFDA(9001003.313,APCLIENS,.04)=APCSCNT
  1. D UPDATE^DIE("","APCLFDA","APCLIENS","APCLERR(1)")
  1. Q