/**
  * @see parent::extractData
  */
 function extractData()
 {
     /** @var CDocumentItem $docItem */
     $docItem = $this->mbObject;
     $this->realm_code = "FR";
     $this->langage = $docItem->language;
     //Récupération du dernier log qui correspond à la date de création de cette version
     $last_log = $docItem->loadLastLog();
     $this->date_creation = $last_log->date;
     $this->date_author = $last_log->date;
     $this->targetObject = $object = $docItem->loadTargetObject();
     if ($object instanceof CConsultAnesth) {
         $this->targetObject = $object = $object->loadRefConsultation();
     }
     $this->practicien = $object->loadRefPraticien();
     $this->patient = $object->loadRefPatient();
     $this->patient->loadLastINS();
     $this->patient->loadIPP();
     $this->mbObject = $docItem;
     $this->root = CMbOID::getOIDFromClass($docItem, $this->receiver);
     $this->practicien->loadRefFunction();
     $this->practicien->loadRefOtherSpec();
     $group = new CGroups();
     $group->load($this->practicien->_group_id);
     $this->healt_care = CCdaTools::loadEntryJV("CI-SIS_jdv_healthcareFacilityTypeCode.xml", CIdSante400::getValueFor($group, "cda_association_code"));
     if ($docItem instanceof CFile) {
         $this->version = "1";
         $this->nom = basename($docItem->file_name);
     } else {
         $this->version = $docItem->version;
         $this->nom = $docItem->nom;
     }
     $this->id_cda_lot = "{$this->root}.{$docItem->_id}";
     $this->id_cda = "{$this->id_cda_lot}.{$this->version}";
     $confidentialite = "N";
     if ($docItem->private) {
         $confidentialite = "R";
     }
     $this->confidentialite = CCdaTools::loadEntryJV("CI-SIS_jdv_confidentialityCode.xml", $confidentialite);
     if ($docItem->type_doc) {
         $type = explode("^", $docItem->type_doc);
         $this->code = CCdaTools::loadEntryJV("CI-SIS_jdv_typeCode.xml", $type[1]);
     }
     //conformité HL7
     $this->templateId[] = $this->createTemplateID("2.16.840.1.113883.2.8.2.1", "HL7 France");
     //Conformité CI-SIS
     $this->templateId[] = $this->createTemplateID("1.2.250.1.213.1.1.1.1", "CI-SIS");
     //Confirmité IHE XSD-SD => contenu non structuré
     $this->templateId[] = $this->createTemplateID("1.3.6.1.4.1.19376.1.2.20", "IHE XDS-SD");
     $this->industry_code = CCdaTools::loadEntryJV("CI-SIS_jdv_practiceSettingCode.xml", "ETABLISSEMENT");
     $mediaType = "application/pdf";
     //Génération du PDF
     if ($docItem instanceof CFile) {
         $path = $docItem->_file_path;
         switch ($docItem->file_type) {
             case "image/tiff":
                 $mediaType = "image/tiff";
                 break;
             case "application/pdf":
                 $mediaType = $docItem->file_type;
                 $path = CCdaTools::generatePDFA($docItem->_file_path);
                 break;
             case "image/jpeg":
             case "image/jpg":
                 $mediaType = "image/jpeg";
                 break;
             case "application/rtf":
                 $mediaType = "text/rtf";
                 break;
             default:
                 $docItem->convertToPDF();
                 $file = $docItem->loadPDFconverted();
                 $path = CCdaTools::generatePDFA($file->_file_path);
         }
     } else {
         if ($msg = $docItem->makePDFpreview(1, 0)) {
             throw new CMbException($msg);
         }
         $file = $docItem->_ref_file;
         $path = CCdaTools::generatePDFA($file->_file_path);
     }
     $this->file = $path;
     $this->mediaType = $mediaType;
     $service["nullflavor"] = null;
     switch (get_class($object)) {
         case "CSejour":
             /** @var CSejour $object CSejour */
             $dp = $object->DP;
             $service["time_start"] = $object->entree;
             $service["time_stop"] = $object->sortie;
             $service["executant"] = $object->loadRefPraticien();
             if ($dp) {
                 $service["oid"] = "2.16.840.1.113883.6.3";
                 $service["code"] = $dp;
                 $service["type_code"] = "cim10";
             } else {
                 $service["nullflavor"] = "UNK";
             }
             break;
         case "COperation":
             /** @var COperation $object COperation */
             $no_acte = 0;
             foreach ($object->loadRefsActesCCAM() as $_acte_ccam) {
                 if ($_acte_ccam->code_activite === "4" || !$_acte_ccam->_check_coded || $no_acte >= 1) {
                     continue;
                 }
                 $service["time_start"] = $_acte_ccam->execution;
                 $service["time_stop"] = "";
                 $service["code"] = $_acte_ccam->code_acte;
                 $service["oid"] = "1.2.250.1.213.2.5";
                 $_acte_ccam->loadRefExecutant();
                 $service["executant"] = $_acte_ccam->_ref_executant;
                 $service["type_code"] = "ccam";
                 $no_acte++;
             }
             if ($no_acte === 0) {
                 $service["time_start"] = $object->debut_op;
                 $service["time_stop"] = $object->fin_op;
                 $service["executant"] = $object->loadRefPraticien();
                 $service["nullflavor"] = "UNK";
             }
             break;
         case "CConsultation":
             /** @var CConsultation $object CConsultation */
             $object->loadRefPlageConsult();
             $no_acte = 0;
             foreach ($object->loadRefsActesCCAM() as $_acte_ccam) {
                 if (!$_acte_ccam->_check_coded || $_acte_ccam->code_activite === "4" || $no_acte >= 1) {
                     continue;
                 }
                 $service["time_start"] = $_acte_ccam->execution;
                 $service["time_stop"] = "";
                 $service["code"] = $_acte_ccam->code_acte;
                 $service["oid"] = "1.2.250.1.213.2.5";
                 $_acte_ccam->loadRefExecutant();
                 $service["executant"] = $_acte_ccam->_ref_executant;
                 $service["type_code"] = "ccam";
                 $no_acte++;
             }
             if ($no_acte === 0) {
                 $service["time_start"] = $object->_datetime;
                 $service["time_stop"] = $object->_date_fin;
                 $service["executant"] = $object->loadRefPraticien();
                 $service["nullflavor"] = "UNK";
             }
             break;
         default:
     }
     $this->service_event = $service;
     if ($this->old_version) {
         $oid = CMbOID::getOIDFromClass($docItem, $this->receiver);
         $this->old_version = "{$oid}.{$this->old_id}.{$this->old_version}";
     }
 }