Dynamic Logic Functions

This section describes the dynamic logic functions that are used to create financial messages from financial transactions and financial transaction details.

Create Invoice

Financial transaction details are grouped into invoices within a Financial Message. Grouping of invoices is done on various attributes on Financial Transaction and Financial Transaction Detail (Process Data). Additional fields required for an invoice are added or generated in this dynamic logic function. Dynamic Logic of the signature Create Invoice holds the logic to create invoices based on the invoice grouping criteria. Because of the grouping functionality all attributes on a financial transaction detail that have to be included in an invoice are the same. For this reason, the invoice can be based on a single financial transaction detail as input for the dynamic logic function; note also that the payment receiver is known at the financial transaction detail level, not on the financial transaction level.

Create Invoice XML

Dynamic functions of this type fill the values of an invoice element for an invoice of selected financial transaction. These dynamic functions are executed once per invoice of the financial transactions being processed.

Parameters

Parameter Name Parameter Type Input or Output Description

financialTransactionDetail

FinancialTransaction Detail

Input

The financial transaction detail from which the invoice header attributes are derived to construct the XML.

invoice

Input / Output

XML <invoice> element that will be included in the financial message.

Input: empty invoice with only the attributes assigned by the fixed logic set

The dynamic logic needs to transfer all desired values from the input parameters and financial transaction(s) to the invoice header. The amount is calculated by OHI and cannot be manipulated by the dynamic logic function.

In addition, logic needed to set details that only exist in an invoice header may be included (that is, to set values that are derived as opposed to simply being transferred).

Create Invoice Flat File

This function is executed for each "Invoice grouping" of financial transaction details. This function will allow creation of zero, one, or more flat file rows each time it is executed.

Parameters

Parameter Name Parameter Type Input or Output Description

financialMessage

FinancialMessage

Input

Financial Message Context[1]

financialTransactionDetail

FinancialTransactionDetail

Input

invoice

Invoice

Input

Invoice Context[1]

fileRows

List<FileRow>[2]

Input/Output

FileRow consists of the file identifier and row content

Example

