import {z} from 'zod' export type GetApiSynapseCtResultDetailArgs = {ct_result_id?: string | undefined}; export type GetApiSynapseCtResultDetailOptions = {baseUrl?: string | undefined, bearerAuth?: string | undefined, fetch?: typeof fetch | undefined}; export const b032CtResultDetailCommonName = z.object({lang: z.string().optional(), name: z.string().optional()}); export const b032CtResultDetailCommonDrug = z.object({drug_id: z.string().optional(), display_name: z.array(b032CtResultDetailCommonName).optional()}); export const b032CtResultDetailCommonDictionary = z.object({display_name: z.array(b032CtResultDetailCommonName).optional(), normalized_id: z.string().optional()}); export const b032CtResultDetailCommonTarget = z.object({target_id: z.string().optional(), short_name: z.array(b032CtResultDetailCommonName).optional(), display_name: z.array(b032CtResultDetailCommonName).optional()}); export const b032CtResultDetailCommonEntity = z.object({id: z.string().optional(), display_name: z.array(b032CtResultDetailCommonName).optional()}); export const b032CtResultDetailRelatedId = z.object({id_type: z.string().optional(), id_value: z.string().optional()}); export const b032CtResultDetailCommonOrganization = z.object({display_name: z.array(b032CtResultDetailCommonName).optional(), organization_id: z.string().optional()}); export const b032CtResultDetailStudyDesignDto = z.object({masking: z.string().optional(), allocation: z.string().optional(), primary_purpose: z.string().optional(), intervention_model: z.string().optional(), allocation_normalized: b032CtResultDetailCommonDictionary.optional(), intervention_model_normalized: b032CtResultDetailCommonDictionary.optional()}); export const b032CtResultDetailCommonMechanismAction = z.object({short_name: z.array(b032CtResultDetailCommonName).optional(), display_name: z.array(b032CtResultDetailCommonName).optional(), mechanism_id: z.string().optional()}); export const b032CtResultDetailCommonDisease = z.object({disease_id: z.string().optional(), display_name: z.array(b032CtResultDetailCommonName).optional()}); export const b032CtResultDetailGetClinicalTrialResultResponseDto = z.object({drug: z.array(b032CtResultDetailCommonDrug).optional(), phase: b032CtResultDetailCommonDictionary.optional(), title: z.string().optional(), target: z.array(b032CtResultDetailCommonTarget).optional(), biomarker: z.array(b032CtResultDetailCommonEntity).optional(), conclusion: z.string().optional(), related_id: z.array(b032CtResultDetailRelatedId).optional(), ct_result_id: z.string().optional(), organization: z.array(b032CtResultDetailCommonOrganization).optional(), study_design: b032CtResultDetailStudyDesignDto.optional(), therapy_type: z.array(b032CtResultDetailCommonDictionary).optional(), published_time: z.number().int().optional(), register_number: z.array(z.unknown()).optional(), single_or_multi: z.string().optional(), mechanism_action: z.array(b032CtResultDetailCommonMechanismAction).optional(), therapeutic_area: z.array(b032CtResultDetailCommonDisease).optional(), condition_disease: z.array(b032CtResultDetailCommonDisease).optional(), general_evaluation: b032CtResultDetailCommonDictionary.optional(), original_biomarker: z.array(b032CtResultDetailCommonName).optional(), overall_enrollment: z.number().int().optional(), register_number_map: z.object({}).optional(), sponsor_organization: z.array(b032CtResultDetailCommonOrganization).optional(), collaborator_organization: z.array(b032CtResultDetailCommonOrganization).optional()}); export const b032CtResultDetailResponse = z.object({data: b032CtResultDetailGetClinicalTrialResultResponseDto.optional(), status: z.boolean(), error_msg: z.string().optional(), error_code: z.number().int()}); 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 }; /** * B032 Drug clinical result basic information * * GET /synapse/ct-result/detail */ export const getApiSynapseCtResultDetail = async (args: GetApiSynapseCtResultDetailArgs, options?: GetApiSynapseCtResultDetailOptions) => { const {baseUrl = "https://connect.patsnap.com", fetch: fetchFn = fetch, bearerAuth} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.ct_result_id != null) query.append("ct_result_id", String(args.ct_result_id)) if (bearerAuth !== undefined) headers.set('authorization', `Bearer ${bearerAuth}`) const url = `${baseUrl.replace(/\/+$/, '')}/synapse/ct-result/detail${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(b032CtResultDetailResponse, await res.json()) };