<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>Tengu's Blog</title><link>http://blog.tengu.ch/blog</link><description>The Daemon's forks</description><language>fr</language><lastBuildDate>Fri, 02 Sep 2011 11:47:32 -0000</lastBuildDate><item><title>QRCode</title><link>http://blog.tengu.ch/blog/post/237</link><description>News très courte, à importance moyenne: le blog possède maintenant des qrcode pour chaque post.&lt;br/&gt;&lt;br/&gt;Le "service" utilisé est fourni par &lt;a href="http://qrcode.kaywa.com/"&gt;http://qrcode.kaywa.com/&lt;/a&gt; .&lt;br/&gt;Je pense faire un proxypass avec nginx, avec mise en cache de manière à pouvoir servir les qrcode en SSL (le certificat de kaywa n'est pas reconnu :( ).&lt;br/&gt;&lt;br/&gt;Donc en somme, il est possible que votre navigateur lève une alerte disant que certains contenus ne sont pas fournis par une connexion SSL - bin c'est ça ;).&lt;br/&gt;&lt;br/&gt;En attendant que ça change.&lt;br/&gt;&lt;br/&gt;++&lt;br/&gt;&lt;br/&gt;T.&lt;p&gt;Publié le 02.09.2011 &amp;agrave; 11:47, dans &lt;a href="http://blog.tengu.ch/blog/category/6"&gt;News&lt;/a&gt;&lt;/p&gt;</description><pubDate>Fri, 02 Sep 2011 11:47:32 -0000</pubDate></item><item><title>Mes nouvelles questions à Santé Suisse</title><link>http://blog.tengu.ch/blog/post/236</link><description>Bah oui, hein, on ne va pas en rester là.&lt;br/&gt;&lt;br/&gt;Nouvel email, avec quelques remarques, questions et points douloureux, envoyé à l'instant à Santé Suisse, copie à l'OFSP (ces derniers ont aussi reçu une copie de la réponse de Santé Suisse de manière à être correct et transparent):&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;Bonjour,&lt;br/&gt;&lt;br/&gt;comme dit dans ma précédente réponse, me revoici avec une série de questions/remarques, ainsi que quelques documents audiovisuels pour étayer mes dires.&lt;br/&gt;&lt;br/&gt;Je me permets de répondre dans votre propre email, en enlevant certaines parties.&lt;br/&gt;Les parties supprimées seront représentée par "(...)".&lt;br/&gt;&lt;br/&gt;Ce présent email sera aussi publié, avec le même contenu exact, à l'adresse "habituelle".&lt;br/&gt;&lt;br/&gt;Pour votre information, j'ai aussi reçu une réponse de l'OFSP, qui recevra aussi une copie de cet email (ainsi qu'une copie de votre réponse d'origine de manière à ne pas passer pour un censeur ou autres).&lt;br/&gt;&lt;br/&gt;(...)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Le domaine de l'assurance de base et celui de l'assurance&lt;br/&gt;&amp;gt; complémentaire sont clairement séparés, tant du point de vue  de la&lt;br/&gt;&amp;gt; gestion (art. 13, al. 2a LaMal) que du point de vue des dispositions&lt;br/&gt;&amp;gt; légales encadrant ces activités (Loi fédérale sur le contrat&lt;br/&gt;&amp;gt; d'assurance LCA pour le domaine des assurances complémentaires, non&lt;br/&gt;&amp;gt; obligatoires, LaMal pour l'assurance sociale obligatoire). Le&lt;br/&gt;&amp;gt; législateur a par ailleurs accepté que les assureurs-maladie puissent&lt;br/&gt;&amp;gt; être actifs dans ces deux domaines d'assurance (art. 12 al.2 LaMal).&lt;br/&gt;&lt;br/&gt;Effectivement, la Loi est assez claire sur le sujet. Après lecture, tout devrait être simple et joli. Or, je suis désolé de revenir à la charge, mais des enquêtes de Temps Présent, émission sérieuse s'il en est, ont démontré que la séparation entre la partie service public et assurance privée est floue, très floue, avec une impossibilité flagrante de faire le point sur les comptes.&lt;br/&gt;Les contrôleurs de l'OFSP l'ont eux-même admis, ils ne peuvent tout simplement pas faire de contrôle précis, par manque de:&lt;br/&gt;- temps&lt;br/&gt;- moyens&lt;br/&gt;- clarté dans les documents transmis&lt;br/&gt;&lt;br/&gt;Il en va de même pour le contrôle des primes.&lt;br/&gt;&lt;br/&gt;Vous allez me dire que le problème n'est donc pas seulement au sein des assurances, vu que, clairement, l'OFSP manque de moyens. C'est sans doute vrai. Mais si un comptable professionnel est incapable de voir la séparation des comptes, il y a aussi un léger petit problème de fond, vous ne pensez pas ?&lt;br/&gt;Source: &lt;a href="http://www.tsr.ch/emissions/temps-present/sante/1726679-assurance-maladie-des-comptes-a-regler.html"&gt;http://www.tsr.ch/emissions/temps-present/sante/1726679-assurance-maladie-des-comptes-a-regler.html&lt;/a&gt; (oui, elle date - mais prouvez-moi qu'elle n'est plus d'actualité, autrement qu'en me montrant des textes de lois...)&lt;br/&gt;&lt;br/&gt;&amp;gt; Je vous rappelle également que la LaMal a été acceptée en votation&lt;br/&gt;&amp;gt; populaire.&lt;br/&gt;&lt;br/&gt;Je ne le nie pas. Peut-être que ça partait d'un bon fond, mieux, d'une nécessité. Mais les lois économiques sont en train de transformer tout cela en une vaste mascarade, où même le Tribunal Fédéral est d'accord pour que les assureurs ne remboursent pas certains de leurs assurés, sous prétexte qu'ils ont une maladie extrêmement rare, dont le traitement est très onéreux (et donc là on va me brandir la pancarte "augmentation de primes" comme à chaque fois).&lt;br/&gt;Source: &lt;a href="http://www.tsr.ch/emissions/36-9/3264987-trop-cher-tu-meurs.html"&gt;http://www.tsr.ch/emissions/36-9/3264987-trop-cher-tu-meurs.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; - assurances complémentaires, accordées à la tête du client (ou, en fait, son état de santé... Autant dire que le dossier médical est "légèrement" intéressant dans ce genre de cas, ne me dîtes surtout pas "non-non"), appelée à faire du profit de pat sa nature même.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Dans le domaine de l'assurance obligatoire, l'assureur est obligé&lt;br/&gt;&amp;gt; d'accepter toute personne (art. 4 LaMal) qui en fait la demande,&lt;br/&gt;&amp;gt; l'assureur ne peut pas pratiquer de sélection des assurés. Par&lt;br/&gt;&amp;gt; ailleurs, chaque assuré peut choisir lui-même son assureur, en&lt;br/&gt;&amp;gt; fonction de critères qui lui sont personnels.&lt;br/&gt;&lt;br/&gt;En théorie, oui, c'est marqué dans la Loi. En pratique, toujours selon Temps Présent, certains assureurs n'hésitent pas à "égarer" un dossier s'ils voient que la personne est un "mauvais risque" potentiel. Un article de la TSR est d'ailleurs paru à ce sujet, pas plus tard que le 8 septembre 2010: &lt;a href="http://www.tsr.ch/info/suisse/2456600-la-caisse-intras-refuse-des-mauvais-risques.html"&gt;http://www.tsr.ch/info/suisse/2456600-la-caisse-intras-refuse-des-mauvais-risques.html&lt;/a&gt;&lt;br/&gt;Permettez-moi donc de douter du fait que les assureurs suivent la loi au pied de la lettre. Du moins, quand elle va dans le sens du patient.&lt;br/&gt;Source: &lt;a href="http://www.tsr.ch/emissions/temps-present/sante/1726679-assurance-maladie-des-comptes-a-regler.html"&gt;http://www.tsr.ch/emissions/temps-present/sante/1726679-assurance-maladie-des-comptes-a-regler.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;(...)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; C'est la Confédération qui détermine quelles prestations sont du&lt;br/&gt;&amp;gt; ressort de l'assurance de base: les prestations sont prescrites par la&lt;br/&gt;&amp;gt; Loi et sont les mêmes pour tous les assureurs-maladie et pour tous les&lt;br/&gt;&amp;gt; assurés, dans le domaine réglementé par la LaMal. L'assureur-maladie&lt;br/&gt;&amp;gt; ne peut pas exclure une personne dont les frais médicaux seraient&lt;br/&gt;&amp;gt; élevés (obligation d'assurance).&lt;br/&gt;&lt;br/&gt;Exclure, non. Mais malheureusement, refuser de rembourser, à voir, si....&lt;br/&gt;Source: &lt;a href="http://www.tsr.ch/emissions/36-9/3264987-trop-cher-tu-meurs.html"&gt;http://www.tsr.ch/emissions/36-9/3264987-trop-cher-tu-meurs.html&lt;/a&gt;&lt;br/&gt;&lt;a href="http://relevancy.bger.ch/php/aza/http/index.php?lang=fr&amp;amp;type=highlight_simple_query&amp;amp;page=1&amp;amp;from_date=23.11.2010&amp;amp;to_date=23.11.2010&amp;amp;sort=relevance&amp;amp;insertion_date=&amp;amp;top_subcollection_aza=soz&amp;amp;query_words=&amp;amp;rank=0&amp;amp;highlight_docid=atf://136-V-395:fr:regeste&amp;amp;number_of_ranks=0&amp;amp;azaclir=clir"&gt;http://relevancy.bger.ch/php/aza/http/index.php?lang=fr&amp;amp;type=highlight_simple_query&amp;amp;page=1&amp;amp;from_date=23.11.2010&amp;amp;to_date=23.11.2010&amp;amp;sort=relevance&amp;amp;insertion_date=&amp;amp;top_subcollection_aza=soz&amp;amp;query_words=&amp;amp;rank=0&amp;amp;highlight_docid=atf://136-V-395:fr:regeste&amp;amp;number_of_ranks=0&amp;amp;azaclir=clir&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Si cette même personne bénéficie déjà&lt;br/&gt;&amp;gt; d'une assurance complémentaire chez lui, il connaît son état de santé&lt;br/&gt;&amp;gt; sur la base des informations que la personne lui a elle-même fournies.&lt;br/&gt;&amp;gt; A ce titre, le conflit d'intérêt me semble très limité, d'autant que&lt;br/&gt;&amp;gt; personne n'est contraint à contracter une assurance complémentaire ou&lt;br/&gt;&amp;gt; de le faire auprès du même assureur.&lt;br/&gt;&lt;br/&gt;Heuuuuu. donc il y a transfert du dossier médical entre la partie service public et privé ?! Est-ce bien légal? Dans tous les cas, ça ne me pousse vraiment pas du tout à prendre une complémentaire chez le même assureur, là...&lt;br/&gt;&lt;br/&gt;(...)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Je vous signale un article sur le thème de la protection des données&lt;br/&gt;&amp;gt; paru dans notre publication Info santésuisse 2/11, décrivant les&lt;br/&gt;&amp;gt; mesures prises concernant la protection des données par l'assureur&lt;br/&gt;&amp;gt; Visana:&lt;br/&gt;&amp;gt; &lt;a href="https://www.santesuisse.ch/icms/pubinhalte/uploads/fr_seiten_6_8_iss_nr_02_2011_fr-3.pdf"&gt;https://www.santesuisse.ch/icms/pubinhalte/uploads/fr_seiten_6_8_iss_nr_02_2011_fr-3.pdf&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;*Un* assureur, dans le cadre d'une visite prévue. Et si je vais chez un autre, "juste en passant", est-ce que les mêmes sécurités sont présentes ? C'est un peu simple de ne montrer qu'un seul assureur, alors qu'on en compte, sauf erreur, plus de 80 en Suisse....&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; La protection des données est par ailleurs réglementée dans la Loi.&lt;br/&gt;&lt;br/&gt;En théorie oui, comme pour les précédents articles ;).&lt;br/&gt;&lt;br/&gt;&amp;gt; Concernant les nouvelles modalités du financement hospitalier, un&lt;br/&gt;&amp;gt; article de la LaMal (art. 84 b) entrera en vigueur en même temps que&lt;br/&gt;&amp;gt; le nouveau financement (1.1.2012) hospitalier (par forfait par cas),&lt;br/&gt;&amp;gt; article qui prévoit que les assureurs  "doivent pour la protection des&lt;br/&gt;&amp;gt; données relatives au diagnostic mettre en place un règlement sur le&lt;br/&gt;&amp;gt; traitement des données, le soumettre au conseiller à la protection des&lt;br/&gt;&amp;gt; données et le publier".&lt;br/&gt;&lt;br/&gt;et l'appliquer au pied de la lettre j'espère.... avec contrôles strictes, aléatoires et non-prévus par une entité réellement indépendante, et publication des rapports, au moins... ?&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Concernant la 2e question (secret médical):&lt;br/&gt;&amp;gt;&amp;gt; pourrez-vous assurer que les seules personnes habilitées à accéder aux&lt;br/&gt;&amp;gt;&amp;gt; dossiers médicaux sont soumises au secret professionnel (et donc&lt;br/&gt;&amp;gt;&amp;gt; médical) ?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; L'article 33 LPGA (Loi fédérale du 6 octobre 2000 sur la partie générale du droit des assurances sociales) précise que toutes les personnes impliquées dans le contrôle ou la surveillance des dispositions légales sont tenues au secret à l'égard de tiers. Cette disposition concerne donc aussi les assureurs, dont les collaborateurs sont soumis au au secret de fonction. Toutes les caisses-maladie réglementent l'accès aux données concernant les assurés aux collaborateurs qui en ont besoin pour remplir leur tâches.&lt;br/&gt;&lt;br/&gt;Et donc-heuuu.... le coup des 400 collaborateurs qui ont eu accès aux données personnelles n'est qu'un cas isolé et corrigé, du genre impossible à se reproduire?&lt;br/&gt;Source: &lt;a href="http://www.tsr.ch/emissions/temps-present/sante/1319628-les-assureurs-a-l-assaut-du-secret-medical.html"&gt;http://www.tsr.ch/emissions/temps-present/sante/1319628-les-assureurs-a-l-assaut-du-secret-medical.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; L'assureur ne dispose pas du dossier médical (dans le langage&lt;br/&gt;&amp;gt; courant, l'expression "dossier médical" fait référence au dossier que&lt;br/&gt;&amp;gt; tient le médecin); l'assureur dispose des informations nécessaires et&lt;br/&gt;&amp;gt; suffisantes au contrôle des prestations (donc des factures), et des&lt;br/&gt;&amp;gt; coûts (qui influenceront les primes que vous payerez l'année&lt;br/&gt;&amp;gt; suivante). Contrôler les factures fait partie des obligations légales&lt;br/&gt;&amp;gt; de l'assureur (art. 84 LaMal).&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;En théorie - voir émission &lt;a href="http://www.tsr.ch/emissions/temps-present/sante/1319628-les-assureurs-a-l-assaut-du-secret-medical.html"&gt;http://www.tsr.ch/emissions/temps-present/sante/1319628-les-assureurs-a-l-assaut-du-secret-medical.html&lt;/a&gt; (datant de 2006, mais cela crée un fâcheux précédent vous en conviendrez. Regagner la confiance après ce genre d'erreur, c'est dur.)&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; Pour finir, pouvons-nous, en tant que personnes privées, interdire à l'hôpital de transmettre notre dossier médical à notre assureur ? Après tout, ce sont des données privées, et même extrêmement privées.&lt;br/&gt;&amp;gt;&amp;gt; Si oui, comment, dans quel délai, sous quelles conditions ?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Les nouvelles modalités du financement hospitalier qui entreront en&lt;br/&gt;&amp;gt; vigueur au 1.1.2012 prévoient que le patient hospitalisé puisse faire&lt;br/&gt;&amp;gt; la demande que les informations concernant son diagnostic nécessaires&lt;br/&gt;&amp;gt; au contrôle de factures soient transmises au médecin conseil de son&lt;br/&gt;&amp;gt; assurance-maladie. En cas de conflit avec l'assurance-maladie, les&lt;br/&gt;&amp;gt; assurés peuvent également recourir aux services de l'ombudsman de&lt;br/&gt;&amp;gt; l'assurance-maladie sociale. Ses services sont gratuits&lt;br/&gt;&amp;gt; www.ombudsman-kv.ch.&lt;br/&gt;&lt;br/&gt;Cela ne répond pas à la question: puis-je faire _opposition_ à la transmission par défaut de mon dossier médical? Mon assureur n'a, par défaut, pas besoin d'avoir les diagnostiques précis pour savoir si la facture est gonflée ou pas.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;(...)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Les assureurs sont tenus par la Loi à faire état de leur gestion y&lt;br/&gt;&amp;gt; compris de leurs comptes annuels (LPGA, art. 77); s'ils ne respectent&lt;br/&gt;&amp;gt; pas les dispositions légales, la Confédération peut leur retirer&lt;br/&gt;&amp;gt; l'autorisation de pratiquer (LaMal, art. 13). Les assureurs informent&lt;br/&gt;&amp;gt; régulièrement leurs assurés (site Internet, journaux, courriers), ils&lt;br/&gt;&amp;gt; ont par ailleurs signé un accord de branche en avril 2011 limitant le&lt;br/&gt;&amp;gt; démarchage téléphonique et les activités incontrôlées des courtiers,&lt;br/&gt;&amp;gt; ils prennent donc beaucoup de mesures pour assurer la transparence&lt;br/&gt;&amp;gt; envers les assurés. Par ailleurs, chaque personne a tout  pouvoir de&lt;br/&gt;&amp;gt; choisir elle-même auprès de quel assureur elle souhaite s'assurer pour&lt;br/&gt;&amp;gt; les prestations obligatoires de l'assurance-maladie.&lt;br/&gt;&lt;br/&gt;Pour ma part, "transparence" rime avec transparence des comptes, de manière à ce que tout le monde puisse y accéder, et puisse se faire une idée sur le coût réel des assurances sans devoir être comptable professionnel. Et je ne parle pas des comptes consolidés, dans lesquels on peut faire tout et n'importe quoi y compris masquer les informations sensibles.&lt;br/&gt;Pour ma part, je n'ai absolument aucune preuve de cette transparence dont vous parlez, bien au contraire. Tout ce que je lis sur le net, tout ce que j'entends et vois montre, à l'inverse, une certaine obscurité.&lt;br/&gt;Et je ne suis pas le seul à penser ainsi, ou du moins à être franchement mécontent de ce système.&lt;br/&gt;Je crois bien que si une nouvelle votation sur une caisse unique avait lieu, elle passerait haut la main. Et ça ne ferait pas de mal, à mon humble avis, du fait que cela nivellerait réellement les frais des assurances au niveau suisse, au lieu de faire une pseudo-séparation par canton (tout en émettant le souhait de reverser les surplus dans les cantons n'ayant pas assez de réserve, au détriment des assurés ayant payé plus - cf &lt;a href="http://www.tsr.ch/info/suisse/2411361-les-manoeuvres-de-deux-assureurs-denoncees.html"&gt;http://www.tsr.ch/info/suisse/2411361-les-manoeuvres-de-deux-assureurs-denoncees.html&lt;/a&gt; et &lt;a href="http://www.tsr.ch/info/suisse/3178116-reserves-la-justice-donne-raison-a-assura-et-supra.html)."&gt;http://www.tsr.ch/info/suisse/3178116-reserves-la-justice-donne-raison-a-assura-et-supra.html).&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Merci d'avance pour vos explications, que je me manquerai pas de publier (et commenter sans doute à nouveau). Je veux comprendre au mieux pourquoi on arrive à une situation où les assurances maladies coûte  pas loin de 5% d'un salaire mensuel, tout en voyant les remboursements diminuer (suppression du remboursement pour les lunettes, plafonnement des remboursements pour les médicaments "hors-listes", etc).&lt;br/&gt;&lt;br/&gt;Cordialement,&lt;br/&gt;&lt;br/&gt;C. Jeanneret&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;Le présent email sera publié dans quelques minutes sur &lt;a href="https://blog.tengu.ch/blog/bytag/santesuisse"&gt;https://blog.tengu.ch/blog/bytag/santesuisse&lt;/a&gt;&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br/&gt;J'attends les réponses avec grande impatience :)&lt;br/&gt;&lt;br/&gt;T.&lt;p&gt;Publié le 01.09.2011 &amp;agrave; 18:51, dans &lt;a href="http://blog.tengu.ch/blog/category/18"&gt;Suisse&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 01 Sep 2011 18:51:59 -0000</pubDate></item><item><title>Réponse de l'OFSP</title><link>http://blog.tengu.ch/blog/post/235</link><description>J'ai reçu en fin de semaine passée une réponse de l'OFSP, que je suis autorisé à reproduire ici-même.&lt;br/&gt;De manière à être logique, voici les questions que j'avais posées à l'OFSP:&lt;br/&gt;&lt;blockquote&gt;Bonsoir,&lt;br/&gt; &lt;br/&gt;Je serais très intéressé de savoir la position de l'OFSP par rapport à&lt;br/&gt;cet accord sur la transmission automatique du dossier du patient aux&lt;br/&gt;assurances maladies (officiellement à leur médecin conseil uniquement,&lt;br/&gt;mais pratiquement il y a eu des fuites par le passé, et il y en aura&lt;br/&gt;d'autres, on peut en être sûr).&lt;br/&gt; &lt;br/&gt;En parallèle, je viens de recevoir une réponse de Santé Suisse (publiée&lt;br/&gt;ici &lt;a href="https://blog.tengu.ch/blog/post/232),"&gt;https://blog.tengu.ch/blog/post/232),&lt;/a&gt; et serais très intéressé par&lt;br/&gt;les articles de loi formant la LaMal - il y a-t-il un accès en ligne, ou&lt;br/&gt;des pdf ? Si oui, puis-je avoir un lien ?&lt;br/&gt; &lt;br/&gt;D'avance merci pour vos réponses.&lt;br/&gt; &lt;br/&gt;Excellent weekend à vous.&lt;br/&gt; &lt;br/&gt;Cordialement,&lt;br/&gt;&lt;br/&gt;&amp;lt;moi&amp;gt;&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br/&gt;Et la réponse:&lt;br/&gt;&lt;blockquote&gt;Monsieur,&lt;br/&gt; &lt;br/&gt;Dans le prolongement de votre courriel du 19 août 2011, nous pouvons vous apporter les indications suivantes;&lt;br/&gt; &lt;br/&gt;Vous avez pris connaissance des récents développements dans ce dossier par voie de presse notamment. L’information principale étant que les membres de H+ Les Hôpitaux de Suisse n'ont pas donné leur aval à l'accord du 5 juillet 2011 entre H+ et Santésuisse.&lt;br/&gt; &lt;br/&gt;Quant à la suite à donner à ce dossier, des discussions sont actuellement en cours à ce sujet. Nous vous ferons part cas échéant des considérations qui seraient retenues à la suite de ces développements.&lt;br/&gt; &lt;br/&gt;Vous trouverez toutes les dispositions légales relative à la LAMal (loi sur l’assurance-maladie obligatoire) sous le lien Internet suivant ; &lt;a href="http://www.admin.ch/ch/f/rs/c832_10.html"&gt;http://www.admin.ch/ch/f/rs/c832_10.html&lt;/a&gt;&lt;br/&gt; &lt;br/&gt;Diverses ordonnances comme l’OAMal (ordonnance sur l’assurance-maladie obligatoire), l’OPAS (ordonnance sur les prestations), etc. se trouvent listées sur notre site Internet, sous l’onglet spécifié « bases légales et d’exécution ». Le lien Internet général vous est remis &lt;br/&gt;ci-après : &lt;a href="http://www.bag.admin.ch/themen/krankenversicherung/02874/02875/index.html?lang=fr"&gt;http://www.bag.admin.ch/themen/krankenversicherung/02874/02875/index.html?lang=fr&lt;/a&gt; . Les bases légales sont accessibles en format HTML ou PDF (renvoi au site de la Confédération, www.admin.ch sous l’onglet législation).&lt;br/&gt; &lt;br/&gt;Si vous ne deviez pas trouvez une information utile, nous vous laissons le soin de nous recontacter à ce titre.&lt;br/&gt; &lt;br/&gt;Dans l’intervalle, et en vous souhaitant bonne réception du présent courriel, nous vous prions d’agréer, Monsieur, nos salutations distinguées.&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br/&gt;Entre ça et les liens fournis par @khannibal, y a de quoi faire maintenant.&lt;br/&gt;&lt;br/&gt;Tengu, qui se met au droit des assurances&lt;p&gt;Publié le 28.08.2011 &amp;agrave; 19:53, dans &lt;a href="http://blog.tengu.ch/blog/category/18"&gt;Suisse&lt;/a&gt;&lt;/p&gt;</description><pubDate>Sun, 28 Aug 2011 19:53:22 -0000</pubDate></item><item><title>Encore un design</title><link>http://blog.tengu.ch/blog/post/234</link><description>Cette fois j'ai le bon bout je crois !&lt;br/&gt;En ayant encore allégé le design, et en suivant les bons conseils d'un pote, je suis tombé sur &lt;a href="http://twitter.github.com/bootstrap/."&gt;http://twitter.github.com/bootstrap/.&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Cela m'a permis de faire un design léger sans trop de prise de tête, avec une base saine.&lt;br/&gt;J'ai simplement défini dans une feuille séparée des styles un peu plus spécialisés, et hop.&lt;br/&gt;Retaillé ma fameuse planète, mis un peu de couleurs, positionné les choses.... terminé.&lt;br/&gt;&lt;br/&gt;Après m'est venue l'idée de rendre mon site compatible avec les différents devices que j'ai, à savoir:&lt;br/&gt;- un iPad (reçu, hein, jamais je n'achèterais un iTrux)&lt;br/&gt;- mon phone android&lt;br/&gt;- laptop&lt;br/&gt;&lt;br/&gt;Le dernier étant déjà bon, je me suis concentré sur les deux premiers. Et là, &lt;a href="http://lessframework.com/"&gt;http://lessframework.com/&lt;/a&gt; est intervenu de main de maître. En reprenant un peu du code de leurs CSS, j'ai obtenu trois blocs propres à chaque type d'écran.&lt;br/&gt;&lt;br/&gt;Au final, ce site fonctionne aussi bien sur un petit écran qu'un grand, en passant par un moyen.&lt;br/&gt;&lt;br/&gt;Très content :))&lt;br/&gt;&lt;br/&gt;T.&lt;p&gt;Publié le 24.08.2011 &amp;agrave; 21:35, dans &lt;a href="http://blog.tengu.ch/blog/category/6"&gt;News&lt;/a&gt;&lt;/p&gt;</description><pubDate>Wed, 24 Aug 2011 21:35:54 -0000</pubDate></item><item><title>Nouveau design</title><link>http://blog.tengu.ch/blog/post/233</link><description>Comme dit sur twitter, je me suis amusé avec GIMP pour faire un nouveau design pour mon blog.&lt;br/&gt;C'est maintenant chose faite, et appliqué. Le blog s'en retrouve quelque peu allégé et simplifié, avec la disparition du menu de droite, ainsi que de pas mal de petch encombrant. Place au contenu!&lt;br/&gt;&lt;br/&gt;Pour info:&lt;br/&gt;- le blog a été testé sur firefox5 et chromium (dernière version dispo dans archlinux)&lt;br/&gt;- les autres navigateurs, bah rien à faire d'eux. zont qu'à être à jour dans le support CSS3.&lt;br/&gt;&lt;br/&gt;Je fournirai le XCF du design dans un petit moment (le lien sera en commentaire) le temps de le nettoyer un peu. Mais en gros, y a rien de compliqué à part la planète, qui a été faite en suivant ce &lt;a href="http://mygimptutorial.com/the-ultimate-gimp-planet-tutorial"&gt;tutoriel&lt;/a&gt; (très bon site en passant).&lt;br/&gt;&lt;br/&gt;Je sais pas combien de temps ce design restera - peut-être que je prendrai le temps de refaire un truc un de ces quatres...&lt;br/&gt;&lt;br/&gt;++&lt;br/&gt;&lt;br/&gt;T.&lt;p&gt;Publié le 21.08.2011 &amp;agrave; 13:07, dans &lt;a href="http://blog.tengu.ch/blog/category/6"&gt;News&lt;/a&gt;&lt;/p&gt;</description><pubDate>Sun, 21 Aug 2011 13:07:02 -0000</pubDate></item><item><title>Santé Suisse - la réponse</title><link>http://blog.tengu.ch/blog/post/232</link><description>Je viens de recevoir une réponse de Santé Suisse à mes deux mails. Comme promis, voici la reproduction de leurs réponses - Je ne vais pas la commenter maintenant, il me faut faire quelques recherches. Tout au plus ajouterai-je quelques liens de ci de là pour agrémenter tout cela.&lt;br/&gt;&lt;br/&gt;Mes citations seront les bloques encadrés par trois asterisques.&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;Monsieur,&lt;br/&gt;&lt;br/&gt;Merci de vos questions, également posées par l'intermédiaire d'une autre adresse mail.&lt;br/&gt;&lt;br/&gt;Voici nos réponses (si vous les publiez, merci de m'en avertir avant):&lt;br/&gt;&lt;br/&gt;&amp;gt;***&lt;br/&gt;quoi qu'on en dise, les assurances maladies sont des entreprises _privées_ jouant sur deux tableaux:&lt;br/&gt;- assurance obligatoire selon la LAMAL (qui est un service public - mais soumis au droit des entreprises privées (cherchez l'erreur) )&lt;br/&gt;***&amp;lt;&lt;br/&gt;&lt;br/&gt;Les assurances-maladie sont certes des sociétés de droit privé: elles assument toutefois un mandat d'intérêt public, soumis à  une régulation, à une autorisation de pratiquer et au contrôle du Département fédéral de l'Intéreur (ressort de l'Office fédéral de la santé publique OFSP, voir art. 13 de la Loi sur l'assurance-maladie, LaMal). Par ailleurs, les compagnies d'assurance-maladie ne peuvent pas faire de bénéfices dans le cadre de l'assurance-maladie sociale (activité non-lucrative, art. 12 LaMal).&lt;br/&gt;&lt;br/&gt;Le domaine de l'assurance de base et celui de l'assurance complémentaire sont clairement séparés, tant du point de vue  de la gestion (art. 13, al. 2a LaMal) que du point de vue des dispositions légales encadrant ces activités (Loi fédérale sur le contrat d'assurance LCA pour le domaine des assurances complémentaires, non obligatoires, LaMal pour l'assurance sociale obligatoire). Le législateur a par ailleurs accepté que les assureurs-maladie puissent être actifs dans ces deux domaines d'assurance (art. 12 al.2 LaMal). &lt;br/&gt;&lt;br/&gt;Je vous rappelle également que la LaMal a été acceptée en votation populaire. &lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;Note: voir émission de Temps Présent &lt;a href="http://www.tsr.ch/emissions/temps-present/sante/1726679-assurance-maladie-des-comptes-a-regler.html"&gt;http://www.tsr.ch/emissions/temps-present/sante/1726679-assurance-maladie-des-comptes-a-regler.html&lt;/a&gt; pour parler de la séparation claire au niveau de la gestion...&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;&amp;gt;***&lt;br/&gt;- assurances complémentaires, accordées à la tête du client (ou, en fait, son état de santé... Autant dire que le dossier médical est "légèrement" intéressant dans ce genre de cas, ne me dîtes surtout pas "non-non"), appelée à faire du profit de part sa nature même.&lt;br/&gt;***&amp;lt;&lt;br/&gt;&lt;br/&gt;Dans le domaine de l'assurance obligatoire, l'assureur est obligé d'accepter toute personne (art. 4 LaMal) qui en fait la demande, l'assureur ne peut pas pratiquer de sélection des assurés. Par ailleurs, chaque assuré peut choisir lui-même son assureur, en fonction de critères qui lui sont personnels. &lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;Note: voir la même émission de Temps Présent concernant l'absence de tri des clients...&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;Les assurances complémentaires ne sont, elles, pas obligatoires: en contracter une est donc laissé au libre choix de la personne qui signe en toute connaissance de cause un contrat de droit privé avec l'assurance qu'il ou elle choisit. De même, chaque compagnie d'assurance est libre de proposer une palette de prestations qu'elle assume dans le cadre d'un contrat que le client choisit (ou non!) de signer. A chacune et chacun de comparer les offres et de s'informer sur les modalités de remboursement des prestations assurées, qui font l'objet du contrat.&lt;br/&gt;&lt;br/&gt;Lorsque vous contractez une assurance complémentaire non obligatoire, vous acceptez de fait de remplir un questionnaire détaillé concernant votre état de santé (comme c'est aussi le cas pour l'assurance-vie par exemple). &lt;br/&gt;&lt;br/&gt;&amp;gt;***&lt;br/&gt;Au vu des problèmes qu'ont déjà les auditeurs des comptes des assurances maladies pour déterminer ce qui fait partie de la LAMAL ou du privé, je n'ose pas imaginer les problèmes qui pourraient être rencontrés si, par hasard, un auditeur voulait s'assurer que les dossiers médicaux des patients restent là où ils doivent, c'est à dire dans la partie LAMAL de l'assureur, sans aucune fuite dans la partie privée.&lt;br/&gt;Le conflit d'intérêt est, à mon sens, beaucoup trop grand pour permettre d'accéder à ces données.&lt;br/&gt;***&amp;lt;&lt;br/&gt;&lt;br/&gt;C'est la Confédération qui détermine quelles prestations sont du ressort de l'assurance de base: les prestations sont prescrites par la Loi et sont les mêmes pour tous les assureurs-maladie et pour tous les assurés, dans le domaine réglementé par la LaMal. L'assureur-maladie ne peut pas exclure une personne dont les frais médicaux seraient élevés (obligation d'assurance). Si cette même personne bénéficie déjà d'une assurance complémentaire chez lui, il connaît son état de santé sur la base des informations que la personne lui a elle-même fournies. A ce titre, le conflit d'intérêt me semble très limité, d'autant que personne n'est contraint à contracter une assurance complémentaire ou de le faire auprès du même assureur.&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;Note: heu - donc il y a communication entre la complémentaire (privée) et la LaMal... je note pour la suite :)&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;&amp;gt;***&lt;br/&gt;Que pouvez-vous me dire pour me rassurer sur ce point? Pourrais-je passer chez un assureur pour voir comment ils gèrent les dossiers ? Les assureurs sont certes des entreprises privées, mais fournissant un service public. Qui dit service public dit transparence.&lt;br/&gt;***&amp;lt;&lt;br/&gt;&lt;br/&gt;Je vous signale un article sur le thème de la protection des données paru dans notre publication Info santésuisse 2/11, décrivant les mesures prises concernant la protection des données par l'assureur Visana: &lt;a href="https://www.santesuisse.ch/icms/pubinhalte/uploads/fr_seiten_6_8_iss_nr_02_2011_fr-3.pdf"&gt;https://www.santesuisse.ch/icms/pubinhalte/uploads/fr_seiten_6_8_iss_nr_02_2011_fr-3.pdf&lt;/a&gt; &lt;br/&gt;&lt;br/&gt;La protection des données est par ailleurs réglementée dans la Loi. Concernant les nouvelles modalités du financement hospitalier, un article de la LaMal (art. 84 b) entrera en vigueur en même temps que le nouveau financement (1.1.2012) hospitalier (par forfait par cas), article qui prévoit que les assureurs  "doivent pour la protection des données relatives au diagnostic mettre en place un règlement sur le traitement des données, le soumettre au conseiller à la protection des données et le publier".&lt;br/&gt;&lt;br/&gt;&amp;gt;***&lt;br/&gt;Concernant la 2e question (secret médical):&lt;br/&gt;pourrez-vous assurer que les seules personnes habilitées à accéder aux &lt;br/&gt;dossiers médicaux sont soumises au secret professionnel (et donc&lt;br/&gt;médical) ?&lt;br/&gt;***&amp;lt;&lt;br/&gt;&lt;br/&gt;L'article 33 LPGA (Loi fédérale du 6 octobre 2000 sur la partie générale du droit des assurances sociales) précise que toutes les personnes impliquées dans le contrôle ou la surveillance des dispositions légales sont tenues au secret à l'égard de tiers. Cette disposition concerne donc aussi les assureurs, dont les collaborateurs sont soumis au au secret de fonction. Toutes les caisses-maladie réglementent l'accès aux données concernant les assurés aux collaborateurs qui en ont besoin pour remplir leur tâches.&lt;br/&gt;&lt;br/&gt;L'assureur ne dispose pas du dossier médical (dans le langage courant, l'expression "dossier médical" fait référence au dossier que tient le médecin); l'assureur dispose des informations nécessaires et suffisantes au contrôle des prestations (donc des factures), et des coûts (qui influenceront les primes que vous payerez l'année suivante). Contrôler les factures fait partie des obligations légales de l'assureur (art. 84 LaMal).&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;Note: oui.... cf Temps Présent &lt;a href="http://www.tsr.ch/emissions/temps-present/sante/1319628-les-assureurs-a-l-assaut-du-secret-medical.html"&gt;http://www.tsr.ch/emissions/temps-present/sante/1319628-les-assureurs-a-l-assaut-du-secret-medical.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;&amp;gt;***&lt;br/&gt;Pour finir, pouvons-nous, en tant que personnes privées, interdire à l'hôpital de transmettre notre dossier médical à notre assureur ? Après tout, ce sont des données privées, et même extrêmement privées.&lt;br/&gt;Si oui, comment, dans quel délai, sous quelles conditions ?&lt;br/&gt;***&amp;lt;&lt;br/&gt;&lt;br/&gt;Les nouvelles modalités du financement hospitalier qui entreront en vigueur au 1.1.2012 prévoient que le patient hospitalisé puisse faire la demande que les informations concernant son diagnostic nécessaires au contrôle de factures soient transmises au médecin conseil de son assurance-maladie. En cas de conflit avec l'assurance-maladie, les assurés peuvent également recourir aux services de l'ombudsman de l'assurance-maladie sociale. Ses services sont gratuits www.ombudsman-kv.ch.&lt;br/&gt;&lt;br/&gt;&amp;gt;***&lt;br/&gt;Il va sans dire que, pour ma part, je ne permettrai jamais le transfert de mon dossier médical tant que les assurances ne sont pas soumises à la loi sur la transparence de manière légale ou, mieux, transformées en institution public (fédéral ou cantonal, c'est égal - tant que c'est _public_ (et donc soumis aux lois touchant ces institutions) ).&lt;br/&gt;&lt;br/&gt;Je ne pense pas être la seule personne inquiète pour ses données personnelles (voire intimes).&lt;br/&gt;Je ne pense pas être la seule personne ne désirant pas que des entreprises privées, adeptes de techniques mercantiles viles, entrent en possession de données de cette nature. En tous cas, tant que les assurances maladies ne font pas preuve d'une réelle transparence dans leurs activités touchant le service public.&lt;br/&gt;***&amp;lt;&lt;br/&gt;&lt;br/&gt;Les assureurs sont tenus par la Loi à faire état de leur gestion y compris de leurs comptes annuels (LPGA, art. 77); s'ils ne respectent pas les dispositions légales, la Confédération peut leur retirer l'autorisation de pratiquer (LaMal, art. 13). Les assureurs informent régulièrement leurs assurés (site Internet, journaux, courriers), ils ont par ailleurs signé un accord de branche en avril 2011 limitant le démarchage téléphonique et les activités incontrôlées des courtiers, ils prennent donc beaucoup de mesures pour assurer la transparence envers les assurés. Par ailleurs, chaque personne a tout  pouvoir de choisir elle-même auprès de quel assureur elle souhaite s'assurer pour les prestations obligatoires de l'assurance-maladie.&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;Note: je me demande qui croire entre Temps Présent et l'organisation faîtière des assureurs suisses... &lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;Meilleurs messages&lt;br/&gt;&amp;lt;mon interlocutrice&amp;gt;&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Longue réponse donc, parsemée de références à la Loi (que je vais aller lire de ce pas).&lt;br/&gt;&lt;br/&gt;J'ai directement répondu:&lt;br/&gt;&lt;blockquote&gt;Bonjour,&lt;br/&gt;&lt;br/&gt;Merci pour vos réponses, que je vais publier comme annoncé sur mon blog sous cette URL:&lt;br/&gt;&lt;a href="https://blog.tengu.ch/blog/bytag/santesuisse"&gt;https://blog.tengu.ch/blog/bytag/santesuisse&lt;/a&gt;&lt;br/&gt;votre réponse s'affichera en bas, à la suite des emails précédents.&lt;br/&gt;Je me permettrai de faire 1-2 commentaires, principalement des références à des textes/émissions publiques, directement intégrés (de manière visible) dans vos réponses. Rien d'injurieux/insultant, dénigrant ou autres, je vous rassure.&lt;br/&gt;&lt;br/&gt;Pour information, je n'ai envoyé des emails que depuis cette adresse-ci - il est fortement possible (voire probable vu le sujet) que d'autres personnes se soient senties concernées et aient voulu envoyer soit le même mail, soit un équivalent pour montrer que je ne suis pas un cas isolé. J'avoue avoir un peu fait de bruit sur le Net en ce sens, de manière à avoir un certain poids face à votre groupe.&lt;br/&gt;&lt;br/&gt;Je me permettrai de vous faire un autre mail, avec sans doute de nouvelles questions et des remarques d'ici quelques jours, le temps de lire, faire quelques recherches et comparaisons, ainsi que de trouver quelques exemples qui mettent certains articles de loi à mal (qui sont assez courant tant sur le net que dans les émissions de la TSR - comme celles que je vous ai transmises dans mes deux précédents emails).&lt;br/&gt;&lt;br/&gt;Encore merci pour vos réponses.&lt;br/&gt;&lt;br/&gt;Cordialement,&lt;br/&gt;&lt;br/&gt;&amp;lt;mon nom à moi&amp;gt;&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br/&gt;Comme mis dans ma réponse, je vais aller compulser quelques bouquins, quelques émissions, quelques articles et prendre contact avec 1-2 personnes... et faire un nouveau mail.&lt;br/&gt;&lt;br/&gt;Concernant l'accord entre Santé Suisse et H+, il a &lt;a class="mytooltip" href="/blog/post/231" title="15.08.2011"&gt;été rejeté&lt;/a&gt; par une bonne majorité des hôpitaux... mais ce n'est que partie remise.&lt;br/&gt;&lt;br/&gt;A suivre donc.&lt;br/&gt;&lt;br/&gt;++&lt;br/&gt;&lt;br/&gt;T.&lt;p&gt;Publié le 19.08.2011 &amp;agrave; 17:46, dans &lt;a href="http://blog.tengu.ch/blog/category/18"&gt;Suisse&lt;/a&gt;&lt;/p&gt;</description><pubDate>Fri, 19 Aug 2011 17:46:54 -0000</pubDate></item><item><title>Accord Santé Suisse / H+ rejeté</title><link>http://blog.tengu.ch/blog/post/231</link><description>Bonne nouvelle pour le secret médical: 3/4 des hôpitaux ont rejeté l'accord entre H+ et Santé Suisse.&lt;br/&gt;Pour rappel, cet accord aurait permis aux assureurs d'accéder d'office à TOUT le dossier médical, au lieu de devoir pointer les factures suspectes.&lt;br/&gt;&lt;br/&gt;Seulement maintenant, au lieu de devoir convaincre les quelques hôpitaux de Suisse, Santé Suisse et H+ n'ont "que" le Conseil Fédéral à rallier à leur cause.&lt;br/&gt;Et pour ce faire, les assureurs sortent toujours le même motif: si on ne leur donne pas tous les dossiers des patients, ils ne pourront pas faire des millions d'économie, et donc ça va se répercuter sur les primes des assurés.&lt;br/&gt;&lt;br/&gt;Honnêtement, j'ai beaucoup de peine à croire que le transfert des dossiers médicaux fasse une baisse des primes (ou au moins une stagnation).&lt;br/&gt;A mon sens, la seule vraie raison de cette volonté d'accéder à ces dossier, c'est uniquement pour permettre aux assurances de faire le tri entre les "bons" et les "mauvais" risques.&lt;br/&gt;&lt;br/&gt;Cette pratique, illégale dans le cadre de l'assurance de base (LAMAL), n'est pas pour autant écartée de la conduite des assurances maladies: dossiers de candidature oubliés, perdus, appels jamais suivis, questions délicates touchant directement la vie privée, j'en passe et des meilleures.&lt;br/&gt;&lt;br/&gt;Il ne faut pas non plus oublier un petit détail:&lt;br/&gt;les assureurs sont des entreprises privées avant tout, pouvant fournir deux types de services, l'un public avec interdiction de faire du bénéfice (on y croit - comptes flous au possibles), et le second privé via les assurances complémentaires, avec lesquelles ils peuvent faire du bénéfice, et surtout trier les patients en fonctions de leur état de santé au moment de souscrire à une complémentaire.&lt;br/&gt;&lt;br/&gt;Il va sans dite que la possession du dossier médical complet du patient leur permettra de faire un tri très fin - même si, officiellement, le dossier médical n'est pas censé quitter le bureau du médecin conseil de l'assurance (Médecin conseil payé par l'assurance, soit dit en passant. Conflit d'intérêt ? naaaan, jamais).&lt;br/&gt;&lt;br/&gt;Bref. Au vu de la réaction de Didier Burkhalter, et de ce qu'il a déjà fait par le passé (suppression du remboursement des lunettes, par exemple), j'ai comme la nette impression qu'on va se ramasser cet accord tel quel.&lt;br/&gt;&lt;br/&gt;si tel est le cas, j'espère sincèrement qu'un référendum prendra place illico presto, et qu'il sera mené tambours battants par tous les partis (surtout le Parti Pirate, bien entendu).&lt;br/&gt;&lt;br/&gt;La protection de notre vie privée ne doit jamais être sacrifié sur l'autel des économistes, des actionnaires et des loups de tous poils. Mon dossier médical n'appartient qu'à mon médecin personnel et moi-même - et il n'est pas question qu'un """médecin conseil""" en carton entre en sa possession pour mieux "l'égarer" dans les couloirs des assureurs.&lt;br/&gt;&lt;br/&gt;L'heure est grave, il faut réagir, et montrer au Conseil Fédéral que nous ne voulons pas de cet accord, et que, si augmentation de primes il y a, nous voulons des comptes - et des comptes clairs, lisibles, accessibles par toutes et tous, au nom de la transparence.&lt;br/&gt;&lt;br/&gt;Et si vraiment nous nous faisons avoir avec cet accord, je me ferai un plaisir de rappeler que la transparence va dans les deux sens à mon assureur: il voit mon dossier médical ? Bah je veux voir ses comptes. Point final&lt;br/&gt;&lt;br/&gt;A vos claviers, téléphones et autres, faut secouer un peu le cocotier maintenant ;)&lt;br/&gt;&lt;br/&gt;++&lt;br/&gt;&lt;br/&gt;T.&lt;br/&gt;&lt;br/&gt;Sources:&lt;br/&gt;&lt;a href="http://www.tsr.ch/video/info/journal-19h30/#id=3333301"&gt;http://www.tsr.ch/video/info/journal-19h30/#id=3333301&lt;/a&gt;&lt;br/&gt;&lt;a href="http://www.tsr.ch/info/suisse/3332660-financement-hospitalier-a-burkhalter-de-trancher.html"&gt;http://www.tsr.ch/info/suisse/3332660-financement-hospitalier-a-burkhalter-de-trancher.html&lt;/a&gt;&lt;p&gt;Publié le 15.08.2011 &amp;agrave; 21:08, dans &lt;a href="http://blog.tengu.ch/blog/category/18"&gt;Suisse&lt;/a&gt;&lt;/p&gt;</description><pubDate>Mon, 15 Aug 2011 21:08:20 -0000</pubDate></item><item><title>SantéSuisse - nouvelle couche</title><link>http://blog.tengu.ch/blog/post/230</link><description>Je viens d'envoyer ce petit email à Santé Suisse et au DFI après avoir un peu fouillé le net:&lt;br/&gt;&lt;blockquote&gt;Bonjour,&lt;br/&gt;&lt;br/&gt;Je me permets de "remettre une couche" concernant cet accord. Après quelques recherches et contacts, je suis arrivé à cette émission de Temps Présent, datant de 2006, et présentant déjà des problèmes de confidentialité au sein d'assurances:&lt;br/&gt;&lt;a href="http://www.tsr.ch/emissions/temps-present/sante/1319628-les-assureurs-a-l-assaut-du-secret-medical.html"&gt;http://www.tsr.ch/emissions/temps-present/sante/1319628-les-assureurs-a-l-assaut-du-secret-medical.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Suite à cette émission, mettant en cause le médecin-conseil de l'assurance, je me permets de remettre en doute toute la chaîne de contrôle des factures.&lt;br/&gt;&lt;br/&gt;De plus, après avoir fouillé Internet, je suis tombé sur ce document PDF (www.privatim.ch/privatim_SwissDRG_2011_V1_f.pdf) qui me semble assez intéressant.&lt;br/&gt;Il précise, entre autre, que les assureurs n'ont besoin des dossiers médicaux (et encore, partiels) que dans deux cas:&lt;br/&gt;- doute quant à la facturation (anomalie, décrite page 4)&lt;br/&gt;- contrôles ponctuels pour s'assurer que les code sont appliqués de manière correcte (point décrit page 5).&lt;br/&gt;Il semblerait que les assureurs veulent s'appuyer sur ce dernier point pour demander les dossiers de manière systématique - or, toujours d'après ce document, les contrôles portent sur 5-10% de ces dossiers.&lt;br/&gt;Quid des 90-95% restant ?&lt;br/&gt;&lt;br/&gt;Le papier expose aussi un problème pouvant être mis en avant par les assureurs pour accéder à tous les dossiers """pour contrôle""": l'upcoding, qui consistent à gonfler les forfaits au maximum (avec ou sans intention de fraude). L'étude révèle que ce problème n'est que théorique, et n'a été que rarement observé en Allemagne, pays voisin pratiquant le forfait par cas.&lt;br/&gt;&lt;br/&gt;Le papier rappelle aussi le principe de proportionnalité, indiquant que trop demander (et donc transmettre) de données est contraire à ce principe. Les assureurs n'ont besoin, dans 90% des cas, que de données "vagues" n'incluant en aucun cas les diagnostiques principaux et complémentaires.&lt;br/&gt;&lt;br/&gt;Je voudrais attirer votre attention sur les exigences de Privatim, à savoir, entre autre, le respect du principe de proportionnalité (donc ne pas transmettre plus que nécessaire), l'intégration de préposés à la protection des données pour l'élaboration des conventions tarifaires, et de contrôler la conformité des conventions avec le droit de la protection des données...&lt;br/&gt;&lt;br/&gt;Au détour du Net, j'ai découvert que la Fédération des Médecins Suisses (FMH) s'oppose à votre accord avec H+:&lt;br/&gt;&lt;a href="http://www.fmh.ch/files/pdf6/FMH_SwissDRG_Argumente_gegen_Vereinbarung_von_H_und_santesuisse_F.pdf"&gt;http://www.fmh.ch/files/pdf6/FMH_SwissDRG_Argumente_gegen_Vereinbarung_von_H_und_santesuisse_F.pdf&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Leur argumentaire reprend pas mal ce qui a été développé ci-dessus, et donc je ne vais pas le résumer à nouveau...&lt;br/&gt;&lt;br/&gt;Suite à tout cela, je souhaiterais avoir des réponses détaillées de votre part sur les sujets suivants:&lt;br/&gt;- que pouvez-vous dire à propos de l'émission de Temps Présent, qui date un peu certes, mais je n'ai pas pu trouver d'information quant à l'état de ces fuites à l'heure actuelle ?&lt;br/&gt;- que pouvez-vous dire aux clients des assureurs (et des hôpitaux) pour les rassurer quant à la protection de leurs dossiers médicaux ?&lt;br/&gt;- pensez-vous que l'accord entre vous et H+ respecte réellement le principe de proportionnalité décrit par Privatim ?&lt;br/&gt;- d'après FMH et Privatim, les assureurs comptent garder les dossiers médicaux transmis de manière durable. Pouvez-vous me dire pourquoi? Quelles sont les garanties que ces données sont réellement protégées, et accessibles uniquement par le SMC ?&lt;br/&gt;- Pensez-vous que le fait que le SMC soit payé par les assureurs n'interfère pas avec son jugement et sa capacité à filtrer correctement les données transmises à l'administration de ces mêmes assureurs ?&lt;br/&gt;&lt;br/&gt;De manière générale, que pouvez-vous opposer aux arguments de FMH, qui me semble remplis de bon sens ?&lt;br/&gt;&lt;br/&gt;Cet email est à relier avec mon précédent (daté du 28.07.2011), et s'additionne à lui - je souhaite vivement avoir des réponses à toutes mes questions, et je puis vous affirmer que je ne suis de loin pas le seul être très intéressé par le sujet...&lt;br/&gt;&lt;br/&gt;Merci d'avance pour vos réponses, qui, comme déjà mentionné dans mon premier email, seront publiées dans un souci de vraie transparence et d'information à l'adresse suivante: &lt;a href="https://blog.tengu.ch/blog/bytag/santesuisse"&gt;https://blog.tengu.ch/blog/bytag/santesuisse&lt;/a&gt; .&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Cordialement,&lt;br/&gt;&lt;br/&gt;C. Jeanneret, un citoyen inquiet pour ses données personnelles.&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br/&gt;J'ai encore quelques liens en réserve qu'il me faut lire et analyser pour voir s'il y a du contenu nouveau à employer dans toute cette affaire.&lt;br/&gt;&lt;br/&gt;Je me réjouis vraiment d'avoir des réponses, histoire de pouvoir analyser tout cela.&lt;br/&gt;&lt;br/&gt;Pour rappel, si vous vous sentez concernés par ce problème, vous êtes libres de reprendre ces contenus, de les modifier/compléter et de poser vous-même des questions à Santé Suisse, au DFI ou autres.&lt;br/&gt;Et si vous avez des réponses, merci de me les remonter sur santesuissetenguch - adresse email spécialement créée pour l'occasion.&lt;br/&gt;&lt;br/&gt;++&lt;br/&gt;&lt;br/&gt;T.&lt;p&gt;Publié le 09.08.2011 &amp;agrave; 22:54, dans &lt;a href="http://blog.tengu.ch/blog/category/18"&gt;Suisse&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 09 Aug 2011 22:54:31 -0000</pubDate></item><item><title>Un coup de boost</title><link>http://blog.tengu.ch/blog/post/229</link><description>Mon blog a eu quelques petits hoquets ces dernières heures - c'est normal.&lt;br/&gt;Je me suis amusé à mettre en place diverses choses, dont &lt;a href="http://memcached.org/"&gt;memcached&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;J'ai aussi pris un peu de temps pour mettre en place la "minification" de mes divers javascripts et CSS, ce qui permet d'accélérer un peu le temps de chargement, et de minimiser la taille des fichiers.&lt;br/&gt;&lt;br/&gt;Au final, le site devrait aller un poil plus vite, modulo la durée de vie du cache (quelques heures).&lt;br/&gt;&lt;br/&gt;Voici comment j'ai pu faire tout ceci:&lt;br/&gt;&lt;br/&gt;&lt;h3&gt;memcached&lt;/h3&gt;&lt;br/&gt;J'ai commencé par vouloir employer le décorateur @beaker_cache intégré à Pylons. Mal m'en a pris, les clefs générées dans le cache sont tout bonnement imbuvables, et je n'ai pas trouvé de moyen de sortir les contenus par nginx (ce qui permet donc de passer outre la lenteur de pylons).&lt;br/&gt;Il m'a donc fallu mettre en place une gestion du cache personnalisée. J'ai créé un nouveau fichier lib/cache.py:&lt;br/&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span class="c"&gt;#-*- coding:utf-8 -*-&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;memcache&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Cache&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;object&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; 
    &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;memcache&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; 
    &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;timeout&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt; 
    &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;prefix&lt;/span&gt; 

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; 
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; 
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
      &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt; 
    &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;revoke&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;decorator&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;app_globals&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;pylons.configuration&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;PylonsConfig&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;cache&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  &lt;span class="n"&gt;config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;PylonsConfig&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="n"&gt;g&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;app_globals&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Globals&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;wrapper&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;func&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; 
    &lt;span class="n"&gt;request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_py_object&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt; 
    &lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
    &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path_qs&lt;/span&gt; 
    &lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cache&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;utf-8&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;content&lt;/span&gt; 
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;decorator&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;decorator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;wrapper&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;br/&gt;&lt;br/&gt;En gros, je crée une classe "Cache" et un décorateur me permettant d'injecter mes contenus dans le cache - en l’occurrence memcached. La clef est prédictible et simple: le chemin appelé pour accéder au contrôleur, avec les arguments etc.&lt;br/&gt;&lt;br/&gt;Ensuite j'ai dû instancier la classe dans lib/app_globals.py:&lt;br/&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;blogger.lib.cache&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Cache&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Globals&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;object&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cache&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Cache&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;127.0.0.1:11211&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;br/&gt;&lt;br/&gt;Après, bin y a plus qu'à employer le décorateur dans les contrôleurs:&lt;br/&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;blogger.lib.cache&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;cache&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;BlogController&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BaseController&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  &lt;span class="nd"&gt;@cache&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;600&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c"&gt;# display a post, with comments&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;post&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Session&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Content&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;one&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="n"&gt;redirect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;controller&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;blog&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;index&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;
    &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;comments&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Session&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Comment&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Comment&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;commentID&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;order_by&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Comment&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;asc&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;all&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;/blog/&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s"&gt;/post.html&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;br/&gt;&lt;br/&gt;Easy ;).&lt;br/&gt;&lt;br/&gt;Vient ensuite la partie fun:&lt;br/&gt;dans l'action "post", il affiche les commentaires. Et le formulaire pour en ajouter, avec mon fameux captcha. Ooops, lui, il doit être dynamique !&lt;br/&gt;&lt;br/&gt;C'est là que le SSI (Server-Side Inclusion) intervient :).&lt;br/&gt;&lt;br/&gt;J'ai donc créé un contrôleur appelé "ssi" de manière à savoir à quoi il sert. Dedans, y a les diverses actions utiles à regénérer le contenu réellement dynamique. Dans mes templates mako, j'ai simplement mis le code permettant à nginx de faire les appels en interne:&lt;br/&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;br/&gt;&amp;lt;!--# include file="/ssi/formular/${c.post.id}" --&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;Et Voilà, le formulaire est à nouveau dynamique ! Top-moumoute quoi.&lt;br/&gt;&lt;br/&gt;Maintenant, reste la configuration nginx. Là, je me suis un peu explosé les dents, principalement à cause de memcached, vu qu'au début je ne savais pas quelles étaient les clefs employées. Et je suis tombé sur &lt;a href="http://www.darkcoding.net/software/memcached-list-all-keys/"&gt;ce post&lt;/a&gt;. Et j'ai vu la Lumière.&lt;br/&gt;De là, tout a été rapide, et j'ai obtenu cette configuration pour nginx:&lt;br/&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;# ..... blabla etc&lt;/span&gt;
  &lt;span class="n"&gt;location&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ssi&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;proxy_pass&lt;/span&gt;        &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="n"&gt;http:&lt;/span&gt;&lt;span class="sr"&gt;//&lt;/span&gt;&lt;span class="n"&gt;localhost:9090&lt;/span&gt;&lt;span class="sr"&gt;/ssi;[/&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;proxy_set_header&lt;/span&gt;  &lt;span class="n"&gt;Host&lt;/span&gt; &lt;span class="nv"&gt;$host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;proxy_set_header&lt;/span&gt;  &lt;span class="n"&gt;SSL&lt;/span&gt; &lt;span class="n"&gt;yes&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;add_header&lt;/span&gt; &lt;span class="n"&gt;X&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Memcached&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;missed&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="n"&gt;location&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;proxy_set_header&lt;/span&gt;  &lt;span class="n"&gt;Host&lt;/span&gt; &lt;span class="nv"&gt;$host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;proxy_set_header&lt;/span&gt;  &lt;span class="n"&gt;SSL&lt;/span&gt; &lt;span class="n"&gt;yes&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;ssi&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$request_method&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;POST&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
      &lt;span class="n"&gt;proxy_pass&lt;/span&gt;        &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="n"&gt;http:&lt;/span&gt;&lt;span class="sr"&gt;//&lt;/span&gt;&lt;span class="n"&gt;localhost:9090&lt;/span&gt;&lt;span class="p"&gt;;[&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;$memcached_key&lt;/span&gt; &lt;span class="nv"&gt;$uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;memcached_pass&lt;/span&gt; &lt;span class="mf"&gt;127.0.0.1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;11211&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;default_type&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;html&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;error_page&lt;/span&gt; &lt;span class="mi"&gt;404&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;@pylons&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="n"&gt;location&lt;/span&gt; &lt;span class="nv"&gt;@pylons&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;ssi&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;proxy_pass&lt;/span&gt;        &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="n"&gt;http:&lt;/span&gt;&lt;span class="sr"&gt;//&lt;/span&gt;&lt;span class="n"&gt;localhost:9090&lt;/span&gt;&lt;span class="p"&gt;;[&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;proxy_set_header&lt;/span&gt;  &lt;span class="n"&gt;Host&lt;/span&gt; &lt;span class="nv"&gt;$host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;proxy_set_header&lt;/span&gt;  &lt;span class="n"&gt;SSL&lt;/span&gt; &lt;span class="n"&gt;yes&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;add_header&lt;/span&gt; &lt;span class="n"&gt;X&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Memcached&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;missed&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;br/&gt;&lt;br/&gt;Que de l'amour, cette configuration ;).&lt;br/&gt;&lt;br/&gt;Bref. Memcached est mis en place, marche... mon serveur ronronne, et tout va bien.&lt;br/&gt;&lt;br/&gt;&lt;h3&gt;Mini-lui&lt;/h3&gt;&lt;br/&gt;Vient ensuite la partie "mes css/js ont des espaces vides, des retours à la ligne inutiles etc... Mais si je les vire, je pourrai plus trop les éditer". Que faire ??&lt;br/&gt;Bah simple:&lt;br/&gt;on va planter un peu de Perl dans la config nginx :)&lt;br/&gt;&lt;br/&gt;Pour se faire, il faut ajouter le support Perl dans nginx - je vous laisse vous référer à la doc.&lt;br/&gt;Ensuite, dans la partie http, j'ai ajouté ceci:&lt;br/&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span class="n"&gt;http&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;# blablab...&lt;/span&gt;
  &lt;span class="n"&gt;perl_modules&lt;/span&gt; &lt;span class="n"&gt;perl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="n"&gt;perl_require&lt;/span&gt; &lt;span class="n"&gt;JSMinify&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="n"&gt;perl_require&lt;/span&gt; &lt;span class="n"&gt;CSSMinify&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;br/&gt;&lt;br/&gt;et dans mon vhost:&lt;br/&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;# blabla..&lt;/span&gt;
  &lt;span class="n"&gt;location&lt;/span&gt; &lt;span class="o"&gt;~*&lt;/span&gt; &lt;span class="o"&gt;\.&lt;/span&gt;&lt;span class="n"&gt;css&lt;/span&gt;&lt;span class="nv"&gt;$&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;root&lt;/span&gt;              &lt;span class="sr"&gt;/var/&lt;/span&gt;&lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="sr"&gt;/vhosts/&lt;/span&gt;&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tengu&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ch&lt;/span&gt;&lt;span class="sr"&gt;/blogger/&lt;/span&gt;&lt;span class="n"&gt;blogger&lt;/span&gt;&lt;span class="sr"&gt;/public/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;expires&lt;/span&gt;           &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;add_header&lt;/span&gt;        &lt;span class="n"&gt;Cache&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Control&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;30d, must-revalidate&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;try_files&lt;/span&gt; &lt;span class="nv"&gt;$uri&lt;/span&gt; &lt;span class="nv"&gt;@miniCSS&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="n"&gt;location&lt;/span&gt; &lt;span class="nv"&gt;@miniCSS&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;perl&lt;/span&gt; &lt;span class="nn"&gt;CSSMinify::&lt;/span&gt;&lt;span class="n"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="n"&gt;location&lt;/span&gt; &lt;span class="o"&gt;~*&lt;/span&gt; &lt;span class="o"&gt;\.&lt;/span&gt;&lt;span class="n"&gt;js&lt;/span&gt;&lt;span class="nv"&gt;$&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;root&lt;/span&gt;              &lt;span class="sr"&gt;/var/&lt;/span&gt;&lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="sr"&gt;/vhosts/&lt;/span&gt;&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tengu&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ch&lt;/span&gt;&lt;span class="sr"&gt;/blogger/&lt;/span&gt;&lt;span class="n"&gt;blogger&lt;/span&gt;&lt;span class="sr"&gt;/public/&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;expires&lt;/span&gt;           &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;add_header&lt;/span&gt;        &lt;span class="n"&gt;Cache&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Control&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;30d, must-revalidate&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;try_files&lt;/span&gt; &lt;span class="nv"&gt;$uri&lt;/span&gt; &lt;span class="nv"&gt;@miniJS&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="n"&gt;location&lt;/span&gt; &lt;span class="nv"&gt;@miniJS&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;perl&lt;/span&gt; &lt;span class="nn"&gt;JSMinify::&lt;/span&gt;&lt;span class="n"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="c1"&gt;# blabla&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;br/&gt;&lt;br/&gt;J'vais être gentil et vous filer le code des deux minifiers - il est vraiment simple:&lt;br/&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span class="nb"&gt;package&lt;/span&gt; &lt;span class="n"&gt;CSSMinify&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="n"&gt;nginx&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;CSS::&lt;/span&gt;&lt;span class="n"&gt;Minifier&lt;/span&gt; &lt;span class="sx"&gt;qw(minify)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;sub &lt;/span&gt;&lt;span class="nf"&gt;handler&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$r&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;shift&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$cache_dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;/tmp&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;# Cache directory where minified file will be kept&lt;/span&gt;
  &lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$cache_file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$r&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nv"&gt;$cache_file&lt;/span&gt;&lt;span class="o"&gt;=~&lt;/span&gt;&lt;span class="sr"&gt;s!/!_!g&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nv"&gt;$cache_file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;/&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$cache_dir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$cache_file&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$uri&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$r&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$filename&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$r&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nb"&gt;local&lt;/span&gt; &lt;span class="vg"&gt;$/&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;undef&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;DECLINED&lt;/span&gt; &lt;span class="k"&gt;unless&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="nv"&gt;$filename&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="nv"&gt;$cache_file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;INFILE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$filename&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="nb"&gt;die&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;Error reading file: $!&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;OUTFILE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;&amp;gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="nv"&gt;$cache_file&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="nb"&gt;die&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;Error writting file:&lt;/span&gt;
