Summary Table
Categories |
Total Count |
PII |
0 |
URL |
0 |
DNS |
0 |
EKL |
0 |
IP |
0 |
PORT |
0 |
VsID |
0 |
CF |
0 |
AI |
0 |
VPD |
0 |
PL |
0 |
Other |
0 |
File Content
<?xml version="1.0" encoding="UTF-8"?>
<Export generator="Cache" version="25">
<Class name="EDIGW.FileProcess">
<IncludeCode>EDIGW</IncludeCode>
<Super>Ens.BusinessProcess</Super>
<TimeCreated>65002,31129.246913</TimeCreated>
<Parameter name="INVOCATION">
<Default>Queue</Default>
</Parameter>
<Parameter name="SETTINGS">
<Default>TargetConfig999,TargetConfig999Archive,TargetConfigPMCO999,TargetConfigPMCO999Archive,TargetConfigGoodFile,TargetConfigBadFile</Default>
</Parameter>
<Property name="TargetConfig999">
<Type>Ens.DataType.ConfigName</Type>
</Property>
<Property name="TargetConfig999Archive">
<Type>Ens.DataType.ConfigName</Type>
</Property>
<Property name="TargetConfigPMCO999">
<Type>Ens.DataType.ConfigName</Type>
</Property>
<Property name="TargetConfigPMCO999Archive">
<Type>Ens.DataType.ConfigName</Type>
</Property>
<Property name="TargetConfigGoodFile">
<Type>Ens.DataType.ConfigName</Type>
</Property>
<Property name="TargetConfigBadFile">
<Type>Ens.DataType.ConfigName</Type>
</Property>
<Method name="OnRequest">
<FormalSpec>request:%Library.Persistent,*response:%Library.Persistent</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess OnRequest: "_request)
#dim tSC As %Status = $$$OK
Set tSC=..BatchRequest(request,.response)
Quit tSC
]]></Implementation>
</Method>
<Method name="SendDocument">
<FormalSpec>pStream:%Library.Stream,pTargetConfigName:%String,pSourceFileName:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess: pSourceFileName "_pSourceFileName)
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess: pStream "_$G(pStream))
#Dim tSC As %Status = $$$OK
if ($ISOBJECT(pStream))
{
#Dim tDocument As EnsLib.EDI.X12.Document = ##class(EnsLib.EDI.X12.Document).ImportFromLibraryStream(pStream)
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess: tDocument "_$G(tDocument))
set tDocument.Source = pSourceFileName
set tSC=..SendRequestAsync(pTargetConfigName,tDocument,0)
}
Quit tSC
]]></Implementation>
</Method>
<Method name="BatchRequest">
<FormalSpec>pRequest:EDIGW.ReqFN,*pResponse:Ens.Response</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess: "_pRequest.FILENUMBER)
Set sBatchId = ..getBatchId(pRequest.FILENUMBER)
If sBatchId = "" Quit $$$ERROR($$$GeneralError,"Error from FileProcess - Could not get BatchId")
set tObjBatch = ##class(CREPOS.BATCH999).%OpenId(sBatchId)
set tGoodFileName = tObjBatch.GOODFILE
set tBadFileName = tObjBatch.BADFILE
set t999FileName = tObjBatch.FILE999
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess: t999FileName "_t999FileName)
set tInputPath = tObjBatch.Path
set tObjTxnSet = ##class(CREPOS.FUNCTIONALGROUP).%OpenId(tGoodFileName)
set tTxnCount = tObjTxnSet.GE01NBRTRANSETS
// If ST branch ->STRouter does not finish completely, not all data is in txnset999 and 999 generation depends on it
// so need to make the ISA Branch -> FileProcess wait for a bit.
// Number of ST/SE we receive get recorded in tTxnCount
Set status = ..AssertReady(sBatchId,tTxnCount)
If $$$ISERR(status) Quit status
Set iNumber = 100000000+sBatchId
#dim t999Stream As %Library.Stream = $$$NULLOREF
#dim t999StreamArchive As %Library.Stream = $$$NULLOREF
// Need to change the output format by removing _ character from file name
set tGoodFileName = $tr(tGoodFileName,"_","")
set tBadFileName = $tr(tBadFileName,"_","")
Set status = ..Create999File(sBatchId,iNumber,.t999Stream)
if $$$ISERR(status) Quit status
if $$$ISOK(status)
{
//It appears that when we send the same stream object to the SendDocument in subsequent call
// the second call is unable to create a document object successfully. So we are cloning the
// object here and then passing a different stream object
Set t999StreamArchive = t999Stream.%ConstructClone()
}
if $$$ISERR(status) Quit status
if $$$ISOK(status)
{
if (tInputPath [ "CLAIMS_IN_MXCO_EMDEON")
{
set status = ..SendDocument(t999Stream,..TargetConfigPMCO999,t999FileName)
if $$$ISERR(status) Quit status
set status = ..SendDocument(t999StreamArchive,..TargetConfigPMCO999Archive,t999FileName)
if $$$ISERR(status) Quit status
}
if (tInputPath [ "CLAIMS_IN_EMDEON")
{
set status = ..SendDocument(t999Stream,..TargetConfig999,t999FileName)
if $$$ISERR(status) Quit status
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess: t999Stream2 "_t999Stream)
set status = ..SendDocument(t999StreamArchive,..TargetConfig999Archive,t999FileName)
if $$$ISERR(status) Quit status
}
}
#dim tGoodStream As %Library.Stream = $$$NULLOREF
Set status = ..CreateOutputFile(sBatchId,iNumber,"Good",tGoodFileName,.tGoodStream)
if $$$ISERR(status) Quit status
Set:$$$ISOK(status) status = ..SendDocument(tGoodStream,..TargetConfigGoodFile,tGoodFileName)
if $$$ISERR(status) Quit status
#dim tBadStream As %Library.Stream = $$$NULLOREF
Set status = ..CreateOutputFile(sBatchId,iNumber, "Bad",tBadFileName,.tBadStream)
if $$$ISERR(status) Quit status
Set:$$$ISOK(status) status = ..SendDocument(tBadStream,..TargetConfigBadFile, tBadFileName)
if $$$ISERR(status) Quit status
Quit $$$OK
]]></Implementation>
</Method>
<Method name="AssertReady">
<FormalSpec>pBatchId:%String,pGE01NBRTRANSETS:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
#dim retStatus as %Status = $$$OK
Set (stBefore1,stBefore2,stBefore3,stCount) = -1
For {
Set stBefore3 = stBefore2
Set stBefore2 = stBefore1
Set stBefore1 = stCount
// We are setting valDone in BPL ST837VAL to be used when Rubberstamp gets turned off.
// After any ST goes through validation, the BPL sets
// value in txnset999 table to 1 for that ST. Here we are monitoring the counters to see if
// counters are increasing. the count should equal the #STs reported in GE. If they don't
// there is error and if counters do not increment after hang of 6 seconds we report the error
&SQL(select count(*) into :stCount from CREPOS.TXNSET999 where batch = :pBatchId)
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"File Process stCount: "_stCount)
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"File Process pGE01NBRTRANSETS: "_pGE01NBRTRANSETS)
If (pGE01NBRTRANSETS = stCount) Quit
If (stCount > stBefore1) {
Hang 1
Continue
}
If (stCount > stBefore2) {
Hang 2
Continue
}
If (stCount > stBefore3) {
Hang 3
Continue
}
Set retStatus = $$$ERROR($$$GeneralError,"TXNSET999 not ready.")
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"TXNSET999 not ready.")
Quit
}
Quit retStatus
]]></Implementation>
</Method>
<Method name="Create999File">
<FormalSpec>sBatchId:%String,iNum:%Integer,*pStream:%GlobalCharacterStream</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
Set pStream = ##class(%GlobalCharacterStream).%New()
s tilde="~",tSC=$$$OK
s delim = tilde_$CHAR(10)
Set objBATCH = ##class(CREPOS.BATCH999).%OpenId(sBatchId)
Set sISA = objBATCH.RawISA_delim
Set sGS = objBATCH.RawGS_delim
Set sGE = objBATCH.RawGE_delim
Set sIEA = objBATCH.RawIEA_delim
Set sTXTYPE = $P(objBATCH.RawGS,"*",9)
Set tSC = ..GenerateHeaders(sISA,sGS,sGE,sIEA,.oISA999,.oGS999,.oGE999,.oIEA999)
set oISA999 = oISA999_delim
set oGS999 = oGS999_delim
set oGE999 = oGE999_delim
set oIEA999 = oIEA999_delim
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess sISA : "_sISA)
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess sGS : "_sGS)
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess sGE : "_sGE)
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess oISA999 : "_oISA999)
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess oGS999 : "_oGS999)
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess oGE999 : "_oGE999)
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess oIEA999 : "_oIEA999)
Set tSC = pStream.Write(oISA999)
Set tSC = pStream.Write(oGS999)
Set sAK1="AK1*HC*101*005010X224A2"_delim // Group Control Number
Set $P(sAK1,"*",3)=$P(sGS,"*",7) // Group Control Number
Set $P(sAK1,"*",4)=$P(sGS,"*",9) // Group Control Number
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess sAK1 : "_sAK1)
Set sST="ST*999*0001*005010X231A1"_delim
Set $P(sST,"*",3)=$P(oGS999,"*",7)_"001" //gs9CtrlNbr with trailing 001 as there is only one ST/SE in 999
Set sST = sST
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess sST : "_sST)
Set sSE = "SE*0*0001"
Set $P(sSE,"*",3)=$P(sST,"*",3) // gs9CtrlNbr with trailing 001 as there is only one ST/SE in 999
Set sSE = sSE_delim
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess sSE : "_sSE)
Set tSC = pStream.Write(sST)
Set tSC = pStream.Write(sAK1)
Set iSegCounter=2
Set strId = ""
Set strWhere = " WHERE BATCH = '"_sBatchId_"'"
Set strOrder = " ORDER BY ST02TXN_CTL_NBR"
Set strSQL="SELECT %ID FROM CREPOS.TXNSET999"_strWhere_strOrder
Set tStatement=##class(%SQL.Statement).%New()
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess OpFileSQL : "_strSQL)
Set qStatus=tStatement.%Prepare(strSQL)
If qStatus'=1 { Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess %Prepare failed : "_qStatus) QUIT qStatus}
Set objResultSet=tStatement.%Execute()
If objResultSet.%SQLCODE'=0 {
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess objResultSet.%SQLCODE : "_objResultSet.%SQLCODE)
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess objResultSet.%Message : "_objResultSet.%Message)
Quit $$$ERROR($$$GeneralError,"Unable to run SQL "_strSQL)
}
// Loop over TXNSET
set iTXcount=0
set iTXcountAccept=0
set iTXcountReject=0
While objResultSet.%Next() {
set iTXcount=iTXcount+1
Set sTXNSETId = objResultSet.%GetData(1)
Set objTXNSET = ##class(CREPOS.TXNSET999).%OpenId(sTXNSETId)
Set sRC = objTXNSET.RawData
Set tSRC = $TR(sRC,$CHAR(10),"")
Set sCLMID = $P($P(tSRC,"~CLM*",2),"*",1)
Set sAK2="AK2*837*3456*005010X224A2"_delim
Set $P(sAK2,"*",3)=objTXNSET.ST02TXNCTLNBR // Transaction Control Number
Set $P(sAK2,"*",4)=$P(sGS,"*",9)
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess sAK2 : "_sAK2)
Set tSC = pStream.Write(sAK2)
Set iSegCounter=iSegCounter+1
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess objTXNSET.valStatus : "_objTXNSET.valStatus)
If objTXNSET.valStatus {
// Good Claim was Accepted
Set sIK5="IK5*A"_delim
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess sIK5 : "_sIK5)
Set tSC = pStream.Write(sIK5)
Set iSegCounter=iSegCounter+1
set iTXcountAccept=iTXcountAccept+1
}
Else {
// Need to get data from TXNSETERR and create IK3 and IK4
set iTXcountReject=iTXcountReject+1
Set tSC = ..GenerateErrorStrings(sTXNSETId, sCLMID, .iSegCounter, .pStream)
If $$$ISERR(tSC) Quit
Set sIK5="IK5*R*5"_delim
Set tSC = pStream.Write(sIK5)
Set iSegCounter=iSegCounter+1
}
}
//Quit if error occurs
If $$$ISERR(tSC) Quit tSC
//AK902(3rd piece by *) = GE-P2
Set sAK9="AK9*A*1*1*1*000"_delim
Set $P(sAK9,"*",3)=$P(sGE,"*",2) // Number of TS Included
Set $P(sAK9,"*",4)=iTXcount // Number of Received TS (piece 3 and 4 should match up; if there is some error in segment validation it will not)
Set $P(sAK9,"*",5)=iTXcountAccept
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess sAK9 : "_sAK9)
Set tSC = pStream.Write(sAK9)
Set iSegCounter=iSegCounter+1
Set $P(sSE,"*",2)=$I(iSegCounter) // Number of ST/SE segments in 999 (ST, SE, AK9 etc.)
Set tSC = pStream.Write(sSE)
Set tSC = pStream.Write(oGE999)
Set tSC = pStream.Write(oIEA999)
Quit $$$OK
]]></Implementation>
</Method>
<Method name="GenerateErrorStrings">
<FormalSpec><![CDATA[sTXNSET:%String,sCLMID:%String,&iSegCounter:%Integer,&pStream:%GlobalCharacterStream]]></FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
Set strId = "",qStatus=$$$OK,star="*",tilde="~",delim=tilde_$CHAR(10)
Set strWhere = " WHERE TXNSET = '"_sTXNSET_"'"
Set strSQL="SELECT %ID FROM CREPOS.TXNSETERR999"_strWhere
Set tStatement=##class(%SQL.Statement).%New()
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess OpFileSQL ERR999 : "_strSQL)
Set qStatus=tStatement.%Prepare(strSQL)
If qStatus'=1 {
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess %Prepare failed : "_qStatus)
QUIT qStatus
}
Set objResultSet=tStatement.%Execute()
If objResultSet.%SQLCODE'=0 {
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess objResultSet.%SQLCODE : "_objResultSet.%SQLCODE)
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess objResultSet.%Message : "_objResultSet.%Message)
Quit $$$ERROR($$$GeneralError,"Unable to run SQL "_strSQL)
}
While objResultSet.%Next() {
Set sTXNSETERRId = objResultSet.%GetData(1)
Set objTXNSETERR = ##class(CREPOS.TXNSETERR999).%OpenId(sTXNSETERRId)
Set sIK301 = objTXNSETERR.IK301
Set sIK302 = objTXNSETERR.IK302
Set sIK303 = objTXNSETERR.IK303
Set sIK304 = objTXNSETERR.IK304
Set sIK401 = objTXNSETERR.IK401
Set sIK402 = objTXNSETERR.IK402
Set sIK403 = objTXNSETERR.IK403
Set sIK404 = objTXNSETERR.IK404
//IK3
Set sIK3 = "IK3"_star_sIK301_star_sIK302_star_sIK303_star_sIK304_delim
Set tSC = pStream.Write(sIK3)
Set iSegCounter=iSegCounter+1
//CTX
Set sIK3CTX = "CTX"_star_"SITUATIONAL TRIGGER"_star_sIK301_star_sIK302_star_sIK303_star_sIK401_delim
Set tSC = pStream.Write(sIK3CTX)
Set iSegCounter=iSegCounter+1
//CTX B
Set sIK3CTXB = "CTX"_star_"CLM01>"_sCLMID_delim
Set tSC = pStream.Write(sIK3CTXB)
Set iSegCounter=iSegCounter+1
//IK4
Set sIK4 = "IK4"_star_sIK401_star_sIK402_star_sIK403_star_sIK404_delim
Set tSC = pStream.Write(sIK4)
Set iSegCounter=iSegCounter+1
//CTX
Set sIK4CTX = "CTX"_star_"SITUATIONAL TRIGGER"_star_sIK301_star_sIK302_star_sIK303_star_sIK401_delim
Set tSC = pStream.Write(sIK4CTX)
Set iSegCounter=iSegCounter+1
}
Quit qStatus
]]></Implementation>
</Method>
<Method name="getBatchId">
<ClassMethod>1</ClassMethod>
<FormalSpec>strFN:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[ Quit ##class(EDIGW.Utility).getBatchId(strFN)
]]></Implementation>
</Method>
<Method name="CreateOutputFile">
<FormalSpec>sBatchId:%String,iNum:%Integer,sType:%String,sFileName:%String,*pStream:%GlobalCharacterStream</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
Set pStream = ##class(%GlobalCharacterStream).%New()
s tilde="~"
s delim = tilde_$CHAR(10)
Set objBATCH = ##class(CREPOS.BATCH999).%OpenId(sBatchId)
Set sISA = objBATCH.RawISA_delim
Set sGS = objBATCH.RawGS_delim
Set sGE = objBATCH.RawGE_delim
Set sIEA = objBATCH.RawIEA_delim
Set tSC = pStream.Write(sISA)
Set tSC = pStream.Write(sGS)
Set strId = ""
Set strWhere = " WHERE BATCH = '"_sBatchId_"'"_" and valStatus "_$s(sType="Good":" = '1",1:" <> '1")_"'"
Set strSQL="SELECT RawData FROM CREPOS.TXNSET999"_strWhere
Set tStatement=##class(%SQL.Statement).%New()
Set qStatus=tStatement.%Prepare(strSQL)
If qStatus'=1 { Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess %Prepare failed : "_qStatus) QUIT qStatus}
Set objResultSet=tStatement.%Execute()
If objResultSet.%SQLCODE'=0 {
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess objResultSet.%SQLCODE : "_objResultSet.%SQLCODE)
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess objResultSet.%Message : "_objResultSet.%Message)
Quit $$$ERROR($$$GeneralError,"Unable to execute SQL CODE "_strSQL)
}
// Loop over TXNSET
set iTXcount=0
While objResultSet.%Next() {
set iTXcount=iTXcount+1
Set sRC = objResultSet.%GetData(1)
Set tSC = pStream.Write(sRC)
}
Set $P(sGE,"*",2)=iTXcount
Set tSC = pStream.Write(sGE)
Set tSC = pStream.Write(sIEA)
//Add to CLAIMCOUNT
Set objClaimCount=##class(CREPOS.CLAIMCOUNT).%New()
Set objClaimCount.DATE = $P($H,",",1)
Set objClaimCount.TIME = $P($H,",",2)
Set objClaimCount.GS03APPRCVCD = $P(sGS,"*",4)
Set objClaimCount.GS08VERRLSINDID = $P(sGS,"*",9)
Set objClaimCount.ISA06SNDID = $P(sISA,"*",7)
Set objClaimCount.TXNCOUNTER = iTXcount
Set delim = ".edi"
Set objClaimCount.OUTPUTFILE = $Piece(sFileName,delim,1)_delim // Truncate sFileName
Set objClaimCount.CLAIMSCOUNTER = iTXcount
Set tSC = objClaimCount.%Save()
Do ##class(EDIGW.Utility).DEBUG($$$DebugFileProcess,"FileProcess objClaimCount SaveResult : "_tSC)
Quit $$$OK
]]></Implementation>
</Method>
<Method name="GenerateHeaders">
<FormalSpec><![CDATA[sISA:%String,sGS:%String,sGE:%String,sIEA:%String,&oISA999,&oGS999,&oGE999,&oIEA999]]></FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
set tsc = ##Class(EDIGW.Utility).getNextISAGSCtrlNbr(.isa9CtrlNbr,.gs9CtrlNbr)
if ($L(isa9CtrlNbr)<9)
{
set leadZero = 9 - $l(isa9CtrlNbr)
set isa9CtrlNbr = $e("000000000",1,leadZero)_isa9CtrlNbr
}
Set oISA999 = sISA
set $P(oISA999,"*",7) = $P(sISA,"*",9)
set $P(oISA999,"*",9) = $P(sISA,"*",7)
set $P(oISA999,"*",10) = $E($ZDATE($HOROLOG,8),3,8)
set $P(oISA999,"*",11) = $tr($ZTIME($P($HOROLOG,",",2),2),":","")
set $P(oISA999,"*",12) = "^"
set $P(oISA999,"*",14) = isa9CtrlNbr //200000 seed in DB, will have leading 0s here
set $P(oISA999,"*",15) = 1
set $P(oISA999,"*",17) = ">"
; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
;h ISA*00* *00* *ZZ*133052274 *ZZ*121150001 *190128*2011*$*00501*000003417*0*P*:~
;9 ISA*00* *00* *ZZ*121150001 *ZZ*133052274 *190129*0203*^*00501*000043868*1*P*>~
; 7,9,10,11,12,14,15,17 - need to modify in h
;9ISA(1) = hISA(1); 9ISA(2)=hISA(2); 9ISA(3)=hISA(3); 9ISA(4)=hISA(4); 9ISA(5)=hISA(5); 9ISA(6)=hISA(8);
;9ISA(7)=hISA(7); 9ISA(8)=hISA(6); 9ISA(9)={YYMMDD-$ZDATE($HOROLOG,8)}}; 9ISA(10)={timeOfDay-$P($ZTime($P($HOROLOG,",",2)),":",1)_$P($ZTime($P($HOROLOG,",",2)),":",2)}
; 9ISA(11)="^"; 9ISA(12)=hISA(12)
;9ISA(13)={largecounter-999999999 -100mil - track in DB?(^EDIGW999counter("ISA")} 9ISA(14) = hISA(14)+1 ???
;9ISA(15)=hISA(15) 9ISA(16) =">"
Set oGS999 = sGS
Set $P(oGS999,"*",2) = "FA"
Set $P(oGS999,"*",3) = $P(sGS,"*",4)
Set $P(oGS999,"*",4) = $P(sGS,"*",3)
Set $P(oGS999,"*",5) = $ZDATE($HOROLOG,8)
Set $P(oGS999,"*",6) = $tr($ZTIME($P($NOW(),",",2),1,2),":.","")
Set $P(oGS999,"*",7) = gs9CtrlNbr
Set $P(oGS999,"*",9) = "005010X231A1"
; 0 1 2 3 4 5 6 7 8
;h GS*HC*133052274*121150001*20190128*201140 *3417 *X*005010X223A2~
;9 GS*FA*121150001*133052274*20190129*02005638*14515*X*005010X231A1~
;9GS(1) = "FA"; 9GS(2)=hGS(3); 9GS(3)=hGS(2); 9GS(4)={ProcessingDate};9GS(5)={ProcessingTime}
;9GS(6) = {counter - next 999File produced - need to maintain in DB}; 9GS(7) = hGS(7)
;9GS(8)-="005010X231A1" (number is for 999)
Set oGE999 = sGE
Set $P(oGE999,"*",2) = 1
Set $P(oGE999,"*",3) = $P(oGS999,"*",7) // same as gs9CtrlNbr
; 0 1 2
;h GE*15805*3417~
;9 GE*1*14515~
;9GE(1)=1(#of TS included in 999-not #TS in 837);9GE(2)=9GS(6) - GrpControlNumber
Set oIEA999 = sIEA
Set $P(oIEA999,"*",2) =1
Set $P(oIEA999,"*",3) =$P(oISA999,"*",14) // isa9CtrlNbr
; 0 1 2
;h IEA*1*000003417~
;9 IEA*1*000043868~
;9IEA(1) = hIEA(1)-#ofIncludedFunctionalGroups; 9IEA(2)=9ISA(13)
QUIT $$$OK
]]></Implementation>
</Method>
<XData name="MessageMap">
<Data><![CDATA[
<MapItems>
<MapItem MessageType="EDIGW.BatchX">
<Method>BatchRequest</Method>
</MapItem>
<MapItem MessageType="EDIGW.ReqFN">
<Method>BatchRequest</Method>
</MapItem>
</MapItems>
]]></Data>
</XData>
<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>FileProcessDefaultData</DefaultData>
<Data name="FileProcessDefaultData">
<Subscript>"FileProcess"</Subscript>
<Value name="1">
<Value>TargetConfigNames</Value>
</Value>
<Value name="2">
<Value>TargetConfig999</Value>
</Value>
<Value name="3">
<Value>TargetConfigGoodFile</Value>
</Value>
<Value name="4">
<Value>TargetConfigBadFile</Value>
</Value>
<Value name="5">
<Value>TargetConfigPMCO999</Value>
</Value>
<Value name="6">
<Value>TargetConfig999Archive</Value>
</Value>
<Value name="7">
<Value>TargetConfigPMCO999Archive</Value>
</Value>
</Data>
</Storage>
</Class>
</Export>