List of content:
Description:
The OpenIMIS Policy object (from the openimis-be-policy_py module) was mapped to the FHIR Coverage resource.
Notes / Assumptions:
- The endpoint uses the UUID as a primary key
FHIR resources:
Fields mapping:
Table legend:
Color | Description |
---|---|
Mapped - the final choice, the most suitable choice | |
Need to be found the best place for the field (not mapped currently) | |
Currently not important - not mapped |
Mapping:
OpenIMIS field | DB type | FHIR field | Description | Note | STPH | Mapping status |
PolicyID | PK | Identifier | Use only PolicyUUID | This is the Database ID and should be used only internally | ||
PolicyUUID | UniqueIdentifier | Identifier | The unique identifier used as PK for FHIR | Added | mapped | |
FamilyID | FK(tblFamilies) | policyHolder | We use the policyHolder to represent the reference to the Patient (head of the family). The insurance code is used to point the appropriate Patient. | (was updated by SD) OK | mapped | |
EnrollDate | date | Extension | The FHIR representation doesn't contain this type of value. If needed we can consider adding the FHIR extension. | Extension | ||
StartDate | date | period | OK | mapped | ||
EffectiveDate | date | Extension | The FHIR representation doesn't contain this type of value. If needed we can consider adding the FHIR extension. | Extension | ||
ExpiryDate | date | period | OK | mapped | ||
PolicyStatus | tinyint | status | Default: 1 1 - Idle 2 - active 4 - suspended 8 - Expired | There are some differences between the Policy and FHIR statuses. List of FHIR coverage statuses: 1) active 2) cancelled 3) draft 4) entered-in-error | ok | mapped |
PolicyValue | decimal | contract.valuedItem.net | The FHIR representation doesn't contain this type of value. If needed we can consider adding the FHIR extension. | contract.valuedItem.net | ||
ProdID | FK(tblProduct) | grouping | The FHIR representation doesn't contain exactly the same type of value. The coverage classifications can be contained in the "grouping" field and we can join it with a product using grouping.plan. See example: https://hl7.org/fhir/STU3/coverage-example.json.html | I would suggest to check Contract entity => Coverage.contract | ||
OfficerID | FK(tblOfficer) | contract.agent.actor | The FHIR representation doesn't contain this type of value. If needed we can consider adding the FHIR extension. | subscriber | ||
PolicyStage | char(1) | Default: N N - New Policy R - Renewed Policy | The FHIR representation doesn't contain this type of value. If needed we can consider adding the FHIR extension. | Will be added after when the final approach will be established | ||
ValidityFrom | datetime | Audit information. More information can be found here (on page 113): https://github.com/openimis/openimis_docs/blob/master/specs/Web%20application%20-%20Functional%20Design%20Specification.pdf | This information are valuable for OpenIMIS but I probably not required by external systems. | Internal field | ||
ValidityTo | datetime | |||||
LegacyID | int | |||||
AuditUserID | int | |||||
RowID | timestamp | I'm not sure but this is probably some unique value used to distinguish database rows. Probably not useful for external systems. | Internal field | |||
isOffline | int | I'm not sure but this is probably used to determine the source of row (offline/online app). Probably information isn't valuable for external systems. | Internal field |
Note:
- The contract field could be use to map the Insurance Products to the Policies
Endpoint specification:
Coverage endpoint
Example of endpoint URL:
http://localhost:8000/api_fhir/Coverage/
Supported HTTP operation:
- READ - by default return list of all available resources. To fetch information about a specific object you should add the primary key to URL for instance:
http://127.0.0.1:8000/api_fhir/Claim/{PolicyCode}
, where "{PolicyCode}" is the value of the policy primary key. Should be used the GET HTTP method. - CREATE - the operation currently not supported
- UPDATE - the operation currently not supported
- DELETE - the operation currently not supported
default_audit_user_id | default value which will be used for 'audit_user_id' field | "default_audit_user_id": 1, |
stu3_fhir_identifier_type_config | configuration of system and codes used to represent the specific types of identifiers | "stu3_fhir_identifier_type_config":{ }, |
stu3_fhir_issue_type_config | configuration of system and codes used to represent the specific types of operation outcome | "stu3_fhir_issue_type_config":{ "fhir_code_for_exception":"exception", "fhir_code_for_not_found":"not-found", "fhir_code_for_informational":"informational" }, |
stu3_fhir_claim_config | configuration of system and codes used to represent the specific types of claim codes | "stu3_fhir_coverage_config": { |
Example JSON representation of content:
FHIR Coverage (http://127.0.0.1:8000/api_fhir/Coverage/covCode1):
{ "resourceType": "Coverage", "contract": [ { "resourceType": "Contract", "agent": [ { "actor": { "reference": "Practitioner/officerCode" }, "role": [ { "text": "Practitioner" } ] } ], "valuedItem": [ { "net": { "value": policyValue } } ] } ], "extension": [ { "url": "EffectiveDate" }, { "url": "EnrollDate", "valueDate": "2019-08-06" } ], "grouping": { "group": "Product/productUuid", "groupDisplay": "productCode", "plan": "Product Name", "planDisplay": "{ 'item': ['itemCode1', 'itemCode2', 'itemCode3'], 'service': ['serviceCode1', 'serviceCode2'] }" }, "identifier": [ { "type": { "coding": [ { "code": "ACSN", "system": "https://hl7.org/fhir/valueset-identifier-type.html" } ] }, "use": "usual", "value": "covCode1" } ], "period": { "end": "2020-08-05", "start": "2019-08-06" }, "policyHolder": { "reference": "FamilyReference/familyCode0" }, "status": "Idle" }