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.Rules.TR3Rules">
<IncludeCode>EDIGW</IncludeCode>
<Super>EDIGW.Rules.NM1Rules</Super>
<TimeCreated>65016,56260.738482</TimeCreated>

<Method name="AllRules">
<Description>
Source Document passed from DTL
Object referring to current Transaction Set passed from DTL</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>source:EnsLib.EDI.X12.Document,objTXNSET:CREPOS.TXNSET999</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"AllRules")
///QUIT $$$OK
Set status = source.BuildMap(0)
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"AllRules status "_status)
// What if status is Error ??
Set status = ..Init()
Set retStatus = $$$OK

Set status = ..AllSEG(source,objTXNSET)
If retStatus Set retStatus = status
Quit retStatus
]]></Implementation>
</Method>

<Method name="BadST">
<ClassMethod>1</ClassMethod>
<FormalSpec>source:EnsLib.EDI.X12.Document,objTXNSET:CREPOS.TXNSET999</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"BadST")
Set tST03 = source.GetValueAt("1:3")
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"BadST ST03 "_tST03)
Set retStatus = $$$ERROR($$$GeneralError, "Transaction Type Error "_tST03)
Set err = ..logError(source,objTXNSET,"ST",3,1705,$$$SEGhasDataElemErr,$$$InvalidCodeValue,tST03,"BadST",retStatus)
Quit retStatus
]]></Implementation>
</Method>

<Method name="Init">
<ClassMethod>1</ClassMethod>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
Set ^Sum=0
Quit $$$OK
]]></Implementation>
</Method>

<Method name="AllSEG">
<ClassMethod>1</ClassMethod>
<FormalSpec>source:EnsLib.EDI.X12.Document="",objTXNSET:CREPOS.TXNSET999=""</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
Set status = $$$OK, retStatus = $$$OK
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"AllSEG")
Set iSegCount = source.SegCount
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"AllSEG segCount "_iSegCount)
For pIndex=1:1:iSegCount {
Set path = source.GetSegmentPath(pIndex,.status)
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"AllSEG path "_path)
If (path = "AMT") {
Continue
}
If (path = "BHT") {
Continue
}
If (path = "CLM") {
Set status = ..AnyCLM(source,objTXNSET,path,pIndex)
If retStatus Set retStatus=status
Continue
}
If (path = "DTP") {
Continue
}
If (path = "HL") {
Continue
}
If (path [ ".NM1") {
Set status = ..AnyNM1(source,objTXNSET,path,pIndex)
If retStatus Set retStatus=status
Continue
}
If (path [ ".N4") {
Set status = ..AnyN4(source,objTXNSET,path,pIndex)
If retStatus Set retStatus=status
Continue
}
If (path [ ".PER") {
Set status = ..AnyPER(source,objTXNSET,path,pIndex)
If retStatus Set retStatus=status
Continue
}
If (path = "PRV") {
Continue
}
If (path [ ".REF") {
Set status = ..AnyREF(source,objTXNSET,path,pIndex)
If retStatus Set retStatus=status
Continue
}
If (path = "SBR") {
Continue
}
If (path [ "SE") {
Set status = ..RuleSE01(source,objTXNSET,path,pIndex)
If retStatus Set retStatus=status
}
If (path [ "ST") {
Set status = ..RuleST(source,objTXNSET,path,pIndex)
If retStatus Set retStatus=status
Continue
}
If (path = "SV2") {
Set status = ..AnySV2(source,objTXNSET,path,pIndex)
Continue
}
}
Quit retStatus
]]></Implementation>
</Method>

<Method name="AnyCLM">
<ClassMethod>1</ClassMethod>
<FormalSpec>source:EnsLib.EDI.X12.Document="",objTXNSET:CREPOS.TXNSET999="",path:%String="",pIndex:%Integer=0</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
Set status = $$$OK, retStatus = $$$OK
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"CLM02CompareSum")
//set dataElementReferenceNum = 116 // Data Element Ref Number
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"path:"_path)
set objSegCLM2 = source.GetSegmentAt(path,.status)
set CLM02MonetaryAmount = objSegCLM2.GetValueAt("MonetaryAmount")
set CLM02MonetaryAmount = source.GetSegmentAt(path).GetValueAt("MonetaryAmount")
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"CLM02_MonetaryAmount:"_CLM02MonetaryAmount)

If (CLM02MonetaryAmount=^Sum){
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"The value of CLM02 matches sum of Institutional Service Lines ")
Set st = 1
}
Else {
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"The value of CLM02 does not match sum of Institutional Service Lines ")
Set st=0
}
Quit retStatus
]]></Implementation>
</Method>