Map apInv = [:]
apInv.INVOICE_ID = ""
apInv.OPERATING_UNIT = "OHI BU"
apInv.SOURCE = "EXTERNAL"
apInv.INVOICE_NUM = ""
apInv.INVOICE_AMOUNT = invoice.invoiceAmount
apInv.INVOICE_DATE = ""
apInv.VENDOR_NAME = ""
apInv.VENDOR_NUM = ""
apInv.VENDOR_SITE_CODE
apInv.INVOICE_CURRENCY_CODE = ""
apInv.PAYMENT_CURRENCY_CODE = ""
apInv.DESCRIPTION = "Health Insurance Claim"
apInv.GROUP_ID = financialMessage.jobId
apInv.INVOICE_TYPE_LOOKUP_CODE
apInv.LEGAL_ENTITY_NAME = "OHI Entity"
apInv.CUST_REGISTRATION_NUMBER = ""
apInv.CUST_REGISTRATION_CODE = ""
apInv.FIRST_PARTY_REGISTRATION_NUM = ""
apInv.THIRD_PARTY_REGISTRATION_NUM = ""
apInv.TERMS_NAME = "Immediate"
apInv.TERMS_DATE = ""
apInv.GOODS_RECEIVED_DATE = ""
apInv.INVOICE_RECEIVED_DATE = ""
apInv.GL_DATE = ""
apInv.PAYMENT_METHOD_CODE = "EFT"
apInv.PAY_GROUP_LOOKUP_CODE
apInv.EXCLUSIVE_PAYMENT_FLAG = ""
apInv.AMOUNT_APPLICABLE_TO_DISCOUNT =""
apInv.PREPAY_NUM = ""
apInv.PREPAY_LINE_NUM = ""
apInv.PREPAY_APPLY_AMOUNT = ""
apInv.PREPAY_GL_DATE = ""
apInv.INVOICE_INCLUDES_PREPAY_FLAG = ""
apInv.EXCHANGE_RATE_TYPE = "CORPORATE"
apInv.EXCHANGE_DATE
apInv.EXCHANGE_RATE = ""
apInv.ACCTS_PAY_CODE_CONCATENATED = "010-22500-00000-00000-00000-00000-00000"
apInv.DOC_CATEGORY_CODE = ""
apInv.VOUCHER_NUM = ""
apInv.REQUESTER_FIRST_NAME = ""
apInv.REQUESTER_LAST_NAME = ""
apInv.REQUESTER_EMPLOYEE_NUM = ""
apInv.DELIVERY_CHANNEL_CODE = ""
apInv.BANK_CHARGE_BEARER = ""
apInv.REMIT_TO_SUPPLIER_NAME = ""
apInv.REMIT_TO_SUPPLIER_NUM= ""
apInv.REMIT_TO_ADDRESS_NAME = ""
apInv.PAYMENT_PRIORITY = "1"
apInv.SETTLEMENT_PRIORITY = "NORMAL"
apInv.UNIQUE_REMITTANCE_IDENTIFIER = ""
apInv.URI_CHECK_DIGIT = ""
apInv.PAYMENT_REASON_CODE = ""
apInv.PAYMENT_REASON_COMMENTS = ""
apInv.REMITTANCE_MESSAGE1= ""
apInv.REMITTANCE_MESSAGE2 = ""
apInv.REMITTANCE_MESSAGE3 = ""
apInv.AWT_GROUP_NAME = ""
apInv.SHIP_TO_LOCATION = ""
apInv.TAXATION_COUNTRY = ""
apInv.DOCUMENT_SUB_TYPE = ""
apInv.TAX_INVOICE_INTERNAL_SEQ = ""
apInv.SUPPLIER_TAX_INVOICE_NUM = ""
apInv.TAX_INVOICE_RECORDING_DATE = ""
apInv.SUPPLIER_TAX_INVOICE_DATE = ""
apInv.SUPPLIER_TAX_EXCHANGE_RATE = ""
apInv.PORT_OF_ENTRY_CODE = ""
apInv.CORRECTION_YEAR = ""
apInv.CORRECTION_PERIOD = ""
apInv.IMPORT_DOCUMENT_NUMBER = ""
apInv.IMPORT_DOCUMENT_DATE = ""
apInv.CONTROL_AMOUNT = ""
apInv.CALC_TAX_DURING_IMPORT_FLAG = "N"
apInv.ADD_TAX_TO_INV_AMOUNT_FLAG = "N"
apInv.ATTRIBUTE_CATEGORY = "OHI_DATA"
apInv.ATTRIBUTE1 = ""
apInv.ATTRIBUTE2 = ""
apInv.ATTRIBUTE3 = ""
apInv.ATTRIBUTE4 = ""
apInv.ATTRIBUTE5 = ""
apInv.ATTRIBUTE6 = ""
apInv.ATTRIBUTE7 = "CLA"
apInv.ATTRIBUTE8 = invoice.ohiInvoiceId
apInv.ATTRIBUTE9 = ""
apInv.ATTRIBUTE10 = ""
apInv.ATTRIBUTE11 = ""
apInv.ATTRIBUTE12 = ""
apInv.ATTRIBUTE13 = ""
apInv.ATTRIBUTE14 = ""
apInv.ATTRIBUTE15 = ""
apInv.ATTRIBUTE_NUMBER1 = ""
apInv.ATTRIBUTE_NUMBER2 = ""
apInv.ATTRIBUTE_NUMBER3 = ""
apInv.ATTRIBUTE_NUMBER4 = ""
apInv.ATTRIBUTE_NUMBER5 = ""
apInv.ATTRIBUTE_DATE1 = ""
apInv.ATTRIBUTE_DATE2 = ""
apInv.ATTRIBUTE_DATE3 = ""
apInv.ATTRIBUTE_DATE4 = ""
apInv.ATTRIBUTE_DATE5 = ""
apInv.GLOBAL_ATTRIBUTE_CATEGORY = ""
apInv.GLOBAL_ATTRIBUTE1 = ""
apInv.GLOBAL_ATTRIBUTE2 = ""
apInv.GLOBAL_ATTRIBUTE3 = ""
apInv.GLOBAL_ATTRIBUTE4 = ""
apInv.GLOBAL_ATTRIBUTE5 = ""
apInv.GLOBAL_ATTRIBUTE6 = ""
apInv.GLOBAL_ATTRIBUTE7 = ""
apInv.GLOBAL_ATTRIBUTE8 = ""
apInv.GLOBAL_ATTRIBUTE9 = ""
apInv.GLOBAL_ATTRIBUTE10 = ""
apInv.GLOBAL_ATTRIBUTE11 = ""
apInv.GLOBAL_ATTRIBUTE12 = ""
apInv.GLOBAL_ATTRIBUTE13 = ""
apInv.GLOBAL_ATTRIBUTE14 = ""
apInv.GLOBAL_ATTRIBUTE15 = ""
apInv.GLOBAL_ATTRIBUTE16 = ""
apInv.GLOBAL_ATTRIBUTE17 = ""
apInv.GLOBAL_ATTRIBUTE18 = ""
apInv.GLOBAL_ATTRIBUTE19 = ""
apInv.GLOBAL_ATTRIBUTE20 = ""
apInv.GLOBAL_ATTRIBUTE_NUMBER1 = ""
apInv.GLOBAL_ATTRIBUTE_NUMBER2 = ""
apInv.GLOBAL_ATTRIBUTE_NUMBER3 = ""
apInv.GLOBAL_ATTRIBUTE_NUMBER4 = ""
apInv.GLOBAL_ATTRIBUTE_NUMBER5 = ""
apInv.GLOBAL_ATTRIBUTE_DATE1 = ""
apInv.GLOBAL_ATTRIBUTE_DATE2 = ""
apInv.GLOBAL_ATTRIBUTE_DATE3 = ""
apInv.GLOBAL_ATTRIBUTE_DATE4 = ""
apInv.GLOBAL_ATTRIBUTE_DATE5 = ""

