PageSourceSearch

https://nopp.us/assets/fda-510k-search-CCr1oTsg.js

js nopp.us collected 2026-10-02 02:11:58 UTC 13,179 bytes, 3 lines download raw bytes

1import{r as d,g as P,h as _,j as e,aF as H,bq as K,l as y,M as b,N as C,n as W,o as z,p as F,m as w,t as T,I as S,B as o,$ as Y,c as j,W as L,L as U}from"./index-frHu0H6c.js";import{S as G,a as Q,b as J,c as X,d as R}from"./select-DIShZ0zZ.js";import{D as I}from"./download-VpAI-yEV.js";import"./chevron-up-Buc3iaCF.js";const Z=["AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY","DC"],f=s=>(s??0).toLocaleString("en-US"),E=s=>s?new Date(s).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}):"—";function re(){const[s,O]=d.useState("510k"),[m,V]=d.useState(""),[p,$]=d.useState("all"),[x,q]=d.useState(""),[g,B]=d.useState(""),u=P({mutationFn:async()=>(await _("POST","/api/hcp/fda-510k",{q:m.trim()||void 0,state:p==="all"?void 0:p,productCode:x.trim()||void 0,yearFrom:g.trim()||void 0,limit:100})).json()}),h=P({mutationFn:async()=>(await _("POST","/api/hcp/fda-pma",{q:m.trim()||void 0,productCode:x.trim()||void 0,yearFrom:g.trim()||void 0,limit:100})).json()}),r=u.data,l=h.data,k=s==="510k"?u.isPending:h.isPending,D=(m.trim().length>=2||x.trim().length>0||s==="510k"&&p!=="all")&&!k,A=()=>s==="510k"?u.mutate():h.mutate(),M=d.useCallback(()=>{if(s==="510k"){if(!r?.clearances?.length)return;const a=["K Number","Device","Manufacturer","Product Code","Class","Specialty","Decision Date","City","State","Contact"],n=r.clearances.map(t=>[t.kNumber,t.deviceName,t.manufacturer,t.productCode,t.deviceClass||"",t.specialty||"",t.decisionDate||"",t.city||"",t.state||"",t.contact||""].map(v=>`"${String(v).replace(/"/g,'""')}"`).join(",")),N=new Blob([[a.join(","),...n].join(`
2`)],{type:"text/csv"}),i=URL.createObjectURL(N),c=document.createElement("a");c.href=i,c.download=`fda-510k-${Date.now()}.csv`,c.click(),URL.revokeObjectURL(i)}else{if(!l?.approvals?.length)return;const a=["PMA Number","Supplement","Trade Name","Generic Name","Applicant","Product Code","Class","Specialty","Decision Date","City","State"],n=l.approvals.map(t=>[t.pma_number,t.supplement_number||"",t.trade_name||"",t.generic_name||"",t.applicant||"",t.product_code||"",t.device_class||"",t.medical_specialty_description||"",t.decision_date||"",t.city||"",t.state||""].map(v=>`"${String(v).replace(/"/g,'""')}"`).join(",")),N=new Blob([[a.join(","),...n].join(`
3`)],{type:"text/csv"}),i=URL.createObjectURL(N),c=document.createElement("a");c.href=i,c.download=`fda-pma-${Date.now()}.csv`,c.click(),URL.revokeObjectURL(i)}},[s,r,l]);return e.jsxs("div",{className:"max-w-6xl mx-auto px-4 py-6 space-y-6",children:[e.jsxs(H,{
3children:[e.jsx("title",{children:"FDA Device Search — 510(k) Clearances & PMA Approvals | Nopp"}),e.jsx("meta",{name:"description",content:"Search 230,000+ FDA medical devices — 510(k) clearances and PMA (premarket approval) records — by device name, manufacturer, or product code, mapped to medical specialties for device sales intelligence."})]}),e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl font-bold flex items-center gap-2","data-testid":"heading-fda-search",children:[e.jsx(K,{className:"h-6 w-6 text-orange-500"}),"FDA Device & Manufacturer Search"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm",children:"Search FDA-cleared 510(k) devices and high-risk PMA approvals. Map a device to its manufacturer and medical specialty, see the clearance history, and find every device under a product code."})]}),e.jsxs(y,{children:[e.jsx(b,{className:"pb-3",children:e.jsxs("div",{className:"flex items-center justify-between gap-3 flex-wrap",children:[e.jsx(C,{className:"text-base",children:"Search devices & manufacturers"}),e.jsx(W,{value:s,onValueChange:a=>O(a),children:e.jsxs(z,{className:"h-8",children:[e.jsx(F,{value:"510k",className:"text-xs px-3","data-testid":"tab-510k",children:"510(k) Clearances"}),e.jsx(F,{value:"pma",className:"text-xs px-3","data-testid":"tab-pma",children:"PMA Approvals"})]})})]})}),e.jsxs(w,{className:"space-y-4",children:[e.jsxs("div",{className:"relative",children:[e.jsx(T,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(S,{value:m,onChange:a=>V(a.target.value),onKeyDown:a=>{a.key==="Enter"&&D&&A()},placeholder:'e.g. "insulin pump", "Medtronic", "catheter", or a manufacturer name',className:"pl-9","data-testid":"input-fda-q"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[s==="510k"&&e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-muted-foreground",children:"State (optional)"}),e.jsxs(G,{value:p,onValueChange:$,children:[e.jsx(Q,{"data-testid":"select-state",children:e.jsx(J,{placeholder:"All states"})}),e.jsxs(X,{children:[e.jsx(R,{value:"all",children:"All states"}),Z.map(a=>e.jsx(R,{value:a,children:a},a))]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-muted-foreground",children:"Product code (optional)"}),e.jsx(S,{value:x,onChange:a=>q(a.target.value.toUpperCase()),placeholder:'e.g. "DTQ"',maxLength:8,"data-testid":"input-product-code"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-muted-foreground",children:s==="510k"?"Cleared since (year)":"Approved since (year)"}),e.jsx(S,{type:"number",min:1976,max:2100,value:g,onChange:a=>B(a.target.value),placeholder:"e.g. 2020","data-testid":"input-year-from"})]})]}),e.jsxs(o,{onClick:A,disabled:!D,"data-testid":"button-search-fda",children:[k?e.jsx(Y,{className:"h-4 w-4 animate-spin mr-2"}):e.jsx(T,{className:"h-4 w-4 mr-2"}),s==="510k"?"Search clearances":"Search approvals"]})]})]}),(s==="510k"?u.isError:h.isError)&&e.jsx("div",{className:"text-sm text-destructive","data-testid":"text-fda-error",children:"Something went wrong running the search. Please try again."}),s==="510k"&&r&&e.jsxs(y,{children:[e.jsxs(b,{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2",children:[e.jsxs(C,{className:"text-base flex items-center gap-2",children:["Results",r.total>0&&e.jsxs(j,{variant:"secondary","data-testid":"badge-total",children:[f(r.total)," clearances"]})]}),!r.paywall&&r.clearances.length>0&&e.jsxs(o,{variant:"outline",size:"sm",onClick:M,"data-testid":"button-export-csv",children:[e.jsx(I,{className:"h-4 w-4 mr-2"})," Export CSV"]})]}),e.jsxs(w,{className:"space-y-4",children:[!r.hasData&&e.jsx("div",{className:"text-sm text-muted-foreground py-6 text-center","data-testid":"text-no-clearances",children:"No clearances matched. Try a different device, manufacturer, or product code."}),r.hasData&&e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm min-w-[640px]",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"text-left text-xs text-muted-foreground border-b",children:[e.jsx("th",{className:"py-2 pr-3",children:"Device"}),e.jsx("th",{className:"py-2 pr-3",children:"Manufacturer"}),e.jsx("th",{className:"py-2 pr-3",children:"Code / Specialty"}),e.jsx("th",{className:"py-2 pr-3",children:"Cleared"}),e.jsx("th",{className:"py-2 pr-3",children:"Location"}),e.jsx("th",{className:"py-2 pr-3",children:"Contact"})]})}),e.jsx("tbody",{children:r.clearances.map((a,n)=>e.jsxs("tr",{className:"border-b last:border-0 align-top","data-testid":`row-clearance-${a.kNumber||n}`,children:[e.jsxs("td",{className:"py-2 pr-3 max-w-xs",children:[e.jsx("div",{className:"font-medium",children:a.deviceName||"—"}),e.jsxs("div",{className:"text-[11px] text-muted-foreground",children:[a.kNumber,a.deviceClass?` · Class ${a.deviceClass}`:""]})]}),e.jsx("td",{className:"py-2 pr-3",children:e.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[e.jsx(L,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}),a.manufacturer||"—"]})}),e.jsxs("td",{className:"py-2 pr-3",children:[e.jsx(j,{variant:"outline",className:"text-[10px] font-mono",children:a.productC
3ode||"—"}),a.specialty&&e.jsx("div",{className:"text-[11px] text-muted-foreground mt-0.5",children:a.specialty})]}),e.jsx("td",{className:"py-2 pr-3 text-muted-foreground whitespace-nowrap",children:E(a.decisionDate)}),e.jsx("td",{className:"py-2 pr-3 text-muted-foreground",children:[a.city,a.state].filter(Boolean).join(", ")||"—"}),e.jsx("td",{className:"py-2 pr-3 text-muted-foreground",children:a.contact?a.contact:e.jsx("span",{className:"inline-flex items-center gap-1 blur-[3px] select-none",children:"Hidden"})})]},a.kNumber||n))})]})}),r.paywall&&r.hasData&&e.jsxs("div",{className:"rounded-lg border border-orange-500/30 bg-orange-500/5 p-4 flex items-center justify-between gap-4","data-testid":"box-paywall",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx(U,{className:"h-4 w-4 text-orange-500"}),"Free plan shows the first 10 results with the contact person hidden. Upgrade to HCP Pro for the full list (",f(r.total)," clearances), manufacturer contacts, and CSV export."]}),e.jsx(o,{asChild:!0,size:"sm","data-testid":"button-upgrade-pro",children:e.jsx("a",{href:"/hcp-pro",children:"Upgrade"})})]}),e.jsx("p",{className:"text-[11px] text-muted-foreground pt-2 border-t",children:"Source: FDA 510(k) Premarket Notification database. A 510(k) clearance means the device was found “substantially equivalent” to a legally marketed device; it is not an FDA approval. The product code groups devices of the same type. Contact and address reflect the original submission and may be outdated."})]})]}),s==="pma"&&l&&e.jsxs(y,{children:[e.jsxs(b,{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2",children:[e.jsxs(C,{className:"text-base flex items-center gap-2",children:["Results",l.total>0&&e.jsxs(j,{variant:"secondary","data-testid":"badge-pma-total",children:[f(l.total)," approvals"]})]}),!l.paywall&&l.approvals.length>0&&e.jsxs(o,{variant:"outline",size:"sm",onClick:M,"data-testid":"button-export-pma-csv",children:[e.jsx(I,{className:"h-4 w-4 mr-2"})," Export CSV"]})]}),e.jsxs(w,{className:"space-y-4",children:[!l.hasData&&e.jsx("div",{className:"text-sm text-muted-foreground py-6 text-center","data-testid":"text-no-approvals",children:"No PMA approvals matched. Try a different device, manufacturer, or product code."}),l.hasData&&e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm min-w-[640px]",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"text-left text-xs text-muted-foreground border-b",children:[e.jsx("th",{className:"py-2 pr-3",children:"Device"}),e.jsx("th",{className:"py-2 pr-3",children:"Applicant"}),e.jsx("th",{className:"py-2 pr-3",children:"Code / Specialty"}),e.jsx("th",{className:"py-2 pr-3",children:"Decision"}),e.jsx("th",{className:"py-2 pr-3",children:"Type"}),e.jsx("th",{className:"py-2 pr-3",children:"Location"})]})}),e.jsx("tbody",{children:l.approvals.map((a,n)=>e.jsxs("tr",{className:"border-b last:border-0 align-top","data-testid":`row-pma-${n}`,children:[e.jsxs("td",{className:"py-2 pr-3 max-w-xs",children:[e.jsx("div",{className:"font-medium",children:a.trade_name||a.generic_name||"—"}),e.jsxs("div",{className:"text-[11px] text-muted-foreground",children:[a.pma_number,a.supplement_number?`/${a.supplement_number}`:""]})]}),e.jsx("td",{className:"py-2 pr-3",children:e.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[e.jsx(L,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}),a.applicant||"—"]})}),e.jsxs("td",{className:"py-2 pr-3",children:[e.jsx(j,{variant:"outline",className:"text-[10px] font-mono",children:a.product_code||"—"}),a.medical_specialty_description&&e.jsx("div",{className:"text-[11px] text-muted-foreground mt-0.5",children:a.medical_specialty_description})]}),e.jsx("td",{className:"py-2 pr-3 text-muted-foreground whitespace-nowrap",children:E(a.decision_date)}),e.jsx("td",{className:"py-2 pr-3 text-muted-foreground max-w-[160px] truncate",title:a.supplement_type||void 0,children:a.supplement_type||"Original"}),e.jsx("td",{className:"py-2 pr-3 text-muted-foreground",children:[a.city,a.state].filter(
3Boolean).join(", ")||"—"})]},`${a.pma_number}-${a.supplement_number||n}`))})]})}),l.paywall&&l.hasData&&e.jsxs("div",{className:"rounded-lg border border-orange-500/30 bg-orange-500/5 p-4 flex items-center justify-between gap-4","data-testid":"box-pma-paywall",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx(U,{className:"h-4 w-4 text-orange-500"}),"Free plan shows the first 10 results. Upgrade to HCP Pro for the full list (",f(l.total)," approvals) and CSV export."]}),e.jsx(o,{asChild:!0,size:"sm","data-testid":"button-upgrade-pro-pma",children:e.jsx("a",{href:"/hcp-pro",children:"Upgrade"})})]}),e.jsx("p",{className:"text-[11px] text-muted-foreground pt-2 border-t",children:"Source: FDA Premarket Approval (PMA) database. PMA is the FDA’s most stringent device review, required for most Class III (high-risk) devices — original approvals and supplements are listed separately. Specialty comes from the FDA device classification for the product code."})]})]})]})}export{re as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.