diff --git a/README.md b/README.md index b341baa..c72d874 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,8 @@ Refer to the [Getting Started](https://github.com/fsmb/api-docs) guide to learn | Date | Release Notes | | - | -| -| 3 Feb 2021 | Added profession to PDC Profile. +| 16 Jun 2026 | [Release Notes](relnotes/release-202606.md) | +| 3 Feb 2021 | Added profession to PDC Profile. | | 4 Dec 2020 | Updated Postman collection and added verification indicators to training. | | 16 Nov 2020 | Added optional authorization endpoint to MedAPI. | | 20 Oct 2020 | Updated PDC Profile endpoint. | @@ -34,6 +35,7 @@ Refer to the [Getting Started](https://github.com/fsmb/api-docs) guide to learn | Scope | Description | | - | - | +| med.avr_read | Grants the ability to read and generate AVR reports. | | med.bio_read | Grants the ability to read a physician's verified information. | | med.cdc_read | Grants the ability to read a physician's profile. | | med.read | Grants the ability to read basic physician information. | @@ -44,6 +46,7 @@ Refer to the [Getting Started](https://github.com/fsmb/api-docs) guide to learn ## Resources +- [AVR](docs/avr/readme.md) - [Licensure](docs/licensure/README.md) - [Practitioners](docs/practitioners/README.md) - [BoardOrders](docs/boardOrders/README.md) diff --git a/docs/avr/get-avr-profile.md b/docs/avr/get-avr-profile.md new file mode 100644 index 0000000..6d27e92 --- /dev/null +++ b/docs/avr/get-avr-profile.md @@ -0,0 +1,68 @@ +# Get AVR Profile + +Gets the AVR profile for a physician. + +```http +GET {baseUrl}/v1/avr/{fid} +``` + +## URI Parameters + +| Name | In | Required | Type | Description | +| - | - | - | - | - | +| baseUrl | path | True | string | The API URL. | +| fid | path | True | string | FID of the physician. | + +## Responses + +| Name | Type | Description | +| - | - | - | +| 200 OK | [AvrProfile](types/avr-profile.md) | Success | +| 400 Bad Request | | FID is invalid. | +| 401 Unauthorized | | Unauthorized. | +| 404 Not Found | | Physician not found. | + +## Security + +Required scopes + +- med.avr_read + +## Examples + +[Get AVR](#get-avr) + +*** + +### Get AVR + +#### Sample Request + +```http +GET {baseUrl}/v1/avr/999999915 +``` + +#### Sample Response + +Status code: 200 + +Note: Output is elided. Refer to [AVR Profile](types/avr-profile.md) for a complete example. + +```json +{ + "fid": "999999915", + "reportDateUtc": "2026-06-16T12:00:00Z", + "identity": { + "birthDate": "1978-08-08", + "npi": null + }, + "names": { + "legalName": { + "firstName": "Philip", + "middleName": "James", + "lastName": "Testman" + }, + "alternateNames": [] + } +} +``` diff --git a/docs/avr/get-avr-report.md b/docs/avr/get-avr-report.md new file mode 100644 index 0000000..fa35706 --- /dev/null +++ b/docs/avr/get-avr-report.md @@ -0,0 +1,49 @@ +# Get AVR Profile Report + +Gets the AVR report for a physician. The report is returned as a PDF. + +```http +GET {baseUrl}/v1/avr/{fid}/report +``` + +## URI Parameters + +| Name | In | Required | Type | Description | +| - | - | - | - | - | +| baseUrl | path | True | string | The API URL. | +| fid | path | True | string | FID of the physician. | + +## Responses + +| Name | Type | Description | +| - | - | - | +| 200 OK | PDF file | Success | +| 400 Bad Request | | FID is invalid. | +| 401 Unauthorized | | Unauthorized. | +| 404 Not Found | | Physician not found. | + +## Security + +Required scopes + +- med.avr_read + +## Examples + +[Get AVR](#get-avr) + +*** + +### Get AVR + +#### Sample Request + +```http +GET {baseUrl}/v1/avr/999999915/report +``` + +#### Sample Response + +Status code: 200 + +Body: PDF file diff --git a/docs/avr/readme.md b/docs/avr/readme.md new file mode 100644 index 0000000..0080cc0 --- /dev/null +++ b/docs/avr/readme.md @@ -0,0 +1,12 @@ +# AVR + +URL: /v1/avr + +The AVR resource provides access to reading and generating AVR reports. + +## Operations + +| Operation | Description | +| - | - | +| [Get AVR Profile](get-avr-profile.md) | Gets the AVR profile. | +| [Get AVR Profile Report](get-avr-report.md) | Gets the AVR report as a PDF. | diff --git a/docs/avr/types/avr-abms-certification.md b/docs/avr/types/avr-abms-certification.md new file mode 100644 index 0000000..f6b67e6 --- /dev/null +++ b/docs/avr/types/avr-abms-certification.md @@ -0,0 +1,14 @@ +# AvrAbmsCertification + +ABMS certification + +| Name | Type | Required | Description | +| - | - | - | - | +| memberBoard | string (len: 80) | Yes | ABMS member board name | +| certificationType | string (len: 80) | Yes | Certification type | +| certificationStatus | string (len: 80) | Yes | Certification status (e.g. Active, Inactive, Expired) | +| expirationDay | string (format: dd, digits, len: 2) | No | Expiration day | +| expirationMonth | string (format: mm, len: 2) | No | Expiration month | +| expirationYear | string (format: yyyy, len: 4) | No | Expiration year | + +*Note: Any fields marked as deprecated will be removed in a future version of the API. New code should not rely on these fields. Existing code should be updated to use alternative fields.* diff --git a/docs/avr/types/avr-abms-section.md b/docs/avr/types/avr-abms-section.md new file mode 100644 index 0000000..d453eae --- /dev/null +++ b/docs/avr/types/avr-abms-section.md @@ -0,0 +1,10 @@ +# AvrAbmsSection + +ABMS certifications section + +| Name | Type | Required | Description | +| - | - | - | - | +| meetsImlccRequirements | boolean | Yes | Indicates if IMLCC requirements are met | +| certifications | [AvrAbmsCertification[]](avr-abms-certification.md) | No | List of ABMS certifications | + +*Note: Any fields marked as deprecated will be removed in a future version of the API. New code should not rely on these fields. Existing code should be updated to use alternative fields.* diff --git a/docs/avr/types/avr-accredited-training.md b/docs/avr/types/avr-accredited-training.md new file mode 100644 index 0000000..c0dcfc0 --- /dev/null +++ b/docs/avr/types/avr-accredited-training.md @@ -0,0 +1,20 @@ +# AvrAccreditedTraining + +Accredited training + +| Name | Type | Required | Description | +| - | - | - | - | +| accreditationEntity | string (len: 5) | No | Accreditation entity (e.g. ACGME) | +| programName | string (len: 200) | Yes | Program name | +| programCode | string (len: 10) | No | Program code | +| affiliatedInstitution | string (len: 200) | No | Affiliated institution | +| programSpecialty | string (len: 200) | Yes | Program specialty (e.g. Radiology) | +| programType | string (len: 50) | No | Program type (e.g. Residency) | +| trainingStatus | string (len: 50) | Yes | Training status (e.g. Completed) | +| startDate | string (date) | Yes | Start date of the training | +| endDate | string (date) | No | End date of the training, if completed | +| city | string (len: 50) | No | City of the program | +| stateOrProvince | string (len: 100) | No | State or province of the program | +| country | string (len: 100) | No | Country of the program | + +*Note: Any fields marked as deprecated will be removed in a future version of the API. New code should not rely on these fields. Existing code should be updated to use alternative fields.* diff --git a/docs/avr/types/avr-boardorders-section.md b/docs/avr/types/avr-boardorders-section.md new file mode 100644 index 0000000..e38693a --- /dev/null +++ b/docs/avr/types/avr-boardorders-section.md @@ -0,0 +1,10 @@ +# AvrBoardOrdersSection + +Board orders section + +| Name | Type | Required | Description | +| - | - | - | - | +| hasBoardOrders | boolean | Yes | Indicates if the physician has board orders | +| meetsImlccRequirements | boolean | Yes | Indicates if IMLCC requirements are met | + +*Note: Any fields marked as deprecated will be removed in a future version of the API. New code should not rely on these fields. Existing code should be updated to use alternative fields.* diff --git a/docs/avr/types/avr-exam.md b/docs/avr/types/avr-exam.md new file mode 100644 index 0000000..d4038db --- /dev/null +++ b/docs/avr/types/avr-exam.md @@ -0,0 +1,10 @@ +# AvrExam + +USMLE exam information + +| Name | Type | Required | Description | +| - | - | - | - | +| examType | string (len: 20) | Yes | Exam type (e.g. STEP 1, STEP 2 CK, STEP 3) | +| meetsImlccRequirements | boolean | Yes | Indicates if IMLCC requirements are met | + +*Note: Any fields marked as deprecated will be removed in a future version of the API. New code should not rely on these fields. Existing code should be updated to use alternative fields.* diff --git a/docs/avr/types/avr-exams-section.md b/docs/avr/types/avr-exams-section.md new file mode 100644 index 0000000..64d0640 --- /dev/null +++ b/docs/avr/types/avr-exams-section.md @@ -0,0 +1,10 @@ +# AvrExamsSection + +USMLE exams section + +| Name | Type | Required | Description | +| - | - | - | - | +| meetsImlccRequirements | boolean | Yes | Indicates if IMLCC requirements are met | +| exams | [AvrExam[]](avr-exam.md) | No | List of USMLE exams | + +*Note: Any fields marked as deprecated will be removed in a future version of the API. New code should not rely on these fields. Existing code should be updated to use alternative fields.* diff --git a/docs/avr/types/avr-gme-section.md b/docs/avr/types/avr-gme-section.md new file mode 100644 index 0000000..39dc8b1 --- /dev/null +++ b/docs/avr/types/avr-gme-section.md @@ -0,0 +1,11 @@ +# AvrGraduateMedicalEducationSection + +Graduate medical education section + +| Name | Type | Required | Description | +| - | - | - | - | +| isAma | boolean | Yes | Indicates if the GME was reported by AMA | +| meetsImlccRequirements | boolean | Yes | Indicates if IMLCC requirements are met | +| accreditedTraining | [AvrAccreditedTraining[]](avr-accredited-training.md) | No | Accredited GME | + +*Note: Any fields marked as deprecated will be removed in a future version of the API. New code should not rely on these fields. Existing code should be updated to use alternative fields.* diff --git a/docs/avr/types/avr-identity-section.md b/docs/avr/types/avr-identity-section.md new file mode 100644 index 0000000..47dcb79 --- /dev/null +++ b/docs/avr/types/avr-identity-section.md @@ -0,0 +1,10 @@ +# AvrIdentitySection + +Physician identity section + +| Name | Type | Required | Description | +| - | - | - | - | +| birthDate | string (date) | No | Date of birth | +| npi | string (format: digits, len: 10) | No | NPI number | + +*Note: Any fields marked as deprecated will be removed in a future version of the API. New code should not rely on these fields. Existing code should be updated to use alternative fields.* diff --git a/docs/avr/types/avr-medicaleducation-section.md b/docs/avr/types/avr-medicaleducation-section.md new file mode 100644 index 0000000..bf156b7 --- /dev/null +++ b/docs/avr/types/avr-medicaleducation-section.md @@ -0,0 +1,13 @@ +# AvrMedicalEducationSection + +Medical education section + +| Name | Type | Required | Description | +| - | - | - | - | +| medicalSchoolName | string (len: 100) | Yes | Medical school name | +| city | string (len: 50) | No | City | +| stateOrProvince | string (len: 100) | No | State or province name | +| country | string (len: 100) | No | Country name | +| graduationYear | string (format: yyyy, len: 4) | No | Graduation year | + +*Note: Any fields marked as deprecated will be removed in a future version of the API. New code should not rely on these fields. Existing code should be updated to use alternative fields.* diff --git a/docs/avr/types/avr-name.md b/docs/avr/types/avr-name.md new file mode 100644 index 0000000..84d1ecd --- /dev/null +++ b/docs/avr/types/avr-name.md @@ -0,0 +1,12 @@ +# AvrName + +Physician name + +| Name | Type | Required | Description | +| - | - | - | - | +| firstName | string (len: 50) | No | First name | +| middleName | string (len: 50) | No | Middle name | +| lastName | string (len: 50) | Yes | Last name | +| suffix | string (len: 4) | No | Suffix | + +*Note: Any fields marked as deprecated will be removed in a future version of the API. New code should not rely on these fields. Existing code should be updated to use alternative fields.* diff --git a/docs/avr/types/avr-names-section.md b/docs/avr/types/avr-names-section.md new file mode 100644 index 0000000..5d13534 --- /dev/null +++ b/docs/avr/types/avr-names-section.md @@ -0,0 +1,10 @@ +# AvrNamesSection + +Names section + +| Name | Type | Required | Description | +| - | - | - | - | +| legalName | [AvrName](avr-name.md) | Yes | Legal name | +| alternateNames | [AvrName[]](avr-name.md) | No | Alternate names | + +*Note: Any fields marked as deprecated will be removed in a future version of the API. New code should not rely on these fields. Existing code should be updated to use alternative fields.* diff --git a/docs/avr/types/avr-profile.md b/docs/avr/types/avr-profile.md new file mode 100644 index 0000000..d6a3e9c --- /dev/null +++ b/docs/avr/types/avr-profile.md @@ -0,0 +1,62 @@ +# AvrProfile + +AVR profile + +| Name | Type | Required | Description | +| - | - | - | - | +| fid | string (format: digits, len: 9) | Yes | FID of the physician | +| reportDateUtc | string (datetime) | Yes | Date and time, in UTC, the profile was generated | +| identity | [AvrIdentitySection](avr-identity-section.md) | Yes | Physician identity information | +| names | [AvrNamesSection](avr-names-section.md) | Yes | Physician names | +| medicalEducation | [AvrMedicalEducationSection](avr-medicaleducation-section.md) | Yes | Medical education | +| boardOrders | [AvrBoardOrdersSection](avr-boardorders-section.md) | Yes | Board orders | +| graduateMedicalEducation | [AvrGraduateMedicalEducationSection](avr-gme-section.md) | Yes | Graduate medical education | +| usmleExams | [AvrUsmleExamsSection](avr-exams-section.md) | Yes | USMLE exams | +| abmsCertifications | [AvrAbmsCertificationsSection](avr-abms-section.md) | Yes | ABMS certifications | + +*Note: Any fields marked as deprecated will be removed in a future version of the API. New code should not rely on these fields. Existing code should be updated to use alternative fields.* + +Example + +```json +{ + "fid": "999999915", + "reportDateUtc": "2026-06-24T18:25:14.7055032Z", + "identity": { + "birthDate": "1978-08-08", + "npi": "1435537299" + }, + "names": { + "legalName": { + "firstName": "Philip", + "middleName": "James", + "lastName": "Testman" + }, + "alternateNames": [] + }, + "medicalEducation": { + "medicalSchoolName": "West Virginia University School of Medicine", + "city": "Morgantown", + "stateOrProvince": "West Virginia", + "country": "UNITED STATES", + "graduationYear": "2004" + }, + "boardOrders": { + "hasBoardOrders": true, + "meetsImlccRequirements": false + }, + "graduateMedicalEducation": { + "isAma": false, + "meetsImlccRequirements": false, + "accreditedTraining": [] + }, + "usmleExams": { + "meetsImlccRequirements": false, + "exams": [] + }, + "abmsCertifications": { + "meetsImlccRequirements": false, + "certifications": [] + } +} +``` diff --git a/relnotes/release-202606.md b/relnotes/release-202606.md new file mode 100644 index 0000000..471d559 --- /dev/null +++ b/relnotes/release-202606.md @@ -0,0 +1,34 @@ +# Release June 2026 + +[What's New](#whats-new) \ +[Breaking Changes](#breaking-changes) \ +[Deprecated Features](#deprecated-features) + +## What's New + +- This release includes an upgrade of the runtime used by the API resulting in faster performance. See [Breaking Changes](#breaking-changes) for important information. +- This release adds a new [AVR](/docs/avr/readme.md) resource for retrieving the Provider Bridge AVR report for clients that previously used Provider Bridge directly. + +## Breaking Changes + +### Error Handling + +As part of the runtime upgrade the JSON object returned by the API in the cases where the API reports an error has changed. Previously the FSMB-specific Error Response +object was returned. Going forward the standardized [RFC7807 Problem Details](https://tools.ietf.org/html/rfc7807) object is used for reporting errors. The new object is +returned consistently for any status codes that report errors such as 400s and 500s. + +For most clients that just check the status code no changes need to be made. Endpoints continue to return the same status codes as before. In some cases a client may want +more information about why an error occurred, such as for 400s, and may use the fields of the returned object to extract the specific error. In this case client code will +need to be updated to account for the differing formats. + +| Old Field | New Field | Description | +| - | - | - | +| `code` | `type` | Provides a unique error code describing the error. The old field was a name while the new field is a URL, per the RFC. | +| `title` | `message` | A short summary of the problem in human-readable terms. | +| | `detail` | For some errors, a more detailed explanation of the error. | + +Client code that is not updated to the newer format will continue to work based upon the status codes but will not have access to the more detailed error information, if available. + +## Deprecated Features + +- The `Imlcc` resource is deprecated. This resource was an internal resource and not designed for general use.