fileRows.add(new FileRow("AP_INVOICES_INTERFACE", apInv.values().join(",")))

Create Invoice Line

Financial transaction details are grouped into invoices lines within an Invoice in a Financial Message. Grouping of invoice lines is done on various attributes on Financial Transaction and Financial Transaction Detail (Process Data). Additional fields required for an invoice line are added or generated in this dynamic logic function. Dynamic Logic of the signature Create Invoice Line holds the logic to create invoice lines based on the invoice line grouping criteria.

Create Invoice Line XML

Dynamic functions of this type fill the values of an invoice line element for an amount that needs to be paid (or retracted). These dynamic functions are executed once for each generated by the Generate Financial Message activity. They are executed within the context of the invoice with the same payment receiver of the financial transaction detail process data.

Parameters

Parameter Parameter Type Input or Output Description

financialTransactionDetail

FinancialTransaction Detail

Input

The financial transaction detail from which the invoice line attributes are derived to contract the XML.

invoiceLine

Input / Output

XML <invoiceLine> element that will be included in the financial message.

Input: empty invoice header with only invoiceId set

The dynamic logic needs to transfer all desired values from the financial detail, claim line, bill and claim to the invoice line. The amount is calculated by OHI and cannot be manipulated by the dynamic logic function.

In addition, logic needed to set details that only exist in an invoice line may be included (that is, to set values that are derived as opposed to simply being transferred).

Create Invoice Line Flat File

This function will be executed for each "Invoice Line grouping" of financial transaction details. This function will allow creation of zero, one, or more flat file rows each time it is executed.

Parameters

Parameter Name Parameter Type Input or Output Description

financialMessage

FinancialMessage

Input

Financial Message Context[1]

financialTransactionDetail

FinancialTransactionDetail

Input

Financial Transaction Detail

invoice

Invoice

Input

Invoice Context[1]

invoiceLine

InvoiceLine

Input

Invoice Line Context[1]

fileRows

List<FileRow>

Input/Output

File row consists of the file identifier and row content

Example

