Lancement d’espaces de travail
Utilisez launchWorkspace2 depuis @openmrs/esm-framework pour ouvrir un espace de travail.
import { launchWorkspace2 } from '@openmrs/esm-framework';
const MyComponent = ({ patientUuid }) => {
const openGastrodynamics = () => {
void launchWorkspace2('gastrodynamics-form-workspace', {
patientUuid,
});
};
return <button onClick={openGastrodynamics}>Open gastrodynamics</button>;
};La signature complète est :
launchWorkspace2<WorkspaceProps, WindowProps, GroupProps>(
workspaceName,
workspaceProps,
windowProps,
groupProps,
);workspacePropsest transmis au composant d’espace de travail commeworkspaceProps.windowPropsest partagé par les espaces de travail de la même fenêtre.groupPropsest partagé par toutes les fenêtres et tous les espaces de travail du même groupe.- Les props
nullou omises sont considérées comme compatibles avec les props existantes.
launchWorkspace2 retourne une Promise<boolean>. Elle se résout à true lorsque l’espace de travail est lancé ou restauré, et à false lorsque l’utilisateur annule une confirmation de fermeture requise.
Espaces de travail patient nécessitant une visite
Pour les espaces de travail patient qui nécessitent une visite active, utilisez useLaunchWorkspaceRequiringVisit depuis @openmrs/esm-patient-common-lib.
import React from 'react';
import { Button } from '@carbon/react';
import { useTranslation } from 'react-i18next';
import { useLaunchWorkspaceRequiringVisit } from '@openmrs/esm-patient-common-lib';
const OrderBasketActionButton = ({ patientUuid }) => {
const { t } = useTranslation();
const launchOrderBasket = useLaunchWorkspaceRequiringVisit(patientUuid, 'order-basket');
return <Button onClick={() => launchOrderBasket()}>{t('launchOrderBasket', 'Launch order basket')}</Button>;
};
export default OrderBasketActionButton;Si les visites sont activées et que le patient n’a pas de visite active, O3 invite l’utilisateur à démarrer ou sélectionner une visite avant de lancer l’espace de travail.
Comportement
launchWorkspace2 suit le modèle de groupe et de fenêtre de Workspace v2 :
- Si le groupe cible n’est pas ouvert, O3 ouvre le groupe, ouvre la fenêtre cible et rend l’espace de travail demandé.
- Si un autre groupe est ouvert, ou si les props du groupe existant sont incompatibles, O3 vérifie les espaces de travail concernés pour détecter des changements non enregistrés, demande confirmation si nécessaire, puis ferme le groupe actuel et ses fenêtres.
- Si la fenêtre cible est déjà ouverte avec des props de fenêtre compatibles, le lancement d’un espace de travail déjà ouvert avec des props compatibles restaure cette fenêtre.
- Si la fenêtre cible ou l’espace de travail a des props incompatibles, O3 vérifie les changements non enregistrés avant de fermer la fenêtre et d’ouvrir une nouvelle instance.
launchWorkspace2ne crée pas d’espace de travail enfant. Depuis un espace de travail, utilisez la proplaunchChildWorkspacefournie parWorkspace2DefinitionProps.
Les titres sont définis par le wrapper <Workspace2 title="...">. L’option v1 workspaceTitle n’est pas utilisée par Workspace v2.