<Method name="AnyN4">
<Description>
5010Rep-14.01.56: Loop 2010AA N4 State Code Situational Rule
Verify that Healthshare rejects X12 837 Healthcare Claim files if a N402 State Code is blank (OCC only accepts US based claims).
5010Rep-14.01.57: Loop 2010AA N4 Postal Code Situational Rule
Verify that Healthshare rejects X12 837 Healthcare Claim files if a N403 Postal Code is blank (OCC only accepts US based claims).
5010Rep-14.01.58: Loop 2010AA N4 Postal Code Length Situational Rule
Verify that Healthshare rejects X12 837 Healthcare Claim files if a N403 Postal Code is less than 9 digits (OCC only accepts US based claims).
5010Rep-14.01.59: Loop 2010AA N4 Country Subdivision Code Situational Rule
Verify that Healthshare rejects X12 837 Healthcare Claim files if a N407 Country Subdivision is not blank (OCC only accepts US based claims).
5010Rep-14.01.60: Loop 2010AB N4 State Code Situational Rule
Verify that Healthshare rejects X12 837 Healthcare Claim files if a N402 State Code is blank (OCC only accepts US based claims).</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>source:EnsLib.EDI.X12.Document="",objTXNSET:CREPOS.TXNSET999="",path:%String="",pIndex:%Integer=0</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
Set status = $$$OK, retStatus = $$$OK
#dim objSegN4 As EnsLib.EDI.X12.Segment
Set objSegN4 = source.GetSegmentAt($Select(pIndex:pIndex,1:path),.status)
Set N402 = objSegN4.GetValueAt("StateorProvinceCode")
If (N402 = "") {
Set status = $$$ERROR($$$GeneralError,"Missing Sate Code")
Set err = ..logError(source,objTXNSET,path,2,156,$$$SEGhasDataElemErr,$$$RequiredDataElemMissing,N402,"AnyN4",status)
Set retStatus = 0
}
Set postalCode = objSegN4.GetValueAt("PostalCode")
Set IK403 = 0
If postalCode'?9N {
If ($Length(postalCode) < 9) Set IK403 = $Select($L(postalCode)=0:$$$RequiredDataElemMissing,1:$$$DataElemTooShort)
If ($Length(postalCode) = 9) Set IK403 = $$$InvalidCodeValue
If ($Length(postalCode) > 9) Set IK403 = $$$DataElemTooLong
If (IK403 '= 0) {
Set status = $$$ERROR($$$GeneralError,"Invalid Postal Code")
Set err = ..logError(source,objTXNSET,path,3,116,$$$SEGhasDataElemErr,IK403,postalCode,"AnyN4",status)
Set retStatus = 0
}
}
Set N407 = objSegN4.GetValueAt("CountrySubdivisionCode")
If (N407'= "") {
Set status = $$$ERROR($$$GeneralError,"Invalid Country Subdivision Code")
Set err = ..logError(source,objTXNSET,path,7,1715,$$$SEGhasDataElemErr,$$$InvalidCodeValue,N407,"AnyN4",status)
Set retStatus = 0
}
Quit retStatus
]]></Implementation>
</Method>

<Method name="AnyREF">
<ClassMethod>1</ClassMethod>
<FormalSpec>source:EnsLib.EDI.X12.Document="",objTXNSET:CREPOS.TXNSET999="",path:%String="",pIndex:%Integer=0</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
Set status = $$$OK, retStatus = $$$OK
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"AnyREF path:"_path)
//path = "loop2000A(1).loop2010AC.REF(1)"
If path [ "loop2010AC.REF" {
Set status = ..REFofLoop2010AC(source,objTXNSET,path,pIndex)
If retStatus Set retStatus = status
}
//path = "loop2000A(1).loop2000B(1).loop2000C(1).loop2300(1).loop2400(1).loop2420C.REF(1)"
If path [ "loop2420C.REF" {
Set status = ..REF2420C(source,objTXNSET,path,pIndex)
If retStatus Set retStatus = status
}
QUIT retStatus
]]></Implementation>
</Method>

<Method name="AnySV2">
<ClassMethod>1</ClassMethod>
<FormalSpec>source:EnsLib.EDI.X12.Document="",objTXNSET:CREPOS.TXNSET999="",path:%String="",pIndex:%Integer=0</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
Set status = $$$OK, retStatus = $$$OK
set status = $$$OK
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"SumSV2")
//set dataElementReferenceNum = 116 // Data Element Ref Number
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"AnySV2 path:"_path)
set objSegSV2 = source.GetSegmentAt(path,.status)
set MonetaryAmount = objSegSV2.GetValueAt("MonetaryAmount")
set MonetaryAmount = source.GetSegmentAt(path).GetValueAt("MonetaryAmount")
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"MonetaryAmount:"_MonetaryAmount)

