Outil de recherche sémantique de maladies par signes et symptômes
https://matteo.delab.re/projects/wikimedica-disease-search
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.2 KiB
46 lines
1.2 KiB
import React from 'react';
|
|
import TermInput from './TermInput.js';
|
|
import DiseaseGraph from './DiseaseGraph.js';
|
|
import {useAsync, useQuery} from '../util.js';
|
|
import {
|
|
diseasesBySymptoms,
|
|
exploreSymptoms,
|
|
} from '../data/mock';
|
|
|
|
const App = () =>
|
|
{
|
|
const {
|
|
query,
|
|
addTerm: addQueryTerm,
|
|
removeTerm: removeQueryTerm,
|
|
} = useQuery();
|
|
|
|
// Récupération des résultats de la recherche
|
|
const diseases = useAsync([], diseasesBySymptoms, query);
|
|
const terms = useAsync([], exploreSymptoms, diseases);
|
|
|
|
// Tous les termes compatibles avec la recherche qui n’apparaissent pas
|
|
// dans la recherche
|
|
const availableTerms = terms.filter(({id}) =>
|
|
!query.some(({id: termId}) => termId === id)
|
|
);
|
|
|
|
return (
|
|
<div className="App">
|
|
<TermInput
|
|
query={query}
|
|
addQueryTerm={addQueryTerm}
|
|
removeQueryTerm={removeQueryTerm}
|
|
availableTerms={availableTerms}
|
|
/>
|
|
<DiseaseGraph
|
|
terms={terms}
|
|
query={query}
|
|
addQueryTerm={addQueryTerm}
|
|
removeQueryTerm={removeQueryTerm}
|
|
/>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default App;
|
|
|