Draft Provider Pricing Clause Integration Point
The process of adding/updating draft provider pricing clauses to a pricing worksheet is a long running operation that can be initiated by a HTTP POST request to: http://[hostName]:[portNumber]/[api-context-root]/draftproviderpricingclauses. More information on the behavior of long running operations can be found in Long Running Operations through REST.
This request has the following structure:
{ "dataFileSetCode" : "...", "pricingWorksheetCode" : "...", "pricingWorksheetDescription" : "..." "accessRestrictionCode" : "..." "responseDatafileSetCode" : "..." }
Submitting an XML equivalent payload, contained by the root element: DraftProviderPricingClauseInput has the same effect.
In the above request the dataFileSetCode refers to the data file set that contains the datafile(s) with draft provider pricing clause records that needs to be imported.
This process supports the initial creation of and updates to pricing worksheets:
-
If the pricing worksheet code is unknown to the system then a new pricing worksheet is created.
-
If the pricing worksheet code is known then the system updates the existing pricing worksheet. The payload is interpreted as the current state of the pricing worksheet and appropriate changes are made to draft provider pricing clauses. See section processing details for more information.
-
The pricing worksheet description is used to describe the pricing worksheet.
-
The response data File Set Code refers to the data file set that contains the datafile(s) response with draft provider pricing clause records. It is used for data file set responsefile. If not provided the system generates a UUID based value as data file set code.
The code and description are both mandatory. |
Request
Because this service supports requests with a potentially significant volume, it relies on the data file set web service to import the draft provider pricing clause payload into the application before it reads and processes the data.
For more information about how to create a data file set please refer Data File Set Integration Point.
This XML shows the structure expected by the application:
<draftProviderPricingClauses> <draftProviderPricingClause code="" description="" groupingLabel="" individualProviderCode="" individualProviderDefinitionCode="" organizationProviderCode="" organizationProviderDefinitionCode="" providerGroupCode="" providerCategoryCode="" exempt="" quantifier="" quantifierCurrency="" priorityCode="" classificationSchemeUsage="" claimClassificationUsage="" claimLineClassificationUsage="" productCategoryCode="" locationTypeGroupUsage="" locationTypeGroupCode="" procedureGroupUsage="" procedureGroupCode="" procedureConditionUsage="" procedureConditionCode="" procedureGroup2Usage="" procedureGroup2Code="" procedureCondition2Usage="" procedureCondition2Code="" procedureGroup3Usage="" procedureGroup3Code="" procedureCondition3Usage="" procedureCondition3Code="" restrictToReimbursementMethodUsage="" contractReferenceCode="" ageFrom="" ageTo="" startDate="" endDate="" enabled="" messageCode="" elementId="" pricingRule="" pricingRuleSubtype="" reimbursementMethod="" reimbursementMethodSubtype= ""> <draftProviderPricingClauseDynLogicList> <draftProviderPricingClauseDynLogic code=""/> ... </draftProviderPricingClauseDynLogicList> <draftProviderPricingClauseClaimClassificationList> <draftProviderPricingClauseClaimClassification code=""/> ... </draftProviderPricingClauseClaimClassificationList> <draftProviderPricingClauseClaimLineClassificationList> <draftProviderPricingClauseClaimLineClassification code=""/> ... </draftProviderPricingClauseClaimLineClassificationList> <draftProviderPricingClauseClassificationSchemeList> <draftProviderPricingClauseClassificationScheme code=""/> ... </draftProviderPricingClauseClassificationSchemeList> <draftProviderPricingClauseRestrictReimbursementMethodList> <draftProviderPricingClauseRestrictReimbursementMethod code="" type="" /> ... </draftProviderPricingClauseRestrictReimbursementMethodList> <draftProviderPricingClauseDimRateList> <draftProviderPricingClauseDimRate sequence="" amount="" size="" /> ... </draftProviderPricingClauseDimRateList> <draftProviderPricingClauseReferenceSheetOverrideList> <draftProviderPricingClauseReferenceSheetOverride usageName="" startDate= "" endDate = ""> <columns> <column name="" flexCodeDefinitionCode="" columnValue="" > ... <columns> </draftProviderPricingClauseReferenceSheetOverride> ... </draftProviderPricingClauseReferenceSheetOverrideList> </draftProviderPricingClause> ... </draftProviderPricingClauses>
The metadata for the above structure can be accessed on the /api/draftproviderpricingclauses/payload/definition as swagger definition.
|
As soon as the data file set - containing at least one datafile with a pricing worksheet payload - is created, the pricing worksheet import process can be started by invoking the draft provider pricing clauses long running process.
Process Details
This process supports creation of pricing worksheet along with draft provider pricing clauses. It also supports updating an existing pricing worksheet:
-
Draft provider pricing clauses present in the file that do not yet exist in Claims are created. This concerns draft provider pricing clauses in the file (1) for which a code is not specified or (2) for which a code is specified that does not yet exist in the pricing worksheet in Claims.
-
Draft provider pricing clauses present in the file that already exist in Claims are updated based on the common rules on how to handle attribute updates in web services. This concerns draft provider pricing clauses in the file for which a code is specified that already exists in the pricing worksheet in Claims. Note that it is not possible to update the reimbursement method or pricing rule of a draft provider pricing clause that has already been built.
-
Existing draft provider pricing clauses in Claims that are not present in the file are deleted.
-
If the file contains a draft provider pricing clause without a code attribute value, the system creates a new one and assigns a system generated sequence as the code.
-
For new draft provider pricing clauses, the type of the reimbursement method or pricing rule must be specified. This is not needed for updates.
Note that the creation of - or updates to - pricing rules and reimbursement methods is not supported by this operation.
Response
As is described in Long Running Operations through REST there are multiple ways in which one can get the response/result of this long running operation. Typically though one would opt for using notification events.
A notification message can be sent out to a pre-configured endpoint. The notification endpoint can be configured on 'ohi.activityprocessing.notification.endpoint.DRAFT_PROVIDER_PRC_IMPORT' or to a more generic endpoint: ohi.activityprocessing.notification.endpoint.
If the notification endpoint is configured on the specific: DRAFT_PROVIDER_PRC_IMPORT, all other related properties like media type, authentication, etc. are also fetched based on DRAFT_PROVIDER_PRC_IMPORT, or else defaults are used. Similarly, if the endpoint for the notification is configured without the specific code, then all other properties are fetched on a generic use case code 'ActivityResponseClient'. Please see section Outbound RESTful Service Invocations in Integration Guide for the process and more properties.
The notification message has the common notification structure as described in the chapter Long Running Operations through REST in the Integration Guide.
The response notification includes a data file set link of the completed draftproviderpricingclauses request. This enables an integration pattern that relies on polling progress which allows the user to perform a collection queries over draftproviderpricingclauses resources.
The data file set holds the result of the draft provider pricing clauses with the following mock XML structure:
<draftProviderPricingClauses> <resultMessages result="" elementId=""> <resultMessage code=""> message text </resultMessage> ... </resultMessages> ... </draftProviderPricingClauses>
-
The <draftProviderPricingClauses> element contains zero, one or more resultMessages. Each resultMessages is identified by the elementId as provided in the request message and by its code. Each resultMessages contains one or more messages which relate to that particular draft provider pricing clause. The response only contains <resultMessages> elements for:
-
draft provider pricing clauses that actually generated error/info messages during processing.
-
draft provider pricing clauses that were assigned a code by Claims. Thus, the generated code is returned in the response method so that the calling interface may store it. It is returned using message code PRI-IP-DPPC-008
-
Error Messages
The following error messages that are specific to this web service may be returned in the response messages:
Code | Sev | Text |
---|---|---|
PRI-IP-DPPC-001 |
Fatal |
It is not possible to set an overriding diminishing rate for a draft provider pricing clause without a diminishing rate reimbursement method |
PRI-IP-DPPC-002 |
Fatal |
It is not possible to update the reimbursement method or pricing rule of a draft provider pricing clause that has already been built |
PRI-IP-DPPC-003 |
Fatal |
It is not possible to set an overriding reference sheet line for a draft provider pricing clause without a payment function reimbursement method |
PRI-IP-DPPC-004 |
Fatal |
Unknown reference sheet with usage name {usageName} |
PRI-IP-DPPC-005 |
Fatal |
Either the reimbursement method type or the pricing rule type must be specified for new draft provider pricing clauses |
PRI-IP-DPPC-006 |
Fatal |
Type or code (or both) must be specified for restrict to reimbursement methods |
PRI-IP-DPPC-007 |
Fatal |
The specified access restriction code {code} is unknown |
PRI-IP-DPPC-008 |
Info |
Generated code {code} for draft provider pricing clause with element id {element id} |
CLA-HTTP-010 |
Fatal |
The specified data file set code {code} is unknown |
The response can also contain generic error messages that are not specific to this web service. Please refer to them Response Messages section for more details.