By EHR

NextGen bulk FHIR export for research.

Clinical Extract connects to NextGen Enterprise as a read-only backend app onboarded with NextGen Healthcare and exports the study cohort’s Group through the certified FHIR R4 API. Your organization grants the access itself, and each study returns study.csv and a data dictionary.

1 Works with NextGen

NextGen Enterprise support.

NextGen Enterprise’s certified API (ONC §170.315(g)(10)) exports a Group of patients through HL7 FHIR Bulk Data Access, authorized with SMART Backend Services. Clinical Extract handles the token request with its application credentials, the Group kickoff, the status poll and the file downloads, read-only, in your environment. Your organization grants the app access itself, self-service, in the NextGen API Client Portal.

NextGen data extraction for a registry or a study starts from a cohort you build from coded criteria or a patient list you match, and it exports only the resource types the protocol names.

The study cohort as NDJSON, flattened to CSV
Patient, Encounter, Condition, Observation, MedicationRequest and Procedure files land in your study folder. Clinical Extract flattens the approved variables into study.csv, and data-dictionary.json describes each column.
Coded columns
Diagnoses, results, medications and procedures come out as ICD-10-CM, LOINC, RxNorm and SNOMED CT codes, each column traced to its FHIR element.
The oncology lens
ER, PR, HER2, PD-L1, EGFR, KRAS, BRAF, ALK, MSI and TNM clinical and pathologic arrive as named columns.
Roster pull and the cohort builder
Match a patient list against NextGen Enterprise with graded results, or build the cohort from coded criteria and read the feasibility count before the export.

2 Connecting

Onboarding with NextGen and granting access.

The NextGen setup runs through two portals: the Developer Portal for the app and the Client Portal for your access grant.

  1. Register. Clinical Extract is onboarded with NextGen Healthcare (the API Onboarding form and the API Terms of Service Agreement), and its application entry is set up in the NextGen API Developer Portal (developer.nextgen.com): a backend app with a signed-JWT client authentication (RS384), its public key served as a JWKS, and one system/<Resource>.read scope per exported type plus system/Group.read. The portal issues the application credentials and client ID.
  2. Activate. Your organization grants the app access in the NextGen API Client Portal, self-service, gives Clinical Extract your NextGen Enterprise FHIR R4 endpoint, and names the study Group.
  3. Export. Clinical Extract signs a JWT with the private key that stays in your environment, gets a token with read scopes only at NextGen’s token endpoint, and runs the Group export.

Our NextGen integration work covers interfaces outside research.

