How to Migrate Data Using a Data File Set

Oracle Health Insurance applications support file based data migration operations. A file based dat migration is a three-step process:

  1. Create the data file set using the Data File Sets API on the source environment.

  2. Upload the file using the Data File Sets API on the target environment.

  3. Process the file contents by initiating the proper activity type using the Activities API[1] [2] or through the User Interface pages.

This document offers an example of creating, loading and processing provider data through a data file.

Not all Oracle Health Insurance components support providers.

Oracle Health Insurance Authorizations supports file based import of data for the following resources:

Oracle Health Insurance Claims Adjudication and Pricing supports the import of data from file for the following entities:

Claims also supports the import of data from file for the purpose of reprocessing claims.

Example

This example gives a step-by-step explanation of how to load a data file with providers.

Step 1: Create a Data File Set With a Data File

Request Message

The POST request to /datafilesets creates a data file set with a data file.

{
  "code": "UNIQUE_CODE_OF_DATA_FILE_SET_YIN",
  "description": "Data file set containing 1 or more data files containing providers",
  "dataFiles": [
    {
    "code": "UNIQUE_CODE_OF_DATA_FILE_YIN",
    "description": "File containing provider data"
    }
  ]
}

Response Message

Example of a Response Message for Posting a Datafile (click to open)
{
  "code": "UNIQUE_CODE_OF_DATA_FILE_SET_YIN",
  "description": "Data file set containing 1 or more data files containing providers",
  "locked": false,
  "links": [
    {
      "href": "{apiurl}/datafilesets/UNIQUE_CODE_OF_DATA_FILE_SET_YIN",
      "rel": "self",
      "httpMethod": "GET"
    },
    {
      "href": "http://[hostName]:[portNumber]/[api-context-root]/datafilesets/UNIQUE_CODE_OF_DATA_FILE_SET_YIN",
      "rel": "datafileset",
      "httpMethod": "GET"
    },
    {
      "href": "http://[hostName]:[portNumber]/[api-context-root]/datafilesets/UNIQUE_CODE_OF_DATA_FILE_SET_YIN/zip",
      "rel": "file",
      "httpMethod": "POST"
    },
    {
      "href": "http://[hostName]:[portNumber]/[api-context-root]/datafilesets/UNIQUE_CODE_OF_DATA_FILE_SET_YIN/zip?deleteDataFiles=true",
      "rel": "zip",
      "httpMethod": "PUT"
    }
  ],
  "dataFiles": [
     {
       "code": "UNIQUE_CODE_OF_DATA_FILE_YIN",
       "description": "File containing provider data",
       "links": [
         {
          "href": "http://[hostName]:[portNumber]/[api-context-root]/datafilesets/UNIQUE_CODE_OF_DATA_FILE_SET_YIN/datafiles/UNIQUE_CODE_OF_DATA_FILE_YIN/data",
          "rel": "file",
          "httpMethod": "POST"
         }
      ]
    }
  ]
}

Step 2: Upload Content

A GET request on /datafilesets/UNIQUE_CODE_OF_DATA_FILE_SET_YIN/datafiles/UNIQUE_CODE_OF_DATA_FILE_YIN/data shows that the datafile does not conatain any data yet.

Example of a Response Message when Fetching Content from an Empty Data File
{
  "o:errorDetails": [
   {
    "o:errorCode": "DAT-IP-DAFI-010",
    "title": "DAT-IP-DAFI-010: Data file "UNIQUE_CODE_OF_DATA_FILE_YIN" with data file set "UNIQUE_CODE_OF_DATA_FILE_SET_YIN" does not contain file data",
    "o:errorPath": "$"
   }
  ]
}

Send a POST request to datafilesets/UNIQUE_CODE_OF_DATA_FILE_SET_YIN/datafiles/UNIQUE_CODE_OF_DATA_FILE_YIN/data to add provider data to the data file.

We recommend uploading files with sizes under 20 MB. Larger files impact the stability of the system.

Request Message

Example of a Request Message Payload for Adding Content to a Datafile
{
 [
  {
    "code": "9200000060",
    "flexCodeDefinitionCode": "US_PROVIDER",
    "elementType": "organizationProvider",
    "name": "Organization Provider 1",
    "outputLanguageCode": "en",
    "startDate": "2010-01-01",
    "endDate": "2034-12-31"
  }
 ]
}