Map apInvLn = [:]
apInvLn.INVOICE_ID = ""
apInvLn.LINE_NUMBER = ""
apInvLn.LINE_TYPE_LOOKUP_CODE = "Item"
apInvLn.AMOUNT = invoiceLine.amount
apInvLn.QUANTITY_INVOICED = ""
apInvLn.UNIT_PRICE = ""
apInvLn.UNIT_OF_MEAS_LOOKUP_CODE = ""
apInvLn.DESCRIPTION = ""
apInvLn.PO_NUMBER = ""
apInvLn.PO_LINE_NUMBER = ""
apInvLn.PO_SHIPMENT_NUM = ""
apInvLn.PO_DISTRIBUTION_NUM = ""
apInvLn.ITEM_DESCRIPTION = ""
apInvLn.RELEASE_NUMBER = ""
apInvLn.PURCHASING_CATEGORY = ""
apInvLn.RECEIPT_NUMBER = ""
apInvLn.RECEIPT_LINE_NUMBER = ""
apInvLn.CONSUMPTION_ADVICE_NUMBER = ""
apInvLn.CONSUMPTION_ADVICE_LINE_NUMBER = ""
apInvLn.PACKING_SLIP = ""
apInvLn.FINAL_MATCH_FLAG = ""
apInvLn.DIST_CODE_CONCATENATED = "010-44040-00000-00000-00000-00000-00000"
apInvLn.DISTRIBUTION_SET_NAME = ""
apInvLn.ACCOUNTING_DATE
apInvLn.ACCOUNT_SEGMENT = ""
apInvLn.BALANCING_SEGMENT = ""
apInvLn.COST_CENTER_SEGMENT = ""
apInvLn.TAX_CLASSIFICATION_CODE = ""
apInvLn.SHIP_TO_LOCATION_CODE = ""
apInvLn.SHIP_FROM_LOCATION_CODE = ""
apInvLn.FINAL_DISCHARGE_LOCATION_CODE = ""
apInvLn.TRX_BUSINESS_CATEGORY = ""
apInvLn.PRODUCT_FISC_CLASSIFICATION = ""
apInvLn.PRIMARY_INTENDED_USE = ""
apInvLn.USER_DEFINED_FISC_CLASS = ""
apInvLn.PRODUCT_TYPE = ""
apInvLn.ASSESSABLE_VALUE = ""
apInvLn.PRODUCT_CATEGORY = ""
apInvLn.CONTROL_AMOUNT = ""
apInvLn.TAX_REGIME_CODE = ""
apInvLn.TAX = ""
apInvLn.TAX_STATUS_CODE = ""
apInvLn.TAX_JURISDICTION_CODE = ""
apInvLn.TAX_RATE_CODE = ""
apInvLn.TAX_RATE = ""
apInvLn.AWT_GROUP_NAME = ""
apInvLn.TYPE_1099 = ""
apInvLn.INCOME_TAX_REGION = ""
apInvLn.PRORATE_ACROSS_FLAG = "N"
apInvLn.LINE_GROUP_NUMBER = "1"
apInvLn.COST_FACTOR_NAME = ""
apInvLn.STAT_AMOUNT = ""
apInvLn.ASSET_TRACKING_FLAG = "N"
apInvLn.ASSET_BOOK_TYPE_CODE = ""
apInvLn.ASSET_CATEGORY_ID = ""
apInvLn.SERIAL_NUMBER = ""
apInvLn.MANUFACTURER = ""
apInvLn.MODEL_NUMBER = ""
apInvLn.WARRANTY_NUMBER = ""
apInvLn.PRICE_CORRECTION_FLAG = "N"
apInvLn.PRICE_CORRECT_INV_NUM = ""
apInvLn.PRICE_CORRECT_INV_LINE_NUM = ""
apInvLn.REQUESTER_FIRST_NAME = ""
apInvLn.REQUESTER_LAST_NAME = ""
apInvLn.REQUESTER_EMPLOYEE_NUM = ""
apInvLn.ATTRIBUTECATEGORY = ""
apInvLn.ATTRIBUTE1 = "CLA"
apInvLn.ATTRIBUTE2 = invoiceLine.ohiLineId
apInvLn.ATTRIBUTE3 = ""
apInvLn.ATTRIBUTE4 = ""
apInvLn.ATTRIBUTE5 = ""
apInvLn.ATTRIBUTE6 = ""
apInvLn.ATTRIBUTE7 = ""
apInvLn.ATTRIBUTE8 = ""
apInvLn.ATTRIBUTE9 = ""
apInvLn.ATTRIBUTE10 = ""
apInvLn.ATTRIBUTE11 = ""
apInvLn.ATTRIBUTE12 = ""
apInvLn.ATTRIBUTE13 = ""
apInvLn.ATTRIBUTE14 = ""
apInvLn.ATTRIBUTE15 = ""
apInvLn.ATTRIBUTE_NUMBER1 = ""
apInvLn.ATTRIBUTE_NUMBER2 = ""
apInvLn.ATTRIBUTE_NUMBER3 = ""
apInvLn.ATTRIBUTE_NUMBER4 = ""
apInvLn.ATTRIBUTE_NUMBER5 = ""
apInvLn.ATTRIBUTE_DATE1 = ""
apInvLn.ATTRIBUTE_DATE2 = ""
apInvLn.ATTRIBUTE_DATE3 = ""
apInvLn.ATTRIBUTE_DATE4 = ""
apInvLn.ATTRIBUTE_DATE5 = ""
apInvLn.GLOBAL_ATTRIBUTECATEGORY = ""
apInvLn.GLOBAL_ATTRIBUTE1 = ""
apInvLn.GLOBAL_ATTRIBUTE2 = ""
apInvLn.GLOBAL_ATTRIBUTE3 = ""
apInvLn.GLOBAL_ATTRIBUTE4 = ""
apInvLn.GLOBAL_ATTRIBUTE5 = ""
apInvLn.GLOBAL_ATTRIBUTE6 = ""
apInvLn.GLOBAL_ATTRIBUTE7 = ""
apInvLn.GLOBAL_ATTRIBUTE8 = ""
apInvLn.GLOBAL_ATTRIBUTE9 = ""
apInvLn.GLOBAL_ATTRIBUTE10 = ""
apInvLn.GLOBAL_ATTRIBUTE11 = ""
apInvLn.GLOBAL_ATTRIBUTE12 = ""
apInvLn.GLOBAL_ATTRIBUTE13 = ""
apInvLn.GLOBAL_ATTRIBUTE14 = ""
apInvLn.GLOBAL_ATTRIBUTE15 = ""
apInvLn.GLOBAL_ATTRIBUTE16 = ""
apInvLn.GLOBAL_ATTRIBUTE17 = ""
apInvLn.GLOBAL_ATTRIBUTE18 = ""
apInvLn.GLOBAL_ATTRIBUTE19 = ""
apInvLn.GLOBAL_ATTRIBUTE20 = ""
apInvLn.GLOBAL_ATTRIBUTE_NUMBER1 = ""
apInvLn.GLOBAL_ATTRIBUTE_NUMBER2 = ""
apInvLn.GLOBAL_ATTRIBUTE_NUMBER3 = ""
apInvLn.GLOBAL_ATTRIBUTE_NUMBER4 = ""
apInvLn.GLOBAL_ATTRIBUTE_NUMBER5 = ""
apInvLn.GLOBAL_ATTRIBUTE_DATE1 = ""
apInvLn.GLOBAL_ATTRIBUTE_DATE2 = ""
apInvLn.GLOBAL_ATTRIBUTE_DATE3 = ""
apInvLn.GLOBAL_ATTRIBUTE_DATE4 = ""
apInvLn.GLOBAL_ATTRIBUTE_DATE5 = ""
apInvLn.PJC_PROJECT_ID = ""
apInvLn.PJC_TASK_ID = ""
apInvLn.PJC_EXPENDITURE_TYPE_ID = ""
apInvLn.PJC_EXPENDITURE_ITEM_DATE = ""
apInvLn.PJC_EXPENDITURE_ORGANIZATION_ID = ""
apInvLn.PJC_PROJECT_NUMBER = ""
apInvLn.PJC_TASK_NUMBER = ""
apInvLn.PJC_EXPENDITURE_TYPE = ""
apInvLn.PJC_EXPENDITURE_ORGANIZATION = ""
apInvLn.PJC_FUNDING_SOURCE_ID = ""
apInvLn.PJC_RESERVED_ATTRIBUTE2 = ""
apInvLn.PJC_RESERVED_ATTRIBUTE3 = ""
apInvLn.PJC_RESERVED_ATTRIBUTE4 = ""
apInvLn.PJC_RESERVED_ATTRIBUTE5 = ""
apInvLn.PJC_RESERVED_ATTRIBUTE6 = ""
apInvLn.PJC_RESERVED_ATTRIBUTE7 = ""
apInvLn.PJC_RESERVED_ATTRIBUTE8 = ""
apInvLn.PJC_RESERVED_ATTRIBUTE9 = ""
apInvLn.PJC_RESERVED_ATTRIBUTE10 = ""
apInvLn.PJC_USER_DEFINED_ATTRIBUTE1 = ""
apInvLn.PJC_USER_DEFINED_ATTRIBUTE2 = ""
apInvLn.PJC_USER_DEFINED_ATTRIBUTE3 = ""
apInvLn.PJC_USER_DEFINED_ATTRIBUTE4 = ""
apInvLn.PJC_USER_DEFINED_ATTRIBUTE5 = ""
apInvLn.PJC_USER_DEFINED_ATTRIBUTE6 = ""
apInvLn.PJC_USER_DEFINED_ATTRIBUTE7 = ""
apInvLn.PJC_USER_DEFINED_ATTRIBUTE8 = ""
apInvLn.PJC_USER_DEFINED_ATTRIBUTE9 = ""
apInvLn.PJC_USER_DEFINED_ATTRIBUTE10 = ""