Set ^Sum=MonetaryAmount+^Sum
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"Sum:"_^Sum)

Quit $$$OK
// piece out sv203 segments
]]></Implementation>
</Method>

<Method name="REFofLoop2010AC">
<Description>
5010Rep-14.01.88: Loop 2010AC REF Pay to Plan Name Situational Rule
Verify that Healthshare rejects X12 837 Healthcare Claim files where a REF01 is 2U and a NPI is not reported in NM109 of the 2010AC loop</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>source:EnsLib.EDI.X12.Document="",objTXNSET:CREPOS.TXNSET999="",path:%String="",pIndex:%Integer=0</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
Set REF01 = source.GetSegmentAt($Select(pIndex:pIndex,1:path)).GetValueAt("RefIdQualifier")
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"REFofLoop2010AC path:"_path_" REF01 "_REF01)
If (REF01 '= "2U") Quit $$$OK

//path = "loop2000A(1).loop2010AC.REF(1)"
Set pathLoop = $Piece(path,".REF",1)
Set pathNM1 = pathLoop_".NM1"
Set NM109 = source.GetSegmentAt(pathNM1).GetValueAt("IdentificationCode")
Set strNPI = NM109
If ($Length(strNPI) = 10) Quit $$$OK
Set IK403 = $Select($Length(strNPI)<10:$$$DataElemTooShort,1:$$$DataElemTooLong)
Set status = $$$ERROR($$$GeneralError, "Missing NPI")
Set err = ..logError(source,objTXNSET,pathNM1,9,67,$$$SEGhasDataElemErr,IK403,NM109,"REFofLoop2010AC",status)
Quit status
]]></Implementation>
</Method>

<Method name="AnyPER">
<Description>
5010Rep-12.01.09: Loop 1000A - Submitter Name PER01 Contact Function Code
Verify that Healthshare rejects X12 837 Healthcare Claim files if Loop 1000A does not have an PER segment where the PER01 element is IC (Information Contact)
5010Rep-14.01.53: Loop 1000A PER Submitter Name Communication Qualifier Without Communication Info Situational Rule
Verify that Healthshare rejects X12 837 Healthcare Claim files if a PER05 or PER07 Communication Number Qualifier is supplied but PER06 or PER08 is blank.
5010Rep-14.01.54: Loop 1000A PER Communication Info Without Communication Qualifier Situational Rule
Verify that Healthshare rejects X12 837 Healthcare Claim files if a PER06 or PER07 Communication Number Data is supplied but PER05 or PER08 is blank.
5010Rep-14.01.55: PER Communication Info Without Communication Qualifier Situational Rule
Verify that Healthshare rejects X12 837 Healthcare Claim files if a PER06 or PER07 Communication Number Data is supplied but PER05 or PER07 is blank.
5010Rep-12.01.17: Loop 2010AA - Billing Provider Name PER01 Contact Function Code
Verify that Healthshare rejects X12 837 Healthcare Claim files if Loop 2010AA includes a PER segment where PER01 is not IC (Information Contact)
PER01, PER03 and PER04 are required in both places</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>source:EnsLib.EDI.X12.Document="",objTXNSET:CREPOS.TXNSET999="",path:%String="",pIndex:%Integer=0</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"AnyPER "_path)
Set status = $$$OK,posIK401=0
#dim objSegPER As EnsLib.EDI.X12.Segment
set objSegPER = source.GetSegmentAt($Select(pIndex:pIndex,1:path),.status)
Set PER01 = objSegPER.GetValueAt("ContactFunctionCode")
Set PER03 = objSegPER.GetValueAt("CommunicationNumberQualifier")
Set PER04 = objSegPER.GetValueAt("CommunicationNumber")
Set PER05 = objSegPER.GetValueAt("CommunicationNumberQualifier2")
Set PER06 = objSegPER.GetValueAt("CommunicationNumber2")
Set PER07 = objSegPER.GetValueAt("CommunicationNumberQualifier3")
Set PER08 = objSegPER.GetValueAt("CommunicationNumber3")

set status = ..CheckExpectedValue(PER01,"R*IC","Contact Function Code")
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"AnyPER01 "_+status)
if $$$ISERR(status) Set err = ..logError(source,objTXNSET,path,1,366,$$$SEGhasDataElemErr,$$$InvalidCodeValue,PER01,"AnyPER",status)

