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

DGENUPL7.m

Go to the documentation of this file.
  1. DGENUPL7 ;ISA/KWP/CKN/TMK,TDM,LBD - PROCESS INCOMING (Z11 EVENT TYPE) HL7 MESSAGES ; 8/1/11 5:07pm
  1. ;;5.3;PIMS;**232,367,397,417,379,431,513,628,673,653,742,1015,1016**;JUN 30, 2012;Build 20
  1. ;Phase II split from DGENUPL
  1. Z11(MSGIEN,MSGID,CURLINE,DFN,ERRCOUNT) ;
  1. ;Description: This is used to process a single ORU~Z11 or ORF~Z11 msg.
  1. ;Input:
  1. ; MSGIEN - the internal entry number of the HL7 message in the
  1. ; HL7 MESSAGE TEXT file (772)
  1. ; MSGID -message control id of HL7 msg in the MSH segment
  1. ; CURLINE - the subscript of the MSH segment of the current message (pass by reference)
  1. ; DFN - identifies the patient, is the ien of a record in the PATIENT file.
  1. ; ERRCOUNT - is a count of the number of messages in the batch that can not be processed (pass by reference)
  1. ;
  1. ;Output:
  1. ; CURLINE - upon leaving the procedure this parameter should be set to the end of the current message. (pass by reference)
  1. ; ERRCOUNT - set to count of messages that were not processed due to errors encountered (pass by reference)
  1. ;
  1. N DGELG,DGENR,DGPAT,DGCDIS,DGOEIF,ERROR,ERRMSG,MSGS,DGELGSUB,DGENUPLD,DGCON,DGNMSE
  1. N DGNEWVAL,DIV,SUB,OLDELG,OLDPAT,OLDDCDIS,OLDEIF,DGSEC,OLDSEC,DGNTR,DGMST,DGPHINC
  1. ;
  1. ;some process is killing these HL7 variables, so need to protect them
  1. S SUB=HLFS
  1. S DIV=HLECH
  1. N HLDA,HLDAN,HLDAP,HLDT,HLDT1,HLECH,HLFS,HLNDAP,HLNDAP0,HLPID,HLQ,HLVER,HLERR,HLMTN,HLSDT
  1. S HLFS=SUB
  1. S HLECH=DIV
  1. S HLQ=""""""
  1. K DIV,SUB
  1. ;
  1. ;drops out of block on error
  1. D
  1. .Q:'$$PARSE^DGENUPL1(MSGIEN,MSGID,.CURLINE,.ERRCOUNT,.DGPAT,.DGELG,.DGENR,.DGCDIS,.DGOEIF,.DGSEC,.DGNTR,.DGMST,.DGNMSE)
  1. .D GETLOCKS^DGENUPL5(DFN)
  1. .;
  1. .;Used by cross-references to determine if an upload is in progress.
  1. .S DGENUPLD="ENROLLMENT/ELIGIBILITY UPLOAD IN PROGRESS"
  1. .;
  1. .;Update the PATIENT, ELIGIBILITY, CATASTROPHIC DISABILITY objects in memory
  1. .Q:'$$UOBJECTS^DGENUPL4(DFN,.DGPAT,.DGELG,.DGCDIS,.DGOEIF,MSGID,.ERRCOUNT,.MSGS,.OLDPAT,.OLDELG,.OLDCDIS,.OLDEIF)
  1. .S ERROR=0
  1. .;if the msg contains patient security, process it
  1. .I $D(DGSEC) D Q:ERROR
  1. ..S DGSEC("DFN")=DFN
  1. ..S DGSEC("USER")=.5
  1. ..I DGSEC("LEVEL")'="" D
  1. ...I DGSEC("DATETIME")="" S DGSEC("DATETIME")=$$NOW^XLFDT ;DG*5.3*653
  1. ..;
  1. ..; check consistency of patient security record
  1. ..I '$$CHECK^DGENSEC(.DGSEC,.ERRMSG) D Q
  1. ...S ERROR=1
  1. ...D ADDERROR^DGENUPL(MSGID,DGPAT("SSN"),ERRMSG,.ERRCOUNT)
  1. ..;
  1. ..; upload patient security, consistency checks passed
  1. ..D SECUPLD^DGENUPL5(DFN,.DGSEC,.OLDSEC)
  1. .;
  1. .;if the msg has an enrollment process it
  1. .I DGENR("STATUS")!DGENR("APP") D Q:ERROR
  1. ..;use $$PRIORITY to get the eligibility data used to compute priority
  1. ..I $$PRIORITY^DGENELA4(DFN,.DGELG,.DGELGSUB,DGENR("DATE"),DGENR("APP"))
  1. ..;
  1. ..;store the eligibility data in the enrollment record and other missing fields
  1. ..M DGENR("ELIG")=DGELGSUB
  1. ..S DGENR("DFN")=DFN
  1. ..S DGENR("PRIORREC")=""
  1. ..S DGENR("USER")=.5
  1. ..S DGENR("DATETIME")=$$NOW^XLFDT
  1. ..;
  1. ..;Allow null overwrites of Ineligible data (Ineligible Project):
  1. ..I $D(DGENR("DATE")),DGENR("DATE")="" S DGENR("DATE")="@"
  1. ..I $D(DGENR("FACREC")),DGENR("FACREC")="" S DGENR("FACREC")="@"
  1. ..;
  1. ..;check the consistency of the enrollment record
  1. ..I '$$CHECK^DGENA3(.DGENR,.DGPAT,.ERRMSG) D Q
  1. ...S ERROR=1
  1. ...D ADDERROR^DGENUPL(MSGID,DGPAT("SSN"),ERRMSG,.ERRCOUNT)
  1. ..;
  1. ..; removed EGT consistency check with DG*5.3*628
  1. ..;Phase II EGT consistency checks (SRS 6.5.1.3)
  1. ..;Only do the EGT consistency checks for Rejected-Fiscal Year (11),Rejected-Mid Cycle (12),Rejected-Stop enrolling new apps (13),Rejected-Initil App by VAMC (14),Rejected below EGT threshold (22)
  1. ..;I "^11^12^13^14^22^"[("^"_DGENR("STATUS")_"^"),$$ABOVE^DGENEGT1(DGENR("DFN"),DGENR("PRIORITY"),DGENR("SUBGRP"),"","",1) D Q
  1. ..;.S ERROR=1
  1. ..;.S ERRMSG="THE ENROLLMENT RECORD DID NOT PASS THE EGT CONSISTENCY CHECKS."
  1. ..;.D ADDERROR^DGENUPL(MSGID,DGPAT("SSN"),ERRMSG,.ERRCOUNT)
  1. ..;
  1. ..;Allow null overwrites for Ineligible vets (Ineligible Project):
  1. ..I $G(DGPAT("INELDATE"))'="" S (DGENR("PRIORITY"),DGENR("SUBGRP"))=""
  1. ..I DGENR("DATE")="@" S DGENR("DATE")=""
  1. ..I DGENR("FACREC")="@" S DGENR("FACREC")=""
  1. ..;
  1. ..D ENRUPLD^DGENUPL8(.DGENR,.DGPAT)
  1. .;
  1. .;Store the PATIENT, ELIGIBILITY, & CAT. DISB. objects
  1. .I $$STORE^DGENPTA1(.DGPAT,,1)
  1. .I $$STORE^DGENELA1(.DGELG,.DGPAT,.DGCDIS,,1)
  1. .I $G(DGCDIS("VCD"))'="",$$STORE^DGENCDA2(DFN,.DGCDIS) ;checks first if there is catastrophic disability information
  1. .;
  1. .;Call PIMS api to file NTR data.
  1. .I $D(DGNTR),$$ENRUPD^DGNTAPI1(DFN,.DGNTR)
  1. .;
  1. .;Call PIMS api to file MST data.
  1. .I DGMST("MSTSTAT")'="",DGMST("MSTDT")'="",DGMST("MSTST")'="" D
  1. ..I $$NEWSTAT^DGMSTAPI(DFN,DGMST("MSTSTAT"),DGMST("MSTDT"),".5",DGMST("MSTST"),0)
  1. .;
  1. .;Since HEC is authoritative source, If no OEF/OIF data in Z11, set count to 0 so existing data in VistA will be deleted.
  1. .I '$D(DGOEIF) S DGOEIF("COUNT")=0
  1. .;Call PIMS api to file OEF/OIF data.
  1. .I $D(DGOEIF) D OEIFUPD^DGCLAPI1(DFN,.DGOEIF)
  1. .;
  1. .;File the Military Service Episode (MSE) data (DG*5.3*797)
  1. .I $D(DGNMSE) D UPDMSE^DGMSEUTL(DFN,.DGNMSE)
  1. .;
  1. .;if the current enrollment is a local then log patient for transmission
  1. .I $$SOURCE^DGENA(DFN)=1!$G(DGPHINC) K DGENUPLD,DGPHINC D EVENT^IVMPLOG(DFN)
  1. .;
  1. .;create the audit trail
  1. .I $$AUDIT^DGENUPA1(,MSGID,.OLDPAT,.DGPAT,.OLDELG,.DGELG,.OLDCDIS,.DGCDIS,.DGSEC,.OLDSEC)
  1. .;send notifications
  1. .D NOTIFY^DGENUPL3(.DGPAT,.MSGS)
  1. .;
  1. .;invoke registration consistency checker
  1. .D REGCHECK^DGENUPL2(DFN)
  1. ;
  1. D UNLOCK^DGENUPL5(DFN)
  1. Q