&lt;span class="s"&gt;    $! $cache_file\n&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;minify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;INFILE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;outfile&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;OUTFILE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nb"&gt;close&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;INFILE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nb"&gt;close&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;OUTFILE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nv"&gt;$r&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;send_http_header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;text/css&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nv"&gt;$r&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;header_out&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;Cache-Control&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;30d, must-revalidate&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nv"&gt;$r&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;sendfile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$cache_file&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;OK&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="cp"&gt;__END__&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;br/&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span class="nb"&gt;package&lt;/span&gt; &lt;span class="n"&gt;JSMinify&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="n"&gt;nginx&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;JavaScript::&lt;/span&gt;&lt;span class="n"&gt;Minifier&lt;/span&gt; &lt;span class="sx"&gt;qw(minify)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;sub &lt;/span&gt;&lt;span class="nf"&gt;handler&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$r&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;shift&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$cache_dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;/tmp&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;# Cache directory where minified file will be kept&lt;/span&gt;
  &lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$cache_file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$r&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nv"&gt;$cache_file&lt;/span&gt;&lt;span class="o"&gt;=~&lt;/span&gt;&lt;span class="sr"&gt;s!/!_!g&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nv"&gt;$cache_file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;/&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$cache_dir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$cache_file&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$uri&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$r&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$filename&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$r&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;DECLINED&lt;/span&gt; &lt;span class="k"&gt;unless&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="nv"&gt;$filename&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="nv"&gt;$cache_file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;INFILE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$filename&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="nb"&gt;die&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;Error reading file: $!&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;OUTFILE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;&amp;gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="nv"&gt;$cache_file&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="nb"&gt;die&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;Error writting file:&lt;/span&gt;
