Faits :
A.
A._ a souscrit auprès de B._ AG (ci-après: B._ ou l'assureur) une couverture d'assurance-maladie complémentaire comprenant les produits «Classic» et «Hospital Extra Liberty».
Le 15 février 2016, elle avait rempli une déclaration de santé. La question n° 2 était libellée ainsi:
" Souffrez-vous ou avez-vous souffert d'un trouble de la santé ou d'une maladie ou avez-vous subi un accident au cours des cinq dernières années? Par exemple: des organes des voies respiratoires, du coeur, du système vasculaire, du système nerveux ou du psychisme, des organes de l'appareil digestif, de l'appareil urogénital, de maladies propres à la femme, de maladies de peau, de l'appareil locomoteur, du métabolisme ou des glandes, de maladies du sang ou maladies infectieuses, des organes sensoriels (yeux, oreilles, nez), de tumeurs, d'infirmités congénitales ou d'une autre maladie, blessure ou trouble non précité?"
Dans sa réponse, A._ a signalé une maladie de la peau à la suite d'un changement hormonal, précisant que l'affection n'était pas récurrente et que le trouble était guéri.
A la question n° 7 - "un traitement, une thérapie, une opération, une cure, un examen ou un examen de contrôle est-il prévu ou recommandé par un médecin?" -, elle a répondu "non"; sous la question, il était précisé que les examens gynécologiques préventifs étaient exclus.
Le 12 septembre 2016, A._ a subi une intervention chirurgicale consistant à retirer des fibromes utérins. Elle a été hospitalisée aux HUG du 12 au 14 septembre 2016.
Le 13 septembre 2016, les HUG ont adressé une demande de garantie d'hospitalisation à B._. Dans sa réponse - datée du 19 septembre 2016 - à une demande de renseignements médicaux de l'assureur, la Dresse C._, spécialiste FMH en gynécologie et obstétrique, a indiqué que les fibromes utérins avaient été découverts lors d'un contrôle gynécologique le 19 octobre 2015; elle a mentionné des "douleurs au bas ventre"; à la question de savoir si des traitements étaient prévus, elle a répondu "oui opération"; elle a précisé que l'existence des fibromes avait été confirmée par une IRM.
Par courrier recommandé du 14 octobre 2016, B._ a résilié le contrat d'assurance complémentaire avec effet au 17 octobre 2016. Pour l'assureur, A._ n'a pas répondu correctement à la question n° 2 susmentionnée puisqu'elle souffrait de fibromes utérins depuis le 19 octobre 2015 et, partant, elle a commis une réticence.
Le 8 février 2017, les HUG ont fait parvenir à B._ une facture de 16'563 fr. 20 pour les traitements dispensés du 12 au 14 septembre 2016.
Le 11 juillet 2017, l'assureur a refusé, pour cause de réticence, de prendre en charge cette facture relative aux prestations de division semi-privée du séjour de A._. Les HUG ont ensuite transmis la facture à l'assurée.
Le 10 novembre 2017, A._ a contesté la validité de la résiliation que, selon elle, l'assureur aurait notifiée après l'échéance du délai de péremption de quatre semaines.
B.
Le 7 septembre 2018, A._ a ouvert action contre B._ devant la Chambre des assurances sociales de la Cour de justice du canton de Genève. Elle concluait à ce qu'il soit constaté que la résiliation du contrat d'assurance complémentaire pour cause de réticence était tardive et que ledit contrat était maintenu; à titre subsidiaire, elle requérait l'audition de la Dresse C._ et concluait à l'inexistence d'un cas de réticence et à la condamnation de l'assureur à lui verser la somme de 16'563 fr. 20 avec intérêts.
Une audience d'enquêtes et de comparution personnelle s'est tenue le 24 septembre 2019. La Dresse C._ a été entendue à cette occasion. Il ressort de ses déclarations que la consultation du 19 octobre 2015 était un contrôle habituel, que les fibromes utérins avaient été détectés lors d'une échographie, que la patiente était alors asymptomatique, que le diagnostic avait été discuté avec elle, en particulier en lien avec un désir de grossesse éventuel, que la patiente avait mentionné pour la première fois une gêne et une sensation de ballonnement lors du contrôle du 8 février 2016, que la possibilité d'une opération avait alors été discutée, en rapport avec un éventuel désir de grossesse et la gêne évoquée, qu'une IRM avait été demandée, que la patiente avait ensuite été adressée à la maternité des HUG pour un second avis quant à l'opération, que les fibromes étaient bénins et qu'aucun traitement n'avait été proposé avant l'intervention du 12 septembre 2016. Par ailleurs, la Dresse C._ a déclaré avoir scanné le rapport du 19 septembre 2016 dans le dossier médical, ce qui signifiait en général qu'elle l'avait envoyé par pli simple à cette date.
Par arrêt du 1er octobre 2019, la 9ème Chambre des assurances sociales a rejeté la demande. Elle a jugé que l'assurée avait commis une réticence, de sorte que l'assureur était en droit de résilier le contrat d'assurance complémentaire avec effet au 17 octobre 2016. Par ailleurs, la résiliation était intervenue en temps utile.
C.
A._ interjette un recours en matière civile. Elle demande principalement au Tribunal fédéral de constater que la résiliation du contrat d'assurance pour cause de réticence est tardive ou nulle et, partant, de condamner B._ à lui verser la somme de 16'563 fr. 20 avec intérêts.
B._ n'a pas usé de la possibilité qui lui avait donnée de répondre au recours.
La cour cantonale n'a pas non plus pris position.

Considérant en droit :
1.
Le litige porte sur une assurance complémentaire à l'assurance-maladie sociale, régie par la loi fédérale sur le contrat d'assurance (LCA; RS 221.229.1; cf. art. 2 al. 2 de la loi fédérale sur la surveillance de l'assurance-maladie sociale [LSAMal; RS 832.12]). Une telle contestation ressortit à la matière civile au sens de l'<ref-law> (<ref-ruling> consid. 1.1 p. 3; <ref-ruling> consid. 2.1 p. 441 s.).
L'arrêt attaqué es t une décision finale (<ref-law>) rendue par la Cour de justice genevoise statuant en qualité d'instance cantonale unique au sens de l'<ref-law> et de l'<ref-law> (cf. <ref-ruling> consid. 1.1). Le recours est ouvert sans égard à la valeur litigieuse (<ref-law>). Interjeté par la partie qui a succombé dans ses conclusions (<ref-law>), dans le délai (<ref-law>) et la forme (<ref-law>) prévus par la loi, le recours est recevable sur le principe. Demeure réservé l'examen des griefs en particulier.
2.
La question litigieuse est de savoir si l'intimée a valablement résilié, pour cause de réticence, le contrat d'assurance liant les parties.
La réticence se définit comme l'omission de déclarer ou le fait de déclarer inexactement, lors de la conclusion du contrat, un fait important que celui ayant l'obligation de déclarer connaissait ou devait connaître (<ref-law>). La notion renvoie aux déclarations obligatoires au sens de l'<ref-law>. Selon l'alinéa 1 de cette disposition, celui qui présente une proposition d'assurance doit déclarer par écrit à l'assureur, suivant un questionnaire ou en réponse à toutes autres questions écrites, tous les faits qui sont importants pour l'appréciation du risque, tels qu'ils lui sont ou doivent lui être connus lors de la conclusion du contrat. La question posée par l'assureur doit être rédigée de manière précise et non équivoque (<ref-law>; <ref-ruling> consid. 2.3 p. 336; <ref-ruling> consid. 3.3.4 p. 515). Le proposant doit répondre de manière véridique aux questions telles qu'il peut les comprendre de bonne foi; il n'y a pas de réponse inexacte si la question est ambiguë, de telle sorte que la réponse donnée apparaît véridique selon la manière dont la question pouvait être comprise de bonne foi par le proposant (<ref-ruling> consid. 2.3 p. 336 s.).
Pour qu'il y ait réticence, il faut, d'un point de vue objectif, que la réponse donnée à la question ne soit pas conforme à la vérité, par omission ou inexactitude; la réticence peut consister à affirmer un fait faux, à taire un fait vrai ou à présenter une vision déformée de la vérité (<ref-ruling> consid. 2.3 p. 337). D'un point de vue subjectif, la réticence suppose que le proposant connaissait ou aurait dû connaître la vérité. Le proposant doit déclarer non seulement les faits qui lui sont connus sans autre réflexion, mais aussi ceux qui ne peuvent lui échapper s'il réfléchit sérieusement à la question posée (<ref-ruling> consid. 2.3 p. 337; <ref-ruling> consid. 3.3.3 p. 514).
Il faut en plus que la réponse inexacte porte sur un fait important pour l'appréciation du risque (art. 4 al. 1 et <ref-law>). Sont importants tous les faits de nature à influer sur la détermination de l'assureur de conclure le contrat ou de le conclure aux conditions convenues (<ref-law>). L'<ref-law> présume que le fait est important s'il a fait l'objet d'une question écrite de l'assureur, précise et non équivoque. Il s'agit toutefois d'une présomption susceptible d'être renversée. S'il n'appartient pas au proposant de déterminer - à la place de l'assureur - quels sont les éléments pertinents pour apprécier le risque, il n'en demeure pas moins que la présomption sera renversée si le proposant a omis un fait qui, considéré objectivement, apparaît totalement insignifiant. Ainsi, la jurisprudence a admis que celui qui tait des indispositions sporadiques qu'il pouvait raisonnablement et de bonne foi considérer comme sans importance et passagères, sans devoir les tenir pour une cause de rechutes ou des symptômes d'une maladie imminente aiguë, ne viole pas son devoir de renseigner (<ref-ruling> consid. 2.4 p. 337 s. et les arrêts cités; <ref-ruling> consid. 3.3.4 p. 515).
En cas de réticence, l'assureur est en droit de résilier le contrat (<ref-law>); s'il exerce ce droit, il est autorisé à refuser également sa prestation pour les sinistres déjà survenus, si le fait qui a été l'objet de la réticence a influé sur leur survenance ou leur étendue (<ref-law>). Le droit de résiliation s'éteint quatre semaines après que l'assureur a eu connaissance de la réticence (<ref-law>).
3.
3.1. La recourante reproche à la cour cantonale d'avoir violé l'<ref-law> en retenant une réticence, consistant à avoir omis de mentionner, dans la réponse à la question n° 2 de la déclaration de santé, les fibromes utérins détectés en octobre 2015. Elle fait valoir le caractère flou et évasif de ladite question, en particulier l'absence de définition précise du "trouble de la santé", ainsi que la nature bénigne des fibromes utérins. La recourante observe que ceux-ci ne nécessitaient aucun traitement en octobre 2015 et qu'aucune opération n'avait été agendée à la suite de la consultation du 8 février 2016, lors de laquelle elle ne s'était plainte que de ballonnements; elle en déduit qu'elle ne souffrait pas de maladie au sens des conditions générales d'assurance lorsqu'elle a rempli le questionnaire de santé le 15 février 2016. Ce ne serait que plus tard, en été 2016, qu'elle aurait réellement envisagé la possibilité d'une grossesse et accepté l'intervention destinée à mettre toutes les chances de son côté. La recourante nie ainsi avoir violé son devoir de renseigner l'assureur.
3.2. Certes, le Tribunal fédéral a déjà reconnu qu'une question semblable à celle ici en cause était floue et évasive (arrêt 4A_94/2019 du 17 juin 2019 consid. 4; cf. arrêt 4A_134/2013 du 11 septembre 2013 consid. 4.2.2 sur le caractère très large et imprécis de la notion de trouble ou d'atteinte à la santé). Cela étant, force est d'admettre, avec la cour cantonale, que la proposante ne pouvait pas, de bonne foi, occulter l'existence des fibromes utérins qui l'affectaient. Ces derniers constituaient manifestement un fait important pour l'appréciation du risque en l'occurrence; même bénins et sans autre symptôme que des ballonnements, ils ne sauraient, quoiqu'en pense la recourante, être assimilés à "des petits rhumes, grippes ou ongles incarnés". Selon les constatations de la cour cantonale qui lient la cour de céans, la recourante a voulu conclure une assurance complémentaire parce qu'elle approchait l'âge de 40 ans et envisageait la possibilité d'une grossesse. Au moment où elle a rempli le questionnaire de santé, elle savait depuis quatre mois qu'elle était porteuse de fibromes utérins, dont l'impact sur une future grossesse avait déjà été discuté avec sa gynécologue. En outre, une semaine avant de répondre au questionnaire, l'assurée a subi un contrôle chez la gynécologue, laquelle a évoqué avec elle l'éventualité d'une opération d'enlèvement des fibromes, notamment dans l'hypothèse où la patiente envisagerait une grossesse, et a transmis ensuite le cas à la maternité pour un second avis quant à une intervention. Lorsqu'elle a répondu à la question n° 2 relative en particulier à un éventuel "trouble de la santé", la recourante savait donc que les fibromes utérins devraient peut-être être retirés chirurgicalement si elle souhaitait tomber enceinte, ce qui était précisément l'hypothèse qui l'amenait à vouloir conclure une assurance complémentaire. C'est dire qu'elle devait nécessairement se rendre compte que la présence desdits fibromes n'était pas anodine et constituait un élément important susceptible d'influer sur l'appréciation du risque par l'assureur. En passant ce fait sous silence, la recourante a méconnu son devoir de renseigner et ne saurait invoquer le caractère vague de la notion de "trouble de la santé" pour justifier cette omission.
La cour cantonale a dès lors jugé à bon droit que la recourante avait commis une réticence en ne mentionnant pas les fibromes utérins en réponse à la question n° 2 de la déclaration de santé et, partant, que l'intimée était en droit de résilier le contrat d'assurance. Le grief tiré d'une violation de l'<ref-law> ne peut qu'être écarté.
4.
Invoquant une violation de l'<ref-law> et de l'<ref-law>, la recourante conteste également la validité de la résiliation du contrat, au motif que l'assureur - auquel le fardeau de la preuve incombait - n'aurait pas démontré avoir exercé son droit dans le délai de quatre semaines imparti par l'<ref-law>. Si on la comprend bien, elle reproche à la cour cantonale de s'être fondée sur les indications de l'assurée quant à la date de réception de l'avis de retrait du pli contenant la résiliation. Or, ce fait n'aurait jamais été allégué par aucune des parties et ne figurerait pas dans l'état de fait de l'arrêt attaqué.
4.1. Il incombe à l'assureur de rapporter la preuve du respect du délai de péremption prévu par l'<ref-law> (cf. <ref-ruling> consid. 3 p. 338; arrêts 4A_104/2018 du 12 juin 2018 consid. 2.1, 4A_150/2015 du 29 octobre 2015 consid. 6.3).
Ce délai ne commence à courir que lorsque l'assureur est complètement orienté sur tous les points concernant la réticence et qu'il en a une connaissance effective. Des renseignements dignes de foi sur des faits dont on peut déduire avec certitude qu'une réticence a été commise sont à cet égard suffisants; en revanche, de simples soupçons, même propres à inciter un assureur diligent à vérifier les déclarations du proposant et assuré, ne déclenchent pas l'écoulement du délai (<ref-ruling> consid. 2.1 p. 12; <ref-ruling> consid. 5a p. 287/288; <ref-ruling> consid. 3 p. 340).
Le délai de quatre semaines se calcule conformément à l'<ref-law>, c'est-à-dire qu'il expire le jour qui correspond, par son nom, au jour du point de départ (cf. <ref-ruling> consid. 2.1). Le Tribunal fédéral n'a jamais eu à trancher expressément la question de savoir si, pour intervenir en temps utile, la déclaration de résiliation doit parvenir au preneur d'assurance ou être seulement expédiée dans le délai de péremption (cf. arrêt 4A_150/2015 précité consid. 6.4 et les références). Dans le cas présent, la cour cantonale a jugé que la résiliation était intervenue en temps utile en appliquant la théorie de la réception, moins favorable à l'assureur.
4.2. Il n'est pas contesté que l'intimée a eu connaissance de la réticence par le rapport de la Dresse C._ portant la date manuscrite du 19 septembre 2016. La cour cantonale n'a pas établi la date à laquelle ce document a été reçu par l'assureur, mais est partie de l'hypothèse la plus favorable à l'assurée, à savoir l'envoi par le médecin sous pli simple le 19 septembre 2016, impliquant une réception par l'intimée au plus tôt le mardi 20 septembre 2016 et au plus tard le vendredi 23 septembre 2016. La recourante ne remet pas en cause le dies a quo situé entre ces deux dates. Il s'ensuit que, dans l'hypothèse la moins favorable à l'assureur, le dies ad quem du délai de quatre semaines correspondait au mardi 18 octobre 2016.
En ce qui concerne la date à laquelle la résiliation sous pli recommandé est parvenue à l'assurée, la cour cantonale a précisément retenu le mardi 18 octobre 2016, soit le lendemain du jour où la recourante elle-même, dans sa demande en paiement, indiquait avoir été "avisée pour retrait". Ce calcul est conforme à la théorie de la réception dite absolue, à laquelle est soumise la communication d'une manifestation de volonté dans le cadre de la computation d'un délai régi par le droit des obligations. Selon la jurisprudence, un envoi postal recommandé est en effet censé reçu le lendemain du jour où l'agent postal a déposé l'invitation à retirer ledit envoi dans la boîte aux lettres ou la case postale du destinataire, lorsqu'il ne peut être attendu de ce dernier - ce qui est généralement le cas - qu'il le retire le jour même à l'office de poste (<ref-ruling> consid. 4.1 p. 18 et les arrêts cités). Les juges genevois ont constaté le jour du dépôt de l'avis de retrait dans la boîte aux lettres de l'assurée en se fondant sur un allégué de celle-ci figurant dans la demande, et non sur une preuve rapportée par l'assureur auquel le fardeau de la preuve incombait. Contrairement à l'avis de la recourante, ils n'en ont pas pour autant violé l'<ref-law>. C'est le lieu de rappeler que, si elle détermine laquelle des parties doit assumer les conséquences de l'échec de la preuve, cette disposition ne dicte pas au juge comment forger sa conviction (entre autres, <ref-ruling> consid. 2d p. 25); en particulier, elle n'empêche nullement, en cas de doute sur la date de la notification, de se fonder sur les déclarations du destinataire de la communication (cf. <ref-ruling> consid. 2a p. 402; <ref-ruling> consid. 2a), lesquelles, en l'espèce, ont pris la forme, malgré les dénégations de la recourante, d'un allégué du mémoire de demande.
Il s'ensuit que, dans l'hypothèse la moins favorable à l'assureur, la résiliation du contrat d'assurance a été notifiée le dernier jour du délai péremptoire de quatre semaines. La cour cantonale n'a pas violé le droit fédéral en jugeant que la résiliation, intervenue en temps utile, était valable.
5.
Sur le vu de ce qui précède, le recours doit être rejeté.
La recourante, qui succombe, prendra à sa charge les frais judiciaires (<ref-law>), mais n'aura pas à verser de dépens à l'intimée, qui n'a pas déposé de réponse.

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
Les frais judiciaires, arrêtés à 2'000 fr., sont mis à la charge de la recourante.
3.
Le présent arrêt est communiqué aux parties et à la Chambre des assurances sociales de la Cour de justice du canton de Genève.
Lausanne, le 28 août 2020
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente : Kiss
La Greffière : Godat Zimmermann