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

MHV7B8.m

Go to the documentation of this file.
  1. MHV7B8 ;WAS/GPM - HL7 message builder SECURE MESSAGING ADR^A19 ; [3/23/08 8:18pm]
  1. ;;1.0;My HealtheVet;**5**;Aug 23, 2005;Build 24
  1. ;;Per VHA Directive 2004-038, this routine should not be modified.
  1. ;
  1. Q
  1. ;
  1. ADRA19(MSGROOT,QRY,ERR,DATAROOT,LEN,HL) ; Build query response
  1. ;
  1. ; Populates the array pointed to by MSGROOT with an ADR^A19 query
  1. ; response message by calling the appropriate segment builders based
  1. ; on the type of response ACK/Data or NAK. Extracted data pointed to
  1. ; by DATAROOT, errors, hit counts, and query information are used to
  1. ; build the segments.
  1. ; An error number in ERR^4 indicates a NAK is needed.
  1. ; DATAROOT being null indicates a dataless ACK (testing purposes).
  1. ;
  1. ; Input:
  1. ; MSGROOT - Global root of message
  1. ; QRY - Query parameters
  1. ; QRY("MID") - original message control ID
  1. ; ERR - Caret delimited error string
  1. ; segment^sequence^field^code^ACK type^error text
  1. ; DATAROOT - Global root of data array
  1. ; HL - HL7 package array variable
  1. ;
  1. ; Output: ADR^A19 message in MSGROOT
  1. ; LEN - Length of formatted message
  1. ;
  1. N CNT,HIT,EXTIME
  1. D LOG^MHVUL2("SM ADR-A19 BUILDER","BEGIN","S","TRACE")
  1. ;
  1. S HIT=0,EXTIME=""
  1. I DATAROOT'="" D
  1. . S HIT=+$P($G(@DATAROOT),"^",1)
  1. . S EXTIME=$P($G(@DATAROOT),"^",2)
  1. . Q
  1. S HIT=HIT_"^"_HIT_"^0"
  1. ;
  1. K @MSGROOT
  1. S CNT=1,@MSGROOT@(CNT)=$$MSA^MHV7BUS($G(QRY("MID")),ERR,.HL),LEN=$L(@MSGROOT@(CNT))
  1. I $P(ERR,"^",4) S CNT=CNT+1,HIT="0^0^0",@MSGROOT@(CNT)=$$ERR^MHV7BUS(ERR,.HL),LEN=LEN+$L(@MSGROOT@(CNT))
  1. S CNT=CNT+1,@MSGROOT@(CNT)=$$QRD^MHV7BUS(.QRY,EXTIME,.HL),LEN=LEN+$L(@MSGROOT@(CNT))
  1. S CNT=CNT+1,@MSGROOT@(CNT)=$$QRF^MHV7BUS(.QRY,.HL),LEN=LEN+$L(@MSGROOT@(CNT))
  1. S CNT=CNT+1,@MSGROOT@(CNT)=$$QAK^MHV7BUS(.QRY,ERR,HIT,.HL),LEN=LEN+$L(@MSGROOT@(CNT))
  1. I $P(ERR,"^",4) S CNT=CNT+1,@MSGROOT@(CNT)=$$PID^MHV7BUS(.QRY,.HL),LEN=LEN+$L(@MSGROOT@(CNT))
  1. ;
  1. I '$P(ERR,"^",4),HIT>0,DATAROOT'="" D
  1. . S CNT=CNT+1,@MSGROOT@(CNT)=$$PID(.QRY,DATAROOT,.HL),LEN=LEN+$L(@MSGROOT@(CNT))
  1. . S CNT=CNT+1,@MSGROOT@(CNT)=$$PD1(DATAROOT,.HL),LEN=LEN+$L(@MSGROOT@(CNT))
  1. . S CNT=CNT+1,@MSGROOT@(CNT)=$$PV1(DATAROOT,.HL),LEN=LEN+$L(@MSGROOT@(CNT))
  1. . Q
  1. ;
  1. D LOG^MHVUL2("SM ADR-A19 BUILDER","END","S","TRACE")
  1. Q
  1. ;
  1. PID(QRY,DATAROOT,HL) ;
  1. N PID,T,X,NAME
  1. S PID(0)="PID"
  1. ;
  1. ;Build PID(3)
  1. D PID3^MHV7BU(.PID,QRY("ICN"),QRY("DFN"),QRY("SSN"))
  1. ;
  1. ;Build PID(5)
  1. D FMTNAME2^MHV7BU(QRY("DFN"),2,.NAME,.HL,"XPN")
  1. M PID(5,1)=NAME
  1. ;
  1. S PID(7,1,1)=$$FMTHL7^XLFDT(@DATAROOT@("DOB"))
  1. S PID(8)=$$ESCAPE^MHV7U(@DATAROOT@("SEX"),.HL)
  1. S PID(11,1,1,1)=$$ESCAPE^MHV7U(@DATAROOT@("ADD1"),.HL)
  1. S X=@DATAROOT@("ADD2")
  1. S T=@DATAROOT@("ADD3")
  1. I $L(X)&$L(T) S X=X_" "
  1. S PID(11,1,2)=$$ESCAPE^MHV7U(X_T,.HL)
  1. S PID(11,1,3)=$$ESCAPE^MHV7U(@DATAROOT@("CITY"),.HL)
  1. S PID(11,1,4)=$$ESCAPE^MHV7U(@DATAROOT@("STATE"),.HL)
  1. S PID(11,1,5)=$$ESCAPE^MHV7U(@DATAROOT@("ZIP"),.HL)
  1. S PID(11,1,7)="M" ;address type
  1. S PID(11,1,9)=$$ESCAPE^MHV7U(@DATAROOT@("COUNTY"),.HL)
  1. S PID(13,1,1)=$$HLPHONE^HLFNC(@DATAROOT@("PHONE"))
  1. S PID(13,1,4)=$$ESCAPE^MHV7U(@DATAROOT@("E-MAIL"),.HL)
  1. S PID(14,1,1)=$$HLPHONE^HLFNC(@DATAROOT@("BUS-PHONE"))
  1. S PID(16,1,2)=$$ESCAPE^MHV7U(@DATAROOT@("MARITAL-STATUS"),.HL)
  1. S PID(17,1,2)=$$ESCAPE^MHV7U(@DATAROOT@("RELIGION"),.HL)
  1. S X=@DATAROOT@("BIRTH-CITY")_"^"_@DATAROOT@("BIRTH-STATE")
  1. S PID(23)=$$ESCAPE^MHV7U(X,.HL) ;birth place
  1. S PID(29,1,1)=$$FMTHL7^XLFDT(@DATAROOT@("DOD"))
  1. Q $$BLDSEG^MHV7U(.PID,.HL)
  1. ;
  1. PV1(DATAROOT,HL) ;
  1. N PV1,NAME,DOC
  1. S PV1(0)="PV1"
  1. S PV1(2)="N" ;Patient class
  1. S DOC=@DATAROOT@("ATTENDING-PHYSICIAN")
  1. D FMTNAME^MHV7BU(DOC,.NAME,.HL,"XCN")
  1. M PV1(7,1)=NAME
  1. Q $$BLDSEG^MHV7U(.PV1,.HL)
  1. ;
  1. PD1(DATAROOT,HL) ;
  1. N PD1,NAME,DOC
  1. S PD1(0)="PD1"
  1. S DOC=@DATAROOT@("PRIMARY-CARE-PHYSICIAN")
  1. D FMTNAME^MHV7BU(DOC,.NAME,.HL,"XCN")
  1. M PD1(4,1)=NAME
  1. Q $$BLDSEG^MHV7U(.PD1,.HL)
  1. ;