fileRows.add(new FileRow("AP_INVOICE_LINES_INTERFACE", apInvLn.values().join(",")))

Create Accounting Details

Financial transaction details are grouped into invoices lines within an Invoice in a Financial Message. Grouping of invoice lines is done on various attributes on Financial Transaction and Financial Transaction Detail (Process Data). Dynamic Logic of the signature Create Accounting Details holds the logic to create accounting details based on the accounting detail grouping criteria.

Create Accounting Detail XML

This dynamic function is executed once per accounting detail generated by the Generate Financial Message activity.

Parameters

Parameter Parameter Type Input or Output Description

financialTransactionDetail

Financial Transaction Detail

Input

The financial transaction detail from which the invoice line attributes are derived to contract the XML.

accountingDetail

Input / Output

XML <accountingDetail> element that will be included in the financial message.

The dynamic logic needs to transfer all desired values from the financial transaction detail and related objects to the accounting detail.

In addition, logic needed to set details that only exist in an accounting detail may be included (that is, to set values that are derived as opposed to simply being transferred)

Create Accounting Detail Flat File

This function will be executed for each "accounting detail grouping" of financial transaction details. This function will allow creation of zero, one, or more flat file rows each time it is executed.

Parameters

Parameter Name Parameter Type Input or Output Description

financialMessage

FinancialMessage

Input

Financial Message Context[1]

financialTransactionDetail

FinancialTransactionDetails

Input

Financial Transaction Detail

invoice

Invoice

Input

InvoiceContext

accountingDetail

AccountingDetail

Input

Accounting Detail Context[1]

fileRows

List<FileRow>

Input/Output

File row consists of the file identifier and row content

Example

