Skip to content
jbuchbinder edited this page May 14, 2012 · 5 revisions

Summary

REMITT can be thought of as an "abstraction layer" involving disparate billing services, eligibility checking services, remittance processing services, differing low-level billing formats, and other EMR/PM related systems and services.

It exists as a "web service", which is accessed using SOAP protected by HTTP Basic Authentication. A single REMITT server instance can theoretically service thousands (if not more) instances of EMR/PM systems.

The most important part of submitting billing payloads is implementing the REMITT XML Format. This is used with the SOAP insertPayload method.

Secondarily, there is a "callback" mechanism which should be implemented to handle remittance and batch eligibility information, which is also SOAP. It is specified in the remitt.wsdl definition and should be implemented by an EMR/PM system (code can be generated by wsdl2java or something similar).

SOAP Interface

The full SOAP interface is described by the REMITT WSDL file, which is present on any running REMITT instance. This is a brief list of the different functions which can be accessed by an EMR/PM system in order to communicate with the REMITT engine. (Please note that not all functions need to be called by every EMR/PM system.)

  • getFile: Retrieve a generated output file.
    • Parameters:
      • category (string): Type of the file (output, log, etc)
      • fileName (string): Name of the file
    • Returns:
      • Contents of the requested file. (The SOAP wrapper will base64 encode the content.)
  • validatePayload: Run a REMITT XML Format payload through a custom validator. This may be executed before insertPayload for sanity checking.
    • Parameters:
      • validatorClass (string):
      • data (base64 binary):
    • Returns:
      • Array of payload validation response messages.
  • getConfigValues: Get all plugin configuration options for the current user.
    • Parameters:
      • None
    • Returns:
      • Array of configuration options, containing name (string), namespace (string), and value (string).
  • getCurrentUserName: Retrieve the username of the requesting REMITT user.
    • Parameters:
      • None
    • Returns:
      • String containing the current logged in REMITT username.
  • parseData: Frontend for REMITT parsing plugins. This allows some of the inner REMITT logic for parsing X12 messages (among other things) to be exposed, letting the user parse messages into a common XML format.
    • Parameters:
      • parserClass (string): Fully qualified class name for a ParserInterface class. This would normally be org.remitt.parser.X12Message835 for parsing X12 835 messages.
      • data (string): Message text to be parsed.
    • Returns:
      • String, XML text for the converted message.
  • addKeyToKeyring: Add a public/private key set to REMITT's keyring for the current user. Currently this is used to import keys for SFTP transport plugins.
    • Parameters:
      • keyname (string):
      • privatekey (base64 binary):
      • publickey (base64 binary):
    • Returns:
      • Boolean, success.
  • listRemittUsers: Get a list of all of the REMITT users on the system. Can only be called by the administrative user.
    • Parameters:
      • None
    • Returns:
      • Array of UserDTO objects.
  • batchEligibilityCheck: Initiate a series of batch eligibility checks.
    • Parameters:
      • requests (array of EligilibilityRequest objects, consisting of:)
        • plugin (string):
        • request (array of entry objects)
          • entry (object consisting of key (EligibilityParameter) and value (string))
    • Returns:
      • Array of integers, which are eligibility request job identifiers.
  • setConfigValue: Set a configuration value for a named plugin.
    • Parameters:
      • namespace (string): Fully-qualified plugin name with which this option is associated.
      • option (string): Textual option name.
      • value (string): Setting for this option.
    • Returns:
      • Boolean, success.
  • getOutputYears: Get all years for which REMITT has output data.
    • Parameters:
      • None
    • Returns:
      • Array of integer year values.
  • getProtocolVersion: Retrieve current REMITT SOAP protocol version.
    • Parameters:
      • None
    • Returns:
      • String representation of current protocol version.
  • getFileList: Get a list of output files based on provided criteria.
    • Parameters:
      • category (string):
      • criteria (string):
      • value (string):
    • Returns:
      • Array of file listing objects, containing:
        • filename (string): Textual name of the file.
        • filesize (int): File size in bytes.
        • inserted (date/time): Insertion timestamp.
        • originalId (string): Original REMITT payload identifier.
  • changePassword: Change current REMITT user's password.
    • Parameters:
      • newPassword (string): New password text.
    • Returns:
      • Boolean, success.
  • getPluginOptions: List available options for a particular plugin.
    • Parameters:
      • pluginClass (string): Fully-qualified plugin class name.
      • qualifyingOption (string):
    • Returns:
      • Array of strings.
  • getStatus: Retrieve current status of an inserted payload.
    • Parameters:
      • jobId (int): REMITT job identifier, as returned by insertPayload.
    • Returns:
      • Integer, status.
  • addRemittUser: Create new REMITT user. Can only be called by the administrative user.
    • Parameters:
      • user (UserDTO object): New user information.
    • Returns:
      • Boolean, success.
  • getPlugins: Get a list of all REMITT plugins for a certain task/category.
    • Parameters:
      • category (string): This should normally be render, translation (which should not be used in most cases, as it is not externally visible), transport, eligibility and scooper.
    • Returns:
      • Array of strings.
  • getEligibility: Perform a single synchronous eligibility request.
    • Parameters:
      • request (EligibilityRequest object):
    • Returns:
      • EligibilityResponse object
  • getBulkStatus
    • Parameters:
      • jobIds (array of int):
    • Returns:
      • Array of integer statuses.
  • insertPayload
    • Parameters:
      • originalId (string): EMR/PM id associated with this billing batch.
      • inputPayload (string): Generated XML payload format described by REMITT XML Format document.
      • renderPlugin (string): Fully qualified plugin class name for render-stage plugin. Under most circumstances, this will be org.remitt.plugin.render.XsltPlugin.
      • renderOption (string): Option for render plugin. This will usually be the XSL stylesheet name, which will normally be 4010_837p, 5010_837p, hcfa1500 or statement. A full list is available in the source on github.
      • transportPlugin (string): Fully qualified plugin class name for transport/transmission-stage plugin. There are a growing number of transport plugins available, in the org.remitt.plugin.transport namespace. A full list is available in the source on github
      • transportOption (string):
    • Returns:
      • Integer, REMITT batch identifier.
  • getOutputMonths
    • Parameters:
      • targetYear (int):
    • Returns:
      • Array of integers containing a list of input months for which REMITT has generated output content.

