View CCD in patient portal fails

Situation
Generating CCD or trying to download in patient portal fails

OpenEMR Version
I’m using OpenEMR version 6.1.0 (1)

Browser:
I’m using: Brave Version 1.39.122 Chromium: 102.0.5005.115 (Official Build) (64-bit)

Operating System
I’m using: Win 10 Pro 64

Logs
Generate CCD
Fatal error : Uncaught Error: Class “Symfony\Component\HttpClient\HttpClient” not found in \xampp\htdocs\openemr\src\Services\CDADocumentService.php:149 Stack trace: #0 \xampp\htdocs\openemr\ccdaservice\ccda_gateway.php(77): OpenEMR\Services\CDADocumentService->portalGenerateCCD(‘1’) #1 {main} thrown in \xampp\htdocs\openemr\src\Services\CDADocumentService.php on line 149

Download CCD
Fatal error : Uncaught Error: Class “Symfony\Component\HttpClient\HttpClient” not found in xampp\htdocs\openemr\src\Services\CDADocumentService.php:187 Stack trace: #0 xampp\htdocs\openemr\ccdaservice\ccda_gateway.php(66): OpenEMR\Services\CDADocumentService->portalGenerateCCDZip(‘1’) #1 {main} thrown in xampp\htdocs\openemr\src\Services\CDADocumentService.php on line 187

Hi @mohamed, check your vendor directory. It looks like something went wrong with your composer install. You may need to do a composer install in your openemr directory. It looks like the symfony/http-foundation package might be missing from your installation.

1 Like

@adunsulag thanks for your feedback. I run OpenEMR on my own. Can you elaborate more on composer installs ?

How did you install OpenEMR? Did you download the bundled package? Or did you clone from the github repository. Is there a vendor folder in your OpenEMR installation. There should be.

1 Like

I originally used the official windows download “OpenEMR Downloads - OpenEMR Project Wiki
And updated to latest version “Windows Upgrade 6.0.0 to 6.1.0 - OpenEMR Project Wiki
And then patched to latest patch “OpenEMR Patches - OpenEMR Project Wiki

I am using Xampp on windows 10 pro

Vendor folder present.

So something is wrong in your installation. You should have the following file in your installation:
vendor/symfony/http-client/HttpClient.php

If its not there then somehow your first setup from downloading and installing on windows did not install properly.

If it is there, then something is wrong in your composer autoload file which is in vendor/composer/autoload_psr4.php as PHP can’t find the file in php land even though it exists on the filesystem.

This would suggest something corrupted in either the original installation or when you applied the patch.

1 Like

This is vendor/symfony/


Only http-foundation folder

