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

MHV7BU.m

Go to the documentation of this file.
MHV7BU ;WAS/EFJ - HL7 message builder UTILITY ; [12/14/06 11:10am]
 ;;1.0;My HealtheVet;**2,29**;July 10, 2017;Build 73
 ;;Per VHA Directive 2004-038, this routine should not be modified.
 ;
 ; Utilities common to message and segment builders.
 ;
 Q
 ;
PID3(PID,ICN,DFN,SSN) ;Build PID3 - Patient Identifier List
 ;  Populates PID array with Patient Identifier List Entries for 
 ; ICN, DFN, and SSN.
 ;
 ;  Integration Agreements:
 ;        10112 : $$SITE^VASITE
 ;
 ;  Input:
 ;     ICN, DFN, SSN - Identifiers
 ;
 ;  Output:
 ;     PID - PID array
 ;
 N STATION,IDCNT
 S STATION=$P($$SITE^VASITE,"^",3)
 S IDCNT=0
 I ICN'="" D
 . S IDCNT=IDCNT+1
 . S PID(3,IDCNT,1)=ICN                 ;Patient ID - ICN
 . S PID(3,IDCNT,4,1)="USVHA"           ;assigning authority ID
 . S PID(3,IDCNT,4,3)="HL70363"         ;assigning authority type
 . S PID(3,IDCNT,5)="NI"                ;Patient ID type
 . S PID(3,IDCNT,6,1)="VA FACILITY ID"  ;assigning facility
 . S PID(3,IDCNT,6,2)=STATION           ;Station number
 . S PID(3,IDCNT,6,3)="L"               ;facility ID type
 ;
 I DFN'="" D
 . S IDCNT=IDCNT+1
 . S PID(3,IDCNT,1)=DFN                 ;Patient ID - DFN
 . S PID(3,IDCNT,4,1)="USVHA"           ;assigning authority ID
 . S PID(3,IDCNT,4,3)="HL70363"         ;assigning authority type
 . S PID(3,IDCNT,5)="PI"                ;Patient ID type
 . S PID(3,IDCNT,6,1)="VA FACILITY ID"  ;assigning facility
 . S PID(3,IDCNT,6,2)=STATION           ;Station number
 . S PID(3,IDCNT,6,3)="L"               ;facility ID type
 ;
 I SSN'="" D
 . S IDCNT=IDCNT+1
 . S PID(3,IDCNT,1)=SSN                 ;Patient ID - SSN
 . S PID(3,IDCNT,4,1)="USSSA"           ;assigning authority ID
 . S PID(3,IDCNT,4,3)="HL70363"         ;assigning authority type
 . S PID(3,IDCNT,5)="SS"                ;Patient ID type
 . S PID(3,IDCNT,6,1)="VA FACILITY ID"  ;assigning facility
 . S PID(3,IDCNT,6,2)=STATION           ;Station number
 . S PID(3,IDCNT,6,3)="L"               ;facility ID type
 Q
 ;
FMTNAME(NAME,SUBSEG,HL,DATATYPE) ;Format comma/space delimited name
 ;  Populates SUBSEG array with formatted and escaped name components
 ; based on the DATATYPE passed.  XCN types and XPN types differ in
 ; that XCN has an ID in the first component effectively shifting the
 ; name components by one.
 ;
 ;  Integration Agreements:
 ;         3065 : NAMEFMT^XLFNAME
 ;
 ;  Input:
 ;         NAME - FileMan formatted name  Ex: PATIENT,FIRST M
 ;           HL - HL7 package array variable
 ;     DATATYPE - HL7 data type to be formatted Ex: XCN, XPN
 ;
 ;  Output:
 ;       SUBSEG - Array to hold the formatted name.
 ;
 ; Example Usage:
 ;      S NAME="SMITH,BOB A"
 ;      K NMARR
 ;      D FMTNAME^MHV7BU(NAME,.NMARR,.HL,"XCN")
 ;      M PD1(4,1)=NMARR
 ;
 N OFFSET
 S OFFSET=(DATATYPE="XCN")
 S NAME=$$NAMEFMT^XLFNAME(.NAME,"F","DSP")
 S SUBSEG(1+OFFSET)=$$ESCAPE^MHV7U($P(NAME," ",1),.HL)  ;family
 S SUBSEG(2+OFFSET)=$$ESCAPE^MHV7U($P(NAME," ",2),.HL)  ;given
 S SUBSEG(3+OFFSET)=$$ESCAPE^MHV7U($P(NAME," ",3),.HL)  ;middle
 S SUBSEG(4+OFFSET)=$$ESCAPE^MHV7U($P(NAME," ",4),.HL)  ;suffix
 S SUBSEG(5+OFFSET)=$$ESCAPE^MHV7U($P(NAME," ",5),.HL)  ;prefix
 S SUBSEG(6+OFFSET)=$$ESCAPE^MHV7U($P(NAME," ",6),.HL)  ;degree
 Q
 ;