Map glInt = [:]
glInt.STATUS          = "NEW"
glInt.LEDGER_ID       = "300000004014096"
glInt.ACCOUNTING_DATE = accountingDetail.accountingDate
glInt.USER_JE_SOURCE_NAME = "OHI"
glInt.USER_JE_CATEGORY_NAME = "OHI"
glInt.CURRENCY_CODE =
glInt.DATE_CREATED =
glInt.ACTUAL_FLAG = "A"
glInt.SEGMENT1 =
glInt.SEGMENT2 =
glInt.SEGMENT3 =
glInt.SEGMENT4 =
glInt.SEGMENT5 =
glInt.SEGMENT6 = ""
glInt.SEGMENT6 = ""
glInt.SEGMENT8 = ""
glInt.SEGMENT9 = ""
glInt.SEGMENT1O = ""
glInt.SEGMENT11 = ""
glInt.SEGMENT12 = ""
glInt.SEGMENT13 = ""
glInt.SEGMENT14 = ""
glInt.SEGMENT15 = ""
glInt.SEGMENT16 = ""
glInt.SEGMENT16 = ""
glInt.SEGMENT18 = ""
glInt.SEGMENT19 = ""
glInt.SEGMENT2O = ""
glInt.SEGMENT21 = ""
glInt.SEGMENT22 = ""
glInt.SEGMENT23 = ""
glInt.SEGMENT24 = ""
glInt.SEGMENT25 = ""
glInt.SEGMENT26 = ""
glInt.SEGMENT26 = ""
glInt.SEGMENT28 = ""
glInt.SEGMENT29 = ""
glInt.SEGMENT3O = ""
glInt.ENTERED_DR  = accountingDetail.amountDebit.toPlainString()
glInt.ENTERED_CR =  accountingDetail.amountCredit.toPlainString()
glInt.ACCOUNTED_DR  = ""
glInt.ACCOUNTED_CR = ""
glInt.REFERENCE1 = financialMessage.jobId
glInt.REFERENCE2 = ""
glInt.REFERENCE3 = ""
glInt.REFERENCE4 = ""
glInt.REFERENCE5 = ""
glInt.REFERENCE6 = ""
glInt.REFERENCE7 = ""
glInt.REFERENCE8 = ""
glInt.REFERENCE9 = ""
glInt.REFERENCE10 = ""
glInt.REFERENCE21 = ""
glInt.REFERENCE22 = ""
glInt.REFERENCE23 = ""
glInt.REFERENCE24 = ""
glInt.REFERENCE25 = ""
glInt.REFERENCE26 = ""
glInt.REFERENCE27 = ""
glInt.REFERENCE28 = ""
glInt.REFERENCE29 = ""
glInt.REFERENCE30 = ""
glInt.STAT_AMOUNT = ""
glInt.USER_CURRENCY_CONVERSION TYPE = ""
glInt.CURRENCY_CONVERSION DATE = ""
glInt.CURRENCY_CONVERSION RATE = ""
glInt.GROUP_ID = financialMessage.jobId
glInt.ATTRIBUTE_CATEGORY = "OHI_DATA"
glInt.ATTRIBUTE1 = ""
glInt.ATTRIBUTE2 = ""
glInt.ATTRIBUTE3 = ""
glInt.ATTRIBUTE4 = ""
glInt.ATTRIBUTE5 = ""
glInt.ATTRIBUTE6 = ""
glInt.ATTRIBUTE7 = "CLA"
glInt.ATTRIBUTE8 =  accountingDetail.ohiAccountingDetailId
glInt.ATTRIBUTE9 = ""
glInt.ATTRIBUTE10 = ""
glInt.ATTRIBUTE11 = ""
glInt.ATTRIBUTE12 = ""
glInt.ATTRIBUTE13 = ""
glInt.ATTRIBUTE14 = ""
glInt.ATTRIBUTE15 = ""
glInt.ATTRIBUTE16 = ""
glInt.ATTRIBUTE17 = ""
glInt.ATTRIBUTE18 = ""
glInt.ATTRIBUTE19 = ""
glInt.ATTRIBUTE20 = ""
glInt.ATTRIBUTE_CATEGORY_3 = ""
glInt.AVERAGE JOURNAL FLAG = ""
glInt.ORIGINATION_BAL_SEG_VALUE = ""
glInt.LEDGER NAME = ""
glInt.ENCUMBRANCE TYPE ID = ""
glInt.JGZZ_RECON_REF = ""

fileRows.add(new FileRow("GL_INTERFACE", glInt.values().join(",")))

Transfer Claim Transaction Header

Dynamic functions of this type create a claim transaction "header" with claim-level details needed (in addition to the invoice, invoice lines, and accounting details of the financial message) for the financial application connector that is being used.

These dynamic functions are executed for each <ctrClaim> element (current and previous if applicable) of a financial message.

Parameters

Parameter Name Parameter Type Input or Output Description

ctrClaim

CTR Claim

Input

finClaim

CTR Claim

Input / Output

The dynamic logic needs to:

  • transfer all desired values from the ctr claim and its included objects (with the exception of claim lines) to the financial claim