&lt;span class="s"&gt;    $!&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;minify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;INFILE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;outfile&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;OUTFILE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nb"&gt;close&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;INFILE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nb"&gt;close&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;OUTFILE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nv"&gt;$r&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;header_out&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;Cache-Control&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;30d, must-revalidate&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nv"&gt;$r&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;send_http_header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;text/css&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nv"&gt;$r&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;sendfile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$cache_file&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;OK&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="cp"&gt;__END__&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;br/&gt;(Note: je les ai mis dans /etc/perl)&lt;br/&gt;&lt;br/&gt;Il me reste encore à intégrer la compression gzip - là j'ai eu pas mal de problèmes et ce n'est pas encore en place.&lt;br/&gt;Il faut savoir que la méthode sendfile() bypass complètement les filtres gzip et charset (et peut-être encore un autre) - donc il faut faire tout cela dans le module perl, en live... et tenter de balancer le bon header, au bon moment, de la bonne manière... Pas encore gagné :(.&lt;br/&gt;&lt;br/&gt;Bref. Avec ces 2-3 améliorations, le blog va un poil plus vite, y a moins de trucs qui transitent, mais c'est pas encore optimisé au max.&lt;br/&gt;&lt;br/&gt;Il manque encore:&lt;br/&gt;- arriver à faire passer les infos de cache aux fichiers "minimisés" (actuellement, ça semble pas marcher)&lt;br/&gt;- concaténer tous les CSS et tous les JS en un seul fichier, si possible à la volée&lt;br/&gt;- compresser les CSS et JS&lt;br/&gt;- ajouter un peu de gestion de cache, par exemple lors que j'édite un post depuis l'admin, il devrait s'assurer qu'il est invalidé dans le cache. Actuellement, seul l'ajout de commentaires fait cela...&lt;br/&gt;- voir si je peux aussi optimiser la taille d'une page, avec des filtres pour supprimer les espaces inutiles etc (HTML::Minifier doit sans doute exister :D)&lt;br/&gt;&lt;br/&gt;Voilà... J'espère arriver à faire les points ci-dessus, particulièrement la partie gzip des css/js... Si j'y arrive, je ferai évidemment un post avec les explications et le code.&lt;br/&gt;&lt;br/&gt;++&lt;br/&gt;&lt;br/&gt;T.&lt;p&gt;Publié le 07.08.2011 &amp;agrave; 20:31, dans &lt;a href="http://blog.tengu.ch/blog/category/10"&gt;Documentation&lt;/a&gt;&lt;/p&gt;</description><pubDate>Sun, 07 Aug 2011 20:31:52 -0000</pubDate></item><item><title>SantéSuisse - News</title><link>http://blog.tengu.ch/blog/post/228</link><description>Je viens de recevoir un email de SantéSuisse. Bon, pas avec une réponse, mais juste un ACK:&lt;br/&gt;&lt;blockquote&gt;Bonjour Monsieur,&lt;br/&gt;Merci de votre mail. Je vous prie de nous excuser de ne pas avoir donné suite immédiate à vos questions, auxquelles nous nous ferons un plaisir de répondre prochainement.&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br/&gt;Mieux que rien. Affaire à suivre donc. A noter que c'est "juste" la "Cheffe de presse" qui m'a répondu - donc on peut s'attendre à du contenu "lourd".&lt;br/&gt;&lt;br/&gt;J'espère d'autres news d'ici quelques jours...&lt;br/&gt;&lt;br/&gt;T.&lt;p&gt;Publié le 03.08.2011 &amp;agrave; 17:10, dans &lt;a href="http://blog.tengu.ch/blog/category/18"&gt;Suisse&lt;/a&gt;&lt;/p&gt;</description><pubDate>Wed, 03 Aug 2011 17:10:52 -0000</pubDate></item></channel></rss>