The add content to data file request’s success response has the following structure:

Example of a Response Message for Posting Data to a Datafile (click to open)
{
  "code": "UNIQUE_CODE_OF_DATA_FILE_SET_YIN",
  "description": "Data file set containing 1 or more data files containing providers",
  "locked": false,
  "links": [
    {
      "href": "http://[hostName]:[portNumber]/[api-context-root]/datafilesets/UNIQUE_CODE_OF_DATA_FILE_SET_YIN",
      "rel": "self",
      "httpMethod": "GET"
    },
    {
      "href": "http://[hostName]:[portNumber]/[api-context-root]/datafilesets/UNIQUE_CODE_OF_DATA_FILE_SET_YIN",
      "rel": "datafileset",
      "httpMethod": "GET"
    },
    {
     "href": "http://[hostName]:[portNumber]/[api-context-root]/datafilesets/UNIQUE_CODE_OF_DATA_FILE_SET_YIN/zip",
      "rel": "file",
      "httpMethod": "POST"
    },
    {
      "href": "http://[hostName]:[portNumber]/[api-context-root]/datafilesets/UNIQUE_CODE_OF_DATA_FILE_SET_YIN/zip?deleteDataFiles=true",
      "rel": "zip",
      "httpMethod": "PUT"
    }
  ],
  "dataFiles": [
    {
      "code": "UNIQUE_CODE_OF_DATA_FILE_YIN",
      "contentLength": 303,
      "description": "File containing provider data",
      "mimeType": "application/json",
      "links": [
        {
          "href": "http://[hostName]:[portNumber]/[api-context-root]/datafilesets/UNIQUE_CODE_OF_DATA_FILE_SET_YIN/datafiles/UNIQUE_CODE_OF_DATA_FILE_YIN/data",
          "rel": "file",
          "httpMethod": "GET"
        },
        {
          "href": "http://[hostName]:[portNumber]/[api-context-root]/datafilesets/UNIQUE_CODE_OF_DATA_FILE_SET_YIN/datafiles/UNIQUE_CODE_OF_DATA_FILE_YIN/data",
          "rel": "file",
          "httpMethod": "POST"
        }
     ]
   }
 ]
}

Step 3: Initiate the Provider Import Activity Using Create Activity

Activities

Send a POST request to activities to create the activity.

Example of a Request Message Payload to Create an Activity
{
   "code": "PROVIDER_IMPORT",
   "level": "GL",
   "description": "Load Provider File",
   "parameters": [
    {
     "name": "dataFileSetCode",
     "value": "UNIQUE_CODE_OF_DATA_FILE_SET_YIN"
    }
   ]
}

Response Message

The start activity response has an appropriate HTTP status code in the header and the following structure:

Example of a Response Message for Creating an Activity (click to open)
{
  "status": "IN", (1)
  "level": "GL",
  "type": "PROVIDER_IMPORT",
  "workId": "2720371809",
  "links": [
    {
     "href": "http://[hostName]:[portNumber]/[api-context-root]/activities/2720371809/start",
     "rel": "action/startprocessing",
     "httpMethod": "POST"
    },
    {
     "href": "http://[hostName]:[portNumber]/[api-context-root]/activities/2720371809/start",
     "rel": "operator:start",
     "httpMethod": "POST"
    },
    {
     "href": "http://[hostName]:[portNumber]/[api-context-root]/activities/2720371809",
     "rel": "self",
     "httpMethod": "GET"
    }
  ]
}
1 The activity has status Initial, meaning it has not started. Using a POST request to activities/start would have started the activity immediately after creation. See Activities.

Step 4: Start Provider Import Activity

Send a POST request to activities/2720371809/start to start the import activity[3].

Response Message

The start activity response has an appropriate HTTP status code and location in the header and has the following structure:

Example of a Response Message for Starting an Activity (click to open)
{
  "status": "IP", (1)
  "level": "GL",
  "type": "PROVIDER_IMPORT",
  "workId": "2720371809",
  "links": [
   {
     "href": "http://[hostName]:[portNumber]/[api-context-root]/activities/2720371809",
     "rel": "monitor",
     "httpMethod": "GET"
   },
   {
     "href": "http://[hostName]:[portNumber]/[api-context-root]/activities/2720371809",
     "rel": "self",
     "httpMethod": "GET"
   }
 ]
}
1 The status is In Process