Example:

 finClaim.code = ctrClaim.code
 finClaim.version = ctrClaim.version
 finClaim.transactionDateTime = ctrClaim.transactionDateTime
 finClaim.type = ctrClaim.type
 finClaim.reversal = ctrClaim.reversal
 finClaim.totalAllowedAmount = ctrClaim.totalAllowedAmount
 finClaim.totalClaimedAmount = ctrClaim.totalClaimedAmount
 finClaim.totalCoveredAmount = ctrClaim.totalCoveredAmount
 //claimantMember
 finClaim.claimantRelName = ctrClaim.claimantRelName
 finClaim.claimantRelCode = ctrClaim.claimantRelCode
 finClaim.claimantProvCode = ctrClaim.claimantProvCode
 finClaim.claimantProvCodeDef = ctrClaim.claimantProvCodeDef
 //servicedEntity
 finClaim.servicedEntityType = ctrClaim.servicedEntityType
 finClaim.servicedEntityName = ctrClaim.servicedEntityName
 finClaim.servicedEntityCode = ctrClaim.servicedEntityCode
 //paymentBeneficiary
 finClaim.payBeneficiaryRelName = ctrClaim.payBeneficiaryRelName
 finClaim.payBeneficiaryRelCode = ctrClaim.payBeneficiaryRelCode
 finClaim.payBeneficiaryProvCode = ctrClaim.payBeneficiaryProvCode
 finClaim.payBeneficiaryProvCodeDef = ctrClaim.payBeneficiaryProvCodeDef
 //paymentReceiver
 finClaim.payReceiverRelName = ctrClaim.payReceiverRelName
 finClaim.payReceiverRelCode = ctrClaim.payReceiverRelCode
 finClaim.payReceiverProvCode = ctrClaim.payReceiverProvCode
 finClaim.payReceiverProvCodeDef = ctrClaim.payReceiverProvCodeDef
 finClaim.entryDate = ctrClaim.entryDate
 finClaim.claimDate = ctrClaim.claimDate
 finClaim.formCode = ctrClaim.formCode
 finClaim.providerMemberReference = ctrClaim.providerEntityReference
 //diagnoses
 for (ctrClaimDiagnosis in ctrClaim.ctrClaimDiagnosisList) {
     def finClaimDiagnosis = new CtrClaimDiagnosis()
 finClaimDiagnosis.code = ctrClaimDiagnosis.code
     finClaimDiagnosis.description = ctrClaimDiagnosis.description
     finClaimDiagnosis.codeDef = ctrClaimDiagnosis.codeDef
     finClaimDiagnosis.sequence = ctrClaimDiagnosis.sequence
     finClaimDiagnosis.typeCode = ctrClaimDiagnosis.typeCode
     finClaimDiagnosis.typeDescription = ctrClaimDiagnosis.typeDescription
     finClaim.addCtrClaimDiagnosis(finClaimDiagnosis)
 }
 // US Seed
 ctrClaim.admissionType.each { admissionType ->
 finClaim.addDynamicRecord ("admissionType",
         [
             code: admissionType?.code,
             description: admissionType?.description
         ])
 }
 ctrClaim.patientDischargeStatus.each { patientDischargeStatus ->
     finClaim.addDynamicRecord ("patientDischargeStatus",
         [
             code: patientDischargeStatus?.code,
             description: patientDischargeStatus?.description
         ])
 }
 ctrClaim.diagnosisRelatedGroup.each { diagnosisRelatedGroup ->
     finClaim.addDynamicRecord ("diagnosisRelatedGroup",
         [
             code: diagnosisRelatedGroup?.code,
             description: diagnosisRelatedGroup?.description
         ])
 }
 ctrClaim.principleProcedure.each { principleProcedure ->
     finClaim.addDynamicRecord ("principleProcedure",
         [
             code: principleProcedure?.code,
             description: principleProcedure?.description,
             procedureDate: principleProcedure?.procedureDate
         ])
 }
 ctrClaim.otherProcedures.each { otherProcedures ->
     finClaim.addDynamicRecord ("otherProcedures",
         [
             code: otherProcedures?.code,
             description: otherProcedures?.description,
             procedureDate: otherProcedures?.procedureDate
         ])
 }
 ctrClaim.attendingProvider.each { attendingProvider ->
     finClaim.addDynamicRecord ("attendingProvider",
         [
             code: attendingProvider?.code,
             description: attendingProvider?.description
         ])
 }
 finClaim.admissionHour = ctrClaim.admissionHour
 finClaim.admissionDate = ctrClaim.admissionDate
 finClaim.dischargeHour = ctrClaim.dischargeHour
 finClaim.dischargeDate = ctrClaim.dischargeDate
 return finClaim

Transfer Claim Transaction Bill

Dynamic functions of this type create a claim transaction bill with details needed (in addition to the invoice, invoice lines, and accounting details of the financial message) for the financial application connector that is being used.

These dynamic functions are executed once per <ctrBill> element (current and previous if applicable) of a financial message.

Parameters

Parameter Name Parameter Type Input or Output Description

ctrBill

CTR Bill

Input

finBill

CTR Bill

Input / Output

The dynamic logic needs to:

  • transfer all desired values from the ctr bill and its included objects (with the exception of claim lines) to the financial bill

Transfer Claim Transaction Claim Line

Dynamic functions of this type create a claim transaction claim line with details needed (in addition to the invoice, invoice lines, and accounting details of the financial message) for the financial application connector that is being used.

These dynamic functions are executed once per <ctrClaimLine> element (current and previous if applicable) of a financial message.