FMTNAME2(IEN,FILE,SUBSEG,HL,DATATYPE) ;Lookup and format name
 ;  Looks up name components based on IEN and FILE passed.
 ; Populates SUBSEG array with formatted and escaped name components
 ; based on the DATATYPE passed.  XCN types and XPN types differ in
 ; that XCN has an ID in the first component effectively shifting the
 ; name components by one.
 ;
 ;  Integration Agreements:
 ;         3065 : NAMEFMT^XLFNAME
 ;
 ;  Input:
 ;          IEN - IEN of patient/person in FILE
 ;         FILE - File number of file   Ex: 2 - PATIENT file
 ;           HL - HL7 package array variable
 ;     DATATYPE - HL7 data type to be formatted Ex: XCN, XPN
 ;
 ;  Output:
 ;       SUBSEG - Array to hold the formatted name.
 ;
 ; Example Usage:
 ;      K NMARR
 ;      D FMTNAME^MHV7BU(DFN,2,.NMARR,.HL,"XPN")
 ;      M PID(5,1)=NMARR
 ;
 N NAME,OFFSET
 S OFFSET=(DATATYPE="XCN")
 S NAME("FILE")=FILE,NAME("FIELD")=.01,NAME("IENS")=IEN_","
 S NAME=$$NAMEFMT^XLFNAME(.NAME,"F","DSP")
 S SUBSEG(1+OFFSET)=$$ESCAPE^MHV7U($P(NAME," ",1),.HL)  ;family
 S SUBSEG(2+OFFSET)=$$ESCAPE^MHV7U($P(NAME," ",2),.HL)  ;given
 S SUBSEG(3+OFFSET)=$$ESCAPE^MHV7U($P(NAME," ",3),.HL)  ;middle
 S SUBSEG(4+OFFSET)=$$ESCAPE^MHV7U($P(NAME," ",4),.HL)  ;suffix
 S SUBSEG(5+OFFSET)=$$ESCAPE^MHV7U($P(NAME," ",5),.HL)  ;prefix
 S SUBSEG(6+OFFSET)=$$ESCAPE^MHV7U($P(NAME," ",6),.HL)  ;degree
 Q
 ;
FMTNAME3(IEN,FILE,SUBSEG,HL,DATATYPE) ;Lookup and format name
 ;JAZZ#409966 -NeW Function for Names with Space not showing in SM queries
 ;========================================================================
 ;  Looks up name components based on IEN and FILE passed.
 ; Populates SUBSEG array with formatted and escaped name components
 ; based on the DATATYPE passed.  XCN types and XPN types differ in
 ; that XCN has an ID in the first component effectively shifting the
 ; name components by one.
 ;
 ;  Integration Agreements:
 ;         3065 : NAMEFMT^XLFNAME
 ;
 ;  Input:
 ;          IEN - IEN of patient/person in FILE
 ;         FILE - File number of file   Ex: 2 - PATIENT file
 ;           HL - HL7 package array variable
 ;     DATATYPE - HL7 data type to be formatted Ex: XCN, XPN
 ;
 ;  Output:
 ;       SUBSEG - Array to hold the formatted name.
 ;
 ; Example Usage:
 ;      K NMARR
 ;      D FMTNAME^MHV7BU(DFN,2,.NMARR,.HL,"XPN")
 ;      M PID(5,1)=NMARR
 ;
 N NAME,OFFSET
 S OFFSET=(DATATYPE="XCN")
 S NAME("FILE")=FILE,NAME("FIELD")=.01,NAME("IENS")=IEN_","
 S NAME=$$HLNAME^XLFNAME(.NAME)
 S SUBSEG(1+OFFSET)=$$ESCAPE^MHV7U($P(NAME,"^",1),.HL)  ;family
 S SUBSEG(2+OFFSET)=$$ESCAPE^MHV7U($P(NAME,"^",2),.HL)  ;given
 S SUBSEG(3+OFFSET)=$$ESCAPE^MHV7U($P(NAME,"^",3),.HL)  ;middle
 S SUBSEG(4+OFFSET)=$$ESCAPE^MHV7U($P(NAME,"^",4),.HL)  ;suffix
 S SUBSEG(5+OFFSET)=$$ESCAPE^MHV7U($P(NAME,"^",5),.HL)  ;prefix
 S SUBSEG(6+OFFSET)=$$ESCAPE^MHV7U($P(NAME,"^",6),.HL)  ;degree
 Q
 ;
FMTHL7(DT) ;Convert Fileman formatted dates to HL7 format
 ; Handles imprecise dates properly because $$FMTHL7^XLFDT does not.
 ; Strips Timezone offset
 ;
 ;  Integration Agreements:
 ;        10103 : FMTHL7^XLFDT
 ;
 ;  Input:
 ;     DT - Fileman formatted date/time
 ;
 ;  Output:  Returns HL7 formatted date/time
 ;
 S DT=$$FMTHL7^XLFDT(DT)
 I $E(DT,7,8)="00" S DT=$E(DT,1,6)
 I $E(DT,5,6)="00" S DT=$E(DT,1,4)
 S DT=$P(DT,"-")
 S DT=$P(DT,"+")
 Q DT
 ;