Connecting Clinical Extract to NextGenThree numbered steps from left to right. Step 1, register, at NextGen API Developer Portal (developer.nextgen.com), outside your environment: Onboarding: API Onboarding form, API Terms of Service Agreement; Application entry: backend app, signed JWT (RS384),, Clinical Extract’s public key as a JWKS; System scopes: system/Patient.read, system/Group.read, system/Encounter.read, system/Condition.read, system/Observation.read, system/MedicationRequest.read, system/Procedure.read; Issued: application credentials, client ID. An arrow carries the client ID to step 2. Step 2, activate, at Your NextGen Enterprise (NextGen API Client Portal): Access: granted by your organization, self-service, in the API Client Portal; FHIR base URL: your NextGen Enterprise FHIR R4 endpoint; Group: the study cohort, by Group ID. An arrow carries the FHIR R4 base and Group ID to step 3. Step 3, export, from Clinical Extract in your environment: request POST {nextgen-auth}/…/token (grant_type=client_credentials, client_assertion: JWT signed RS384, scope=system/Patient.read …); request GET {nge-fhir-r4}/Group/{id}/$export (?_type=Patient,Encounter,Condition,Observation,MedicationRequest,Procedure, Prefer: respond-async), highlighted; response 202 Accepted (Content-Location: {status-url}); request GET {status-url} (202 Accepted while the export runs, with Retry-After); response 200 OK, JSON manifest (transactionTime, request,, requiresAccessToken, error[],, output[{type, url, count}]); request GET {output-url} (NDJSON, one resource per line); result study.csv, data-dictionary.json (flattened, approved variables only).1REGISTERNextGen API Developer Portaldeveloper.nextgen.comONBOARDINGAPI Onboarding formAPI Terms of Service AgreementAPPLICATION ENTRYbackend app, signed JWT (RS384),Clinical Extract’s public key as aJWKSSYSTEM SCOPESsystem/Patient.readsystem/Group.readsystem/Encounter.readsystem/Condition.readsystem/Observation.readsystem/MedicationRequest.readsystem/Procedure.readISSUEDapplication credentials, client ID2ACTIVATEYour NextGen EnterpriseNextGen API Client PortalACCESSgranted by your organization,self-service, in the API ClientPortalFHIR BASE URLyour NextGen Enterprise FHIR R4endpointGROUPthe study cohort, by Group ID3EXPORTClinical Extractin your environmentrequestresponsePOST {nextgen-auth}/…/tokengrant_type=client_credentialsclient_assertion: JWT signed RS384scope=system/Patient.read …GET {nge-fhir-r4}/Group/{id}/$export?_type=Patient,Encounter,Condition,Observation,MedicationRequest,ProcedurePrefer: respond-async202 AcceptedContent-Location: {status-url}GET {status-url}202 Accepted while the exportruns, with Retry-After200 OK, JSON manifesttransactionTime, request,requiresAccessToken, error[],output[{type, url, count}]GET {output-url}NDJSON, one resource per linestudy.csv, data-dictionary.jsonflattened, approved variables onlyclient IDFHIR R4 baseGroup ID
Connecting Clinical Extract to NextGenThree numbered steps from left to right. Step 1, register, at NextGen API Developer Portal (developer.nextgen.com), outside your environment: Onboarding: API Onboarding form, API Terms of Service Agreement; Application entry: backend app, signed JWT (RS384),, Clinical Extract’s public key as a JWKS; System scopes: system/Patient.read, system/Group.read, system/Encounter.read, system/Condition.read, system/Observation.read, system/MedicationRequest.read, system/Procedure.read; Issued: application credentials, client ID. An arrow carries the client ID to step 2. Step 2, activate, at Your NextGen Enterprise (NextGen API Client Portal): Access: granted by your organization, self-service, in the API Client Portal; FHIR base URL: your NextGen Enterprise FHIR R4 endpoint; Group: the study cohort, by Group ID. An arrow carries the FHIR R4 base and Group ID to step 3. Step 3, export, from Clinical Extract in your environment: request POST {nextgen-auth}/…/token (grant_type=client_credentials, client_assertion: JWT signed RS384, scope=system/Patient.read …); request GET {nge-fhir-r4}/Group/{id}/$export (?_type=Patient,Encounter,Condition,Observation,MedicationRequest,Procedure, Prefer: respond-async), highlighted; response 202 Accepted (Content-Location: {status-url}); request GET {status-url} (202 Accepted while the export runs, with Retry-After); response 200 OK, JSON manifest (transactionTime, request,, requiresAccessToken, error[],, output[{type, url, count}]); request GET {output-url} (NDJSON, one resource per line); result study.csv, data-dictionary.json (flattened, approved variables only).1REGISTERNextGen API Developer Portaldeveloper.nextgen.comONBOARDINGAPI Onboarding formAPI Terms of Service AgreementAPPLICATION ENTRYbackend app, signed JWT (RS384),Clinical Extract’s public key as a JWKSSYSTEM SCOPESsystem/Patient.readsystem/Group.readsystem/Encounter.readsystem/Condition.readsystem/Observation.readsystem/MedicationRequest.readsystem/Procedure.readISSUEDapplication credentials, client IDclient ID2ACTIVATEYour NextGen EnterpriseNextGen API Client PortalACCESSgranted by your organization,self-service, in the API Client PortalFHIR BASE URLyour NextGen Enterprise FHIR R4 endpointGROUPthe study cohort, by Group IDFHIR R4 baseGroup ID3EXPORTClinical Extractin your environmentrequestresponsePOST {nextgen-auth}/…/tokengrant_type=client_credentialsclient_assertion: JWT signed RS384scope=system/Patient.read …GET {nge-fhir-r4}/Group/{id}/$export?_type=Patient,Encounter,Condition,Observation,MedicationRequest,ProcedurePrefer: respond-async202 AcceptedContent-Location: {status-url}GET {status-url}202 Accepted while the export runs, withRetry-After200 OK, JSON manifesttransactionTime, request,requiresAccessToken, error[],output[{type, url, count}]GET {output-url}NDJSON, one resource per linestudy.csv, data-dictionary.jsonflattened, approved variables only
Figure 1. Connecting Clinical Extract to NextGen. Clinical Extract is onboarded with NextGen Healthcare and its application entry is set up once in the NextGen API Developer Portal; your organization grants it access in the NextGen API Client Portal; Clinical Extract then runs the Group export on NextGen Enterprise’s certified FHIR R4 API, in your environment. Resource lists and URLs are abridged.

3 Export time

Study export time on NextGen Enterprise.

A study export on NextGen Enterprise finishes in hours because it covers the cohort and the resource types the protocol names. Clinical Extract polls the status URL, downloads each NDJSON file with the bearer token and flattens the approved variables into study.csv.

Every header of the kickoff, status and manifest exchange is in our guide to bulk FHIR export.

4 Facts

NextGen connection facts.

