ESMD FHIR Implementation Guide
1.0.0 - esmd

ESMD FHIR Implementation Guide - Local Development build (v1.0.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Practitioner API

Overview

The Practitioner API facilitates secure management of practitioner data within the esMD system. This API enables HIHs to submit, update, and manage practitioner details using FHIR-compliant JSON payloads.

The Practitioner API supports the single provider registration method where a single provider is registered using one request.

Note – NPI Registration in NPPES for the FHIR API: Existing NPPES registrations will remain unchanged. Organizations may continue using "CONNECT" as the endpoint type with the HIH endpoint/OID as the endpoint. However, for new NPI registrations submitted after the July 2025 Go-Live, HIHs onboarding to the esMD FHIR API can specify "FHIR API" as the endpoint type and set the endpoint to: https://val.cpiapigateway.cms.gov/api/esmdf/ext/v1/fhir/Practitioner/{id}

API Information

  • Operation Name: /api/esmdf/ext/v1/fhir/Practitioner/{id}
  • Method: PUT
  • Authorization: Requires a Bearer Token obtained via the Auth API.

Endpoints:

  • UAT: https://val.cpiapigateway.cms.gov/api/esmdf/ext/v1/fhir/Practitioner/{id}
  • PROD: https://cpiapigateway.cms.gov/api/esmdf/ext/v1/fhir/Practitioner/{id}

Request Headers

Header Description Required Data Type Comments
Authorization Authentication token from Auth API Yes String Example: Bearer {token}
Content-Type Content-Type must be application/fhir+json Yes String application/fhir+json
Accept Accept must be application/fhir+json Yes String application/fhir+json

Sample Practitioner Request

PUT /api/esmdf/ext/v1/fhir/Practitioner/{id} HTTP/1.1
Host: dev.cpiapigateway.cms.gov
Authorization: Bearer {token}
Content-Type: application/fhir+json
Accept: application/fhir+json

{
    "resourceType": "Practitioner",
    "id": "PRACT123",
    "meta": {
        "profile": [
            "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-Practitioner"
        ],
        "security": [
            {
                "system": "http://terminology.hl7.org/CodeSystem/v3-Confidentiality",
                "code": "V",
                "display": "very restricted"
            }
        ]
    },
    "name": [
        {
            "family": "Gaven",
            "given": [
                "Radems"
            ],
            "prefix": [
                "Dr"
            ],
            "suffix": [
                "Ph.D"
            ]
        }
    ],
    "telecom": [
        {
            "system": "phone",
            "value": "551-333-6141",
            "use": "work"
        }
    ],
    "address": [
        {
            "use": "work",
            "line": [
                "1003 MILLERS DR"
            ],
            "city": "ELLICOTT CITY",
            "state": "MD",
            "postalCode": "21043"
        }
    ],
    "gender": "female",
    "active": true,
    "extension": [
        {
            "url": "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-Ext-NPI",
            "valueString": "1700962487"
        },
        {
            "url": "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-Ext-ProviderTaxId",
            "valueString": "101-56-55"
        },
        {
            "url": "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-Ext-ActionRequestedCode",
            "valueCode": "A"
        },
        {
            "url": "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-Ext-ServiceCode",
            "valueCode": "EEP"
        },
        {
            "url": "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-Ext-ServiceStartDate",
            "valueDate": "2025-10-01"
        },
        {
            "url": "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-Ext-ServiceEndDate",
            "valueDate": "2026-12-30"
        }
    ]
}

Practitioner API Response Codes

Type Code Status Resolution
Success 200 OK Request processed successfully. No action needed.
Success 201 Created Resource created successfully. No action needed.
Error 400 Bad Request Missing or invalid headers or parameters. Check request headers or parameters and resubmit.
Error 401 Unauthorized Invalid client ID or client secret. Correct the details and resubmit.
Error 403 Forbidden Insufficient permissions or server configuration issues. Contact esMD Support.
Error 404 Not Found Invalid URL. Correct the endpoint URL and resubmit.
Error 412 Precondition Failed Precondition failed. Check the conditions and resubmit.
Error 422 Unprocessable Entity Metadata failure. Update metadata and resubmit.
Error 500 Internal Server Error Unexpected server error. Contact esMD Support.
Error 502 Bad Gateway Contact esMD Support.
Error 503 Service Unavailable Contact esMD Support.

Success Response

{
    "resourceType": "Practitioner",
    "id": "PRACT123",
    "identifier": {
        "system": "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-Ext-TransactionId",
        "value": "NXG0001235991EC"
    },
    "meta": {
        "versionId": "4554",
        "lastUpdated": "2025-05-01T14:39:12.151-04:00",
        "source": "#VX69I8RmIuawJR5b",
        "profile": [
            "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-Practitioner"
        ],
        "security": [
            {
                "system": "http://terminology.hl7.org/CodeSystem/v3-Confidentiality",
                "code": "V",
                "display": "very restricted"
            }
        ]
    },
    "name": [
        {
            "family": "Gaven",
            "given": [
                "Radems"
            ],
            "prefix": [
                "Dr"
            ],
            "suffix": [
                "Ph.D"
            ]
        }
    ],
    "telecom": [
        {
            "system": "phone",
            "value": "551-333-6141",
            "use": "work"
        }
    ],
    "address": [
        {
            "use": "work",
            "line": [
                "1003 MILLERS DR"
            ],
            "city": "ELLICOTT CITY",
            "state": "MD",
            "postalCode": "21043"
        }
    ],
    "gender": "female",
    "active": true,
    "extension": [
        {
            "url": "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-Ext-NPI",
            "valueString": "1700962487"
        },
        {
            "url": "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-Ext-ProviderTaxId",
            "valueString": "101-56-55"
        },
        {
            "url": "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-Ext-ActionRequestedCode",
            "valueCode": "A"
        },
        {
            "url": "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-Ext-ServiceCode",
            "valueCode": "EEP"
        },
        {
            "url": "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-Ext-ServiceStartDate",
            "valueDate": "2025-10-01"
        },
        {
            "url": "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-Ext-ServiceEndDate",
            "valueDate": "2026-12-30"
        }
    ]
}

Failure Responses

Example: Duplicate NPI-HIH Combination

{
    "resourceType": "OperationOutcome",
    "meta": {
        "profile": [
            "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-BundleSubmissionResponse"
        ]
    },
    "extension": [
        {
            "url": "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-Ext-TransactionId",
            "valueString": "NWQ0007230899EC"
        }
    ],
    "issue": [
        {
            "severity": "error",
            "code": "Processing",
            "details": {
                "coding": [
                    {
                        "system": "https://terminology.esmduat.cms.gov:8099/fhir/CodeSystem/Esmd-CS-ErrorOrWarningCodes",
                        "code": "COMBINATION_NPI_HIH",
                        "display": "The HIH OID urn:oid:123.456.657.126 and NPI 1538112131 received for Action Code A is already registered with the submitting HIH or other HIH."
                    }
                ]
            }
        }
    ]
}

Example: Constraint Violation

{
    "resourceType": "OperationOutcome",
    "meta": {
        "profile": [
            "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-BundleSubmissionResponse"
        ]
    },
    "extension": [
        {
            "url": "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-Ext-TransactionId",
            "valueString": "DLU0007230900EC"
        }
    ],
    "issue": [
        {
            "extension": [
                {
                    "url": "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-line",
                    "valueInteger": 1
                },
                {
                    "url": "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-col",
                    "valueInteger": 476
                },
                {
                    "url": "http://hl7.org/fhir/StructureDefinition/operationoutcome-message-id",
                    "valueString": "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-Practitioner#esmd-npi-1"
                }
            ],
            "severity": "error",
            "code": "processing",
            "details": {
                "coding": [
                    {
                        "system": "http://hl7.org/fhir/java-core-messageId",
                        "code": "https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-Practitioner#esmd-npi-1"
                    }
                ]
            },
            "diagnostics": "Constraint failed: esmd-npi-1: 'NPI should be 10 numeric' (defined in https://terminology.esmduat.cms.gov:8099/fhir/StructureDefinition/Esmd-Practitioner)",
            "location": [
                "Practitioner.extension[0].value.ofType(string)",
                "Line[1] Col[476]"
            ]
        },
        {
            "extension": [
                {
                    "url": "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-line",
                    "valueInteger": 1
                },
                {
                    "url": "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-col",
                    "valueInteger": 943
                },
                {
                    "url": "http://hl7.org/fhir/StructureDefinition/operationoutcome-message-id",
                    "valueString": "TERMINOLOGY_TX_HINT"
                }
            ],
            "severity": #information,
            "code": "processing",
            "details": {
                "coding": [
                    {
                        "system": "http://hl7.org/fhir/java-core-messageId",
                        "code": "TERMINOLOGY_TX_HINT"
                    }
                ]
            },
            "diagnostics": "Code validation occurred using a ValueSet expansion that was pre-calculated at 2024-12-19T21:42:50.611-05:00 (70 days ago)",
            "location": [
                "Practitioner.extension[3].value.ofType(code)",
                "Line[1] Col[943]"
            ]
        },
        {
            "extension": [
                {
                    "url": "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-line",
                    "valueInteger": 1
                },
                {
                    "url": "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-col",
                    "valueInteger": 1090
                },
                {
                    "url": "http://hl7.org/fhir/StructureDefinition/operationoutcome-message-id",
                    "valueString": "TERMINOLOGY_TX_HINT"
                }
            ],
            "severity": #information,
            "code": "processing",
            "details": {
                "coding": [
                    {
                        "system": "http://hl7.org/fhir/java-core-messageId",
                        "code": "TERMINOLOGY_TX_HINT"
                    }
                ]
            },
            "diagnostics": "Code validation occurred using a ValueSet expansion that was pre-calculated at 2024-12-19T21:42:50.664-05:00 (70 days ago)",
            "location": [
                "Practitioner.extension[4].value.ofType(code)",
                "Line[1] Col[1090]"
            ]
        },
        {
            "extension": [
                {
                    "url": "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-line",
                    "valueInteger": 1
                },
                {
                    "url": "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-col",
                    "valueInteger": 1619
                }
            ],
            "severity": "warning",
            "code": "processing",
            "diagnostics": "Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)",
            "location": [
                "Practitioner",
                "Line[1] Col[1619]"
            ]
        }
    ]
}