Set posIK401=0
if (PER03 '= "") &&(PER04 = "") set posIK401=4, eleRef=364, status=$$$ERROR($$$GeneralError, "Communication Number")
if (PER03 = "") &&(PER04 '= "") set posIK401=3, eleRef=365, status=$$$ERROR($$$GeneralError, "Communication Number Qualifier")
if (posIK401>0) {
Set err = ..logError(source,objTXNSET,path,posIK401,eleRef,$$$SEGhasDataElemErr,$$$RequiredDataElemMissing,"","AnyPER",status)
}

Set posIK401=0
if (PER05 '= "") &&(PER06 = "") set posIK401=6, eleRef=364, status=$$$ERROR($$$GeneralError, "Communication Number")
if (PER05 = "") &&(PER06 '= "") set posIK401=5, eleRef=365, status=$$$ERROR($$$GeneralError, "Communication Number Qualifier")
if (posIK401>0) {
Set err = ..logError(source,objTXNSET,path,posIK401,eleRef,$$$SEGhasDataElemErr,$$$RequiredDataElemMissing,"","AnyPER",status)
}

Set posIK401=0
if (PER07 '= "") &&(PER08 = "") set posIK401=8, eleRef=364, status=$$$ERROR($$$GeneralError, "Communication Number")
if (PER07 = "") &&(PER08 '= "") set posIK401=7, eleRef=365, status=$$$ERROR($$$GeneralError, "Communication Number Qualifier")
if (posIK401>0) {
Set err = ..logError(source,objTXNSET,path,posIK401,eleRef,$$$SEGhasDataElemErr,$$$RequiredDataElemMissing,"","AnyPER",status)
}
Quit status
]]></Implementation>
</Method>

<Method name="RuleST">
<ClassMethod>1</ClassMethod>
<FormalSpec>source:EnsLib.EDI.X12.Document="",objTXNSET:CREPOS.TXNSET999="",path:%String="",pIndex:%Integer=0</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
Set status = $$$OK,CM=","
Set tST03 = source.GetSegmentAt($Select(pIndex:pIndex,1:path)).GetValueAt("ImplementationConventionRefe")
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"RuleST path:"_path_" tST03 "_tST03)
If ((CM_"005010X224A2"_CM_"005010X223A2"_CM_"005010X222A1"_CM) [ (CM_tST03_CM)) Quit $$$OK

Set status = $$$ERROR($$$GeneralError, "Transaction Type Error "_tST03)
Set err = ..logError(source,objTXNSET,path,3,1705,$$$SEGhasDataElemErr,$$$InvalidCodeValue,tST03,"RuleST",status)
Quit status
]]></Implementation>
</Method>

<Method name="RuleSE01">
<ClassMethod>1</ClassMethod>
<FormalSpec>source:EnsLib.EDI.X12.Document="",objTXNSET:CREPOS.TXNSET999="",path:%String="",pIndex:%Integer=0</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
Set status = $$$OK
Set iSegCount = source.SegCount
Set tSE01 = source.GetSegmentAt($Select(pIndex:pIndex,1:path)).GetValueAt("NumberofIncludedSegments")
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"RuleSE01 path:"_path_" tSE01 "_tSE01)
If tSE01 = iSegCount Quit $$$OK

Set status = $$$ERROR($$$GeneralError, "Segment Count Error")
Set err = ..logError(source,objTXNSET,path,1,96,$$$SEGhasDataElemErr,$$$RequiredDataElemMissing,tSE01,"RuleSE01",status)
Quit status
]]></Implementation>
</Method>

<Method name="PostalCode9N">
<Description>
Verify that Healthshare rejects X12 837 Healthcare Claim files if a N403 Postal Code is less than 9 digits (OCC only accepts US based claims).</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>source:EnsLib.EDI.X12.Document,objTXNSET:CREPOS.TXNSET999,path:%String,pIndex:%Integer</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
set status = $$$OK
set objSegN4 = source.GetSegmentAt(path,.status)
set postalCode = objSegN4.GetValueAt("PostalCode")
set postalCode = source.GetSegmentAt(path).GetValueAt("PostalCode")
Set strZIP = $TRANSLATE(postalCode,"-") // remove "-"
if strZIP?9N Quit $$$OK

set status=0
Set err = ..logError(source,objTXNSET,path,3,116,$$$SEGhasDataElemErr,$$$RequiredDataElemMissing,postalCode,"PostalCode9N")
Quit status
]]></Implementation>
</Method>

<Method name="REF2420C">
<ClassMethod>1</ClassMethod>
<FormalSpec>source:EnsLib.EDI.X12.Document,objTXNSET:CREPOS.TXNSET999,path:%String,loop2420CRef:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
set (retSC,st)=$$$OK,posIK401=0

