Monday, January 28, 2019

The new National French PHR (Dossier Médical Partagé) – How does it work? - Part 2

In my preview post, I was describing how to create a record into the new National French PHR (Dossier Médical Partagé).
In this article, I will explore the content of the DMP and discuss the potential challenges of adding new data to it.

First I log with my credentials (login and password) and provide a 2 factor authentication 6 digits number sent to me either by email of SMS.

My DMP contains several tabs:
  • RÉCAPITULATIF (summary)
  • DOCUMENTS (documents)
  • MES INFORMATIONS (my informations)
  • GESTION DU DMP (record management)

Let's start by trying to add manually a document. For this, I have two options:
  • Typing a document
  • Adding a file

Writing a document:

Adding a file:


Coming back to the main documents tab, we can see that it can potentially contain various types of healthcare related documents:

  • Synthèses (syntheses)

  • Traitements et soins (treatments and care)

  • Compte-rendus (reports) 

  • Imagerie médicale (medical imagerie) 

  • Biologie (biology / Lab results) 

  • Prévention (prevention)

  • This page has a search section:

    The document section itself can be expanded according to very precise documents sub-types:
    • Synthèses (syntheses)
      • Synthèse (synthesis)
      • Synthèse d'épisode de soins (summary episode of care)
    • Traitements et soins (treatments and care)
      • CR ou fiche de suivi de soins par auxiliaire médical (report or medical assistant care follow-up card)
      • Dispensation médicamenteuse (Drug dispensing)
      • Dispensation autre (Dispensation other)
      • Plan personnalisé de soins (Personalized care plan) 
      • Prescription de médicaments (Prescription of drugs) 
      • Prescription de soins (Prescription of care) 
      • Prescription autre (Prescription other) 
      • Protocole de soins affection longue durée (ALD) (Long-term care protocol)
    • Comptes-rendus (reports)
      • CR d'accouchement (delivery report)
      • CR d'acte diagnostique (diagnostic act report)
      • CR d'acte thérapeutique (therapeutic act report)
      • CR d'admission (admission report)
      • CR d'anesthésie (reports of anesthesia)
      • CR de bilan d'évaluation de la perte d'autonomie (assessment report reports of loss of autonomy)
      • CR de bilan fonctionnel par auxiliaire médical (reports of functional assessment by medical auxiliary)
      • CR de consultation pré-anesthésique (pre-anesthetic consultation report)
      • CR de passage aux urgences (emergency room report)
      • CR de réunion de concertation pluridisciplinaire (tumor board report)
      • CR de télé-médecine (telemedicine report)
      • CR séjour hospitalier (report of hospital stay)
      • CR opératoire (surgery report)
      • CR ou fiche de consultation ou de visite (visit report)
      • Lettre de liaison à la sortie d'un établissement de soins (Liaison letter exit of a care facility)
    • Imagerie médicale (medical imaging)
      • CR d'imagerie médicale (medical imaging report)
      • Document encapsulant une image d'illustration non DICOM (document including a non-DICOM image)
    • Biologie (biology)
      •   CR d'anatomie et de cytologie pathologiques (anatomy and pathological cytology report)
      •   CR d'examens biologiques (biological examination report)
    • Prévention (Prevention)
      •   CR d'acte diagnostique à visée préventive ou de dépistage (report of diagnostic act)
      •   CR d'acte thérapeutique à visée préventive (Preventive action report)
    Now lets looks at the type of data I have in my record. These have been pushed into my DMP by the French national health insurance (Caisse d'Assurance maladie) accessible via my account AMELI (Assurance Maladie En LIgne). Each patient in France has one unique INSEE number used for healthcare tracking (children use their parents accounts) and other administrative purpose. Supplemental coverage is also usually provided by private mutual insurers. 

    So far it is not clear to me whether they provide any additional information to my record.

    A warning indicates that the displayed data is a reflection of information from reimbursement or support held by health insurance organizations mandatory for the last 24 months. They are provided for information purposes only and exhaustiveness can not be guaranteed, especially in the event of an administrative change during these 24 months.

    There are 5 possible sections (In my case the section hospitalization is empty).
    • Pharmacie / fournitures (Pharmacy and various supplies - e.g. optician / glasses)
    • Hospitalisation (Hospitalization)
    • Soins médicaux et dentaires (Medical and dental care)
    • Radiologie (Radiology)
    • Biologie (Biology)
    Here is how these sections look like (data has been modified/changed for obvious privacy concern). 

    Let's start with the Pharmacy and Medical Supplies section:

    The section Medical and Dental Care includes medical care including PCP, physiotherapist, nurse, dentist, dermatologistophthalmologist visits:

    The section Radiology includes body and dental scans:

    La section Biology includes Labs data (only dates, coding act and types, not the results themselves):

    To sum-up my data is well organized and easy to access. However only the payer information is available (French national insurance)  which is not very different from what I could obtain directly from my AMELI account (Assurance Maladie En LIgne). There is no useful clinical information that I could share with healthcare professionals, expect perhaps if I had manually entered some of the information myself. For example, I could have added my lab results from the paper report I had received from the labs or manually added over-the-counter drugs.

    In my next post I will look at other features of my DMP such a consent, trusted people and organ donation options.

    Monday, January 14, 2019

    The new National French PHR (Dossier Médical Partagé) – How does it work? - Part 1

    Since November 2018, each French patient can have access to a new national Patient Health Record (PHR) called in French the Dossier Médical Partagé or DMP (shared medical file).

    How does it work from an end-user perspective? In this post, I describe my first experience with this new healthcare application - with all security and privacy precautions related to my protected health information (PHI).

    I have seen several large scale initiatives starting (e.g. Microsoft HealthVault, KP/MyHealth Manager) with some initiatives including GoogleHealth who was abandoned for some time and was reborn in another form  as Google Cloud for Healthcare.

    I have been working in the medical data integration and processing field for many years now and even share a patent in this domain. By experience, I know that the most difficult part is not to design and create a scalable and secure structured medical repository, but to make sure that it is supplied with up-to-date and relevant data. I have a good knowledge of HL7, IHE profiles and other data integration standards and I recognize the complexity of acquiring and reconcile medical data to be used by healthcare professionals.

    First, let’s start with the creation of my DMP. There are several options to create a national PHR/DMP in France. The first one is to ask a pharmacist to create it for you, the second option is to initiate the creation of the DMP yourself. This is the later I have chosen.

    From the main DMP web site creation page, I was able to create my account in few minutes after providing a specific creation code generated by and my social security or INSEE number (the main personal ID for patients in France).

    I also need to add a 11 digit number that is located on my Carte Vitale, the health insurance card of the national health care system in France.

      ... some contact info (email and phone):

    and very important, consent:

    and my account is created (credentials have been modified for obvious reasons).

     Additional information is requested (e.g. address etc):

    Now that my account has been created, I am able to access it using my personal credentials:

    A two factor numeric ID is also sent to my cell phone (or email account) can be requested:

    and used for additional security:

    For the first connection, I have the option to change some of my account settings:

    and some "break-the-glass" type authorization settings:

    Overall the experience of creating my DMP/PHR account was quite easy and without any particular problem. It was fast and secure. The initial performance of the application seems good, having in mind that this is just the beginning and that only a small number of patients of the French population have a DMP account.

    In my next post, I will explore the functionalities and the type of data that could be part of a DMP.

    Friday, September 25, 2015

    jBPM and BPMN 2.0 workflow creation

    In my previous post I was describing how to install and run jBPM console.

    In this one post, I would like to describe how quickly create a workflow calling a web service.
    I will be using a public weather web service based API (OpenWeatherMap) for convenience.

    With this restful based API, I can easily query the current weather in a city or a zip code area:

    I will now start by creating a new project called Meteo via the jBPM KIE console:

    This will create a project where you will be able to add business processes and task forms.

    Next, I am creating a business process called ObtainWeatherForecast to enter a city or zip code, call the web service and display the corresponding weather forecast:

    Automatically, the Process Modelling / Shape Repository panel opens with an initial default Start Event generated.

    Two side panes are quite useful to add:

    • On the left the Object library. 
    • On the right side, the Properties of the BPMN diagram elements.You click on the top buttons to show the panes.

    First I am going to define a set of variables that will be available in the process to maintain internal values so I can share information between nodes.
    For this I click on the background of the business process and edit the Variable Definitions Properties of the ObtainWeatherForecast business process.

    In the Process Modelling panel, when you select a node (event or task), you can select some very useful context icons
    such as View the BPMN Node Source, create a new task or event, link nodes etc ...

    When adding a new task, you have various ways to do this.

    If the task is one of the 8 basic Tasks (User, Send, Receive, Manual, Service, Business Rule, Script, None),
    then you can either click on the task context icon to create the next task node (as a generic/none type)
    from an existing event node or a task node (1a) and specify one of the other 7 basic type if needed using the tool context icon for a more specific one (1b).

    You can also use the Object library and drag/drop the task (2) and link the nodes via the link context icon (3).

    If you want to add a more specific Service Task (Email, Log, REST, WS), then you can use the Object Library and select the corresponding Service Task (4).

    The REST Service task has its Data Input (info associated to RESTful call) and Data Output (result from the call) properties already populated:

    For the Data Assignment variables, we are going to set the Method to GET and for a quick hard-coded test,
    we are going to set the url to
    Then we are going to map the object Result of the call (use [Output Mapping]) to our process variable forecast.
    Later we will be able to use the forecast JSON output and extract and display the associated information.

    At this point you can add another Script Task for displaying the weather forecast result and complete the business process workflow
    with a Terminate End Event, link all nodes and add useful properties such as names.

    To deploy your Project and Business Process, select Build & Deploy.

    After your project is successfully deployed, you select Deploy|Process Deployments.

    You can then see your deployed project with the option to Deactivate it or Undeploy it.

    Now you can check the Process Definitions and start ObtainWeatherForecast business process by clicking on the Start button:

    After execution of the process, if you look at your Process Variables as part of the process definition, you can obtain the current weather in Paris (JSON returned object):

    {"coord":{"lon":2.35,"lat":48.85},"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04n"}],"base":"cmc stations","main":{"temp":287.89,"pressure":1024,"humidity":67,"temp_min":286.15,"temp_max":289.26},"wind":{"speed":2.6,"deg":20},"clouds":{"all":75},"dt":1443208502,"sys":{"type":1,"id":5615,"message":0.0054,"country":"FR","sunrise":1443159717,"sunset":1443202883},"id":2988507,"name":"Paris","cod":200}
    One last tip on this first hands-on experience. If your Project Explorer goes away for some reasons (it seems there is a bug in 6.2.0 final related to this). Try to click on the reset perspective button:

    Friday, August 7, 2015

    First Steps with jBPM and BPMN 2.0 Modelization Tools

    In this post, I would like to share my initial experience with jBPM and BPMN 2.0 modelization tools in general. jBPM is an open-source workflow engine written in Java that can execute business processes described in BPMN 2.0.

    Business Process Model and Notation (BPMN) is a graphical representation for specifying business processes in a business process model. As an architect, I have been using BPMN as a language for business process modeling (e.g. for the functional breakdown of complex processing pipelines for genomics systems).

    They are different ways to install jBPM. The quickest installations options include:
    1. downloading a zip file and install it on a PC or
    2. downloading and using a docker image (particularly suitable for Mac OS)
    In this post, I will describe option #1 (basic zip based install). In this case, what you obtain is a zip file - e.g. - latest version as of 8/7/2015.

    • First make sure you have installed Apache Ant and it is on your Windows Path.
    • To install type the following command at the prompt in the jbpm-installer folder:
      • $ ant install.demo

    After few minutes, all dependencies are fully downloaded and jBPM is installed.

         You are now ready to start the web-based Knowledge Is Everything KIE workbench (there is also an Eclipse IDE plugin available with the download that you can use).
    • $ ant start.demo
    • Alternatively you can also download and start the demo without eclipse
      • $ ant install.demo.noeclipse
      • $ ant start.demo.noeclipse

        Issues deploying jbpm-console.war
    • if jbpm-console.war cannot be deployed in JBoss wildfly application server (former JBoss AS).
    • see folder: ...\jBPM\jbpm-installer\wildfly-8.1.0.Final\standalone\deployments 
    • and check log file: ...\jBPM\jbpm-installer\wildfly-8.1.0.Final\standalone\log\server.log
    • You might have encounter an issue with your proxy!!!
    • There are several ways to fix this, including 
      • installing KIE outside your firewall/proxy server influence (not from our office!)
      • modify your file ...\jBPM\jbpm-installer\build.xml file:
                     <exec executable="${}" spawn="yes" osfamily="windows">
                          <env key="JAVA_OPTS" value="-XX:MaxPermSize=256m -Xms256m -Xmx512m" />
                          <arg value="-b" />
                          <arg value="${jboss.bind.address}" />
                          <arg value="--server-config=standalone-full.xml" />
                          <arg value="-Dorg.kie.demo=true" />
                          <arg value="-Dorg.kie.example=false" />
                          <arg value="-Dhttp.proxyHost=...." />
                          <arg value="-Dhttp.proxyPort=8999" />
                          <arg value="c standalone-full.xml"/>

         Using KIE
    •  If successfully deployed, go to your browser (use Chrome for better experience!) and enter
      • http://localhost:8080/jbpm-console/kie-wb.html
         You should have access to the jBPM KIE console (see also video demo here and look at jBPM6 Developer Guide).


          The default user name and password are 'admin'.


    To have access to the business process demos click Authoring/Project and choose async-examples.

    Then Business Processes/check weather (one of the demos - this one is very simple and fun!).

     This displays a very simple business process where the user can enter a zip code and obtain the weather forecast associated to the zip code in question:

    Open the properties pane  if not displayed by clicking the double arrow on the top right side of the application.

    You can initially do a copy of the demo in case you want to make some modifications to the demo process. You will need to modify the ID and the Version of the business process and save a copy.

    Enter a new name and optionally some comments for the new version of the process:

        The copy should now appear in the list of business processes:

    Deployment of a Process is done by opening the Project and select Build/Build & Deploy:

     To run the demo process, select Process Management/Process Definitions then select your process and click on the start Action icon:


      Enter the user name ('admin') and a US zip code - Here I am using 94036 (Palo Alto, CA).