API Data Model
Understanding the Avara API data model, object structures, and branded identifiers for AutoScribe and Viewer products. This guide is specifically for technical personnel in integrators like PACS companies and IT departments.
Introduction
Section titled “Introduction”The Avara API provides separate SDK packages (or delineations) for each product — AutoScribe and Viewer. Each product has its own set of objects, endpoints, and data structures optimized for its specific use case. This guide explains the core objects, branded identifiers, and key attributes for each product.
SDK Packages
Section titled “SDK Packages”Avara provides separate SDK packages for each product:
avara.autoScribe— SDK for AutoScribe operations (studies, reports, users with report creation permissions)avara.viewer— SDK for Viewer operations (studies, users with study management permissions)
While both products share some common concepts (like studies and users), they have distinct object types and attributes tailored to their workflows.
Branded Identifiers
Section titled “Branded Identifiers”All Avara resources use branded identifiers with consistent prefixes:
| Identifier Type | Format | Example | Description |
|---|---|---|---|
| StudyId | stu_{32-hex-chars} | stu_1234567890abcdef1234567890abcdef | Unique study identifier |
| UserId | usr_{32-hex-chars} | usr_1234567890abcdef1234567890abcdef | Unique user identifier |
| ReportId | rep_{32-hex-chars} | rep_1234567890abcdef1234567890abcdef | Unique report identifier (AutoScribe only) |
| InvitationId | inv_{32-hex-chars} | inv_1234567890abcdef1234567890abcdef | Unique invitation identifier |
| ExpressCustomerId | cus_{32-hex-chars} | cus_1234567890abcdef1234567890abcdef | Unique Express customer identifier |
All identifiers use a 3-character prefix followed by 32 hexadecimal characters (64 total characters including prefix).
AutoScribe Objects
Section titled “AutoScribe Objects”AutoScribeStudy
Section titled “AutoScribeStudy”Represents a study in the AutoScribe system with report workflow status.
Key Attributes:
studyId(StudyId, required) — Unique study identifierstudyInstanceUid(string, required) — DICOM Study Instance UID (e.g.,1.2.840.113619.2.55.3.604688119.868.1234567890.123)studyDescription(string, required) — Description of the study/scan (e.g., “Brain MRI with Contrast”)severity(enum, required) — Priority level:"normal","high", or"stat"studyReportStatus(enum, required) — Report workflow status:"unassigned"— No radiologist assigned"assigned"— Assigned but not started"in_progress"— Actively being dictated"completed"— Report signed"addendum_active"— Addendum in progress
reportIds(array of ReportIdWithStatus) — Array of report IDs associated with this study, including addendumsreportMetadata(StudyReportMetadata, required) — Patient demographics and scan information for report generationassignedTo(UserReference, nullable) — Reference to the assigned radiologist, null if unassignedpriorStudyIds(array of strings) — Array of prior study IDs for comparison contextpriorReportTexts(array of strings) — Array of prior report texts to provide clinical contextmetadata(object, optional) — Custom key-value metadata (max 50 pairs, keys up to 100 chars, values up to 1000 chars)isCancelled(boolean, required) — Whether the study has been cancelledcancelledAt(datetime, nullable) — Timestamp when the study was cancelledcreatedAt(datetime, nullable) — Timestamp when the study was createdupdatedAt(datetime, nullable) — Timestamp when the study was last updated
AutoScribeUser
Section titled “AutoScribeUser”Represents a user in the AutoScribe system with report creation permissions.
Key Attributes:
userId(UserId, required) — Unique user identifieremail(string, required) — User’s email address for login and notificationsfirstName(string, required) — User’s first namelastName(string, required) — User’s last namemiddleName(string, optional) — User’s middle namesuffix1(string, optional) — Name suffix (e.g., “MD”, “Jr.”)suffix2(string, optional) — Additional name suffix (e.g., “FACR”)clinicRole(enum, required) — Clinical or organizational role (e.g., “Radiologist”, “Cardiologist”, “Doctor”)phoneNumber(string, optional) — User’s phone number (10-15 digits)level(enum, required) — Access level:"owner","admin", or"member"hasDashboardAccess(boolean, required) — Whether the user can access the dashboard interfacecanManageStudies(boolean, required) — Whether the user has permission to create, update, and manage studiescanCreateReports(boolean, required) — Whether the user can generate and sign radiology reportsnpiNumber(string, optional) — National Provider Identifier (10-digit number, required for users who can create reports)invitedSource(enum, required) — How the user was invited:"dashboard"or"api"lastLoginAt(datetime, nullable) — Timestamp of user’s last logincreatedAt(datetime, nullable) — Timestamp when the user was created
AutoScribeReport
Section titled “AutoScribeReport”Represents a radiology report in the AutoScribe system.
Key Attributes:
reportId(ReportId, required) — Unique report identifierstudyId(StudyId, required) — Study ID this report belongs tostatus(enum, required) — Report status:"in_progress"or"completed"reportPlainText(string) — Plain text content of the reportsnapshotMetadata(StudyReportMetadata, required) — Patient demographics and scan information frozen at report creation timeisAddendum(boolean, required) — Whether this report is an addendum to a previous reportuserId(UserId, required) — User ID of the radiologist who created/signed this reportsignedAt(datetime, nullable) — Timestamp when the report was signedcreatedAt(datetime, nullable) — Timestamp when the report was createdupdatedAt(datetime, nullable) — Timestamp when the report was last updated
AutoScribeInvitation
Section titled “AutoScribeInvitation”Represents a pending user invitation in the AutoScribe system.
Key Attributes:
invitationId(InvitationId, required) — Unique invitation identifieruserId(UserId, required) — Pre-generated user ID for this invitation (becomes permanent upon acceptance)email(string, required) — Email address the invitation was sent tofirstName(string, required) — Invited user’s first namelastName(string, required) — Invited user’s last nameclinicRole(enum, required) — Clinical or organizational rolelevel(enum, required) — Access level:"admin"or"member"(owners cannot be invited via API)hasDashboardAccess(boolean, required) — Whether the invited user will have dashboard accesscanManageStudies(boolean, required) — Whether the invited user will have permission to manage studiescanCreateReports(boolean, required) — Whether the invited user can generate and sign radiology reportsnpiNumber(string, optional) — National Provider Identifier (required ifcanCreateReportsis true)status(enum, required) — Invitation status:"sent","accepted","rejected", or"revoked"expiry(datetime, nullable) — When the invitation expiresinvitedSource(enum, required) — How the invitation was created:"dashboard"or"api"createdAt(datetime, nullable) — Timestamp when the invitation was createdupdatedAt(datetime, nullable) — Timestamp when the invitation was last updated
Viewer Objects
Section titled “Viewer Objects”ViewerStudy
Section titled “ViewerStudy”Represents a study in the Viewer system with viewing status.
Key Attributes:
studyId(StudyId, required) — Unique study identifierstudyInstanceUid(string, required) — DICOM Study Instance UIDstudyDescription(string, required) — Description of the study/scanseverity(enum, required) — Priority level:"normal","high", or"stat"studyViewerStatus(enum, required) — Viewer status:"incomplete"or"complete"assignedTo(UserReference, nullable) — Reference to the assigned user, null if unassignedexpressCustomer(ExpressCustomerReference, nullable) — Reference to the Express customer this study belongs tometadata(object, optional) — Custom key-value metadata (max 50 pairs)isCancelled(boolean, required) — Whether the study has been cancelledcancelledAt(datetime, nullable) — Timestamp when the study was cancelledcreatedAt(datetime, nullable) — Timestamp when the study was createdupdatedAt(datetime, nullable) — Timestamp when the study was last updated
Note: Viewer studies do not include reportMetadata, reportIds, priorStudyIds, or priorReportTexts since Viewer focuses on image viewing rather than report generation.
ViewerUser
Section titled “ViewerUser”Represents a user in the Viewer system with study management permissions.
Key Attributes:
userId(UserId, required) — Unique user identifieremail(string, required) — User’s email address for login and notificationsfirstName(string, required) — User’s first namelastName(string, required) — User’s last namemiddleName(string, optional) — User’s middle namesuffix1(string, optional) — Name suffixsuffix2(string, optional) — Additional name suffixclinicRole(enum, required) — Clinical or organizational rolephoneNumber(string, optional) — User’s phone numberlevel(enum, required) — Access level:"owner","admin", or"member"hasDashboardAccess(boolean, required) — Whether the user can access the dashboard interfacecanManageStudies(boolean, required) — Whether the user has permission to create, update, and manage studiesinvitedSource(enum, required) — How the user was invited:"dashboard"or"api"lastLoginAt(datetime, nullable) — Timestamp of user’s last logincreatedAt(datetime, nullable) — Timestamp when the user was created
Note: Viewer users do not include canCreateReports or npiNumber since Viewer does not support report creation.
ViewerInvitation
Section titled “ViewerInvitation”Represents a pending user invitation in the Viewer system.
Key Attributes:
invitationId(InvitationId, required) — Unique invitation identifieruserId(UserId, required) — Pre-generated user ID for this invitationemail(string, required) — Email address the invitation was sent tofirstName(string, required) — Invited user’s first namelastName(string, required) — Invited user’s last nameclinicRole(enum, required) — Clinical or organizational rolelevel(enum, required) — Access level:"admin"or"member"hasDashboardAccess(boolean, required) — Whether the invited user will have dashboard accesscanManageStudies(boolean, required) — Whether the invited user will have permission to manage studiesstatus(enum, required) — Invitation status:"sent","accepted","rejected", or"revoked"expiry(datetime, nullable) — When the invitation expiresinvitedSource(enum, required) — How the invitation was created:"dashboard"or"api"createdAt(datetime, nullable) — Timestamp when the invitation was createdupdatedAt(datetime, nullable) — Timestamp when the invitation was last updated
Note: Viewer invitations do not include canCreateReports or npiNumber since Viewer does not support report creation.
Shared Objects
Section titled “Shared Objects”UserReference
Section titled “UserReference”A reference to a user with basic identifying information. Used in both AutoScribe and Viewer contexts.
Key Attributes:
userId(UserId, required) — Unique user identifieremail(string, required) — User’s email addressfirstName(string, optional) — User’s first namelastName(string, optional) — User’s last namemiddleName(string, optional) — User’s middle namesuffix1(string, optional) — Name suffixsuffix2(string, optional) — Additional name suffix
ExpressCustomerReference
Section titled “ExpressCustomerReference”A reference to an Express customer with basic identifying information.
Key Attributes:
expressCustomerId(ExpressCustomerId, required) — Unique Express customer identifierexpressCustomerName(string, required) — Name of the Express customer
ApiKeyReference
Section titled “ApiKeyReference”A reference to an API key with basic identifying information.
Key Attributes:
apiKeyId(UUID, required) — Unique API key identifier (UUIDv4 format)description(string, required) — Human-readable description of the API keyisViewerEnabled(boolean, optional) — Whether this API key has access to the Viewer product
StudyReportMetadata
Section titled “StudyReportMetadata”Patient demographics and scan information for report generation. Used in AutoScribe studies and reports.
Key Attributes:
scanDate(string, required) — Date the scan was performed (format:YYYY-MM-DD)scanType(string, optional) — Type of scan or imaging modality (e.g., “MRI”, “CT”, “X-Ray”)patientName(string, optional) — Full name of the patientfacilityName(string, optional) — Name of the medical facility where the scan was performedreferringPhysicianName(string, optional) — Name of the physician who referred the patientsex(enum, optional) — Patient’s biological sex:"male","female", or"other"height(object, optional) — Patient’s height with unit (valueandunit:"in"or"cm")weight(object, optional) — Patient’s weight with unit (valueandunit:"lbs"or"kg")dateOfBirth(string, optional) — Patient’s date of birth (format:YYYY-MM-DD)mrn(string, optional) — Medical Record Number — unique patient identifierscanTime(string, optional) — Time the scan was performed (format:HH:MM)age(string, optional) — Patient’s age at time of scan (e.g., “34.5 years”, “2 months”)
ReportIdWithStatus
Section titled “ReportIdWithStatus”A report ID paired with its current status. Used in AutoScribe studies.
Key Attributes:
reportId(ReportId, required) — Unique report identifierstatus(enum, required) — Current status of the report:"in_progress"or"completed"
Express Customer Objects
Section titled “Express Customer Objects”ExpressCustomer
Section titled “ExpressCustomer”An Express customer entity that groups users and studies.
Key Attributes:
expressCustomerId(ExpressCustomerId, required) — Unique Express customer identifierexpressCustomerName(string, required) — Name of the Express customerisActive(boolean, required) — Whether the Express customer is currently activemetadata(object, optional) — Custom key-value metadata (max 50 pairs)userCount(integer, required) — Number of users currently in this Express customercreatedAt(datetime, nullable) — Timestamp when the Express customer was createdupdatedAt(datetime, nullable) — Timestamp when the Express customer was last updated
Key Differences Between Products
Section titled “Key Differences Between Products”AutoScribe vs Viewer Studies
Section titled “AutoScribe vs Viewer Studies”| Attribute | AutoScribeStudy | ViewerStudy |
|---|---|---|
| Report workflow status | studyReportStatus (unassigned, assigned, in_progress, completed, addendum_active) | N/A |
| Viewer status | N/A | studyViewerStatus (incomplete, complete) |
| Report metadata | reportMetadata (required) | N/A |
| Report IDs | reportIds (array) | N/A |
| Prior studies/reports | priorStudyIds, priorReportTexts | N/A |
AutoScribe vs Viewer Users
Section titled “AutoScribe vs Viewer Users”| Attribute | AutoScribeUser | ViewerUser |
|---|---|---|
| Report creation | canCreateReports (boolean) | N/A |
| NPI number | npiNumber (string, required if canCreateReports) | N/A |
| Study management | canManageStudies (boolean) | canManageStudies (boolean) |
SDK Usage Examples
Section titled “SDK Usage Examples”TypeScript
Section titled “TypeScript”import Avara from '@avara/sdk';
const avara = new Avara({ apiKey: process.env.AVARA_API_KEY });
// AutoScribe SDKconst autoScribeStudy = await avara.autoScribe.studies.create({ studyInstanceUid: '1.2.840.113619.2.55.3.604688119.868.1234567890.123', studyDescription: 'Brain MRI with Contrast', severity: 'normal', reportMetadata: { scanDate: '2024-03-15', scanType: 'MRI Brain with Contrast', patientName: 'Jane Doe', facilityName: 'City Medical Center', sex: 'female', dateOfBirth: '1985-07-20', mrn: 'MRN-2024-001234', },});
// Viewer SDKconst viewerStudy = await avara.viewer.studies.create({ studyInstanceUid: '1.2.840.113619.2.55.3.604688119.868.1234567890.123', studyDescription: 'CT Chest/Abdomen/Pelvis', severity: 'high',});Python
Section titled “Python”from avara import Avara
avara = Avara(api_key=os.environ['AVARA_API_KEY'])
# AutoScribe SDKauto_scribe_study = avara.auto_scribe.studies.create( study_instance_uid='1.2.840.113619.2.55.3.604688119.868.1234567890.123', study_description='Brain MRI with Contrast', severity='normal', report_metadata={ 'scan_date': '2024-03-15', 'scan_type': 'MRI Brain with Contrast', 'patient_name': 'Jane Doe', 'facility_name': 'City Medical Center', 'sex': 'female', 'date_of_birth': '1985-07-20', 'mrn': 'MRN-2024-001234', },)
# Viewer SDKviewer_study = avara.viewer.studies.create( study_instance_uid='1.2.840.113619.2.55.3.604688119.868.1234567890.123', study_description='CT Chest/Abdomen/Pelvis', severity='high',)import com.avara.Avara;import com.avara.models.autoscribe.*;import com.avara.models.viewer.*;
Avara avara = new Avara.Builder() .apiKey(System.getenv("AVARA_API_KEY")) .build();
// AutoScribe SDKAutoScribeStudyCreateRequest autoScribeRequest = AutoScribeStudyCreateRequest.builder() .studyInstanceUid("1.2.840.113619.2.55.3.604688119.868.1234567890.123") .studyDescription("Brain MRI with Contrast") .severity(Severity.NORMAL) .reportMetadata(StudyReportMetadata.builder() .scanDate("2024-03-15") .scanType("MRI Brain with Contrast") .patientName("Jane Doe") .facilityName("City Medical Center") .sex(Sex.FEMALE) .dateOfBirth("1985-07-20") .mrn("MRN-2024-001234") .build()) .build();
AutoScribeStudy autoScribeStudy = avara.autoScribe().studies().create(autoScribeRequest);
// Viewer SDKViewerStudyCreateRequest viewerRequest = ViewerStudyCreateRequest.builder() .studyInstanceUid("1.2.840.113619.2.55.3.604688119.868.1234567890.123") .studyDescription("CT Chest/Abdomen/Pelvis") .severity(Severity.HIGH) .build();
ViewerStudy viewerStudy = avara.viewer().studies().create(viewerRequest);Summary
Section titled “Summary”-
AutoScribe focuses on report generation with objects like
AutoScribeStudy,AutoScribeUser,AutoScribeReport, andAutoScribeInvitation. Users can create reports and require NPI numbers. -
Viewer focuses on image viewing with objects like
ViewerStudy,ViewerUser, andViewerInvitation. Users manage studies but do not create reports. -
Both products share common concepts (studies, users, invitations) but have distinct attributes and workflows optimized for their specific use cases.
-
All resources use branded identifiers with consistent prefixes (
stu_,usr_,rep_,inv_,cus_) followed by 32 hexadecimal characters.