Read from the package's own PHP files at the commit 9d3181f0c5d8: its namespaces, classes, interfaces and enums, their public constants, properties and methods with their PHPDoc, and the options its factories take. Nothing of it is run.
HealthBundleclassThe health regime, on omnibase/office: a practice of care (a multi-professional health centre, a nursing practice, a physiotherapist, a midwife), its practitioners read from the RPPS, patients and their dependants, home care requests, fees, results sent through the office's encrypted vault - and medical secrecy in who may read what: the patient, the practitioner who wrote it, the care team unless the patient objected; the secretariat files and sends, it does not read. No e-mail ever holds health data, not even a document's title or an appointment's reason.
3 methods
HealthKeySectionclassThe API keys page's health line: the Annuaire Santé's key (the ANS's Gravitee portal), read at each "Lire l'Annuaire Santé". FranceConnect's, Pro Santé Connect's and TURN's are not typed here: the first two are read when the container is built, the third is shared with the coturn server - they live in the environment and the secrets vault.
3 methods
HealthSettingsSectionclassThe settings' health line: which certified host (HDS) keeps the data - the legal notice prints it, the compliance widget checks it.
3 methods
HomeCareWidgetTypeclassThe dashboard's "Home care asked": the requests waiting for the practice's answer.
4 methods
InboxWidgetTypeclassThe dashboard's "Messages": what waits at the desks the member answers at (the secretariat's), and their own unread conversations. Counts only: a message is read in the mailbox, not on a dashboard someone may see over a shoulder.
4 methods
PurgeCommandclassWhat has outlived its retention goes (health.retention, in months; the contact requests after office.contact.retention_months): past appointments, decided home care requests, the access log, documents expired or withdrawn - their files destroyed -, the video rooms' handshakes. From the cron container, each night. --dry-run counts only.
1 method
EmergencyCheckclassThe emergencies page says what to do out of hours.
2 methods
FeesDisplayedCheckclassFees are displayed: French law has every practitioner post theirs.
2 methods
HdsHostCheckclassHealth data are hosted by a certified host (HDS), and the legal notice says which.
2 methods
MailboxKeyCheckclassMessages are stored encrypted, and there is a key to do it with.
2 methods
StaffTwoFactorCheckclassEvery staff account signs in with a second factor: the application requires it of the staff's role through glitchr/omnibase (base.security.two_factor.required_roles: [ROLE_STAFF], postpone: false - docs/secrecy.md), which sends an account without one to its enrolment page.
2 methods
TeleconsultationCheckclassThe built-in video is not listed by the ANS: no reimbursable teleconsultation through it.
2 methods
HomeCareControllerclassThe home care requests waiting, in the back office: who asks, where, what care and how often - then who goes and when the first visit is: accepted, the visits enter the agenda as a series; or refused.
3 methods
Base\Health\Controller\Admin\Crud
FeeCrudControllerclassThe fees as they are displayed: a practitioner's, or the whole practice's.
6 methods
HomeCareRequestCrudControllerclassEvery home care request, as a list; the screen to answer them is the agenda's "Soins à domicile" page.
6 methods
PatientProfileCrudControllerclassThe patients as the practice knows them: who, how to reach them, where they live. Nothing clinical is kept here.
6 methods
PracticeCrudControllerclassThe practice: its kind, its FINESS number, what its pages say of emergencies and of care out of hours.
5 methods
PractitionerCrudControllerclassThe team's health professionals: profession, agreement with the health insurance, Carte Vitale, MSSanté address. "Lire l'Annuaire Santé" reads the profession and the MSSanté address from the RPPS number on the member's record.
7 methods
HealthControllerclassThe health regime's public pages: the fees (which the law has posted), care at home - where the practice goes, and the request -, video consultations, and what to do in an emergency.
5 methods
SpaceControllerclassThe patient's space: what comes next (appointments, a video room to join, documents not read yet, home care asked), who they are for the practice (their profile, their dependants), and their data - to take away or to have erased.
8 methods
HealthDemoAccountsclassThe demonstration accounts of a practice (glitchr/omnibase's `demo` environment): one for each role this bundle and omnibase/office know, with the identifiers the practices' fixtures have always used. The roles of the staff come from two groups, as in a real practice - "Praticiens" (ROLE_PRACTITIONER) and "Secrétariat" (ROLE_SECRETARY), both ROLE_STAFF through the application's role hierarchy; the coordination is the practice's administrator.
1 method · 3 constants
Base\Health\DependencyInjection
HealthConfigurationclass1 method
HealthExtensionclass3 methods
DependentclassSomeone an account holder books for: a child, a parent they care for.
15 methods
FeeclassA fee as it must be displayed (French law has practitioners post their fees and the reimbursement base): what for, how much, what the health insurance refunds on, for one practitioner or for the whole practice.
15 methods
HomeCareRequestclassCare asked at home: where (checked against the practice's service areas before it is accepted at all), what care, how often, from when to when, the prescription deposited in the vault. Accepted by the practice, it becomes a series of appointments in the agenda. The note the patient typed is kept encrypted.
43 methods · 1 constant
IdentityLinkclassWhose account an identity of FranceConnect or Pro Santé Connect is: the provider and its `sub` - the provider's own, stable identifier of the person - never an e-mail address, which proves nothing about who someone is. One identity, one account; an account may hold several identities.
9 methods
PatientProfileclassWhat the practice needs to know of an account to receive its holder: who they are, how to reach them, where they live (home visits), whether one of the practice's physicians is their "médecin traitant", and whether they object to their documents being shared within the care team. Not a medical record: nothing clinical is kept here.
28 methods
PracticeclassThe practice of care an office is: its kind (a multi-professional health centre, a nursing practice...), its FINESS number when it has one, what to do in an emergency and how care is given out of hours.
24 methods
PractitionerclassWhat a member of the team is as a health professional: the profession (the Annuaire Santé's code and its name), a specialty, the agreement with the health insurance, whether the Carte Vitale and third-party payment are taken, the MSSanté address. The RPPS number is the member's registryId: "Lire l'Annuaire Santé" fills the profession and the MSSanté address.
25 methods
CareFrequencyenum3 methods · 4 cases
CareStatusenum1 method · 4 cases
PracticeTypeenumWhat kind of practice the site is for; the pages put forward what suits it.
3 methods · 7 cases
Relationenum1 method · 4 cases
SectorenumA practitioner's agreement with the health insurance (conventionnement).
1 method · 5 cases
HomeCareExceptionclassA home care request refused, its reason a translation key of the health domain.
3 methods
CareTeamRecipientsclassWhom a patient may write to besides the secretariat's desk: the practitioners who follow them - by name, never by a username to guess.
2 methods
DependentRepositoryclass2 methods
FeeRepositoryclass3 methods
HomeCareRequestRepositoryclass5 methods
IdentityLinkRepositoryclass3 methods
PatientProfileRepositoryclass3 methods
PracticeRepositoryclass2 methods
PractitionerRepositoryclass5 methods
CareTeamAudienceclassMedical secrecy, as the practice's tool applies it to a patient's documents (beyond the patient and the author, who always read theirs):
2 methods
AppointmentNamingclassAn appointment booked online carries the patient's name as their profile writes it ("Camille ÉRABLE"), not the account's identifier: it is what the agenda shows the staff.
2 methods
CareTeamclassWho follows a patient - their care team in the practice: the members they have, or had, an appointment with (not a cancelled one), and the physician of the practice they declared as their "médecin traitant".
4 methods
DependentBeneficiariesclassA patient books for themselves or for one of their dependants: a child, a parent they care for.
2 methods
HomeCareclassCare at home, from the request to the agenda. A request is checked against the practice's service areas first: outside all of them it is refused at once, with the reason, rather than left waiting for a call back. Accepted by the practice - who goes, the first visit's day and hour - it becomes a series of appointments (omnibase/office's Booker).
7 methods
PatientDataclassA patient's rights over their data (GDPR art. 15, 17, 20): everything the practice's site holds about them as one JSON document, or a zip with their documents decrypted; and erasure - what identifies them goes at once, what must be kept (past appointments, the access log) stays, bare, until health:purge's retention runs out.
4 methods
PatientProfilesclassA patient's profile, made when first needed - or when the account opens from the practice's invitation.
3 methods
PractitionerRegistryclass"Lire l'Annuaire Santé": a practitioner read from the ANS's directory by their RPPS number (glitchr/omnistate with omnistate/annuaire-sante), their profession and MSSanté address written on the record. The key is the one typed in the back office (API keys) if there is one, else the configuration's (omnistate.annuaire_sante.api_key).
3 methods · 1 constant
ResultSenderclassA result, a prescription, a report sent to a patient: kept in the office's encrypted vault, the patient told by an e-mail that says only "a document awaits you" (never by an e-mail that carries it: that would break medical secrecy), and, when asked, a word in the mailbox - itself stored encrypted, its notice without content.
2 methods
MssanteTransmitterInterfaceinterfaceReserved, not implemented: sending a document to a patient's Mon espace santé, or to another professional, through MSSanté - the official secure messaging of health. It takes an MSSanté operator and a professional's CPS card, which a practice's site does not have: a practice that gets them writes this interface's implementation; ResultSender would then offer it beside the vault.
2 methods
HealthExtensionclassHealth in templates: health_practice(), health_practitioner(member), health_fees(practitioner|null), health_emergency() (the banner's numbers), health_profile(user), health_care_team(user), health_types(member) (what can be booked with them), health_pending_care(), health_teleconsultation_referenced().
2 methods
Base\Health
HealthBundle class
class HealthBundle extends AbstractBaseBundle HealthBundle.php:19
The health regime, on omnibase/office: a practice of care (a multi-professional health centre, a nursing practice, a physiotherapist, a midwife), its practitioners read from the RPPS, patients and their dependants, home care requests, fees, results sent through the office's encrypted vault - and medical secrecy in who may read what: the patient, the practitioner who wrote it, the care team unless the patient objected; the secretariat files and sends, it does not read. No e-mail ever holds health data, not even a document's title or an appointment's reason.
HealthBundle::__construct()
public function __construct()HealthBundle::getPath()
public function getPath(): stringModern layout: the class lives in src/, the bundle root is the package root.
HealthBundle::build()
public function build(ContainerBuilder $container): voidBase\Health\Admin\Settings
HealthKeySection class
final class HealthKeySection implements SettingsSectionInterface HealthKeySection.php:17
The API keys page's health line: the Annuaire Santé's key (the ANS's Gravitee portal), read at each "Lire l'Annuaire Santé". FranceConnect's, Pro Santé Connect's and TURN's are not typed here: the first two are read when the container is built, the third is shared with the coturn server - they live in the environment and the secrets vault.
HealthKeySection::__construct()
public function __construct(readonly TranslatorInterface $translator)HealthKeySection::getPage()
public function getPage(): stringHealthKeySection::getFields()
public function getFields(): arrayHealthSettingsSection class
final class HealthSettingsSection implements SettingsSectionInterface HealthSettingsSection.php:10
The settings' health line: which certified host (HDS) keeps the data - the legal notice prints it, the compliance widget checks it.
HealthSettingsSection::__construct()
public function __construct(readonly TranslatorInterface $translator)HealthSettingsSection::getPage()
public function getPage(): stringHealthSettingsSection::getFields()
public function getFields(): arrayBase\Health\Admin\Widget
HomeCareWidgetType class
final class HomeCareWidgetType implements DashboardWidgetTypeInterface HomeCareWidgetType.php:10
The dashboard's "Home care asked": the requests waiting for the practice's answer.
HomeCareWidgetType::__construct()
public function __construct(readonly HomeCareRequestRepository $requests)HomeCareWidgetType::getName()
public static function getName(): stringHomeCareWidgetType::getTemplate()
public function getTemplate(): stringHomeCareWidgetType::getTemplateVars()
public function getTemplateVars(MenuItem $widget): arrayInboxWidgetType class
final class InboxWidgetType implements DashboardWidgetTypeInterface InboxWidgetType.php:16
The dashboard's "Messages": what waits at the desks the member answers at (the secretariat's), and their own unread conversations. Counts only: a message is read in the mailbox, not on a dashboard someone may see over a shoulder.
InboxWidgetType::__construct()
public function __construct(readonly Security $security, readonly ?object $mailbox = null, readonly ?object $desks = null)InboxWidgetType::getName()
public static function getName(): stringInboxWidgetType::getTemplate()
public function getTemplate(): stringInboxWidgetType::getTemplateVars()
public function getTemplateVars(MenuItem $widget): arrayBase\Health\Command
PurgeCommand class
class PurgeCommand extends Command PurgeCommand.php:26
What has outlived its retention goes (health.retention, in months; the contact requests after office.contact.retention_months): past appointments, decided home care requests, the access log, documents expired or withdrawn - their files destroyed -, the video rooms' handshakes. From the cron container, each night. --dry-run counts only.
PurgeCommand::__construct()
public function __construct(readonly AppointmentRepository $appointments, readonly HomeCareRequestRepository $homeCare, readonly AccessLogRepository $logs, readonly DocumentRepository $documents, readonly ContactRequestRepository $contacts, readonly DocumentVault $vault, readonly Rooms $rooms, readonly array $retention, readonly int $contactMonths = 12)Base\Health\Compliance
EmergencyCheck class
final class EmergencyCheck implements ComplianceCheckInterface EmergencyCheck.php:10
The emergencies page says what to do out of hours.
EmergencyCheck::__construct()
public function __construct(readonly PracticeRepository $practices)EmergencyCheck::check()
public function check(): ComplianceResultFeesDisplayedCheck class
final class FeesDisplayedCheck implements ComplianceCheckInterface FeesDisplayedCheck.php:11
Fees are displayed: French law has every practitioner post theirs.
FeesDisplayedCheck::__construct()
public function __construct(readonly PractitionerRepository $practitioners, readonly FeeRepository $fees)FeesDisplayedCheck::check()
public function check(): ComplianceResultHdsHostCheck class
final class HdsHostCheck implements ComplianceCheckInterface HdsHostCheck.php:10
Health data are hosted by a certified host (HDS), and the legal notice says which.
HdsHostCheck::__construct()
public function __construct(readonly SettingBagInterface $settings)HdsHostCheck::check()
public function check(): ComplianceResultMailboxKeyCheck class
final class MailboxKeyCheck implements ComplianceCheckInterface MailboxKeyCheck.php:10
Messages are stored encrypted, and there is a key to do it with.
MailboxKeyCheck::__construct()
public function __construct(readonly ?object $cipher = null)MailboxKeyCheck::check()
public function check(): ComplianceResultStaffTwoFactorCheck class
final class StaffTwoFactorCheck implements ComplianceCheckInterface StaffTwoFactorCheck.php:20
Every staff account signs in with a second factor: the application requires it of the staff's role through glitchr/omnibase (base.security.two_factor.required_roles: [ROLE_STAFF], postpone: false - docs/secrecy.md), which sends an account without one to its enrolment page.
Missing while nothing requires it; a warning while accounts have none yet.
StaffTwoFactorCheck::__construct()
public function __construct(readonly EntityManagerInterface $entityManager, readonly SecurityPolicy $policy, readonly RoleHierarchyInterface $roles, readonly string $staffRole = 'ROLE_STAFF')StaffTwoFactorCheck::check()
public function check(): ComplianceResultTeleconsultationCheck class
final class TeleconsultationCheck implements ComplianceCheckInterface TeleconsultationCheck.php:10
The built-in video is not listed by the ANS: no reimbursable teleconsultation through it.
TeleconsultationCheck::__construct()
public function __construct(readonly bool $referenced = false, readonly bool $visio = true)TeleconsultationCheck::check()
public function check(): ComplianceResultBase\Health\Controller\Admin
HomeCareController class
class HomeCareController extends AbstractController HomeCareController.php:25
The home care requests waiting, in the back office: who asks, where, what care and how often - then who goes and when the first visit is: accepted, the visits enter the agenda as a series; or refused.
HomeCareController::__construct()
public function __construct(readonly HomeCareRequestRepository $requests, readonly HomeCare $homeCare, readonly MemberRepository $members, readonly SlotFinder $slots, readonly TranslatorInterface $translator)HomeCareController::index()
public function index(): ResponseHomeCareController::decide()
public function decide(Request $request, HomeCareRequest $care, string $action): ResponseBase\Health\Controller\Admin\Crud
FeeCrudController class
class FeeCrudController extends AbstractCrudController FeeCrudController.php:24
The fees as they are displayed: a practitioner's, or the whole practice's.
FeeCrudController::setTranslator()
public function setTranslator(TranslatorInterface $translator): voidFeeCrudController::getEntityFqcn()
public static function getEntityFqcn(): stringFeeCrudController::getPreferredIcon()
public static function getPreferredIcon(): ?stringFeeCrudController::configureCrud()
public function configureCrud(Crud $crud): CrudFeeCrudController::configureActions()
public function configureActions(Actions $actions): ActionsFeeCrudController::configureFields()
public function configureFields(string $pageName): iterableHomeCareRequestCrudController class
class HomeCareRequestCrudController extends AbstractCrudController HomeCareRequestCrudController.php:26
Every home care request, as a list; the screen to answer them is the agenda's "Soins à domicile" page.
HomeCareRequestCrudController::setTranslator()
public function setTranslator(TranslatorInterface $translator): voidHomeCareRequestCrudController::getEntityFqcn()
public static function getEntityFqcn(): stringHomeCareRequestCrudController::getPreferredIcon()
public static function getPreferredIcon(): ?stringHomeCareRequestCrudController::configureCrud()
public function configureCrud(Crud $crud): CrudHomeCareRequestCrudController::configureActions()
public function configureActions(Actions $actions): ActionsHomeCareRequestCrudController::configureFields()
public function configureFields(string $pageName): iterablePatientProfileCrudController class
class PatientProfileCrudController extends AbstractCrudController PatientProfileCrudController.php:26
The patients as the practice knows them: who, how to reach them, where they live. Nothing clinical is kept here.
PatientProfileCrudController::setTranslator()
public function setTranslator(TranslatorInterface $translator): voidPatientProfileCrudController::getEntityFqcn()
public static function getEntityFqcn(): stringPatientProfileCrudController::getPreferredIcon()
public static function getPreferredIcon(): ?stringPatientProfileCrudController::configureCrud()
public function configureCrud(Crud $crud): CrudPatientProfileCrudController::configureActions()
public function configureActions(Actions $actions): ActionsPatientProfileCrudController::configureFields()
public function configureFields(string $pageName): iterablePracticeCrudController class
class PracticeCrudController extends AbstractCrudController PracticeCrudController.php:28
The practice: its kind, its FINESS number, what its pages say of emergencies and of care out of hours.
PracticeCrudController::setTranslator()
public function setTranslator(TranslatorInterface $translator): voidPracticeCrudController::getEntityFqcn()
public static function getEntityFqcn(): stringPracticeCrudController::getPreferredIcon()
public static function getPreferredIcon(): ?stringPracticeCrudController::configureActions()
public function configureActions(Actions $actions): ActionsPracticeCrudController::configureFields()
public function configureFields(string $pageName): iterablePractitionerCrudController class
class PractitionerCrudController extends AbstractCrudController PractitionerCrudController.php:30
The team's health professionals: profession, agreement with the health insurance, Carte Vitale, MSSanté address. "Lire l'Annuaire Santé" reads the profession and the MSSanté address from the RPPS number on the member's record.
PractitionerCrudController::setTranslator()
public function setTranslator(TranslatorInterface $translator): voidPractitionerCrudController::getEntityFqcn()
public static function getEntityFqcn(): stringPractitionerCrudController::getPreferredIcon()
public static function getPreferredIcon(): ?stringPractitionerCrudController::configureActions()
public function configureActions(Actions $actions): ActionsPractitionerCrudController::configureFields()
public function configureFields(string $pageName): iterablePractitionerCrudController::setRegistry()
public function setRegistry(PractitionerRegistry $registry): voidPractitionerCrudController::registry()
public function registry(Request $request, string $entityId): Response"Lire l'Annuaire Santé".
Base\Health\Controller\Client
HealthController class
class HealthController extends AbstractController HealthController.php:35
The health regime's public pages: the fees (which the law has posted), care at home - where the practice goes, and the request -, video consultations, and what to do in an emergency.
HealthController::__construct()
public function __construct(readonly PracticeRepository $practices, readonly TranslatorInterface $translator, readonly EntityManagerInterface $entityManager)HealthController::fees()
public function fees(FeeRepository $fees): ResponseHealthController::homeCare()
public function homeCare(Request $request, ServiceAreaRepository $areas, HomeCare $homeCare, DependentRepository $dependents, DocumentVault $vault, PatientProfiles $profiles): ResponseHealthController::teleconsultation()
public function teleconsultation(MemberRepository $members, AppointmentTypeRepository $types): ResponseHealthController::emergencies()
public function emergencies(): ResponseSpaceController class
class SpaceController extends AbstractController SpaceController.php:35
The patient's space: what comes next (appointments, a video room to join, documents not read yet, home care asked), who they are for the practice (their profile, their dependants), and their data - to take away or to have erased.
SpaceController::__construct()
public function __construct(readonly PatientProfiles $profiles, readonly EntityManagerInterface $entityManager, readonly TranslatorInterface $translator)SpaceController::index()
public function index(AppointmentRepository $appointments, DocumentRepository $documents, HomeCareRequestRepository $homeCare, CareTeam $careTeam): ResponseSpaceController::profile()
public function profile(Request $request, PractitionerRepository $practitioners): ResponseSpaceController::dependents()
public function dependents(Request $request, DependentRepository $dependents): ResponseSpaceController::cancelCare()
public function cancelCare(Request $request, int $id, HomeCareRequestRepository $requests, HomeCare $homeCare): ResponseSpaceController::data()
public function data(AccessLogRepository $logs): ResponseOne's data: what is held, who looked at one's documents, the export, the erasure.
SpaceController::export()
public function export(Request $request, string $format, PatientData $data): ResponseSpaceController::erase()
public function erase(Request $request, PatientData $data): ResponseBase\Health\Demo
HealthDemoAccounts class
final class HealthDemoAccounts implements DemoAccountProviderInterface HealthDemoAccounts.php:26
The demonstration accounts of a practice (glitchr/omnibase's demo
environment): one for each role this bundle and omnibase/office know, with
the identifiers the practices' fixtures have always used. The roles of the
staff come from two groups, as in a real practice - "Praticiens"
(ROLE_PRACTITIONER) and "Secrétariat" (ROLE_SECRETARY), both ROLE_STAFF
through the application's role hierarchy; the coordination is the
practice's administrator.
An application's fixtures take them from Base\Demo\DemoAccountFactory ($accounts->account('docteur', $manager)) and attach what makes them worth signing in as: a team member and an agenda to the practitioners, a file and appointments to the patients. A practice without one of these roles (a nursing practice has no physician) leaves it out: base.demo.exclude.
Registered when the installed glitchr/omnibase has the demo environment (config/services.php).
const PRACTITIONERS = 'Praticiens'const SECRETARIES = 'Secrétariat'const PATIENTS = 'Patients'
HealthDemoAccounts::getDemoAccounts()
public function getDemoAccounts(): iterableBase\Health\DependencyInjection
HealthConfiguration class
class HealthConfiguration extends AbstractBaseConfiguration HealthConfiguration.php:8
HealthConfiguration::getConfigTreeBuilder()
public function getConfigTreeBuilder(): TreeBuilderHealthExtension class
class HealthExtension extends AbstractBaseExtension implements PrependExtensionInterface HealthExtension.php:12
HealthExtension::getConfiguration()
public function getConfiguration(array $config, ContainerBuilder $container): HealthConfigurationHealthExtension::prepend()
public function prepend(ContainerBuilder $container): voidThe office's public pages in the health regime's words: the team as practitioners (profession, sector, fees, next slots), the contact form's warning (no medical data: the patient space is for that).
HealthExtension::load()
public function load(array $configs, ContainerBuilder $container): voidBase\Health\Entity
Dependent class
class Dependent Dependent.php:15
Someone an account holder books for: a child, a parent they care for.
No account of their own; their appointments and documents are the holder's to see.
Dependent::__construct()
public function __construct(?User $holder = null, string $givenName = '', string $familyName = '', Relation $relation = Relation::CHILD)Dependent::__toString()
public function __toString(): stringDependent::getId()
public function getId(): ?intDependent::getHolder()
public function getHolder(): ?UserDependent::setHolder()
public function setHolder(?User $holder): selfDependent::getGivenName()
public function getGivenName(): stringDependent::setGivenName()
public function setGivenName(?string $name): selfDependent::getFamilyName()
public function getFamilyName(): stringDependent::setFamilyName()
public function setFamilyName(?string $name): selfDependent::getBirthDate()
public function getBirthDate(): ?\DateTimeImmutableDependent::setBirthDate()
public function setBirthDate(?\DateTimeInterface $date): selfDependent::getRelation()
public function getRelation(): RelationDependent::setRelation()
public function setRelation(Relation|string $relation): selfDependent::getRelationValue()
public function getRelationValue(): stringDependent::setRelationValue()
public function setRelationValue(?string $value): selfFee class
class Fee Fee.php:13
A fee as it must be displayed (French law has practitioners post their fees and the reimbursement base): what for, how much, what the health insurance refunds on, for one practitioner or for the whole practice.
Fee::__construct()
public function __construct(string $label = '', string $amount = '', ?Practitioner $practitioner = null, ?string $reimbursement = null, ?string $category = null)Fee::__toString()
public function __toString(): stringFee::getId()
public function getId(): ?intFee::getPractitioner()
public function getPractitioner(): ?PractitionerFee::setPractitioner()
public function setPractitioner(?Practitioner $practitioner): selfFee::getCategory()
public function getCategory(): ?stringFee::setCategory()
public function setCategory(?string $category): selfFee::getLabel()
public function getLabel(): stringFee::setLabel()
public function setLabel(?string $label): selfFee::getAmount()
public function getAmount(): stringFee::setAmount()
public function setAmount(?string $amount): selfFee::getReimbursement()
public function getReimbursement(): ?stringFee::setReimbursement()
public function setReimbursement(?string $text): selfFee::getPosition()
public function getPosition(): intFee::setPosition()
public function setPosition(?int $position): selfHomeCareRequest class
class HomeCareRequest HomeCareRequest.php:21
Care asked at home: where (checked against the practice's service areas before it is accepted at all), what care, how often, from when to when, the prescription deposited in the vault. Accepted by the practice, it becomes a series of appointments in the agenda. The note the patient typed is kept encrypted.
const CARE_TYPES = ['injection', 'dressing', 'blood_test', 'hygiene', 'infusion', 'monitoring', 'medication', 'other']
HomeCareRequest::__construct()
public function __construct(?User $patient = null)HomeCareRequest::__toString()
public function __toString(): stringHomeCareRequest::getId()
public function getId(): ?intHomeCareRequest::getPatient()
public function getPatient(): ?UserHomeCareRequest::setPatient()
public function setPatient(?User $patient): selfHomeCareRequest::getDependent()
public function getDependent(): ?DependentHomeCareRequest::setDependent()
public function setDependent(?Dependent $dependent): selfHomeCareRequest::getStreet()
public function getStreet(): stringHomeCareRequest::setStreet()
public function setStreet(?string $street): selfHomeCareRequest::getPostalCode()
public function getPostalCode(): stringHomeCareRequest::setPostalCode()
public function setPostalCode(?string $code): selfHomeCareRequest::getCity()
public function getCity(): stringHomeCareRequest::setCity()
public function setCity(?string $city): selfHomeCareRequest::getAddress()
public function getAddress(): stringHomeCareRequest::getPhone()
public function getPhone(): ?stringHomeCareRequest::setPhone()
public function setPhone(?string $phone): selfHomeCareRequest::getCareType()
public function getCareType(): stringHomeCareRequest::setCareType()
public function setCareType(?string $type): selfHomeCareRequest::getFrequency()
public function getFrequency(): CareFrequencyHomeCareRequest::setFrequency()
public function setFrequency(CareFrequency|string $frequency): selfHomeCareRequest::getStartDate()
public function getStartDate(): \DateTimeImmutableHomeCareRequest::setStartDate()
public function setStartDate(\DateTimeInterface $date): selfHomeCareRequest::getEndDate()
public function getEndDate(): ?\DateTimeImmutableHomeCareRequest::setEndDate()
public function setEndDate(?\DateTimeInterface $date): selfHomeCareRequest::getPreferredTime()
public function getPreferredTime(): ?stringHomeCareRequest::setPreferredTime()
public function setPreferredTime(?string $time): selfHomeCareRequest::getPrescription()
public function getPrescription(): ?DocumentHomeCareRequest::setPrescription()
public function setPrescription(?Document $document): selfHomeCareRequest::getNotesCipher()
public function getNotesCipher(): ?stringHomeCareRequest::setNotesCipher()
public function setNotesCipher(?string $cipher): selfHomeCareRequest::getStatus()
public function getStatus(): CareStatusHomeCareRequest::setStatus()
public function setStatus(CareStatus $status): selfHomeCareRequest::getStatusValue()
public function getStatusValue(): stringHomeCareRequest::isPending()
public function isPending(): boolHomeCareRequest::getArea()
public function getArea(): ?ServiceAreaHomeCareRequest::setArea()
public function setArea(?ServiceArea $area): selfHomeCareRequest::getAssignedTo()
public function getAssignedTo(): ?MemberHomeCareRequest::setAssignedTo()
public function setAssignedTo(?Member $member): selfHomeCareRequest::getSeries()
public function getSeries(): ?stringHomeCareRequest::setSeries()
public function setSeries(?string $series): selfHomeCareRequest::getCreatedAt()
public function getCreatedAt(): \DateTimeImmutableHomeCareRequest::getDecidedAt()
public function getDecidedAt(): ?\DateTimeImmutableHomeCareRequest::getVisitCount()
public function getVisitCount(): intHow many visits it asks for.
IdentityLink class
class IdentityLink IdentityLink.php:15
Whose account an identity of FranceConnect or Pro Santé Connect is: the
provider and its sub - the provider's own, stable identifier of the
person - never an e-mail address, which proves nothing about who someone
is. One identity, one account; an account may hold several identities.
IdentityLink::__construct()
public function __construct(User $user, string $provider, string $sub)IdentityLink::getId()
public function getId(): ?intIdentityLink::getUser()
public function getUser(): UserIdentityLink::getProvider()
public function getProvider(): stringIdentityLink::getSub()
public function getSub(): stringIdentityLink::getAcr()
public function getAcr(): ?stringIdentityLink::getCreatedAt()
public function getCreatedAt(): \DateTimeImmutableIdentityLink::getLastUsedAt()
public function getLastUsedAt(): ?\DateTimeImmutableIdentityLink::used()
public function used(?string $acr = null): selfPatientProfile class
class PatientProfile PatientProfile.php:16
What the practice needs to know of an account to receive its holder: who they are, how to reach them, where they live (home visits), whether one of the practice's physicians is their "médecin traitant", and whether they object to their documents being shared within the care team. Not a medical record: nothing clinical is kept here.
PatientProfile::__construct()
public function __construct(?User $user = null, string $givenNames = '', string $familyName = '')PatientProfile::__toString()
public function __toString(): stringPatientProfile::getId()
public function getId(): ?intPatientProfile::getUser()
public function getUser(): ?UserPatientProfile::setUser()
public function setUser(?User $user): selfPatientProfile::getFamilyName()
public function getFamilyName(): stringPatientProfile::setFamilyName()
public function setFamilyName(?string $name): selfPatientProfile::getGivenNames()
public function getGivenNames(): stringPatientProfile::setGivenNames()
public function setGivenNames(?string $names): selfPatientProfile::getFullName()
public function getFullName(): stringPatientProfile::getBirthDate()
public function getBirthDate(): ?\DateTimeImmutablePatientProfile::setBirthDate()
public function setBirthDate(?\DateTimeInterface $date): selfPatientProfile::getPhone()
public function getPhone(): ?stringPatientProfile::setPhone()
public function setPhone(?string $phone): selfPatientProfile::getStreet()
public function getStreet(): ?stringPatientProfile::setStreet()
public function setStreet(?string $street): selfPatientProfile::getPostalCode()
public function getPostalCode(): ?stringPatientProfile::setPostalCode()
public function setPostalCode(?string $code): selfPatientProfile::getCity()
public function getCity(): ?stringPatientProfile::setCity()
public function setCity(?string $city): selfPatientProfile::getAddress()
public function getAddress(): stringPatientProfile::getReferringPhysician()
public function getReferringPhysician(): ?PractitionerPatientProfile::setReferringPhysician()
public function setReferringPhysician(?Practitioner $practitioner): selfPatientProfile::isSharingOpposition()
public function isSharingOpposition(): boolPatientProfile::setSharingOpposition()
public function setSharingOpposition(bool $opposition): selfPatientProfile::getCreatedAt()
public function getCreatedAt(): \DateTimeImmutablePatientProfile::getErasedAt()
public function getErasedAt(): ?\DateTimeImmutablePatientProfile::erase()
public function erase(): selfPractice class
class Practice Practice.php:15
The practice of care an office is: its kind (a multi-professional health centre, a nursing practice...), its FINESS number when it has one, what to do in an emergency and how care is given out of hours.
Practice::__construct()
public function __construct(?Office $office = null, PracticeType $type = PracticeType::MSP)Practice::__toString()
public function __toString(): stringPractice::getId()
public function getId(): ?intPractice::getOffice()
public function getOffice(): ?OfficePractice::setOffice()
public function setOffice(?Office $office): selfPractice::getType()
public function getType(): PracticeTypePractice::setType()
public function setType(PracticeType|string $type): selfPractice::getTypeValue()
public function getTypeValue(): stringPractice::setTypeValue()
public function setTypeValue(?string $value): selfPractice::getFiness()
public function getFiness(): ?stringPractice::setFiness()
public function setFiness(?string $finess): selfPractice::getPresentation()
public function getPresentation(): ?stringPractice::setPresentation()
public function setPresentation(?string $text): selfPractice::getEmergencyInstructions()
public function getEmergencyInstructions(): ?stringPractice::setEmergencyInstructions()
public function setEmergencyInstructions(?string $text): selfPractice::getOutOfHours()
public function getOutOfHours(): ?stringPractice::setOutOfHours()
public function setOutOfHours(?string $text): selfPractice::isAcceptsNewPatients()
public function isAcceptsNewPatients(): boolPractice::setAcceptsNewPatients()
public function setAcceptsNewPatients(bool $accepts): selfPractice::isTeleconsultation()
public function isTeleconsultation(): boolPractice::setTeleconsultation()
public function setTeleconsultation(bool $on): selfPractice::isHomeCare()
public function isHomeCare(): boolPractice::setHomeCare()
public function setHomeCare(bool $on): selfPractice::isHomeCareFirst()
public function isHomeCareFirst(): boolHome care first on the pages: a nursing practice, or any practice that only visits.
Practitioner class
class Practitioner Practitioner.php:17
What a member of the team is as a health professional: the profession (the Annuaire Santé's code and its name), a specialty, the agreement with the health insurance, whether the Carte Vitale and third-party payment are taken, the MSSanté address. The RPPS number is the member's registryId: "Lire l'Annuaire Santé" fills the profession and the MSSanté address.
Practitioner::__construct()
public function __construct(?Member $member = null, ?string $profession = null, ?string $professionCode = null)Practitioner::__toString()
public function __toString(): stringPractitioner::getId()
public function getId(): ?intPractitioner::getMember()
public function getMember(): ?MemberPractitioner::setMember()
public function setMember(?Member $member): selfPractitioner::getRpps()
public function getRpps(): ?stringPractitioner::getProfessionCode()
public function getProfessionCode(): ?stringPractitioner::setProfessionCode()
public function setProfessionCode(?string $code): selfPractitioner::getProfession()
public function getProfession(): ?stringPractitioner::setProfession()
public function setProfession(?string $profession): selfPractitioner::getSpecialty()
public function getSpecialty(): ?stringPractitioner::setSpecialty()
public function setSpecialty(?string $specialty): selfPractitioner::getSector()
public function getSector(): ?SectorPractitioner::setSector()
public function setSector(Sector|string|null $sector): selfPractitioner::getSectorValue()
public function getSectorValue(): ?stringPractitioner::setSectorValue()
public function setSectorValue(?string $value): selfPractitioner::isCarteVitale()
public function isCarteVitale(): boolPractitioner::setCarteVitale()
public function setCarteVitale(bool $on): selfPractitioner::isThirdPartyPayment()
public function isThirdPartyPayment(): boolPractitioner::setThirdPartyPayment()
public function setThirdPartyPayment(bool $on): selfPractitioner::isAcceptsNewPatients()
public function isAcceptsNewPatients(): boolPractitioner::setAcceptsNewPatients()
public function setAcceptsNewPatients(bool $on): selfPractitioner::getMssante()
public function getMssante(): ?stringPractitioner::setMssante()
public function setMssante(?string $address): selfPractitioner::isPhysician()
public function isPhysician(): boolA physician (the only profession a patient declares as "médecin traitant").
Base\Health\Enum
CareFrequency enum
enum CareFrequency CareFrequency.php:5
case ONCE = 'once'case DAILY = 'daily'case EVERY_OTHER_DAY = 'every_other_day'case WEEKLY = 'weekly'
CareFrequency::label()
public function label(): stringCareFrequency::interval()
public function interval(): ?\DateIntervalThe interval between two visits; null: a single visit.
CareFrequency::count()
public function count(\DateTimeInterface $from, ?\DateTimeInterface $until): intHow many visits between two calendar days, both included: the days as written, whatever the hour and the timezone.
CareStatus enum
enum CareStatus CareStatus.php:5
case PENDING = 'pending'case ACCEPTED = 'accepted'case REFUSED = 'refused'case CANCELLED = 'cancelled'
CareStatus::label()
public function label(): stringPracticeType enum
enum PracticeType PracticeType.php:6
What kind of practice the site is for; the pages put forward what suits it.
case MSP = 'msp'case HEALTH_CENTRE = 'health_centre'case MEDICAL = 'medical'case NURSING = 'nursing'case PHYSIOTHERAPY = 'physiotherapy'case MIDWIFERY = 'midwifery'case PARAMEDICAL = 'paramedical'
PracticeType::label()
public function label(): stringPracticeType::isHomeCareFirst()
public function isHomeCareFirst(): boolA practice that mostly goes to its patients: home care comes first on its pages.
PracticeType::schemaType()
public function schemaType(): stringschema.org's type for the JSON-LD.
Relation enum
enum Relation Relation.php:5
case CHILD = 'child'case PARENT = 'parent'case SPOUSE = 'spouse'case OTHER = 'other'
Relation::label()
public function label(): stringSector enum
enum Sector Sector.php:6
A practitioner's agreement with the health insurance (conventionnement).
case SECTOR_1 = 'sector_1'case SECTOR_2 = 'sector_2'case OPTAM = 'optam'case NOT_CONTRACTED = 'not_contracted'case CONTRACTED = 'contracted'Professions with a single agreement (nurses, physiotherapists, midwives): "conventionné".
Sector::label()
public function label(): stringBase\Health\Exception
HomeCareException class
class HomeCareException extends RuntimeException HomeCareException.php:6
A home care request refused, its reason a translation key of the health domain.
HomeCareException::__construct()
public function __construct(string $key, readonly array $parameters = [])HomeCareException::getKey()
public function getKey(): stringHomeCareException::getParameters()
public function getParameters(): arrayBase\Health\Mailbox
CareTeamRecipients class
final class CareTeamRecipients implements RecipientProviderInterface CareTeamRecipients.php:13
Whom a patient may write to besides the secretariat's desk: the practitioners who follow them - by name, never by a username to guess.
CareTeamRecipients::__construct()
public function __construct(readonly CareTeam $careTeam)CareTeamRecipients::recipients()
public function recipients(User $sender): arrayBase\Health\Repository
DependentRepository class
class DependentRepository extends ServiceEntityRepository DependentRepository.php:10
DependentRepository::__construct()
public function __construct(ManagerRegistry $registry)DependentRepository::findForHolder()
public function findForHolder(object $holder): arrayFeeRepository class
class FeeRepository extends ServiceEntityRepository FeeRepository.php:10
FeeRepository::__construct()
public function __construct(ManagerRegistry $registry)FeeRepository::findForPractitioner()
public function findForPractitioner(object $practitioner): arrayFeeRepository::findOrdered()
public function findOrdered(): array- Returns
every fee, the practice's first then each practitioner's
HomeCareRequestRepository class
class HomeCareRequestRepository extends ServiceEntityRepository HomeCareRequestRepository.php:10
HomeCareRequestRepository::__construct()
public function __construct(ManagerRegistry $registry)HomeCareRequestRepository::findPending()
public function findPending(int $limit = 20): arrayHomeCareRequestRepository::countPending()
public function countPending(): intHomeCareRequestRepository::findForPatient()
public function findForPatient(object $patient): arrayHomeCareRequestRepository::purgeDecidedBefore()
public function purgeDecidedBefore(\DateTimeInterface $before): intIdentityLinkRepository class
class IdentityLinkRepository extends ServiceEntityRepository IdentityLinkRepository.php:10
IdentityLinkRepository::__construct()
public function __construct(ManagerRegistry $registry)IdentityLinkRepository::findOneBySub()
public function findOneBySub(string $provider, string $sub): ?IdentityLinkIdentityLinkRepository::findForUser()
public function findForUser(object $user): arrayPatientProfileRepository class
class PatientProfileRepository extends ServiceEntityRepository PatientProfileRepository.php:10
PatientProfileRepository::__construct()
public function __construct(ManagerRegistry $registry)PatientProfileRepository::findOneByUser()
public function findOneByUser(?object $user): ?PatientProfilePatientProfileRepository::search()
public function search(string $query, int $limit = 20): array- Returns
by name, for the staff's search
PracticeRepository class
class PracticeRepository extends ServiceEntityRepository PracticeRepository.php:10
PracticeRepository::__construct()
public function __construct(ManagerRegistry $registry)PracticeRepository::findMain()
public function findMain(): ?PracticeThe practice of the main office (a site is one practice).
PractitionerRepository class
class PractitionerRepository extends ServiceEntityRepository PractitionerRepository.php:10
PractitionerRepository::__construct()
public function __construct(ManagerRegistry $registry)PractitionerRepository::findOneByMember()
public function findOneByMember(?object $member): ?PractitionerPractitionerRepository::findOneByUser()
public function findOneByUser(?object $user): ?PractitionerPractitionerRepository::findOneByRpps()
public function findOneByRpps(string $rpps): ?PractitionerBy RPPS number: how Pro Santé Connect names a practitioner.
PractitionerRepository::findPhysicians()
public function findPhysicians(): array- Returns
the practice's physicians, for "médecin traitant"
Base\Health\Security
CareTeamAudience class
final class CareTeamAudience implements AudienceResolverInterface CareTeamAudience.php:26
Medical secrecy, as the practice's tool applies it to a patient's documents (beyond the patient and the author, who always read theirs):
- a practitioner who follows the patient (Base\Health\Service\CareTeam) reads them - unless the patient objected to sharing within the team;
- the secretariat files and sends: it sees that a document exists and what it is called, not what it says;
- a document not marked confidential (an administrative letter) is read by the staff;
- nobody else: neither another patient, nor the site's administrators as such.
CareTeamAudience::__construct()
public function __construct(readonly CareTeam $careTeam, readonly RoleHierarchyInterface $roles, readonly string $practitionerRole = 'ROLE_PRACTITIONER', readonly string $secretaryRole = 'ROLE_SECRETARY', readonly string $staffRole = 'ROLE_STAFF')CareTeamAudience::decide()
public function decide(string $attribute, Document $document, UserInterface $user): ?boolBase\Health\Service
AppointmentNaming class
final class AppointmentNaming AppointmentNaming.php:15
An appointment booked online carries the patient's name as their profile writes it ("Camille ÉRABLE"), not the account's identifier: it is what the agenda shows the staff.
AppointmentNaming::__construct()
public function __construct(readonly PatientProfileRepository $profiles, readonly EntityManagerInterface $entityManager)AppointmentNaming::name()
public function name(AppointmentEvent $event): voidCareTeam class
class CareTeam CareTeam.php:20
Who follows a patient - their care team in the practice: the members they have, or had, an appointment with (not a cancelled one), and the physician of the practice they declared as their "médecin traitant".
It is what lets a practitioner read a patient's documents, and what a patient is offered to write to.
CareTeam::__construct()
public function __construct(readonly EntityManagerInterface $entityManager, readonly MemberRepository $members, readonly PatientProfileRepository $profiles)CareTeam::members()
public function members(User $patient): arrayCareTeam::follows()
public function follows(User $staff, User $patient): boolWhether that account is a member who follows the patient.
CareTeam::hasOpposition()
public function hasOpposition(User $patient): boolThe patient objected to their documents being shared within the team.
DependentBeneficiaries class
final class DependentBeneficiaries implements BeneficiaryProviderInterface DependentBeneficiaries.php:10
A patient books for themselves or for one of their dependants: a child, a parent they care for.
DependentBeneficiaries::__construct()
public function __construct(readonly DependentRepository $dependents, readonly TranslatorInterface $translator)DependentBeneficiaries::beneficiaries()
public function beneficiaries(object $user): arrayHomeCare class
class HomeCare HomeCare.php:29
Care at home, from the request to the agenda. A request is checked against the practice's service areas first: outside all of them it is refused at once, with the reason, rather than left waiting for a call back. Accepted by the practice - who goes, the first visit's day and hour - it becomes a series of appointments (omnibase/office's Booker).
HomeCare::__construct()
public function __construct(readonly EntityManagerInterface $entityManager, readonly ServiceAreaRepository $areas, readonly AppointmentTypeRepository $types, readonly Booker $booker, readonly Cipher $cipher)HomeCare::submit()
public function submit(User $patient, array $data, ?Dependent $dependent = null, ?Document $prescription = null): HomeCareRequest- Throws
HomeCareException home_care.error.outside_area, .incomplete, .dates
HomeCare::accept()
public function accept(HomeCareRequest $request, Member $member, \DateTimeInterface $first, ?User $by = null, ?AppointmentType $type = null): arrayAccepted: the visits enter the agenda, the first on $first (day and hour), the others at the request's frequency until its end date.
- Throws
HomeCareException|\BookingException
HomeCare::refuse()
public function refuse(HomeCareRequest $request): voidHomeCare::cancel()
public function cancel(HomeCareRequest $request): voidHomeCare::visitors()
public function visitors(): array- Returns
the members who go to patients: those with a home-visit appointment type
HomeCare::notes()
public function notes(HomeCareRequest $request): ?stringPatientData class
class PatientData PatientData.php:26
A patient's rights over their data (GDPR art. 15, 17, 20): everything the practice's site holds about them as one JSON document, or a zip with their documents decrypted; and erasure - what identifies them goes at once, what must be kept (past appointments, the access log) stays, bare, until health:purge's retention runs out.
PatientData::__construct()
public function __construct(readonly PatientProfileRepository $profiles, readonly DependentRepository $dependents, readonly HomeCareRequestRepository $homeCare, readonly IdentityLinkRepository $links, readonly AppointmentRepository $appointments, readonly DocumentRepository $documents, readonly AccessLogRepository $logs, readonly DocumentVault $vault, readonly Cipher $cipher, readonly Booker $booker, readonly HomeCare $care, readonly EntityManagerInterface $entityManager)PatientData::export()
public function export(User $user): arrayPatientData::zip()
public function zip(User $user): stringA zip - data.json and each available document, decrypted - written to a temporary file whose path is returned.
PatientData::erase()
public function erase(User $user): voidErased: the profile emptied, the dependants removed, the upcoming appointments cancelled, the pending home care requests cancelled, the documents the patient deposited destroyed, those sent to them withdrawn. The account itself is closed from its own settings.
PatientProfiles class
class PatientProfiles PatientProfiles.php:13
A patient's profile, made when first needed - or when the account opens from the practice's invitation.
PatientProfiles::__construct()
public function __construct(readonly PatientProfileRepository $profiles, readonly EntityManagerInterface $entityManager)PatientProfiles::of()
public function of(User $user): PatientProfilePatientProfiles::onAccountCreated()
public function onAccountCreated(ClientAccountEvent $event): voidPractitionerRegistry class
class PractitionerRegistry PractitionerRegistry.php:18
"Lire l'Annuaire Santé": a practitioner read from the ANS's directory by their RPPS number (glitchr/omnistate with omnistate/annuaire-sante), their profession and MSSanté address written on the record. The key is the one typed in the back office (API keys) if there is one, else the configuration's (omnistate.annuaire_sante.api_key).
const KEY_SETTING = 'api.annuaire_sante.key'
PractitionerRegistry::__construct()
public function __construct(readonly MemberRegistry $members, readonly EntityManagerInterface $entityManager, readonly SettingBagInterface $settings, readonly ?HttpClientInterface $http = null)PractitionerRegistry::isAvailable()
public function isAvailable(): boolPractitionerRegistry::refresh()
public function refresh(Practitioner $practitioner): ?object- Returns
null: no RPPS on the record, or the directory does not know it
- Throws
Omnistate\Exception\OmnistateException the directory did not answer, or no key
ResultSender class
class ResultSender ResultSender.php:21
A result, a prescription, a report sent to a patient: kept in the office's encrypted vault, the patient told by an e-mail that says only "a document awaits you" (never by an e-mail that carries it: that would break medical secrecy), and, when asked, a word in the mailbox - itself stored encrypted, its notice without content.
The official channel to a patient's Mon espace santé is MSSanté: see Base\Health\Transmission\MssanteTransmitterInterface, reserved.
ResultSender::__construct()
public function __construct(readonly DocumentVault $vault, readonly ?object $mailbox = null)$mailboxwired when omnibase/mailbox is installed
ResultSender::send()
public function send(File|string $file, User $patient, User $sender, string $title, DocumentKind $kind = DocumentKind::RESULT, ?string $message = null, ?\DateTimeInterface $expiresAt = null): Document- Throws
Base\Office\Exception\ShareException|\Base\Office\Exception\KeyMissingException
Base\Health\Transmission
MssanteTransmitterInterface interface
interface MssanteTransmitterInterface MssanteTransmitterInterface.php:15
Reserved, not implemented: sending a document to a patient's Mon espace santé, or to another professional, through MSSanté - the official secure messaging of health. It takes an MSSanté operator and a professional's CPS card, which a practice's site does not have: a practice that gets them writes this interface's implementation; ResultSender would then offer it beside the vault.
MssanteTransmitterInterface::supports()
public function supports(string $address): boolWhether this address can be written to (a patient's "<INS>@patient.mssante.fr", a professional's box).
MssanteTransmitterInterface::transmit()
public function transmit(Document $document, string $from, string $to, string $subject, string $body): string$fromthe sender's own MSSanté address
- Returns
the operator's message id
Base\Health\Twig
HealthExtension class
class HealthExtension extends AbstractExtension HealthExtension.php:28
Health in templates: health_practice(), health_practitioner(member), health_fees(practitioner|null), health_emergency() (the banner's numbers), health_profile(user), health_care_team(user), health_types(member) (what can be booked with them), health_pending_care(), health_teleconsultation_referenced().
HealthExtension::__construct()
public function __construct(readonly PracticeRepository $practices, readonly PractitionerRepository $practitioners, readonly FeeRepository $fees, readonly PatientProfileRepository $profiles, readonly DependentRepository $dependents, readonly HomeCareRequestRepository $homeCare, readonly AppointmentTypeRepository $types, readonly CareTeam $careTeam, readonly array $emergency = [], readonly bool $referenced = false)HealthExtension::getFunctions()
public function getFunctions(): array