UNPKG

@causalfoundry/js-sdk

Version:

Causal Foundry WEB SDK (JS/TS)

415 lines (365 loc) 8.68 kB
import { Country, Language, SearchFilter } from "../../core/commonTypes" import {ItemType} from "../ECommerce/typings" export enum NavigationTypes { App = "app", Identify = "identify", Media = "media", NudgeResponse = 'nudge_response', Page = "page", Rate = "rate", Search = "search", ModuleSelection = "module_selection", } export enum CoreCatalogType { User = "user", Site = "site", Media = "media", Other = "other", } export enum ContentBlock { Core = "core", ELearning = "e-learning", ECommerce = "e-commerce", Payment = "payment", Loyalty = "loyalty", PatientMgmt = "patient_mgmt", CallCenter = "call_center", EmergencyMgmt = "emergency_mgmt", } export enum ModuleType { Core = "core", ECommerce = "e_commerce", ELearning = "e_learning", Screening = "screening", Assessment = "assessment", Enrolment = "enrolment", MedicalReview = "medical_review", MyPatients = "my_patients", Appointments = "appointments", Prescription = "prescription", LifestyleMgmt = "lifestyle_mgmt", PsychologicalMgmt = "psychological_mgmt", CounselingMgmt = "counseling_mgmt", Investigation = "investigation", TreatmentPlan = "treatment_plan", Transfers = "transfers", HCWMgmt = "hcw_mgmt", Break = "break", CallerHistory = "caller_history", AttendCall = "attend_call", Single = "single", Dashboard = "dashboard", Map = "map", Other = "other" } export type SearchModuleType = ModuleType; export enum AppAction { Background = "background", Close = "close", Open = "open", Resume = "resume" } export enum IdentityAction { Login = "login", Logout = "logout", Register = "register", Blocked = "blocked", UnBlocked = "unblocked" } export enum MediaAction { View = "view", Impression = "impression", Play = "play", Pause = "pause", Seek = "seek", Finish = "finish" } export enum MembersCount { None = "none", One = "1", Two = "2", Three = "3", Four = "4", FiveOrMore = "5_or_more", Undisclosed = "undisclosed" } export enum UserGender { Male = "male", Female = "female", Other = "other", UnDisclosed = "undisclosed" } export enum SearchItemType { PatientRecord = "patient_record", LifestylePlanItem = "lifestyle_plan_item", TreatmentPlanItem = "treatment_plan_item", PsychologicalPlanItem = "psychological_plan_item", CounselingPlanItem = "counseling_plan_item", InvestigationTestItem = "investigation_test_item", Blood = "blood", Oxygen = "oxygen", Drug = "drug", Grocery = "grocery", Facility = "facility", MedicalEquipment = "medical_equipment", Subscription = "subscription", Electronics = "electronics", Clothing = "clothing", Book = "book", ItemVerification = "item_verification", ItemReport = "item_report", Reward = "reward", Survey = "survey", Incident = "incident", Address = "address", Ambulance = "ambulance", OtherVehicle = "other_vehicle", Contact = "contact", Call = "call", Email = "email", SMS = "sms", Other = "other" } export enum MaritalStatus { Single = "single", Married = "married", Widowed = "widowed", Divorced = "divorced", Separated = "separated", Other = "other", UnDisclosed = "undisclosed" } export interface AppProperties { action: AppAction, start_time: number } export interface IdentifyProperties { action: IdentityAction, referral_code?: string blocked?: IdentifyBlockObject, } export interface IdentifyBlockObject{ reason: string, remarks?: string } export interface UserInfo extends IdentifyProperties { user_props: UserCatalog } export type ImageProperties = { /** * The block or module where the media is embedded. For example, * 'e-learning' if the media is included as an activity * of the course * */ contentBlock?: ContentBlock, type: MediaType, id: string, action: MediaAction, time: number, meta?: any } export enum MediaType { Audio = "audio", Video = "video", Image = "image" } export type AudioVideoProperties = { /** * The block or module where the media is embedded. For example, * 'e-learning' if the video or audio is included as an activity * of the course * */ contentBlock?: ContentBlock, type: MediaType, id: string, action: MediaAction, time: number meta?: any } export type MediaProperties = ImageProperties | AudioVideoProperties export type MediaCatalog = { id: string //(type)_(id_source) == video_testMediaId type: MediaType // <video, audio> name?: string length: string, // video length in milliseconds //uint32 description?: string, resolution?: string, language?: Language } export interface PageProperties { path: string, title?: string, duration?: number, render_time: number, meta?: any } export enum NudgeAction { Shown = "shown", Error = "error", Block = "block", Discard = "discard", Open = "open", Expired = "expired", } export enum NudgeResponseType { Push = 'push_notification', InApp = 'in_app_message' } export interface NudgeResponseProperties { "ref": string, "response": string, "time": string, "details"?: string } export enum SiteCatalogType { Pharmacy = 'pharmacy', Clinic = 'clinic', Community = 'community' } /** * This interface represents the information related to * a search */ export interface SearchProperties { /** * Free text introduced by the user to search */ query: string, module: ModuleType, /** * Current list of items IDs obtained for this search and page. * If the user have pressed in a new page number, of scroll down * and the web automatically retrieved new item, include here only * the new ones */ results_list: Array<ItemMinObject> // list of result ids /** * If the search engine allow to select specific value to search * in a selectable list, include here an object whose keys are the * attributes to search, and the values the actual values that must * match */ filter?: SearchFilter /** * If the search results are shown paginated, or with infinite scroll, * this field represent the number of page/subset the current result_ids * belongs to */ page: number, /** * Any other additional information to be available in the logs */ meta?: any } export interface ItemMinObject { id: string, type: SearchItemType | ItemType } export enum EducationalLevel { Primary = "primary", LowerSecondary = "lower_secondary", UpperSecondary = "upper_secondary", NonTertiary = "non_tertiary", Tertiary = "tertiary", Bachelors = "bachelors", Masters = "masters", Doctorate = "doctorate" } export enum UserAccountType { Basic = "basic", Classic = "classic", Advanced = "advanced", Other = "other" } export interface UserCatalog { id: string name?: string, organization_id?: string, organization_name?: string, experience?: string, region_state?: string, city?: string, workplace?: string, profession?: string, zipcode?: string, /** * ISO 8601 string (ie.: +0200) * Generated automatically by the SDK */ timezone?: string, /** * country which the user is, represented as * two characters in ISO 3166 */ country?: Country, /** * iSO 639-1 */ language?: Language, education_level?: EducationalLevel, account_type?: UserAccountType, birth_year?: number, gender?: UserGender, marital_status?: MaritalStatus, family_members?: MembersCount, children_under_five?: MembersCount, referral_code?: string } export interface SiteCatalog { id : string, name: string, type: SiteCatalogType, country?: Country, region_state?: string, city?: string, street_address?: string, zipcode?: string, level?: string, is_active?: boolean, latitude?: number, longitude?: number, culture?: string, parent_id?: string service_list?: Array<string>, sub_type?: string, priority?: string, is_private?: boolean, district?: string, sub_district?: string, landmark?: string, attributes?: SiteAttributes, } export interface SiteAttributes { bed_number?: number, insurance_plan_lst?: Array<string>, } export enum RateType { App = "app", Exam = "exam", Question = "question", Module = "module", Process = "process", Form = "form", Section = "section", Media = "media", Order = "order", Item = "item", HCW = "hcw", HcwSite = "hcw_site", Facility = "facility", Assessment = "assessment", Customer = "customer", Other = "other" } export interface RateProperties { rate_value: number, type: RateType, subject_id: string, meta?: any } export interface ModuleSelectionProperties { type: ModuleType, meta?: any }