import{t as e}from"./db-D2Po16Ap.js";import{B as t,L as n}from"./Card-Cxq4Ee-X.js";import{v as r}from"./supplementLabRetakePolicy-DYFjnA-6.js";var i=class extends Error{code;params;constructor(e,t){super(e),this.name=`LabResultValidationError`,this.code=e,this.params=t}};function a(e,r){return e instanceof i?t(`labs.validation.${e.code}`,e.params,r??n()):e instanceof Error&&e.message?e.message:t(`labs.validation.unknown`,void 0,r??n())}function o(){return crypto.randomUUID?.()??`lab_${Date.now()}_${Math.random().toString(36).slice(2)}`}function s(){return new Date().toISOString()}function c(e){return typeof e==`number`&&Number.isFinite(e)}function l(e){let t=new Date(e);return!Number.isNaN(t.getTime())}function u(e){if(!e.biomarkerId||typeof e.biomarkerId!=`string`)throw new i(`biomarkerIdRequired`);if(!r(e.biomarkerId))throw new i(`unknownBiomarkerId`,{biomarkerId:e.biomarkerId});if(!c(e.value))throw new i(`valueRequired`);if(!e.unit||typeof e.unit!=`string`||!e.unit.trim())throw new i(`unitRequired`);if(!e.collectedAtISO||!l(e.collectedAtISO))throw new i(`collectedAtRequired`);if(e.referenceLow!=null&&!c(e.referenceLow))throw new i(`referenceLowInvalid`);if(e.referenceHigh!=null&&!c(e.referenceHigh))throw new i(`referenceHighInvalid`);if(c(e.referenceLow)&&c(e.referenceHigh)&&e.referenceLow>e.referenceHigh)throw new i(`referenceRangeInvalid`);let t=s(),n=e.referenceUnit?.trim()||(e.referenceLow!=null||e.referenceHigh!=null?e.unit.trim():void 0);return{id:o(),biomarkerId:e.biomarkerId,value:e.value,unit:e.unit.trim(),collectedAtISO:e.collectedAtISO,referenceLow:e.referenceLow??void 0,referenceHigh:e.referenceHigh??void 0,referenceUnit:n||void 0,labName:e.labName?.trim()||void 0,notes:e.notes?.trim()||void 0,source:e.source??`manual`,createdAtISO:t,updatedAtISO:t}}async function d(t){let n=u(t);return await e.labResults.add(n),n}async function f(t,n){let r=await e.labResults.get(t);if(!r)throw new i(`notFound`,{id:t});if(n.value!=null&&!c(n.value))throw new i(`valueRequired`);if(n.collectedAtISO!=null&&!l(n.collectedAtISO))throw new i(`collectedAtInvalid`);let a=n.referenceLow===null?void 0:n.referenceLow??r.referenceLow,o=n.referenceHigh===null?void 0:n.referenceHigh??r.referenceHigh;if(c(a)&&c(o)&&a>o)throw new i(`referenceRangeInvalid`);let u={...r,value:n.value??r.value,unit:n.unit?.trim()||r.unit,collectedAtISO:n.collectedAtISO??r.collectedAtISO,referenceLow:a,referenceHigh:o,referenceUnit:n.referenceUnit===null?void 0:n.referenceUnit?.trim()||r.referenceUnit,labName:n.labName===null?void 0:n.labName?.trim()||r.labName,notes:n.notes===null?void 0:n.notes?.trim()||r.notes,updatedAtISO:s()};return await e.labResults.put(u),u}async function p(t){await e.labResults.delete(t)}async function m(t){let n=e.labResults.orderBy(`collectedAtISO`).reverse();return t?.offset&&(n=n.offset(t.offset)),t?.limit&&(n=n.limit(t.limit)),n.toArray()}async function h(t){let n=await e.labResults.toArray(),r=new Map;for(let e of n){if(t&&!t.includes(e.biomarkerId))continue;let n=r.get(e.biomarkerId);(!n||e.collectedAtISO>n.collectedAtISO)&&r.set(e.biomarkerId,e)}return r}function g(e){return{biomarkerId:e.biomarkerId,value:e.value,unit:e.unit,collectedAtISO:e.collectedAtISO,referenceLow:e.referenceLow,referenceHigh:e.referenceHigh,referenceUnit:e.referenceUnit,labName:e.labName,notes:e.notes}}async function _(e){let t=await h(e);return Array.from(t.values()).map(g)}export{f as a,m as i,p as n,a as o,_ as r,d as t};