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

XUHUIHL7.m

Go to the documentation of this file.
  1. XUHUIHL7 ;OAKCIOFO/JG - HL7 GENERATION ROUTINE; 06/010/2002
  1. ;;8.0;KERNEL;**239**;JUL 10, 1995
  1. ; Supported by IA#3589
  1. ; This routine generates an HL7 MFN Staff message based on data
  1. ; passed by the XUHUI FIELD CHANGE EVENT protocol to the XUHUI SEND HL7
  1. ; MSG protocol. This data is based on change in value of fields in the
  1. ; NEW PERSON (#200) file and in the the KEY (#200.051) multiple.
  1. ; The following fields are monitored for the NEW PERSON file:
  1. ; .01 NAME
  1. ; 9.2 TERMINATION DATE
  1. ; 5 DOB
  1. ; 9 SSN
  1. ; The Provider key is monitored for the KEY subfile.
  1. ;
  1. ; Input:
  1. ; XUHUIXR - Name of xref being passed by protocols
  1. ; "AXUHUI": file 200 updated;
  1. ; "AXUHUIKEY": file 200.051 updated
  1. ; XUHUIA - "S": logic executed; "K": kill logic executed
  1. ; XUHUIX2 - X2 array with file 200 content
  1. ; XUHUIDA - DA array
  1. ;
  1. ; Output: none
  1. ; Postcondition:
  1. ; - An HL7 MFN message is generated that contains the structure
  1. ; MSH MFI MFE STF
  1. ;
  1. N XUHUIERR,NAME,SSN,DOB,TERMDATE,ACTIVE
  1. Q:XUHUIXR'["AXUHUI"
  1. I XUHUIXR="AXUHUI" D F200
  1. I XUHUIXR="AXUHUIKEY" D FKEY
  1. Q:$G(XUHUIERR)
  1. D SENDMSG
  1. Q
  1. ;
  1. F200 ; NEW PERSON file was updated
  1. ; XUHUIX2(1)=NAME
  1. ; XUHUIX2(2)=TERMINATION DATE
  1. ; XUHUIX2(3)=DOB
  1. ; XUHUIX2(4)=SSN
  1. ; XUHUIDA=file 200 ien
  1. I '$D(XUHUIX2) S XUHUIERR="1^no XUHUIX2 array" Q
  1. S IEN=XUHUIDA
  1. ; TERMINATION DATE determines Active/Inactive
  1. S ACTIVE=$S($G(XUHUIX2(2))]"":"I",1:"A")
  1. ; get newest values for name, ssn, dob, and termination date
  1. S NAME=$S($G(XUHUIX2(1))="":"""""",1:XUHUIX2(1))
  1. S SSN=$S($G(XUHUIX2(4))="":"""""",1:XUHUIX2(4))
  1. S DOB=$$FMTHL7^XLFDT($G(XUHUIX2(3)))
  1. S DOB=$S(DOB="":"""""",1:DOB)
  1. S TERMDATE=$$FMTHL7^XLFDT($G(XUHUIX2(2)))
  1. S TERMDATE=$S(TERMDATE="":"""""",1:TERMDATE)
  1. Q
  1. ;
  1. FKEY ; PROVIDER key was updated
  1. ; XUHUIDA(1)=file 200 ien
  1. ; XUHUIA= S or K
  1. I '$G(XUHUIDA(1)) S XUHUIERR="1^no IEN" Q
  1. S IEN=XUHUIDA(1) ; ien of provider staff
  1. ; XUHUIA determines Active/Inactive
  1. S ACTIVE=$S($G(XUHUIA)="K":"I",1:"A")
  1. ; get newest values for name, ssn, dob, and termination date
  1. S NAME=$$GET1^DIQ(200,IEN_",","NAME")
  1. S NAME=$S(NAME="":"""""",1:NAME)
  1. S SSN=$$GET1^DIQ(200,IEN_",","SSN")
  1. S SSN=$S(SSN="":"""""",1:SSN)
  1. S DOB=$$GET1^DIQ(200,IEN_",","DOB","I")
  1. S DOB=$S(DOB="":"""""",1:$$FMTHL7^XLFDT(DOB))
  1. S TERMDATE=$$GET1^DIQ(200,IEN_",","TERMINATION DATE","I")
  1. S TERMDATE=$S(TERMDATE="":"""""",1:$$FMTHL7^XLFDT(TERMDATE))
  1. Q
  1. ;
  1. SENDMSG ; initialize HL variables
  1. N HL,NOW,RESULT
  1. D INIT^HLFNC2("XUHUI MFN",.HL)
  1. I $G(HL) D Q ; error occurred
  1. . S XUHUIERR="1^HL init"
  1. S HLFS=$G(HL("FS")) S:HLFS="" HLFS="^"
  1. S HLCS=$E(HL("ECH"),1)
  1. ;
  1. ; create message
  1. S NOW=$$FMTHL7^XLFDT($$NOW^XLFDT)
  1. ; MFI^PRA^VA KERNEL^UPD^entered date^^NE
  1. S HLA("HLS",1)="MFI"_HLFS_"PRA"_HLFS_"VA KERNEL"_HLFS_"UPD"_HLFS_NOW_HLFS_HLFS_"NE"
  1. ; MFE^MUP^^^ien~IEN~NEW PERSON
  1. S HLA("HLS",2)="MFE"_HLFS_"MUP"_HLFS_HLFS_HLFS_IEN_HLCS_"IEN"_HLCS_"NEW PERSON"
  1. ; STF^ssn~NEW PERSON~SSN^^name^^^dob^active/inactive^^^^^^inactive date
  1. S HLA("HLS",3)="STF"_HLFS_IEN_HLCS_"IEN"_HLCS_"NEW PERSON"_HLFS_SSN_HLCS_HLCS_HLCS_"SSN"_HLFS_NAME_HLFS_HLFS_HLFS_DOB_HLFS_ACTIVE_HLFS_HLFS_HLFS_HLFS_HLFS_HLFS_TERMDATE
  1. ; generate message
  1. D GENERATE^HLMA("XUHUI MFN","LM",1,.RESULT,"",.HL)
  1. I +$P(RESULT,U,2) D Q
  1. . S XUHUIERR="1^HL Generate"
  1. Q
  1. ;