Parameters

Parameter Parameter Type Input or Output Description

ctrClaimLine

CTR ClaimLine

Input

finClaimLine

CTR ClaimLine

Input / Output

The dynamic logic needs to:

  • transfer all desired values from the ctr claim line and its included objects (with the exception of financial details and allocations) to the financial claim line

Example:

 finClaimLine.code = ctrClaimLine.code
 finClaimLine.sequence = ctrClaimLine.sequence
 finClaimLine.coveredAmount = ctrClaimLine.coveredAmount
 finClaimLine.allowedAmount = ctrClaimLine.allowedAmount
 finClaimLine.claimedAmount = ctrClaimLine.claimedAmount
 finClaimLine.claimedNumberOfUnits = ctrClaimLine.claimedNumberOfUnits
 finClaimLine.startDate = ctrClaimLine.startDate
 finClaimLine.endDate = ctrClaimLine.endDate
 //servicedEntity
 finClaimLine.servicedEntityType = ctrClaimLine.servicedEntityType
 finClaimLine.servicedEntityName = ctrClaimLine.servicedEntityName
 finClaimLine.servicedEntityCode = ctrClaimLine.servicedEntityCode
 //procedure
 finClaimLine.procedureCode =  ctrClaimLine.procedureCode
 finClaimLine.procedureDescription =  ctrClaimLine.procedureDescription
 finClaimLine.procedureCodeDef =  ctrClaimLine.procedureCodeDef
 finClaimLine.procedureAccessCode =  ctrClaimLine.procedureAccessCode
 //serviceProvider
 finClaimLine.serviceRelCode = ctrClaimLine.serviceRelCode
 finClaimLine.serviceRelName = ctrClaimLine.serviceRelName
 finClaimLine.serviceProvCode = ctrClaimLine.serviceProvCode
 finClaimLine.serviceProvCodeDef = ctrClaimLine.serviceProvCodeDef
 //paymentReceiver
 finClaimLine.payReceiverRelCode = ctrClaimLine.payReceiverRelCode
 finClaimLine.payReceiverRelName = ctrClaimLine.payReceiverRelName
 finClaimLine.payReceiverProvCode = ctrClaimLine.payReceiverProvCode
 finClaimLine.payReceiverProvCodeDef = ctrClaimLine.payReceiverProvCodeDef
 //coverages (type, label, amount)
 finClaimLine.coverageRegimeCode = ctrClaimLine.coverageRegimeCode
 for (ctrClaimLineCoverage in ctrClaimLine.ctrClaimLineCoverageList) {
     def finClaimLineCoverage = new CtrClaimLineCoverage()
     finClaimLineCoverage.action = ctrClaimLineCoverage.action
     finClaimLineCoverage.coverageLabelCode = ctrClaimLineCoverage.coverageLabelCode
     finClaimLineCoverage.amount = ctrClaimLineCoverage.amount
     finClaimLine.addCtrClaimLineCoverage(finClaimLineCoverage)
 }
 //diagnoses (code, flexCodeDefinitionCode, sequence)
 for (ctrClaimLineDiagnosis in ctrClaimLine.ctrClaimLineDiagnosisList) {
     def finClaimLineDiagnosis = new CtrClaimLineDiagnosis()
     finClaimLineDiagnosis.code = ctrClaimLineDiagnosis.code
     finClaimLineDiagnosis.description = ctrClaimLineDiagnosis.description
     finClaimLineDiagnosis.codeDef = ctrClaimLineDiagnosis.codeDef
     finClaimLineDiagnosis.sequence = ctrClaimLineDiagnosis.sequence
     finClaimLineDiagnosis.typeCode = ctrClaimLineDiagnosis.typeCode
     finClaimLineDiagnosis.typeDescription = ctrClaimLineDiagnosis.typeDescription
     finClaimLine.addCtrClaimLineDiagnosis(finClaimLineDiagnosis)
 }
 //messages (code)
 for (ctrClaimLineMessage in ctrClaimLine.ctrClaimLineMessageList) {
     finClaimLineMessage = new CtrClaimLineMessage()
     finClaimLineMessage.code = ctrClaimLineMessage.code
     finClaimLine.addCtrClaimLineMessage(finClaimLineMessage)
 }
 //modifiers (code)
 for (ctrClaimLineModifier in ctrClaimLine.ctrClaimLineModifierList) {
 finClaimLineModifier = new CtrClaimLineModifier()
     finClaimLineModifier.code = ctrClaimLineModifier.code
     finClaimLine.addCtrClaimLineModifier(finClaimLineModifier)
 }
 finClaimLine.anesthesiaMinutes = ctrClaimLine.anesthesiaMinutes
 return finClaimLine

1. Contexts are described in the section Financial Message Structure - Flat File of the chapter Generate Financial Message
2. FileRow is an Oracle Health Insurance object type and has a constructor that takes the "File Identifier" and "Row Contents" both String type as its arguments.