({ name, tuss })
| 14 | } |
| 15 | |
| 16 | export function searchTuss({ name, tuss }) { |
| 17 | let terms = getTussTerms(); |
| 18 | |
| 19 | const hasName = typeof name === 'string' && name.trim().length > 0; |
| 20 | const hasTuss = typeof tuss === 'string' && tuss.trim().length > 0; |
| 21 | |
| 22 | if (!hasName && !hasTuss) { |
| 23 | return terms; |
| 24 | } |
| 25 | |
| 26 | const nameQuery = hasName ? normalize(name) : null; |
| 27 | const tussQuery = hasTuss ? sanitizeCode(tuss) : null; |
| 28 | |
| 29 | terms = terms.filter((item) => { |
| 30 | const itemName = normalize(item.name || item.nome || item.descricao); |
| 31 | const itemCode = sanitizeCode(item.tuss || item.codigo || item.codigo_tuss); |
| 32 | |
| 33 | const matchName = hasName ? itemName.includes(nameQuery) : true; |
| 34 | const matchCode = hasTuss ? itemCode.startsWith(tussQuery) : true; |
| 35 | |
| 36 | return matchName && matchCode; |
| 37 | }); |
| 38 | |
| 39 | return terms; |
| 40 | } |
| 41 | |
| 42 | export function findTussByCodeExact(code) { |
| 43 | const query = sanitizeCode(code); |
no test coverage detected