vendor/composer/autoload_psr4.php
(((<?php

// autoload_psr4.php @generated by Composer

$vendorDir = dirname(dirname(FILE));
$baseDir = dirname($vendorDir);

return array(
‘setasign\Fpdi\’ => array($vendorDir . ‘/setasign/fpdi/src’),
‘phpseclib\’ => array($vendorDir . ‘/phpseclib/phpseclib/phpseclib’),
‘kamermans\OAuth2\’ => array($vendorDir . ‘/kamermans/guzzle-oauth2-subscriber/src’),
‘ZipStream\’ => array($vendorDir . ‘/maennchen/zipstream-php/src’),
‘Webmozart\Assert\’ => array($vendorDir . ‘/webmozart/assert/src’),
‘Webimpress\SafeWriter\’ => array($vendorDir . ‘/webimpress/safe-writer/src’),
‘Waryway\PhpTraitsLibrary\’ => array($vendorDir . ‘/waryway/php-traits-library/src’),
‘Twig\’ => array($vendorDir . ‘/twig/twig/src’),
‘Symfony\Polyfill\Php81\’ => array($vendorDir . ‘/symfony/polyfill-php81’),
‘Symfony\Polyfill\Php80\’ => array($vendorDir . ‘/symfony/polyfill-php80’),
‘Symfony\Polyfill\Php72\’ => array($vendorDir . ‘/symfony/polyfill-php72’),
‘Symfony\Polyfill\Mbstring\’ => array($vendorDir . ‘/symfony/polyfill-mbstring’),
‘Symfony\Polyfill\Intl\Normalizer\’ => array($vendorDir . ‘/symfony/polyfill-intl-normalizer’),
‘Symfony\Polyfill\Intl\Idn\’ => array($vendorDir . ‘/symfony/polyfill-intl-idn’),
‘Symfony\Polyfill\Intl\Grapheme\’ => array($vendorDir . ‘/symfony/polyfill-intl-grapheme’),
‘Symfony\Polyfill\Ctype\’ => array($vendorDir . ‘/symfony/polyfill-ctype’),
‘Symfony\Contracts\Service\’ => array($vendorDir . ‘/symfony/service-contracts’),
‘Symfony\Contracts\EventDispatcher\’ => array($vendorDir . ‘/symfony/event-dispatcher-contracts’),
‘Symfony\Component\Yaml\’ => array($vendorDir . ‘/symfony/yaml’),
‘Symfony\Component\String\’ => array($vendorDir . ‘/symfony/string’),
‘Symfony\Component\PropertyAccess\’ => array($vendorDir . ‘/symfony/property-access’),
‘Symfony\Component\Process\’ => array($vendorDir . ‘/symfony/process’),
‘Symfony\Component\Mime\’ => array($vendorDir . ‘/symfony/mime’),
‘Symfony\Component\Inflector\’ => array($vendorDir . ‘/symfony/inflector’),
‘Symfony\Component\HttpFoundation\’ => array($vendorDir . ‘/symfony/http-foundation’),
‘Symfony\Component\Filesystem\’ => array($vendorDir . ‘/symfony/filesystem’),
‘Symfony\Component\EventDispatcher\’ => array($vendorDir . ‘/symfony/event-dispatcher’),
‘Symfony\Component\DependencyInjection\’ => array($vendorDir . ‘/symfony/dependency-injection’),
‘Symfony\Component\Config\’ => array($vendorDir . ‘/symfony/config’),
‘Svg\’ => array($vendorDir . ‘/phenx/php-svg-lib/src/Svg’),
‘Stripe\’ => array($vendorDir . ‘/stripe/stripe-php/lib’),
‘Sabberworm\CSS\’ => array($vendorDir . ‘/sabberworm/php-css-parser/src’),
‘Ramsey\Uuid\’ => array($vendorDir . ‘/ramsey/uuid/src’),
‘Ramsey\Collection\’ => array($vendorDir . ‘/ramsey/collection/src’),
‘Psr\SimpleCache\’ => array($vendorDir . ‘/psr/simple-cache/src’),
‘Psr\Log\’ => array($vendorDir . ‘/psr/log/Psr/Log’),
‘Psr\Http\Message\’ => array($vendorDir . ‘/psr/http-factory/src’, $vendorDir . ‘/psr/http-message/src’),
‘Psr\Http\Client\’ => array($vendorDir . ‘/psr/http-client/src’),
‘Psr\Container\’ => array($vendorDir . ‘/psr/container/src’),
‘Psr\Cache\’ => array($vendorDir . ‘/psr/cache/src’),
‘PhpParser\’ => array($vendorDir . ‘/nikic/php-parser/lib/PhpParser’),
‘PhpOption\’ => array($vendorDir . ‘/phpoption/phpoption/src/PhpOption’),
‘PhpOffice\PhpSpreadsheet\’ => array($vendorDir . ‘/phpoffice/phpspreadsheet/src/PhpSpreadsheet’),
‘Particle\Validator\’ => array($vendorDir . ‘/particle/validator/src’),
‘ParagonIE\MultiFactor\’ => array($vendorDir . ‘/paragonie/multi-factor/src’),
‘ParagonIE\ConstantTime\’ => array($vendorDir . ‘/paragonie/constant_time_encoding/src’),
‘PHPMailer\PHPMailer\’ => array($vendorDir . ‘/phpmailer/phpmailer/src’),
‘OpenIDConnectServer\’ => array($vendorDir . ‘/steverhoades/oauth2-openid-connect-server/src’),
‘OpenEMR\’ => array($baseDir . ‘/src’),
‘Omnipay\Stripe\’ => array($vendorDir . ‘/omnipay/stripe/src’),
‘Omnipay\Common\’ => array($vendorDir . ‘/omnipay/common/src/Common’),
‘Omnipay\AuthorizeNetApi\’ => array($vendorDir . ‘/academe/omnipay-authorizenetapi/src’),
‘Nyholm\Psr7\’ => array($vendorDir . ‘/nyholm/psr7/src’),
‘Nyholm\Psr7Server\’ => array($vendorDir . ‘/nyholm/psr7-server/src’),
‘MyCLabs\Enum\’ => array($vendorDir . ‘/myclabs/php-enum/src’),
‘Mpdf\’ => array($vendorDir . ‘/mpdf/mpdf/src’),
‘Monolog\’ => array($vendorDir . ‘/monolog/monolog/src/Monolog’),
‘Money\’ => array($vendorDir . ‘/moneyphp/money/src’),
‘Matrix\’ => array($vendorDir . ‘/markbaker/matrix/classes/src’),
‘League\OAuth2\Server\’ => array($vendorDir . ‘/league/oauth2-server/src’),
‘League\Event\’ => array($vendorDir . ‘/league/event/src’),
‘Lcobucci\JWT\’ => array($vendorDir . ‘/lcobucci/jwt/src’),
‘Lcobucci\Clock\’ => array($vendorDir . ‘/lcobucci/clock/src’),
‘Laminas\ZendFrameworkBridge\’ => array($vendorDir . ‘/laminas/laminas-zendframework-bridge/src’),
‘Laminas\Xml\’ => array($vendorDir . ‘/laminas/laminas-xml/src’),
‘Laminas\XmlRpc\’ => array($vendorDir . ‘/laminas/laminas-xmlrpc/src’),
‘Laminas\View\’ => array($vendorDir . ‘/laminas/laminas-view/src’),
‘Laminas\Validator\’ => array($vendorDir . ‘/laminas/laminas-validator/src’),
‘Laminas\Uri\’ => array($vendorDir . ‘/laminas/laminas-uri/src’),
‘Laminas\Text\’ => array($vendorDir . ‘/laminas/laminas-text/src’),
‘Laminas\Stdlib\’ => array($vendorDir . ‘/laminas/laminas-stdlib/src’),
‘Laminas\Soap\’ => array($vendorDir . ‘/laminas/laminas-soap/src’),
‘Laminas\ServiceManager\’ => array($vendorDir . ‘/laminas/laminas-servicemanager/src’),
‘Laminas\Server\’ => array($vendorDir . ‘/laminas/laminas-server/src’),
‘Laminas\Router\’ => array($vendorDir . ‘/laminas/laminas-router/src’),
‘Laminas\Mvc\I18n\’ => array($vendorDir . ‘/laminas/laminas-mvc-i18n/src’),
‘Laminas\Mvc\Console\’ => array($vendorDir . ‘/laminas/laminas-mvc-console/src’),
‘Laminas\Mvc\’ => array($vendorDir . ‘/laminas/laminas-mvc/src’),
‘Laminas\ModuleManager\’ => array($vendorDir . ‘/laminas/laminas-modulemanager/src’),
‘Laminas\Math\’ => array($vendorDir . ‘/laminas/laminas-math/src’),
‘Laminas\Loader\’ => array($vendorDir . ‘/laminas/laminas-loader/src’),
‘Laminas\Json\Server\’ => array($vendorDir . ‘/laminas/laminas-json-server/src’),
‘Laminas\Json\’ => array($vendorDir . ‘/laminas/laminas-json/src’),
‘Laminas\InputFilter\’ => array($vendorDir . ‘/laminas/laminas-inputfilter/src’),
‘Laminas\I18n\’ => array($vendorDir . ‘/laminas/laminas-i18n/src’),
‘Laminas\Hydrator\’ => array($vendorDir . ‘/laminas/laminas-hydrator/src’),
‘Laminas\Http\’ => array($vendorDir . ‘/laminas/laminas-http/src’),
‘Laminas\Form\’ => array($vendorDir . ‘/laminas/laminas-form/src’),
‘Laminas\Filter\’ => array($vendorDir . ‘/laminas/laminas-filter/src’),
‘Laminas\EventManager\’ => array($vendorDir . ‘/laminas/laminas-eventmanager/src’),
‘Laminas\Escaper\’ => array($vendorDir . ‘/laminas/laminas-escaper/src’),
‘Laminas\Db\’ => array($vendorDir . ‘/laminas/laminas-db/src’),
‘Laminas\Console\’ => array($vendorDir . ‘/laminas/laminas-console/src’),
‘Laminas\Config\’ => array($vendorDir . ‘/laminas/laminas-config/src’),
‘Laminas\Code\’ => array($vendorDir . ‘/laminas/laminas-code/src’),
‘Knp\Snappy\’ => array($vendorDir . ‘/knplabs/knp-snappy/src/Knp/Snappy’),
‘Interop\Container\’ => array($vendorDir . ‘/container-interop/container-interop/src/Interop/Container’),
‘Http\Promise\’ => array($vendorDir . ‘/php-http/promise/src’),
‘Http\Message\’ => array($vendorDir . ‘/php-http/message/src’, $vendorDir . ‘/php-http/message-factory/src’),
‘Http\Discovery\’ => array($vendorDir . ‘/php-http/discovery/src’),
‘Http\Client\’ => array($vendorDir . ‘/php-http/httplug/src’),
‘Http\Adapter\Guzzle7\’ => array($vendorDir . ‘/php-http/guzzle7-adapter/src’),
‘Html2Text\’ => array($vendorDir . ‘/html2text/html2text/src’, $vendorDir . ‘/html2text/html2text/test’),
‘GuzzleHttp\Psr7\’ => array($vendorDir . ‘/guzzlehttp/psr7/src’),
‘GuzzleHttp\Promise\’ => array($vendorDir . ‘/guzzlehttp/promises/src’),
‘GuzzleHttp\’ => array($vendorDir . ‘/guzzlehttp/guzzle/src’),
‘GrahamCampbell\ResultType\’ => array($vendorDir . ‘/graham-campbell/result-type/src’),
‘Google\Service\’ => array($vendorDir . ‘/google/apiclient-services/src’),
‘Google\Auth\’ => array($vendorDir . ‘/google/auth/src’),
‘Google\’ => array($vendorDir . ‘/google/apiclient/src’),
‘FontLib\’ => array($vendorDir . ‘/phenx/php-font-lib/src/FontLib’),
‘Firebase\JWT\’ => array($vendorDir . ‘/firebase/php-jwt/src’),
‘Dotenv\’ => array($vendorDir . ‘/vlucas/phpdotenv/src’),
‘Dompdf\’ => array($vendorDir . ‘/dompdf/dompdf/src’),
‘Defuse\Crypto\’ => array($vendorDir . ‘/defuse/php-encryption/src’),
‘DeepCopy\’ => array($vendorDir . ‘/myclabs/deep-copy/src/DeepCopy’),
‘Complex\’ => array($vendorDir . ‘/markbaker/complex/classes/src’),
‘Clue\StreamFilter\’ => array($vendorDir . ‘/clue/stream-filter/src’),
‘Brick\VarExporter\’ => array($vendorDir . ‘/brick/varexporter/src’),
‘Brick\Math\’ => array($vendorDir . ‘/brick/math/src’),
‘Aranyasen\’ => array($vendorDir . ‘/aranyasen/hl7/src’),
‘Academe\AuthorizeNet\’ => array($vendorDir . ‘/academe/authorizenet-objects/src’),
);
)))

Patch reported being applied successfully

confirmed it’s missing in the demos so need to do
composer require symfony/http-client:5.4.8

edit: hmm, it’s in composer.json, hold on before following above advice

ok to go ahead, it was in my test branch not in the openemr codebase

1 Like

@stephenwaite sorry for the trouble. Which file to edit ?

use your command prompt to navigate to the web root folder, \xampp\htdocs\openemr, and run the above composer require

1 Like

@stephenwaite
image

1 Like

@stephenwaite Yeah i already opened this link since i already tried to find solution without bothering busy developers :sweat_smile: but then i felt inclined not to install until i do a backup first.
I guess i found a simpler tutorial for dummies like myself “How to Install and Use Composer: The Complete Guide
Will go through and then report back

I have no idea where to go from here !

would hold off until am able to verify the exact problem, for now you can choose Report Content from the dropdown and grab it this way

Untitled

1 Like