Table 1. Endpoint, registration, authentication, export type and output on NextGen. Checked September 2026.
Endpoint Your NextGen Enterprise FHIR R4 endpoint, the certified API, with access granted to Clinical Extract in the NextGen API Client Portal
Registration NextGen API Developer Portal (developer.nextgen.com), after the API Onboarding form and the API Terms of Service Agreement: an application entry for a backend app, Clinical Extract’s public key as a JWKS, one system/<Resource>.read scope per exported type plus system/Group.read; OAuth2 application credentials and a client ID
Authentication SMART Backend Services: a JWT signed RS384 with Clinical Extract’s private key, exchanged at NextGen’s token endpoint for an access token with one system/<Resource>.read scope per exported type plus system/Group.read
Export type Group export: GET {nge-fhir-r4}/Group/{group-id}/$export with _type; 202 Accepted with a Content-Location status URL
Status and files 202 with Retry-After while the export runs; 200 with the JSON manifest; NDJSON files fetched with the bearer token, one resource per line
Output study.csv (UTF-8, one row per cohort patient, one column per approved variable) with data-dictionary.json (description, fhirSource and example per column); the NDJSON files and the manifest kept beside them in your study folder

The table scrolls sideways.

Sources: NextGen API, HL7 Bulk Data Access, SMART Backend Services.

5 Specimens

What the exchange and the output look like.

Every value is synthetic. The cohort is a 212-patient breast cancer study with 24 approved variables; the manifest counts and the row shown come from it.

Listing 1. The export kickoff: one request for the study cohort's Group and the resource types the protocol names, answered at once with the status URL.
GET {nge-fhir-r4}/Group/{group-id}/$export
    ?_type=Patient,Encounter,Condition,Observation,MedicationRequest,Procedure
Accept: application/fhir+json
Prefer: respond-async
Authorization: Bearer {access token}

202 Accepted
Content-Location: {status-url}
Listing 2. The completed status response: the manifest lists one NDJSON file per requested type with its line count, and says the files need the bearer token.
{
  "transactionTime": "2026-09-28T14:02:11Z",
  "request": "{nge-fhir-r4}/Group/{group-id}/$export?_type=Patient,Encounter,Condition,Observation,MedicationRequest,Procedure",
  "requiresAccessToken": true,
  "output": [
    { "type": "Patient", "url": "{file-url-1}", "count": 212 },
    { "type": "Encounter", "url": "{file-url-2}", "count": 3120 },
    { "type": "Condition", "url": "{file-url-3}", "count": 1684 },
    { "type": "Observation", "url": "{file-url-4}", "count": 48310 },
    { "type": "MedicationRequest", "url": "{file-url-5}", "count": 3905 },
    { "type": "Procedure", "url": "{file-url-6}", "count": 912 }
  ],
  "error": []
}
Listing 3. One line of Observation.ndjson: a complete FHIR resource per line, here the estrogen receptor status of patient eKx3p9Qa (LOINC 16112-5; SNOMED CT 10828004, Positive).
{"resourceType":"Observation","id":"eObs-3f9a","status":"final","category":[{"coding":[{"system":"http://terminology.hl7.org/CodeSystem/observation-category","code":"laboratory"}]}],"code":{"coding":[{"system":"http://loinc.org","code":"16112-5","display":"Estrogen receptor [Interpretation] in Tissue"}]},"subject":{"reference":"Patient/eKx3p9Qa"},"effectiveDateTime":"2024-03-20","valueCodeableConcept":{"coding":[{"system":"http://snomed.info/sct","code":"10828004","display":"Positive"}]}}
Listing 4. study.csv, the header row and row 1 of 212: one row per patient in the cohort, one column per approved variable (10 of 24 columns shown). Values are synthetic.
patient_ref,birth_year,gender,dx_code,dx_date,stage_group,er_status,pr_status,her2_status,first_chemo
eKx3p9Qa,1961,female,C50.412,2024-03-14,IIA,Positive,Positive,Negative,paclitaxel
Listing 5. The er_status entry in data-dictionary.json: the description with its code system, the FHIR element the value came from, and an example value.
{
  "er_status": {
    "description": "Estrogen receptor status (LOINC 16112-5)",
    "fhirSource": "Observation.valueCodeableConcept",
    "example": "Positive"
  }
}

6 Questions

Questions about NextGen

Does NextGen support bulk FHIR export?

NextGen Enterprise is certified to ONC §170.315(g)(10), and its FHIR R4 API exposes the Group export with backend-services authorization. Clinical Extract runs it as a backend app your organization grants access to in the API Client Portal.

Who grants the access?

Your organization does, self-service, in the NextGen API Client Portal. Clinical Extract’s application entry already exists in the API Developer Portal; you grant it access and name the study Group.

What does our organization hand over?

Your NextGen Enterprise FHIR R4 endpoint, once, and a Group ID for each study.

What does the export deliver?

study.csv, with one column per approved variable, and data-dictionary.json with each column’s description, FHIR source and an example value.

Next

See Clinical Extract run on one of your studies.

Tell us which EHR you run and what the study or registry needs. We reply within one business day to set a meeting time.

Request a demo