@awell-health/navi-core
Version:
Core utilities and GraphQL client for Navi care flow integration
542 lines (541 loc) • 21.5 kB
TypeScript
export type Maybe<T> = T | null;
export type InputMaybe<T> = Maybe<T>;
export type Exact<T extends {
[key: string]: unknown;
}> = {
[K in keyof T]: T[K];
};
export type MakeOptional<T, K extends keyof T> = Omit<T, K> & {
[SubKey in K]?: Maybe<T[SubKey]>;
};
export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & {
[SubKey in K]: Maybe<T[SubKey]>;
};
export type MakeEmpty<T extends {
[key: string]: unknown;
}, K extends keyof T> = {
[_ in K]?: never;
};
export type Incremental<T> = T | {
[P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never;
};
/** All built-in and custom scalars, mapped to their actual values */
export type Scalars = {
ID: {
input: string;
output: string;
};
String: {
input: string;
output: string;
};
Boolean: {
input: boolean;
output: boolean;
};
Int: {
input: number;
output: number;
};
Float: {
input: number;
output: number;
};
/** The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */
JSON: {
input: unknown;
output: unknown;
};
};
export type ActivitiesPayload = {
activities: Array<Activity>;
code: Scalars['String']['output'];
message?: Maybe<Scalars['String']['output']>;
success: Scalars['Boolean']['output'];
totalCount?: Maybe<Scalars['Float']['output']>;
};
export type Activity = {
action: ActivityAction;
careflow_id: Scalars['String']['output'];
completion_context?: Maybe<CompletionContextGraphQl>;
container_name?: Maybe<Scalars['String']['output']>;
date: Scalars['String']['output'];
id: Scalars['ID']['output'];
indirect_object?: Maybe<ActivityObject>;
inputs?: Maybe<ActivityInput>;
is_user_activity: Scalars['Boolean']['output'];
object: ActivityObject;
outputs?: Maybe<ActivityOutput>;
pathway_definition_id: Scalars['String']['output'];
reference_id: Scalars['String']['output'];
reference_type: ActivityReferenceType;
resolution?: Maybe<ActivityResolution>;
session_id?: Maybe<Scalars['String']['output']>;
stakeholders?: Maybe<Array<ActivityObject>>;
status: ActivityStatus;
sub_activities: Array<SubActivity>;
tenant_id: Scalars['String']['output'];
};
export type ActivityAction = 'ACTIVATE' | 'ADDED' | 'ASSIGNED' | 'COMPLETE' | 'COMPUTED' | 'DELEGATED' | 'DELIVER' | 'DISCARDED' | 'EXPIRED' | 'FAILED' | 'FAILED_TO_SEND' | 'GENERATED' | 'IS_WAITING_ON' | 'POSTPONED' | 'PROCESSED' | 'READ' | 'REMIND' | 'REPORTED' | 'SCHEDULED' | 'SEND' | 'SKIPPED' | 'STOPPED' | 'SUBMITTED';
export type ActivityForm = {
id: Scalars['String']['output'];
key: Scalars['String']['output'];
metadata?: Maybe<Scalars['String']['output']>;
questions: Array<Question>;
title: Scalars['String']['output'];
trademark?: Maybe<Scalars['String']['output']>;
};
export type ActivityInput = {
type: ActivityInputType;
};
export type ActivityInputType = 'CALCULATION' | 'CHECKLIST' | 'CLINICAL_NOTE' | 'DYNAMIC_FORM' | 'EXTENSION' | 'FORM' | 'MESSAGE';
export type ActivityMessage = {
attachments?: Maybe<Array<MessageAttachment>>;
body: Scalars['String']['output'];
format?: Maybe<MessageFormat>;
id: Scalars['ID']['output'];
subject: Scalars['String']['output'];
};
export type ActivityObject = {
email?: Maybe<Scalars['String']['output']>;
id: Scalars['ID']['output'];
name: Scalars['String']['output'];
preferred_language?: Maybe<Scalars['String']['output']>;
type: ActivityObjectType;
};
export type ActivityObjectType = 'ACTION' | 'AGENT' | 'API_CALL' | 'CALCULATION' | 'CHECKLIST' | 'CLINICAL_NOTE' | 'DECISION' | 'EMR_REPORT' | 'EMR_REQUEST' | 'EVALUATED_RULE' | 'FORM' | 'MESSAGE' | 'PATHWAY' | 'PATIENT' | 'PLUGIN' | 'PLUGIN_ACTION' | 'REMINDER' | 'STAKEHOLDER' | 'STEP' | 'TIMER' | 'TRACK' | 'USER';
export type ActivityOutput = {
type: ActivityOutputType;
};
export type ActivityOutputType = 'CALCULATION' | 'DYNAMIC_FORM' | 'EXTENSION' | 'FORM';
export type ActivityPayload = {
activity?: Maybe<Activity>;
code: Scalars['String']['output'];
message?: Maybe<Scalars['String']['output']>;
success: Scalars['Boolean']['output'];
};
export type ActivityReferenceType = 'AGENT' | 'NAVIGATION' | 'ORCHESTRATION' | 'REMINDER';
export type ActivityResolution = 'CANCELLED' | 'EXPIRED' | 'FAILURE' | 'SUCCESS';
export type ActivityStatus = 'ACTIVE' | 'CANCELLED' | 'DONE' | 'FAILED' | 'POSTPONED' | 'SCHEDULED' | 'STOPPED';
export type AllowedDatesOptions = 'ALL' | 'FUTURE' | 'PAST';
export type BooleanOperator = 'AND' | 'OR';
export type CalculationActivityInput = ActivityInput & {
fields?: Maybe<Array<CalculationField>>;
type: ActivityInputType;
};
export type CalculationActivityOutput = ActivityOutput & {
results?: Maybe<Scalars['JSON']['output']>;
type: ActivityOutputType;
};
export type CalculationField = {
id: Scalars['ID']['output'];
key: Scalars['String']['output'];
label: Scalars['String']['output'];
value: Scalars['JSON']['output'];
};
export type CareFlow = {
id: Scalars['String']['output'];
release_id: Scalars['String']['output'];
};
export type Checklist = {
items: Array<Scalars['String']['output']>;
title: Scalars['String']['output'];
};
export type ChecklistActivityInput = ActivityInput & {
checklist?: Maybe<Checklist>;
type: ActivityInputType;
};
export type ChoiceRangeConfig = {
enabled?: Maybe<Scalars['Boolean']['output']>;
max?: Maybe<Scalars['Float']['output']>;
min?: Maybe<Scalars['Float']['output']>;
};
export type ClinicalNote = {
context: Array<GeneratedClinicalNoteContextField>;
id: Scalars['ID']['output'];
narratives: Array<GeneratedClinicalNoteNarrative>;
};
export type ClinicalNoteActivityInput = ActivityInput & {
clinicalNote?: Maybe<ClinicalNote>;
type: ActivityInputType;
};
export type CompleteActivityInput = {
activity_id: Scalars['ID']['input'];
completion_context: CompletionContextInput;
form_response?: InputMaybe<Array<FormResponseInput>>;
input_data?: InputMaybe<Scalars['JSON']['input']>;
input_type: ActivityInputType;
};
export type CompleteActivityPayload = {
activity?: Maybe<Activity>;
code: Scalars['String']['output'];
data?: Maybe<Scalars['JSON']['output']>;
message?: Maybe<Scalars['String']['output']>;
success: Scalars['Boolean']['output'];
};
export type CompletionContextGraphQl = {
completed_at: Scalars['String']['output'];
navi_session_id?: Maybe<Scalars['String']['output']>;
user_email?: Maybe<Scalars['String']['output']>;
user_id?: Maybe<Scalars['String']['output']>;
user_name?: Maybe<Scalars['String']['output']>;
user_type: CompletionContextUserType;
};
export type CompletionContextInput = {
completed_at: Scalars['String']['input'];
navi_session_id: Scalars['String']['input'];
user_email?: InputMaybe<Scalars['String']['input']>;
user_id?: InputMaybe<Scalars['String']['input']>;
user_name?: InputMaybe<Scalars['String']['input']>;
user_type: CompletionContextUserType;
};
export type CompletionContextUserType = 'AGENT' | 'AUTHENTICATED_USER' | 'PATIENT' | 'SYSTEM' | 'UNAUTHENTICATED_USER';
export type Condition = {
id: Scalars['ID']['output'];
operand: ConditionOperand;
operator: ConditionOperator;
reference: Scalars['String']['output'];
reference_key?: Maybe<Scalars['String']['output']>;
};
export type ConditionInput = {
id: Scalars['String']['input'];
operand: ConditionOperandInput;
operator: ConditionOperator;
reference: Scalars['String']['input'];
};
export type ConditionOperand = {
type: ConditionOperandType;
value: Scalars['String']['output'];
};
export type ConditionOperandInput = {
type: Scalars['String']['input'];
value: Scalars['String']['input'];
};
export type ConditionOperandType = 'BOOLEAN' | 'DATA_POINT' | 'DATA_SOURCE' | 'NUMBER' | 'NUMBERS_ARRAY' | 'STRING' | 'STRINGS_ARRAY';
export type ConditionOperator = 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'HAS_FILE_UPLOADED' | 'HAS_NO_FILE_UPLOADED' | 'IS_ANY_OF' | 'IS_EMPTY' | 'IS_EQUAL_TO' | 'IS_GREATER_THAN' | 'IS_GREATER_THAN_OR_EQUAL_TO' | 'IS_IN_RANGE' | 'IS_LESS_THAN' | 'IS_LESS_THAN_OR_EQUAL_TO' | 'IS_LESS_THAN_X_DAYS_AGO' | 'IS_MORE_THAN_X_DAYS_AGO' | 'IS_NONE_OF' | 'IS_NOT_EMPTY' | 'IS_NOT_EQUAL_TO' | 'IS_NOT_TRUE' | 'IS_TODAY' | 'IS_TRUE';
export type DataPointInputGraphQl = {
data_point_definition_id: Scalars['String']['input'];
value: Scalars['String']['input'];
};
export type DataPointValueType = 'ATTACHMENT' | 'ATTACHMENTS_ARRAY' | 'BOOLEAN' | 'DATE' | 'JSON' | 'NUMBER' | 'NUMBERS_ARRAY' | 'STRING' | 'STRINGS_ARRAY' | 'TELEPHONE';
export type DateConfig = {
allowed_dates?: Maybe<AllowedDatesOptions>;
include_date_of_response?: Maybe<Scalars['Boolean']['output']>;
};
export type DynamicForm = {
key: Scalars['String']['output'];
questions: Array<DynamicQuestion>;
title: Scalars['String']['output'];
trademark?: Maybe<Scalars['String']['output']>;
};
export type DynamicFormActivityInput = ActivityInput & {
dynamic_form?: Maybe<DynamicForm>;
type: ActivityInputType;
};
export type DynamicFormActivityOutput = ActivityOutput & {
response?: Maybe<Scalars['JSON']['output']>;
type: ActivityOutputType;
};
export type DynamicQuestion = {
config?: Maybe<QuestionConfig>;
data_point_value_type?: Maybe<DataPointValueType>;
id: Scalars['ID']['output'];
is_required: Scalars['Boolean']['output'];
key: Scalars['String']['output'];
options?: Maybe<Array<QuestionOption>>;
question_type: QuestionType;
title: Scalars['String']['output'];
user_question_type?: Maybe<UserQuestionType>;
};
export type EvaluateFormRulesInput = {
question_responses: Array<QuestionResponseInput>;
rules: Array<RuleInput>;
};
export type EvaluateFormRulesPayload = {
code: Scalars['String']['output'];
message?: Maybe<Scalars['String']['output']>;
results?: Maybe<Array<Scalars['Boolean']['output']>>;
success: Scalars['Boolean']['output'];
};
export type ExclusiveOptionConfig = {
enabled?: Maybe<Scalars['Boolean']['output']>;
option_id?: Maybe<Scalars['String']['output']>;
};
export type ExtensionActivityInput = ActivityInput & {
fields?: Maybe<Scalars['JSON']['output']>;
type: ActivityInputType;
};
export type ExtensionActivityOutput = ActivityOutput & {
results?: Maybe<Scalars['JSON']['output']>;
type: ActivityOutputType;
};
export type FileStorageQuestionConfig = {
accepted_file_types?: Maybe<Array<Scalars['String']['output']>>;
file_storage_config_slug?: Maybe<Scalars['String']['output']>;
};
export type FormActivityInput = ActivityInput & {
form?: Maybe<ActivityForm>;
type: ActivityInputType;
};
export type FormActivityOutput = ActivityOutput & {
response?: Maybe<Scalars['JSON']['output']>;
type: ActivityOutputType;
};
export type FormResponseInput = {
question_id: Scalars['String']['input'];
value: Scalars['String']['input'];
};
export type GeneratedClinicalNoteContextField = {
key: Scalars['String']['output'];
value: Scalars['String']['output'];
};
export type GeneratedClinicalNoteNarrative = {
body: Scalars['String']['output'];
id: Scalars['ID']['output'];
key: Scalars['String']['output'];
title: Scalars['String']['output'];
};
export type InputValidationAllowed = {
letters?: Maybe<Scalars['Boolean']['output']>;
numbers?: Maybe<Scalars['Boolean']['output']>;
special?: Maybe<Scalars['Boolean']['output']>;
whitespace?: Maybe<Scalars['Boolean']['output']>;
};
export type InputValidationConfig = {
helper_text?: Maybe<Scalars['String']['output']>;
mode?: Maybe<Scalars['String']['output']>;
pattern?: Maybe<Scalars['String']['output']>;
simpleConfig?: Maybe<InputValidationSimpleConfig>;
};
export type InputValidationSimpleConfig = {
allowed?: Maybe<InputValidationAllowed>;
exactLength?: Maybe<Scalars['Float']['output']>;
};
export type MessageActivityInput = ActivityInput & {
message?: Maybe<ActivityMessage>;
type: ActivityInputType;
};
export type MessageAttachment = {
id: Scalars['ID']['output'];
name: Scalars['String']['output'];
type: Scalars['String']['output'];
url: Scalars['String']['output'];
};
export type MessageFormat = 'HTML' | 'MARKDOWN' | 'SLATE';
export type MultipleSelectConfig = {
exclusive_option?: Maybe<ExclusiveOptionConfig>;
range?: Maybe<ChoiceRangeConfig>;
};
export type Mutation = {
/** Complete an activity with form responses, checklist items, or other input data. Handles different activity types including forms, checklists, clinical notes, and calculations. */
completeActivity: CompleteActivityPayload;
/** Evaluate form rules against question responses to determine which rules are satisfied. Returns an array of boolean results indicating rule satisfaction status. */
evaluateFormRules: EvaluateFormRulesPayload;
/** Find an existing patient by ID or identifier, or create a new patient if none exists. Uses the same patient finding logic as enrollment triggers. */
patientMatch: PatientMatchPayload;
/** Start a new care flow for a patient with optional baseline data points. Creates a new care flow instance and returns the care flow details and stakeholders. */
startCareFlow: StartCareFlowPayload;
};
export type MutationCompleteActivityArgs = {
input: CompleteActivityInput;
};
export type MutationEvaluateFormRulesArgs = {
input: EvaluateFormRulesInput;
};
export type MutationPatientMatchArgs = {
input: PatientMatchInput;
};
export type MutationStartCareFlowArgs = {
input: StartCareFlowInput;
};
export type NumberConfig = {
range?: Maybe<RangeConfig>;
};
export type PaginationInput = {
count?: Scalars['Float']['input'];
offset?: Scalars['Float']['input'];
};
export type PatientIdentifier = {
system: Scalars['String']['output'];
value: Scalars['String']['output'];
};
export type PatientIdentifierInput = {
system: Scalars['String']['input'];
value: Scalars['String']['input'];
};
export type PatientMatchInput = {
allow_anonymous_creation?: InputMaybe<Scalars['Boolean']['input']>;
patient_id?: InputMaybe<Scalars['String']['input']>;
patient_identifier?: InputMaybe<PatientIdentifierInput>;
};
export type PatientMatchPayload = {
code: Scalars['String']['output'];
message?: Maybe<Scalars['String']['output']>;
patient_id?: Maybe<Scalars['String']['output']>;
patient_identifier?: Maybe<PatientIdentifier>;
success: Scalars['Boolean']['output'];
};
export type PhoneConfig = {
available_countries?: Maybe<Array<Scalars['String']['output']>>;
default_country?: Maybe<Scalars['String']['output']>;
};
export type Query = {
/** Retrieve activities with filtering, pagination, and sorting from the local navi database. Supports filtering by pathway_id, track_id, and includes total count for pagination. */
activities: ActivitiesPayload;
/** Retrieve a single activity by its ID from the local navi database. Returns activity details including inputs, outputs, and metadata. */
activity: ActivityPayload;
/** Retrieve all activities for a specific pathway from the local navi database. Includes pagination and sorting capabilities, focused on pathway-specific activity retrieval. */
pathwayActivities: ActivitiesPayload;
};
export type QueryActivitiesArgs = {
careflow_id: Scalars['String']['input'];
pagination?: InputMaybe<PaginationInput>;
sorting?: InputMaybe<SortingInput>;
track_id?: InputMaybe<Scalars['String']['input']>;
};
export type QueryActivityArgs = {
id: Scalars['ID']['input'];
};
export type QueryPathwayActivitiesArgs = {
careflow_id: Scalars['String']['input'];
pagination?: InputMaybe<PaginationInput>;
sorting?: InputMaybe<SortingInput>;
track_id?: InputMaybe<Scalars['String']['input']>;
};
export type Question = {
config?: Maybe<QuestionConfig>;
data_point_value_type?: Maybe<DataPointValueType>;
definition_id: Scalars['String']['output'];
id: Scalars['ID']['output'];
is_required: Scalars['Boolean']['output'];
key: Scalars['String']['output'];
metadata?: Maybe<Scalars['String']['output']>;
options?: Maybe<Array<QuestionOption>>;
question_type?: Maybe<QuestionType>;
rule?: Maybe<Rule>;
title: Scalars['String']['output'];
user_question_type: UserQuestionType;
};
export type QuestionConfig = {
date_validation?: Maybe<DateConfig>;
file_storage?: Maybe<FileStorageQuestionConfig>;
input_validation?: Maybe<InputValidationConfig>;
mandatory: Scalars['Boolean']['output'];
multiple_select?: Maybe<MultipleSelectConfig>;
number?: Maybe<NumberConfig>;
phone?: Maybe<PhoneConfig>;
recode_enabled?: Maybe<Scalars['Boolean']['output']>;
slider?: Maybe<SliderConfig>;
use_select?: Maybe<Scalars['Boolean']['output']>;
};
export type QuestionOption = {
id: Scalars['String']['output'];
label: Scalars['String']['output'];
value?: Maybe<Scalars['String']['output']>;
value_string?: Maybe<Scalars['String']['output']>;
};
export type QuestionResponseInput = {
question_id: Scalars['String']['input'];
value: Scalars['String']['input'];
value_type: Scalars['String']['input'];
};
export type QuestionType = 'INPUT' | 'MULTIPLE_CHOICE' | 'NO_INPUT';
export type RangeConfig = {
enabled?: Maybe<Scalars['Boolean']['output']>;
max?: Maybe<Scalars['Float']['output']>;
min?: Maybe<Scalars['Float']['output']>;
};
export type Rule = {
boolean_operator: BooleanOperator;
conditions: Array<Condition>;
id: Scalars['ID']['output'];
};
export type RuleInput = {
boolean_operator: Scalars['String']['input'];
conditions: Array<ConditionInput>;
id: Scalars['String']['input'];
};
export type SliderConfig = {
display_marks: Scalars['Boolean']['output'];
is_value_tooltip_on: Scalars['Boolean']['output'];
max: Scalars['Float']['output'];
max_label: Scalars['String']['output'];
min: Scalars['Float']['output'];
min_label: Scalars['String']['output'];
show_min_max_values: Scalars['Boolean']['output'];
step_value: Scalars['Float']['output'];
};
export type SortingInput = {
direction?: Scalars['String']['input'];
field?: Scalars['String']['input'];
};
export type Stakeholder = {
clinical_app_role: StakeholderClinicalAppRole;
definition_id: Scalars['String']['output'];
id: Scalars['ID']['output'];
label: StakeholderLabel;
release_id: Scalars['String']['output'];
version: Scalars['Float']['output'];
};
export type StakeholderClinicalAppRole = 'CAREGIVER' | 'PATIENT' | 'PHYSICIAN';
export type StakeholderLabel = {
en: Scalars['String']['output'];
};
export type StartCareFlowInput = {
careflow_definition_id: Scalars['String']['input'];
data_points?: InputMaybe<Array<DataPointInputGraphQl>>;
patient_id: Scalars['String']['input'];
release_id?: InputMaybe<Scalars['String']['input']>;
session_id?: InputMaybe<Scalars['String']['input']>;
};
export type StartCareFlowPayload = {
careflow: CareFlow;
code: Scalars['String']['output'];
message?: Maybe<Scalars['String']['output']>;
stakeholders: Array<Stakeholder>;
success: Scalars['Boolean']['output'];
};
export type SubActivity = {
action: ActivityAction;
id: Scalars['ID']['output'];
object?: Maybe<ActivityObject>;
};
export type Subscription = {
activityCompleted: Activity;
activityCreated: Activity;
activityExpired: Activity;
activityUpdated: Activity;
sessionActivityCompleted: Activity;
sessionActivityCreated: Activity;
sessionActivityExpired: Activity;
sessionActivityUpdated: Activity;
};
export type SubscriptionActivityCompletedArgs = {
careflow_id?: InputMaybe<Scalars['String']['input']>;
only_patient_activities?: InputMaybe<Scalars['Boolean']['input']>;
};
export type SubscriptionActivityCreatedArgs = {
careflow_id?: InputMaybe<Scalars['String']['input']>;
only_patient_activities?: InputMaybe<Scalars['Boolean']['input']>;
};
export type SubscriptionActivityExpiredArgs = {
careflow_id?: InputMaybe<Scalars['String']['input']>;
only_patient_activities?: InputMaybe<Scalars['Boolean']['input']>;
};
export type SubscriptionActivityUpdatedArgs = {
careflow_id?: InputMaybe<Scalars['String']['input']>;
only_patient_activities?: InputMaybe<Scalars['Boolean']['input']>;
};
export type SubscriptionSessionActivityCompletedArgs = {
only_stakeholder_activities?: InputMaybe<Scalars['Boolean']['input']>;
};
export type SubscriptionSessionActivityCreatedArgs = {
only_stakeholder_activities?: InputMaybe<Scalars['Boolean']['input']>;
};
export type SubscriptionSessionActivityExpiredArgs = {
only_stakeholder_activities?: InputMaybe<Scalars['Boolean']['input']>;
};
export type SubscriptionSessionActivityUpdatedArgs = {
only_stakeholder_activities?: InputMaybe<Scalars['Boolean']['input']>;
};
export type UserQuestionType = 'DATE' | 'DESCRIPTION' | 'EMAIL' | 'FILE' | 'ICD10_CLASSIFICATION' | 'IMAGE' | 'LONG_TEXT' | 'MULTIPLE_CHOICE' | 'MULTIPLE_CHOICE_GRID' | 'MULTIPLE_SELECT' | 'NUMBER' | 'SHORT_TEXT' | 'SIGNATURE' | 'SLIDER' | 'TELEPHONE' | 'YES_NO';