import {z} from 'zod' export type UpdateApiPersonsPersonIdChartEncountersEncounterIdVitalsVitalsIdArgs = {personId: string, encounterId: string, vitalsId: string, body: unknown}; export type UpdateApiPersonsPersonIdChartEncountersEncounterIdVitalsVitalsIdOptions = {baseUrl?: string | undefined, fetch?: typeof fetch | undefined}; export const link = z.object({href: z.string(), method: z.string(), rel: z.string(), description: z.string(), vendorExtensions: z.string()}); export const oK98 = z.object({id: z.string(), personId: z.string(), enterpriseId: z.string(), practiceId: z.string(), encounterId: z.string(), bmi: z.string(), bloodPressure: z.string(), bloodPressureSystolic: z.string(), bloodPressureDiastolic: z.string(), bloodPressureMethod: z.string(), bloodPressureSide: z.string(), bloodPressureBodySite: z.string(), bloodPressureSite: z.string(), bloodPressureBodyPosition: z.string(), isBloodPressureCuffSizePediatric: z.string(), isBloodPressureCuffSizeAdult: z.string(), isBloodPressureCuffSizeLarge: z.string(), isBloodPressureCuffSizeThigh: z.string(), isBloodPressureCaptured: z.string(), measuredBy: z.string(), vitalSignsDate: z.string(), vitalSignsTime: z.string(), fractionOfInspiredOxygen: z.string(), pulsePattern: z.string(), pulseRate: z.string(), pulseOximeterOxygenSaturationRest: z.string(), pulseOximeterOxygenSaturationRestSite: z.string(), isGrowthChartCaptured: z.string(), isHealthAssessmentQuestionnaireCaptured: z.string(), isExclusionCaptured: z.string(), bmiPercent: z.string(), bodySurfaceArea: z.string(), isHipCircumferenceCaptured: z.string(), isHeadCircumferenceCaptured: z.string(), isHeightCaptured: z.string(), isNeckCircumferenceCaptured: z.string(), isTemperatureCaptured: z.string(), isWaistCircumferenceCaptured: z.string(), isWeightCaptured: z.string(), hasPatientRefused: z.string(), isUnobtainable: z.string(), comments: z.string(), headCircumferenceCentimeters: z.string(), headCircumferenceInches: z.string(), headCircumferencePercent: z.string(), heightCentimeters: z.string(), heightDate: z.string(), heightFeet: z.string(), heightInches: z.string(), heightMeters: z.string(), heightMethod: z.string(), heightPercent: z.string(), hipCircumferenceCentimeters: z.string(), hipCircumferenceInches: z.string(), heightBodyPosition: z.string(), neckCircumferenceCentimeters: z.string(), neckCircumferenceInches: z.string(), pulseOximeterOxygenSaturationSource: z.string(), painScoreLoinc: z.string(), painScoreDisplay: z.string(), peakFlow: z.string(), peakFlowMethod: z.string(), peakFlowTiming: z.string(), respirationRate: z.string(), pulseOximeterOxygenSaturationMeasured: z.string(), temperatureDegreesCelcius: z.string(), temperatureDegreesFahrenheit: z.string(), temperatureSite: z.string(), fractionOfInspiredOxygenLitresPerMinute: z.string(), currentAge: z.string(), fractionOfInspiredOxygenRoomAir: z.string(), pulseOximeterOxygenSaturationRestLitresPerMinute: z.string(), painMethod: z.string(), pulseOximeterOxygenSaturationAmbulatory: z.string(), reasonRefused: z.string(), unobtainableReason: z.string(), patientRefusedVitals: z.string(), unobtainableVitals: z.string(), waistCircumferenceCentimeters: z.string(), waistCircumferenceInches: z.string(), waistHipRatio: z.string(), weightContext: z.string(), weightKilograms: z.string(), weightPounds: z.string(), weightPercent: z.string(), bloodPressureCuffSize: z.string(), areOrthostaticVitalSignsCaptured: z.string(), menopausalStage: z.string(), lmp: z.string(), gestationalWeeks: z.string(), gestationalDays: z.string(), heightCentimetersGraph: z.string(), heightInchesGraph: z.string(), weightKilogramsGraph: z.string(), weightPoundsGraph: z.string(), _links: z.array(link)}); 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 }; /** * {{baseUrl}}/persons/:personId/chart/encounters/:encounterId/vitals/:vitalsId * * PUT /persons/{personId}/chart/encounters/{encounterId}/vitals/{vitalsId} */ export const updateApiPersonsPersonIdChartEncountersEncounterIdVitalsVitalsId = async (args: UpdateApiPersonsPersonIdChartEncountersEncounterIdVitalsVitalsIdArgs, options?: UpdateApiPersonsPersonIdChartEncountersEncounterIdVitalsVitalsIdOptions) => { const {baseUrl = "https://nativeapi.nextgen.com/nge/prod/nge-api/api", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") const url = `${baseUrl.replace(/\/+$/, '')}/persons/${encodeURIComponent(String(args.personId))}/chart/encounters/${encodeURIComponent(String(args.encounterId))}/vitals/${encodeURIComponent(String(args.vitalsId))}${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "PUT", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(oK98, await res.json()) };