set eleRef="C040" // Data Element Ref Number
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"path:"_path)
set objSegREF = source.GetSegmentAt(path,.status)

set REF01 = objSegREF.GetValueAt("RefIdQualifier")
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"REF01-RefIdQualifier:"_REF01)
set REF04 = objSegREF.GetValueAt("ReferenceIdentifier")
Do ##class(EDIGW.Utility).DEBUG($$$DebugRules,"REF04-ReferenceIdentifier:"_REF04)

if (REF01 = "G2"),(REF04 = "") {
set st=0,retSC=0
Set err = ..logError(source,objTXNSET,path,4,eleRef,$$$SEGhasDataElemErr,$$$RequiredDataElemMissing,REF04,"REF2420C")
}

set posIK401=0, st=$$$OK
//REF*G2*12345**X1:X2~ (Last 'OR' Condition - piece 3,4,5,6 don't show up)
if (REF01 = "0B") || (REF01 = "1G") || (REF04 ="")||($L(REF04,":")=2) Quit retSC

Set REF04C04003 = $P(REF04,":",3)
Set REF04C04004 = $P(REF04,":",4)
Set REF04C04005 = $P(REF04,":",5)
Set REF04C04006 = $P(REF04,":",6)

//REF*G2*12345**X1:X2::::~ (piece 3,4,5,6 show up but as null values)
if (REF04C04003=""),(REF04C04004=""),(REF04C04005=""),(REF04C04006="") Quit retSC

//REF*G2*12345**X1:X2:X3:X4:X5:X6~

//REF*G2*12345**X1:X2:X3::X5-DON'T CARE:X6-DON'T CARE~
//REF*G2*12345**X1:X2::X4:X5-DON'T CARE:X6-DON'T CARE~
if (REF04C04003 '= "") &&(REF04C04004 = "") set posIK401=4
if (REF04C04003 = "") &&(REF04C04004 '= "") set posIK401=3
if (posIK401>0)
{
set st=0,retSC=0
set elePos = "4:"_posIK401 // Element Position in Segment
Set err = ..logError(source,objTXNSET,path,elePos,eleRef,$$$SEGhasDataElemErr,$$$RequiredDataElemMissing,"","REF2420C")
}

set posIK401=0, st=$$$OK
//REF*G2*12345**X1:X2:X3-DON'T CARE:X4-DON'T CARE:X5:X6~
//REF*G2*12345**X1:X2:X3-DON'T CARE:X4-DON'T CARE:X5:~
//REF*G2*12345**X1:X2:X3-DON'T CARE:X4-DON'T CARE::X6~
if (REF04C04005 '= "") &&(REF04C04006 = "") set posIK401=6
if (REF04C04005 = "") &&(REF04C04006 '= "") set posIK401=5

if (posIK401 >0)
{
set st=0,retSC=0
set elePos = "4:"_posIK401 // Element Position in Segment
Set err = ..logError(source,objTXNSET,path,elePos,eleRef,$$$SEGhasDataElemErr,$$$RequiredDataElemMissing,"","REF2420C")
}
Quit retSC
]]></Implementation>
</Method>

<Method name="PathIntoArr">
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&arr,source:EnsLib.EDI.X12.Document="",path:%String="",pIndex:%Integer=0]]></FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
Set pathLoopSeg = $P(path,":",1)
Set pathLoopSegLen = $L(pathLoopSeg,".")
Set segName = $P(pathLoopSeg,".",pathLoopSegLen)
Set loopName = $P(pathLoopSeg,".",pathLoopSegLen-1)
Set loopID = $P(loopName,"loop",2)
set arr("IK301") = segName
set arr("IK302") = $Select($Get(pIndex)>0:pIndex,1:source.GetSegmentIndex(pathLoopSeg,.tSC))
set arr("IK303") = loopID
Quit $$$OK
]]></Implementation>
</Method>

<Method name="RecordError">
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&arr,status:%Status,TXNSET:CREPOS.TXNSET999]]></FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
set err = ##class(CREPOS.TXNSETERR999).%New()
set err.TXNSET = TXNSET
set err.IK301=arr("IK301")
set err.IK302=arr("IK302")
set err.IK303=arr("IK303")
set err.IK304=arr("IK304")
//set err.CTX011=arr("CTX011")
//set err.CTX012=arr("CTX012")
set err.IK401=arr("IK401")
set err.IK402=arr("IK402")
set err.IK403=arr("IK403")
set err.IK404=arr("IK404")
set err.RuleName=arr("RuleName")
set err.RuleStatus=$$$OK
set st=err.%Save()
Quit st
]]></Implementation>
</Method>
</Class>
</Export>