Callback

For this to work properly, the tUser table fields callbackserviceuri, callbackservicewsdluri, callbackusername, and callbackpassword must be populated with the appropriate values for the EMR/PM system.

References

SOAP Object Definitions

EligibilityParameter (enum)

  • ELIGIBILITY_PARAMETER_NPI
  • ELIGIBILITY_PARAMETER_INSURANCE_ID
  • ELIGIBILITY_PARAMETER_INSURED_LAST_NAME
  • ELIGIBILITY_PARAMETER_INSURED_FIRST_NAME
  • ELIGIBILITY_PARAMETER_INSURED_DOB
  • ELIGIBILITY_PARAMETER_INSURED_GENDER
  • ELIGIBILITY_PARAMETER_INSURED_STATE
  • ELIGIBILITY_PARAMETER_INSURED_SSN
  • ELIGIBILITY_PARAMETER_DEPENDENT_LAST_NAME
  • ELIGIBILITY_PARAMETER_DEPENDENT_FIRST_NAME
  • ELIGIBILITY_PARAMETER_DEPENDENT_DOB
  • ELIGIBILITY_PARAMETER_DEPENDENT_GENDER
  • ELIGIBILITY_PARAMETER_DEPENDENT_RELATIONSHIP
  • ELIGIBILITY_PARAMETER_SERVICE_TYPE
  • ELIGIBILITY_PARAMETER_CARD_ISSUE_DATE
  • ELIGIBILITY_PARAMETER_GROUP_NUMBER

EligibilityResponse (object)

  • messages (array of strings)
  • rawResponse (string)
  • status (EligibilityStatus enum)
  • successCode (EligibilitySuccessCode enum)

EligibilityStatus (enum)

  • OK
  • BAD
  • CONTINUATION
  • SERVER_ERROR

EligibilitySuccessCode (enum)

  • SUCCESS
  • VALIDATION_FAILURE
  • PAYER_TIMEOUT
  • PAYER_NOT_SUPPORTED
  • SYSTEM_ERROR
  • PAYER_ENROLLMENT_REQUIRED
  • PROVIDER_ENROLLMENT_REQUIRED
  • PRODUCT_REQUIRED