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

BQICAHLO.m

Go to the documentation of this file.
  1. BQICAHLO ;VNGT/HS/ALA-HL7 for CANES Export ; 08 Nov 2010 2:09 PM
  1. ;;2.5;ICARE MANAGEMENT SYSTEM;**1**;May 24, 2016;Build 17
  1. ;
  1. EN ;EP
  1. NEW APPARMS,PARMS,IN,RECORD,ERR,ERROR,WHO,HLMSTATE,MSIEN,BDIEN,CNT,HIN,HLFS,HLECH
  1. NEW MSH,SEG,VISIT,GRP
  1. K ^BQIHL7($J)
  1. ; Start the batch segment
  1. S APPARMS("COUNTRY")="USA"
  1. S APPARMS("FIELD SEPARATOR")="|"
  1. S APPARMS("ENCODING CHARACTERS")="^~\&"
  1. S APPARMS("VERSION")="2.5"
  1. I '$$NEWBATCH^HLOAPI(.APPARMS,.HLMSTATE,.ERROR) Q
  1. ;
  1. I $O(^BQIDATA($J,0))'="" D
  1. . S IN=0
  1. . F S IN=$O(^BQIDATA($J,IN)) Q:IN="" D
  1. .. D BEG
  1. .. S RECORD=^BQIDATA($J,IN)
  1. .. S VISIT=$P(RECORD,DELIM,17)
  1. .. D SEG
  1. ;
  1. I $O(^BQIDATA($J,0))="" D BEG
  1. ;
  1. I '$D(ERR) D
  1. . ; Define sending and receiving parameters
  1. . S APPARMS("SENDING APPLICATION")="RPMS-CANES"
  1. . S APPARMS("ACCEPT ACK TYPE")="AL" ;Commit ACK type
  1. . S APPARMS("APP ACK RESPONSE")="AACK^BQICAHLO" ;Callback when 'application ACK' is received
  1. . S APPARMS("ACCEPT ACK RESPONSE")="CACK^BQICAHLO" ;Callback when 'commit ACK' is received
  1. . S APPARMS("APP ACK TYPE")="AL" ;Application ACK type
  1. . S APPARMS("QUEUE")="CANES ADT" ;Incoming QUEUE
  1. . S WHO("RECEIVING APPLICATION")="CDC"
  1. . S WHO("FACILITY LINK NAME")="CANES"
  1. . I '$$SENDONE^HLOAPI1(.HLMSTATE,.APPARMS,.WHO,.ERROR) D
  1. .. S ERR=$G(ERROR)
  1. ;
  1. ; Set up HL7 messages in global for flat file export
  1. S MSIEN=$G(HLMSTATE("IEN"))
  1. I MSIEN="" Q
  1. S CNT=0
  1. S BDIEN=$P($G(^HLB(MSIEN,0)),U,2) I BDIEN="" Q
  1. S HIN=0
  1. F S HIN=$O(^HLB(MSIEN,3,HIN)) Q:'HIN D
  1. . S MSH=""
  1. . S GRP=$P(^HLB(MSIEN,3,HIN,0),U,1)
  1. . S N=0
  1. . F S N=$O(^HLB(MSIEN,3,HIN,N)) Q:'N S MSH=MSH_$G(^HLB(MSIEN,3,HIN,N))
  1. . S CNT=CNT+1,^BQIHL7($J,CNT)=MSH
  1. . S N=0
  1. . F S N=$O(^HLA(BDIEN,2,GRP,1,N)) Q:'N D
  1. .. I ^HLA(BDIEN,2,GRP,1,N,0)="" Q
  1. .. S CNT=CNT+1,^BQIHL7($J,CNT)=^HLA(BDIEN,2,GRP,1,N,0)
  1. Q
  1. ;
  1. BEG ; Begin message
  1. S PARMS("EVENT")="A08"
  1. S PARMS("MESSAGE TYPE")="ADT"
  1. I '$$ADDMSG^HLOAPI(.HLMSTATE,.PARMS,.ERROR) D Q
  1. . ;
  1. S HLFS=HLMSTATE("HDR","FIELD SEPARATOR")
  1. S HLECH=HLMSTATE("HDR","ENCODING CHARACTERS")
  1. ;
  1. D SET^HLOAPI(.SEG,"EVN",0)
  1. D SET^HLOAPI(.SEG,"A08",1)
  1. D SET^HLOAPI(.SEG,$$HLDATE^HLFNC($$NOW^XLFDT(),"TS"),2)
  1. I '$$ADDSEG^HLOAPI(.HLMSTATE,.SEG) Q
  1. Q
  1. ;
  1. SEG ; For each record, create the segments
  1. ;PID
  1. D SET^HLOAPI(.SEG,"PID",0)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,1),2)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,2),3)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,3),6)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,4),7)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,7),11,1)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,8),11,3)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,9),11,4)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,10),11,5)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,11),11,9)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,12),11,8)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,13),10)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,14),22)
  1. S X=$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)
  1. ;PV1
  1. D SET^HLOAPI(.SEG,"PV1",0)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,15),3)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,16),44)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,17),19)
  1. S X=$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)
  1. ;DG1
  1. D SET^HLOAPI(.SEG,"DG1",0)
  1. D SET^HLOAPI(.SEG,1,1)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,18),3,1)
  1. NEW CODE,SYS,CSY
  1. I $$VERSION^XPDUTL("AICD")<4.0 D
  1. . S SYS=1
  1. I $$VERSION^XPDUTL("AICD")>3.51 D
  1. . S CODE=$P(RECORD,DELIM,18),SYS=$P($$CODECS^ICDEX(CODE,80),"^",1)
  1. S CSY=$S(SYS=30:"I10",1:"I9")
  1. D SET^HLOAPI(.SEG,CSY,3,3)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,19),3,5)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,20),3,6)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,21),3,4)
  1. S X=$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)
  1. ;OBX
  1. NEW INC,VALUE
  1. S INC=0
  1. I $P(RECORD,DELIM,23)'="" D
  1. . S INC=INC+1
  1. . D SET^HLOAPI(.SEG,"OBX",0)
  1. . D SET^HLOAPI(.SEG,INC,1)
  1. . D SET^HLOAPI(.SEG,"ST",2)
  1. . D SET^HLOAPI(.SEG,"TMP",3)
  1. . D SET^HLOAPI(.SEG,$P(RECORD,DELIM,23),5)
  1. . D SET^HLOAPI(.SEG,"R",11)
  1. . S X=$$ADDSEG^HLOAPI(.HLMSTATE,.SEG,.ERR)
  1. I $P(RECORD,DELIM,24)'="" D
  1. . S VALUE=$P(RECORD,DELIM,24)
  1. . F BJ=1:1:$L(VALUE,";") D
  1. .. S TYP=$P(VALUE,";",BJ)
  1. .. S INC=INC+1
  1. .. S MEAS=$P(TYP,"=",1),RESULT=$P(TYP,"=",2)
  1. .. D SET^HLOAPI(.SEG,"OBX",0)
  1. .. D SET^HLOAPI(.SEG,INC,1)
  1. .. D SET^HLOAPI(.SEG,"ST",2)
  1. .. D SET^HLOAPI(.SEG,MEAS,3)
  1. .. D SET^HLOAPI(.SEG,RESULT,5)
  1. .. D SET^HLOAPI(.SEG,"R",11)
  1. .. S X=$$ADDSEG^HLOAPI(.HLMSTATE,.SEG,.ERR)
  1. I $P(RECORD,DELIM,25)'="" D
  1. . S INC=INC+1
  1. . D SET^HLOAPI(.SEG,"OBX",0)
  1. . D SET^HLOAPI(.SEG,INC,1)
  1. . D SET^HLOAPI(.SEG,"CE",2)
  1. . S VALUE=$P(RECORD,DELIM,25,26)
  1. . NEW LAB,RES
  1. . S RES=$P(VALUE,"^",3),RESULT=$P(RES,"=",2)
  1. . S LAB=$P(VALUE,"^",1,2)_"^"_$P(RES,"=",1)_"^"_$P(VALUE,"^",4,5)
  1. . S LAB=$$TKO^BQIUL1(LAB,DELIM)
  1. . ;S LAB=$P(VALUE,"=",1),RESULT=$P(VALUE,"=",2)
  1. . S RESULT=$$TKO^BQIUL1(RESULT,DELIM)
  1. . D SET^HLOAPI(.SEG,$P(LAB,"^",1),3,1)
  1. . D SET^HLOAPI(.SEG,$P(LAB,"^",2),3,2)
  1. . D SET^HLOAPI(.SEG,$P(LAB,"^",3),3,3)
  1. . D SET^HLOAPI(.SEG,$P(LAB,"^",5),3,5)
  1. . D SET^HLOAPI(.SEG,RESULT,5)
  1. . D SET^HLOAPI(.SEG,"R",11)
  1. . I $P(RECORD,DELIM,31)'="" D
  1. .. S VALUE=$P(RECORD,DELIM,31)
  1. .. D SET^HLOAPI(.SEG,VALUE,6,1)
  1. .. D SET^HLOAPI(.SEG,VALUE,6,2)
  1. .. D SET^HLOAPI(.SEG,"L",6,3)
  1. . I $P(RECORD,DELIM,32)'="" D
  1. .. S VALUE=$P(RECORD,DELIM,32)
  1. .. NEW L,H
  1. .. S L=$P(VALUE,"^",1),H=$P(VALUE,"^",2)
  1. .. I L'="",H'="" D SET^HLOAPI(.SEG,L_"-"_H,7) Q
  1. .. I L'="",H="" D
  1. ... I L'?.N D SET^HLOAPI(.SEG,L,7) Q
  1. ... D SET^HLOAPI(.SEG,">"_L,7)
  1. .. I L="",H'="" D SET^HLOAPI(.SEG,"<"_H,7)
  1. . I $P(RECORD,DELIM,33)'="" D
  1. .. S VALUE=$P(RECORD,DELIM,33)
  1. .. I VALUE'["*" D SET^HLOAPI(.SEG,VALUE,8) Q
  1. .. D SET^HLOAPI(.SEG,$S(VALUE["H":"HH",1:"LL"),8)
  1. . S X=$$ADDSEG^HLOAPI(.HLMSTATE,.SEG,.ERR)
  1. ; NTE
  1. I $P(RECORD,DELIM,30)'="" D
  1. . NEW FILE,RIEN,VALUE,COMM,I
  1. . S VALUE=$P(RECORD,DELIM,30)
  1. . S FILE=$P(VALUE,":",1),RIEN=$P(VALUE,":",2)
  1. . I FILE=9000010.25 D
  1. .. F I=1:1:3 S COMM=$P($G(^AUPNVMIC(RIEN,13)),U,I) I COMM'="" D
  1. ... D SET^HLOAPI(.SEG,"NTE",0)
  1. ... D SET^HLOAPI(.SEG,I,1)
  1. ... D SET^HLOAPI(.SEG,COMM,3)
  1. ... S X=$$ADDSEG^HLOAPI(.HLMSTATE,.SEG,.ERR)
  1. . I FILE=9000010.09 D
  1. .. S I=0
  1. .. F S I=$O(^AUPNVLAB(RIEN,21,I)) Q:'I D
  1. ... S COMM=^AUPNVLAB(RIEN,21,I,0)
  1. ... D SET^HLOAPI(.SEG,"NTE",0)
  1. ... D SET^HLOAPI(.SEG,I,1)
  1. ... D SET^HLOAPI(.SEG,COMM,3)
  1. ... S X=$$ADDSEG^HLOAPI(.HLMSTATE,.SEG,.ERR)
  1. . S X=$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)
  1. ;ZID
  1. D SET^HLOAPI(.SEG,"ZID",0)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,5),1,1)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,6),1,2)
  1. S X=$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)
  1. ;ZLI
  1. NEW VER,PTCH,VERSION
  1. S VER=$$VERSION^XPDUTL("BQI")
  1. S PTCH=$$LAST^XPDUTL("ICARE MANAGEMENT SYSTEM",VER)
  1. S VERSION=VER_$S($P(PTCH,U,1)'=-1:"P"_$P(PTCH,U,1),1:"")
  1. D SET^HLOAPI(.SEG,"ZLI",0)
  1. D SET^HLOAPI(.SEG,$P(RECORD,DELIM,22),3)
  1. D SET^HLOAPI(.SEG,VERSION,10)
  1. S X=$$ADDSEG^HLOAPI(.HLMSTATE,.SEG)
  1. Q
  1. ;
  1. AACK ; Application Acknowledgement
  1. Q
  1. ;
  1. CACK ; Commit Acknowledgement
  1. Q