Faits: A. Y._, née en 1936, était au bénéfice, en tout cas depuis août 1981, d'une assurance complémentaire pour hospitalisation en division demi-privée auprès de la caisse-maladie W._ Dès le 1er janvier 1996, cette assurance est devenue «A»; la prime mensuelle s'élevait à 146 fr.70 (groupe d'âge 50 ans). Le 1er janvier 1997, la fusion des caisses-maladie W._ et Z._ a donné naissance à une nouvelle caisse-maladie, X._ (ci-après: la caisse-maladie ou l'assureur). A cette occasion, l'assurée a été incorporée dans l'assurance complémentaire d'hospitalisation demi-privée «B1» régie par la LCA (RS 221.229.1); en 1997, la prime mensuelle était de 282 fr.20. Par lettre du 3 octobre 2003, Y._ a demandé à la caisse-maladie les raisons qui justifiaient chaque année une augmentation massive de la prime de l'assurance «B1». Elle relevait par ailleurs une différence de plus de 100 % entre la prime de l'assurance «A», à laquelle elle avait appartenu, et celle de «B1». Elle s'est plainte d'avoir été transférée dans «B1» sans information préalable, observant au passage que ce type d'assurance ne figurait dans aucune des brochures de l'assureur. L'assurée précisait encore que, selon des renseignements téléphoniques obtenus de l'Office fédéral des assurances privées, l'assureur n'incorporait plus de membres dans l'assurance «B1». Elle a sollicité son retour dans l'assurance «A» à partir de 2004. Par courrier du 27 octobre 2003, la caisse-maladie a répondu que, lors de l'entrée en vigueur de la LAMal le 1er janvier 1996 qui a entraîné le passage des assurances complémentaires sous le régime de la LCA, l'assurée était couverte par l'assurance «A», qui fixait les primes en fonction de l'âge d'entrée sans tenir compte du sexe; après la fusion, tous les assurés ayant cette couverture d'assurance avaient été intégrés dans l'assurance «B1», qui préservait leurs droits acquis. L'assureur précisait que l'assurance complémentaire «C» était un nouveau produit offert depuis le 1er janvier 1997, dont les primes étaient fixées selon le groupe d'âge et le groupe de risque des assurés. En conclusion, comme l'assurée avait dépassé l'âge maximum d'admission pour une assurance complémentaire d'hospitalisation, l'assureur ne pouvait lui proposer aucun autre contrat dans ce secteur. Le 11 octobre 2007, Y._ a demandé à l'assureur de lui accorder le droit de transfert de l'assurance «B1» à l'assurance «C» à partir du 1er janvier 2008; l'assurée invoquait l'art. 216 al. 8 de l'ordonnance du 9 novembre 2005 sur la surveillance des entreprises d'assurance privées (ordonnance sur la surveillance, OS; RS 961.011), aux termes duquel les assurés de portefeuilles d'assurance déjà fermés au moment de l'entrée en vigueur de l'ordonnance sur la surveillance peuvent obtenir le droit de passage selon l'art. 156 OS au plus tard deux ans après l'entrée en vigueur de ladite ordonnance. Le 29 octobre 2007, l'assureur a répondu qu'il ne gérait aucun portefeuille fermé au sens de l'art. 156 OS et que l'assurance «B1» était à disposition des assurés pour de nouveaux contrats, de sorte que l'assurée n'avait pas droit à un libre transfert. B. Par acte du 25 février 2008, Y._ a ouvert action contre la caisse-maladie X._ devant le Tribunal cantonal des assurances sociales de la République et canton de Genève, concluant à son transfert dans l'assurance «C» avec effet rétroactif au 1er janvier 2008, ainsi qu'au remboursement de la part de prime payée en trop à partir du 1er janvier 2008. La demanderesse alléguait qu'en janvier 1997, l'assureur avait opéré une différenciation dans le cadre de son assurance complémentaire d'hospitalisation, en prévoyant, d'une part, «C» pour les assurés sans risques et, d'autre part, «B1» pour les assurés avec risques, cette dernière assurance ayant été assortie d'une forte augmentation des primes. L'assurée aurait été transférée d'office dans l'assurance «B1» et subi ainsi chaque année une sévère majoration de sa prime, laquelle atteignait 636 fr. par mois en 2007, alors que la prime de l'assurance «C» était environ 50 % meilleur marché. Selon la demanderesse, l'assurance «B1» devait être considérée comme un portefeuille fermé au sens de l'art. 156 OS parce qu'elle ne figurait dans aucun prospectus ni publicité de la caisse-maladie, que les jeunes employés de l'assureur n'en connaissaient ni les primes, ni les prestations, que cette assurance n'était pas proposée sur le site Internet de la défenderesse et, enfin, que la comparaison des conditions supplémentaires d'assurance permettait de constater l'équivalence entre les produits «B» et «C». La caisse-maladie a conclu au rejet de la demande. Elle a soutenu que l'assurance «B1» n'était pas un portefeuille fermé au sens de l'art. 156 OS, disposition dont elle contestait au demeurant la constitutionnalité. Par ordonnance du 24 juillet 2008, l'autorité cantonale a invité la caisse-maladie à indiquer, d'une part, à quelle date elle avait conclu, pour la dernière fois, une assurance «B» et, d'autre part, combien de polices «B1» (division hospitalière demi-privée), «B2» (division hospitalière privée), «C» et de polices d'assurances équivalentes à «B» elle avait établies en 2007. La production d'extraits statistiques informatisés a également été requise à titre de preuve. La caisse-maladie a répondu que les chiffres en question n'étaient pas directement disponibles sous la forme demandée et qu'ils nécessitaient des recoupements qui prendraient du temps. De plus, elle ne tenait pas à publier certains chiffres protégés par le secret des affaires, d'autant plus qu'ils ne seraient pas déterminants pour trancher le litige. Elle a requis de l'autorité cantonale de limiter son examen dans un premier temps à la constitutionnalité de l'art. 156 OS avant d'exiger la production de ces chiffres. Par ordonnance du 18 septembre 2008, l'autorité cantonale a réitéré sa demande à la caisse-maladie, en attirant son attention sur son obligation de collaborer et sur les conséquences résultant de l'attitude d'une partie qui refuse de produire une pièce. Elle a averti l'assureur que s'il ne répondait pas aux questions posées, elle statuerait en l'état du dossier. La caisse-maladie a maintenu sa position, tout en ajoutant qu'elle n'entendait pas se soustraire à son obligation de collaborer. Elle a précisé que les données requises, qui n'étaient pas publiées dans son rapport annuel, concernaient la marche des affaires et la stratégie de vente dans le domaine des assurances privées; elles ne devaient pas être disponibles pour le public et, par là-même, pour ses concurrents, car elles dépassaient le rapport entre assureur et assurés et pourraient permettre à un tiers d'adapter sa technique de vente. Par arrêt sur partie et sur incident du 18 décembre 2008, l'autorité cantonale a constaté que l'art. 156 OS ne violait pas la Constitution fédérale, avant de confirmer ses ordonnances des 24 juillet et 18 septembre 2008 et d'inviter la caisse-maladie à y déférer. L'assureur a interjeté un recours en matière civile et un recours constitutionnel subsidiaire au Tribunal fédéral contre cette décision. Par arrêt du 1er mai 2009, les recours ont été déclarés irrecevables, au motif que les conditions ouvrant exceptionnellement le recours contre des décisions incidentes n'étaient pas remplies; dans ce cadre, il a été relevé que la procédure cantonale prévoyait des règles afin de protéger, le cas échéant, les secrets d'affaires des parties (cause 4A_70/2009). Le dossier a été renvoyé au Tribunal des assurances sociales. En réponse aux questions posées dans l'ordonnance du 24 juillet 2008, la caisse-maladie a informé l'autorité cantonale, le 22 juin 2009, que la dernière conclusion d'une assurance «B» remontait au 1er décembre 2007; elle a précisé ne pas avoir recherché si de telles polices avaient été conclues postérieurement au 31 décembre 2007, la procédure en cours portant sur un transfert au 1er janvier 2008, au motif que le portefeuille avait été fermé avant cette date. En ce qui concerne le nombre de polices «B1» et «B2» conclues en 2007, la caisse-maladie a affirmé avoir collecté les chiffres et les tenir à disposition. Invoquant la protection du secret des affaires, elle estimait toutefois que ces données méritaient une protection élargie à garantir par l'application de l'art. 45 de la loi genevoise sur la procédure administrative (LPA/GE; RSG E 5 10); elle était disposée à transmettre ces données dès que la protection qui lui était due lui aurait été formellement garantie. La caisse-maladie a également invoqué le secret d'affaires pour ce qui a trait au nombre de polices d'assurance vendues d'un produit correspondant à «B1». Elle a notamment conclu à ce qu'il soit constaté que les informations précitées bénéficiaient du secret des affaires et à ce qu'ordre lui soit donné de produire les informations en cause dans un délai à fixer dès l'entrée en force de la décision se prononçant sur le caractère secret des données. Dans sa détermination du 15 septembre 2009, Y._ a allégué que le document produit à titre de démonstration de la conclusion d'une police «B1» en décembre 2007 était incompréhensible. Pour le surplus, elle a contesté que les données non produites par la caisse-maladie fussent couvertes par le secret des affaires. A son avis, l'attitude de l'assureur devait être considérée comme un refus de collaborer à l'établissement des faits pertinents. Le Tribunal cantonal des assurances sociales a rendu son arrêt en date du 18 novembre 2009. Admettant l'action, il a ordonné à la caisse-maladie de transférer l'assurée dans l'assurance «C» avec effet rétroactif au 1er janvier 2008 et a condamné l'assureur à rembourser à Y._ la différence de prime payée en trop à partir de cette date. En substance, l'autorité cantonale a admis la constitutionnalité de l'art. 156 OS. Puis, elle a constaté que l'assureur refusait de collaborer à l'établissement des faits et en a déduit qu'elle pouvait statuer en l'état du dossier selon le degré de vraisemblance prépondérante. Enfin, elle a jugé que l'assurance «B1» constituait un portefeuille fermé, de sorte que, fondée sur l'art. 156 OS, l'assurée était en droit de demander son transfert dans un produit équivalent. C. La caisse-maladie X._ interjette un recours en matière civile et un recours constitutionnel subsidiaire contre l'arrêt du 18 novembre 2009. Elle produit des pièces nouvelles sous pli fermé; dans son mémoire, elle allègue des faits nouveaux ressortant du «document secret» déposé. Au fond, la recourante conclut à l'annulation de l'arrêt attaqué, puis, principalement, au renvoi de la cause à l'autorité cantonale et, subsidiairement, au rejet de la demande de l'assurée. Au niveau procédural, elle requiert que les pièces produites sous pli fermé bénéficient de la protection du secret des affaires et ne soient versées au dossier que dans leur teneur essentielle, à définir par ordonnance judiciaire, et avec stricte interdiction aux parties d'en faire usage en dehors de la présente procédure; elle demande en outre à ce que l'effet suspensif soit accordé au recours et à ce qu'un second échange d'écritures soit ordonné à réception de la réponse. L'intimée a déclaré ne pas s'opposer à la requête d'effet suspensif. La Présidente de la cour de céans l'a dès lors accordé par ordonnance du 25 janvier 2010. A la suite de l'invitation à déposer une réponse, l'intimée a requis la copie des pièces produites par la recourante. L'ordonnance fixant un délai pour le dépôt de la réponse a alors été annulée dans l'attente d'une décision sur la protection du secret d'affaires invoqué par la recourante. Par la suite, il a été renoncé à requérir une réponse.