Step 5: Get Status

Send a POST request to activities/2720371809/search to get the status of the activity.

Response Message

When the activity has not yet concluded, the response message is the following:

Example of a Response Message for Requesting the Status of an Activity (click to open)
{
  "status": "IP",
  "level": "GL",
  "type": "PROVIDER_IMPORT",
  "workId": "2720371809",
  "links": [
   {
     "href": "http://[hostName]:[portNumber]/[api-context-root]/activities/2720371809",
     "rel": "monitor",
     "httpMethod": "GET"
   },
   {
     "href": "http://[hostName]:[portNumber]/[api-context-root]/activities/2720371809",
     "rel": "self",
     "httpMethod": "GET"
   }
 ]
}

When the activity has concluded with business errors the response message is the following:

Example of a Response Message for Requesting the Status of an Activity (click to open)
{
  "status": "CB",  (1)
  "level": "GL",
  "type": "PROVIDER_IMPORT",
  "workId": "2720371809",
  "links": [
    {
      "href": "http://[hostName]:[portNumber]/[api-context-root]/generic/activitymessages/search", (2)
      "rel": "operator:messages",
      "httpMethod": "POST",
      "body": {
        "resource": {
            "q": "activity.id.eq(2720371809).or.(activity.rootActivityId.eq(2720371809))"
        }
      }
    },
    {
      "href": "http://[hostName]:[portNumber]/[api-context-root]/activities/2720371809/recover", (3)
      "rel": "operator:restart",
      "httpMethod": "POST"
    },
    {
      "href": "http://[hostName]:[portNumber]/[api-context-root]/activities/2720371809",
      "rel": "self",
      "httpMethod": "GET"
    }
  ]
}
1 The activity has completed with a business error, the status is CB.
2 The response message offers a link to fetch the error messages for this activity and the activities it spawned. Note that the link uses the POST request on the generic activitymessages API.
3 The response message offers a link to recover, that is restart, the activity.

Step 6: Get Result Messages

Send a POST request to /generic/activitymessages/search to fetch the messages for this activity. Note that this link is also part of the activity status response message.

The payload is

{
"resource": {
"q": "activity.id.eq(2720371809).or.(activity.rootActivityId.eq(2720371809))"
}
Example of a Response Message for Requesting the Messages for an Activity (click to open)
{
  "offset": 0,
  "count": 1,
  "hasMore": false,
  "limit": 50,
  "items": [
    {
     "id": "251664830",
     "objectVersionNumber": 1,
     "value0": "PO0063_3_2_2_3_FEDE_001", (1)
     "links": [
       {
        "href": "http://[hostName]:[portNumber]/[api-context-root]/generic/activitymessages/251664830",
        "rel": "self"
       }
     ],
     "activity": {
      "id": "2514367679",
      "act_level": "PO",
      "links": [
       ...
       ]
     },
     "message": {
       "id": "96060",
       "links": [
         {
         "href": "http://[hostName]:[portNumber]/[api-context-root]/generic/messages/96060", (2)
         "rel": "canonical"
         }
        ]
       }
     }
    ],
  "links": [
   ...
  ]
}
1 The value to replace the placeholder in the canonical message.
2 The response message offers a link to the canonical text of this message.

Step 7: Get Response File

The GET request message on http://[hostName]:[portNumber]/[api-context-root]/datafilesets/UNIQUE_CODE_OF_DATA_FILE_SET_YIN/datafiles/UNIQUE_CODE_OF_DATA_FILE_YIN/data downloads the response file.

Example of a Response Message for Requesting the data from a data file
{
  [
    {
     "code": "9200000060",
     "flexCodeDefinitionCode": "US_PROVIDER",
     "elementType": "organizationProvider",
     "name": "Organization Provider 1",
     "outputLanguageCode": "en",
     "startDate": "2010-01-01",
     "endDate": "2034-12-31"
    }
  ]
}

1. For example, use the Relation Import activity type to process the file based request for relation integration point
2. Special rules apply for creating and starting file import activities. See Import Activity: Rules
3. use the link provided in the response message