import {z} from 'zod' export type GetApiOrdersOrderArgs = {id?: string | undefined, uuid?: string | undefined, 'version-datavant'?: string | undefined}; export type GetApiOrdersOrderOptions = {baseUrl?: string | undefined, oauth2?: string | undefined, fetch?: typeof fetch | undefined}; export const deliveryType = z.enum(["pdf", "xml", "json"]); export const deliveryFormat = z.enum(["individual", "zipped"]); export const deliveryFrequency = z.enum(["continuous", "daily", "weekly", "biweekly", "monthly", "order_due_date", "each_document"]); export const deliveryFrequencyDay = z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(5), z.literal(6)]); export const deliveryTiming = z.enum(["continuous", "scheduled"]); export const deliveryLocation = z.enum(["api", "sftp", "s3"]); export const dailyDeliveryOptions = z.object({delivery_frequency_sub_option: z.unknown(), delivery_frequency: z.literal("daily")}); export const weeklyDeliveryOptions = z.object({delivery_frequency_sub_option: z.array(deliveryFrequencyDay), delivery_frequency: z.literal("weekly")}); export const biweeklyDeliveryOptions = z.object({delivery_frequency_sub_option: z.array(deliveryFrequencyDay), delivery_frequency: z.literal("biweekly")}); export const monthlyDeliveryOptions = z.object({delivery_frequency_sub_option: z.number().int(), delivery_frequency: z.literal("monthly")}); export const dueDateDeliveryOptions = z.object({delivery_frequency_sub_option: z.unknown(), delivery_frequency: z.literal("order_due_date")}); export const eachDocumentDeliveryOptions = z.object({delivery_frequency_sub_option: z.unknown(), delivery_frequency: z.literal("each_document")}); export const structuredDataExtractionReportConfiguration = z.object({delivery_schedule: z.array(z.string()).optional(), deliver_automatically: z.boolean().optional(), delivery_schedule_options: z.discriminatedUnion("delivery_frequency", [dailyDeliveryOptions, weeklyDeliveryOptions, biweeklyDeliveryOptions, monthlyDeliveryOptions, dueDateDeliveryOptions, eachDocumentDeliveryOptions]).optional(), filename_prefix: z.string(), include_npi: z.boolean().optional(), include_diagnosis: z.boolean().optional(), filter_encounters_by_requested_dos: z.boolean().optional(), write_empty_encounters: z.boolean().optional()}); export const chartDetailExtractConfiguration = z.object({delivery_schedule: z.array(z.string()).optional(), deliver_automatically: z.boolean().optional(), delivery_schedule_options: z.discriminatedUnion("delivery_frequency", [dailyDeliveryOptions, weeklyDeliveryOptions, biweeklyDeliveryOptions, monthlyDeliveryOptions, dueDateDeliveryOptions, eachDocumentDeliveryOptions]).optional(), filename_template: z.string()}); export const requesterType = z.enum(["attorney", "datavant", "disability", "continuing_care", "copya", "copyi", "facility", "government", "insurance", "patient", "payd", "payi", "pro", "fac"]); export const primaryReason = z.enum(["attorney", "hospital_lien", "patient_directive", "personal_injury", "social_security_disability", "subpoena", "workers_comp", "illinois_industrial_commission_subpoena", "florida_statute", "veterans_disability", "ssa_appeal_representative_form_1696", "patient_social_security_appeal", "life_sciences", "audit_of_claims", "clinical_research", "disability", "insurance", "medicare_medicaid", "rac", "revenue_cycle_management", "business_office_copy_risk_management", "special_project", "drg_payment_integrity", "hedis_audit", "hix", "radv", "standard_insurance_claim_payment", "utilization_review", "disability_gov_benefits", "forms_completion_by_provider", "patient_personal", "patient_transfer", "second_request_not_work_comp", "agency", "government_audit", "medicaid_dds", "non_profit", "state_dds", "workers_comp_board", "continuity_of_care", "ciox_audit", "mra", "ciox_real_world_data_team_request", "aca_hix", "drg", "underwriting", "claim", "general_attorney", "general_attorney_subpoena", "workers_comp_subpoena", "ssa_appeal", "pro_medicaid", "standard_pro", "value_based_care", "payd", "payer", "attestation", "unknown"]); export const secondaryReason = z.enum(["aca", "defense_attorney", "defense_subpoena", "personal_injury", "state_attorney_office", "represent_indignant", "subpoena_second_request", "disability_gov_benefits", "ssi_claim_second_request", "hospital_per_admission", "no", "second_request", "social_security_appeal", "patient_social_security_appeal", "social_security_claim_appeal_second_request", "forms_completion_by_provider", "attorney_rep_pat", "appeal_second_request", "court_issued", "criminal", "subpoena", "workers_comp_subpoena", "subpoena_deposition_trial_testimony_with_records", "workers_comp_second_request", "workers_comp", "workers_comp_self_insured", "requested_by_patient", "requested_by_attorney", "drg_payment_integrity", "hedis_audit", "hix", "mra", "radv", "utilization_review", "short_term_long_term_claim", "second_request_insurance", "bc_bs_claim", "non_medical_insurance_claim", "standard_insurance_claim_payment", "underwriting", "pharmacy", "aps", "medicare_medicaid_utl_review", "medicare_medicaid_eligibility", "rac_medicaid", "second_request_workers_comp", "standard_workers_comp", "county", "dept_of_health_human_services", "dept_of_welfare", "family_and_child", "omap", "probation", "public_schools", "social_security_application", "veterans_affairs", "voc_rehab", "mi_family", "nc_prison", "attorney_general", "state_attorney", "federal_public_defender", "utilization_review_medicare_and_medicaid", "home_risk_assessment", "in_office_assessment", "payment_integrity", "post_payment_denials", "pre_payment_denials", "provider_as_requester", "switchboard_for_acos", "whole_person_understanding"]); export const address = z.object({normalizations: z.array(z.unknown()).optional(), line1: z.string().optional(), line2: z.string().optional(), city: z.string().optional(), country: z.string().optional(), state: z.string().optional(), postal_code: z.string().optional()}); export const legalEntity = z.object({phone_number: z.string().optional(), full_name: z.string().optional(), first_name: z.string().optional(), alternate_first_name: z.string().optional(), middle_name: z.string().optional(), last_name: z.string().optional(), prefix: z.string().optional(), suffix: z.string().optional(), id: z.string(), order_id: z.string().optional(), address: address.optional(), health_plan: z.string().optional()}); export const contacts = z.object({billing: legalEntity.optional(), customer: legalEntity.optional()}); export const retrievalSources = z.enum(["api", "embedded_manual", "nonembedded_manual", "athena", "healthjump", "mock_retrieval", "moxe", "office_ally", "particle", "ses", "share_arkansas", "sidus", "veradigm", "vim", "iatric", "c3hie", "ghhc", "healow", "mdland"]); export const allowBlockGroup = z.object({data_foundation_health_system_ids: z.array(z.string()).optional()}); export const retrievalAllowBlockConfiguration = z.object({allow: allowBlockGroup.optional(), block: allowBlockGroup.optional()}); export const submissionSource = z.enum(["api", "switchboard", "sftp", "legacy"]); export const orderStatus = z.enum(["draft", "accepted", "rejected", "processing", "failed", "dispatched", "canceled", "complete", "pending_close", "close_in_progress", "intake_review_required", "intake_review_completed"]); export const chartFinderConfiguration = z.object({coding: z.boolean().optional(), audit_type: z.number().int().optional(), review_type: z.union([z.string(), z.number().int()]).optional(), idsb_handling_qa: z.union([z.literal(0), z.literal(1)]).optional(), idsb_retrieving: z.union([z.literal(0), z.literal(1)]).optional(), idsb_retrieving_embedded: z.union([z.literal(0), z.literal(1)]).optional(), account_manager_id: z.number().int().optional()}); export const manifestDeliveryConfig = z.object({filename_template: z.string().optional(), file_extension: z.enum([".csv", ".txt", ".dat"]).optional(), delimiter: z.enum([",", "|", " ", "~"]).optional(), header_configuration: z.array(z.object({})).optional(), template_name: z.enum(["ml_standard", "provider", "ml_merge", "arbcbs_pdf_custom", "arbcbs_cda_custom", "centene_custom", "clover_pdf_custom", "optum_ioa_custom", "bcbsmi_custom", "elevance_custom"])}); export const s3FileTransferConfig = z.object({target_type: z.literal("s3"), prefix: z.string()}); export const zipDeliveryConfig = z.object({filename_template: z.string().optional(), include_manifest: z.boolean().optional(), password: z.string().optional()}); export const pdfDeliveryConfig = z.object({filename_template: z.string().optional(), schedule: z.array(z.string()), manifest: manifestDeliveryConfig.optional(), email_recipients: z.array(z.string()).optional(), file_transfer_config: s3FileTransferConfig.optional(), zip: zipDeliveryConfig.optional(), is_continuous: z.boolean().optional(), merge: z.boolean().optional()}); export const baseDeliveryConfig = z.object({filename_template: z.string().optional(), schedule: z.array(z.string()), manifest: manifestDeliveryConfig.optional(), email_recipients: z.array(z.string()).optional(), file_transfer_config: s3FileTransferConfig.optional()}); export const extractionDeliveryConfig = z.object({include_npi: z.boolean(), include_diagnosis: z.boolean(), filter_encounters_by_requested_dos: z.boolean().optional(), write_empty_encounters: z.boolean().optional()}); export const structuredExtractionDeliveryConfig = z.object({filename_template: z.string().optional(), schedule: z.array(z.string()), manifest: manifestDeliveryConfig.optional(), email_recipients: z.array(z.string()).optional(), file_transfer_config: s3FileTransferConfig.optional(), deliver_automatically: z.boolean().optional(), report: extractionDeliveryConfig}); export const chartDetailExtractDeliveryConfig = z.object({filename_template: z.string().optional(), schedule: z.array(z.string()), manifest: manifestDeliveryConfig.optional(), email_recipients: z.array(z.string()).optional(), file_transfer_config: s3FileTransferConfig.optional(), deliver_automatically: z.boolean().optional()}); export const allDeliveryConfig = z.object({pdf: pdfDeliveryConfig.optional(), cda: baseDeliveryConfig.optional(), fhir: baseDeliveryConfig.optional(), structured_extraction: structuredExtractionDeliveryConfig.optional(), chart_detail_extract: chartDetailExtractDeliveryConfig.optional()}); export const importReviewStatus = z.object({provider_package_approved: z.boolean().optional()}); export const orderResponse = z.object({delivery_type: z.array(deliveryType).optional(), delivery_format: deliveryFormat.optional(), structured_data_file_delivery_format: deliveryFormat.optional(), delivery_filename_template: z.string().optional(), delivery_manifest_included: z.boolean().optional(), delivery_manifest_filename_template: z.string().optional(), delivery_manifest_file_extension: z.enum([".csv", ".txt", ".dat"]).optional(), delivery_manifest_delimiter: z.enum([",", "|", " "]).optional(), delivery_zip_filename_template: z.string().optional(), delivery_frequency: deliveryFrequency.optional(), delivery_frequency_sub_option: z.union([z.array(deliveryFrequencyDay), z.number().int()]).optional(), delivery_schedule: z.array(z.string()).optional(), delivery_timing: deliveryTiming.optional(), delivery_location: deliveryLocation.optional(), delivery_email_recipients: z.array(z.string()).optional(), delivery_manifest_configuration: z.unknown(), zip_password: z.string().optional(), merge_charts: z.boolean().optional(), structured_data_extraction_report_configuration: structuredDataExtractionReportConfiguration.optional(), chart_detail_extract_report_configuration: chartDetailExtractConfiguration.optional(), uuid: z.string(), id: z.string().min(1).max(100), name: z.string().optional(), project_id: z.string().optional(), project_uuid: z.string().optional(), project_name: z.string().optional(), project_config_options: z.object({}).optional(), package_configuration_pk_id: z.number().int().optional(), package_configuration_pk_id_for_project_type: z.number().int().optional(), type: requesterType, due_date: z.string().optional(), primary_reason: primaryReason, secondary_reason: secondaryReason.optional(), meta: z.object({}).optional(), contacts: contacts.optional(), retrieval_sources: z.array(retrievalSources).optional(), retrieval_allow_block_configuration: retrievalAllowBlockConfiguration.optional(), manual_qa: z.boolean().optional(), coding_required: z.boolean().optional(), coding_required_v2: z.boolean().optional(), submission_source: submissionSource.optional(), total_queries: z.number().int().optional(), status: orderStatus, created_at: z.string().optional(), updated_at: z.string().optional(), demand_id: z.number().int().optional(), wave: z.number().int().gt(0).lt(10000).optional(), chart_review_year: z.number().int().optional(), target_yield: z.number().optional(), yield_type: z.number().int().optional(), ticket_number: z.string().optional(), flow_type: z.string().optional(), chart_finder_config: chartFinderConfiguration.optional(), delivery_config: allDeliveryConfig.optional(), import_review_status: importReviewStatus.optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Get an order * * GET /orders/order */ export const getApiOrdersOrder = async (args: GetApiOrdersOrderArgs, options?: GetApiOrdersOrderOptions) => { const {baseUrl = "https://api.datavant.io/v2", fetch: fetchFn = fetch, oauth2} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.id != null) query.append("id", String(args.id)) if (args.uuid != null) query.append("uuid", String(args.uuid)) if (args['version-datavant'] != null) headers.set("version-datavant", String(args['version-datavant'])) if (oauth2 !== undefined) headers.set('authorization', `Bearer ${oauth2}`) const url = `${baseUrl.replace(/\/+$/, '')}/orders/order${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(orderResponse, await res.json()) };