Etude de cas DA, 2010, Nouvelle-Calédonie :
Cas ASDOMI.
Réponse AJAX

CAS ASDOMI

Matériels et documents autorisés :

Barème :

Présentation du contexte

L'ASDOMI est une association qui gère un service de soins infirmiers à domicile (SSIAD) dans le département de l'Ain. Sa mission est de permettre le maintien à domicile de personnes dépendantes ou âgées.

L'ASDOMI dispose d'une capacité d'accueil de 96 « lits » et reçoit une dotation annuelle globale de la DASS (Direction des Affaires Sanitaires et Sociales) calculée en fonction du nombre de lits (nombre maximal de patients pouvant être pris en charge simultanément).

L'activité de l'ASDOMI est supervisée par la CPAM (Caisse Primaire d'Assurance Maladie) de l'Ain, dite caisse pivot, qui accorde les demandes d'entente préalable pour la prise en charge des soins et effectue des contrôles.

Pour mener à bien sa mission, l'ASDOMI emploie 35 aides-soignants, 3 infirmières coordinatrices, une secrétaire, une comptable et une directrice. Elle peut aussi recourir à des prestataires libéraux (infirmiers, pédicures, etc.) pour des soins spécialisés.

Pour faire face à l'explosion prévue des services à la personne, recentrer les aides-soignants sur leur cœur de métier et répondre aux exigences de qualité définies par la DASS, l'ASDOMI a décidé de refondre son système d'information devenu obsolète et a pour cela fait appel à une société de service et d'ingénierie informatique (SSII).

Vous faites partie de l'équipe de la SSII chargée de cette mission.

Dossier 1 - Gestion des dossiers patients

Documents à utiliser : annexes 1A, 1B, 1C

L'ASDOMI intervient sur prescription médicale qui fixe la durée de prise en charge. Les patients sont admis en fonction des places disponibles et après évaluation par une infirmière-coordinatrice de leur état de dépendance et de leurs besoins.

Les entrées

Lorsqu'un patient est admis, l'ASDOMI effectue une « entrée » : un dossier est alors ouvert dans lequel on note la date d'entrée, les informations du patient, de l'assuré (annexe 1A), le motif d'admission du patient, l'origine de la demande (annexe 1B), les coordonnées du médecin prescripteur et du médecin traitant et la date de fin de prise en charge.

Un patient admis peut être lui-même l'assuré, mais ce n'est pas toujours le cas.

Les demandes d'entente préalable

Une fois le dossier ouvert, une demande d'entente préalable est toujours envoyée à la CPAM de l'Ain, même si l'assuré dépend d'une autre caisse, pour obtenir un accord de remboursement des soins. La demande d'entente préalable est considérée comme acceptée si la CPAM ne répond pas dans un délai d'un mois.

Un dossier peut faire l'objet de demandes de renouvellement de l'entente préalable auprès de la CPAM, qui doivent être conservées dans le système d'information de l'ASDOMI.

Pour chaque demande de renouvellement, on enregistre la date de la demande et la nouvelle date de fin de la prise en charge. Pour chaque demande, y compris la demande initiale, la réponse de la caisse doit être mémorisée.

Le plan de soins et la tarification

Tous les soins sont recensés et portent un libellé précis. Durant la prise en charge d'un patient, les soins de base (aide à la toilette, à l'habillage, au repas, etc.) sont assurés par les aides-soignants de l'ASDOMI. D'autres soins infirmiers plus techniques sont assurés par des infirmiers libéraux mandatés par l'ASDOMI.

Les soins de base font l'objet d'un tarif horaire unique : leur durée estimée, exprimée en minutes, est mémorisée. Les soins infirmiers font l'objet d'une nomenclature générale des actes professionnels de la sécurité sociale (annexe 1C) qui permet d'en déterminer le tarif.

À chaque entrée, un plan de soins doit être établi : on décide des soins à effectuer et de leur fréquence hebdomadaire. Le plan de soins servira à la mise en place des interventions du personnel soignant, cette mise en place sortant du cadre de l'étude. À la suite de l'établissement du plan de soins, un avis d'admission (annexe 1A) est édité.

Les sorties

À la fin de la prise en charge du patient, l'ASDOMI effectue une « sortie ». La date de sortie et le motif de sortie sont enregistrés et le dossier est alors clos. Chaque motif de sortie possède un code et un libellé.

Les dossiers clos sont conservés dans le système d'information mais ne peuvent faire l'objet d'aucune modification.

1.1. Proposer un schéma entité-association concernant le domaine « gestion des dossiers patients ».

Votre réponse n°1

Dossier 2 - Suivi des tournées des aides-soignants

Document à utiliser : annexe 2

Toutes les semaines, la directrice élabore la tournée des aides-soignants qui interviennent au domicile des patients. Les aides-soignants empruntent un véhicule de l'ASDOMI pour leurs déplacements.

L'association s'est équipée d'un système de télégestion : les aides-soignants sont munis d'un assistant personnel qui leur permet de saisir leurs interventions et de les transférer à leur retour au siège de l'association. Ils disposent pour cela chacun d'un compte utilisateur qui leur permet de mettre à jour les données concernant les interventions réalisées.

Les données sont mémorisées dans une base de données (annexe 2A) qui sert au calcul de la paye et à l'élaboration de diverses statistiques.

Le SGBDR fournit des fonctions sur les données de type date et heure (annexe 2A).

2.1. Écrire le(s) ordre(s) SQL pour créer la table INTERVENTION et les contraintes d'intégrité qui concernent cette table.

Votre réponse n°2

2.2. Écrire les ordres SQL permettant d'autoriser tous les utilisateurs de la base de données à consulter la table INTERVENTION et l'utilisateur d'identifiant RDeltour à faire toute insertion, modification ou suppression de données sur cette même table.

Votre réponse n°3

2.3. Écrire les ordres SQL permettant de répondre aux besoins exprimés ci-dessous :

a) Quels sont les aides-soignants qui ont travaillé au moins un dimanche au cours du mois d'avril 2010 ?

Votre réponse n°4

b) Combien de dossiers ont fait l'objet d'au moins une intervention en avril 2010 ?

Votre réponse n°5

On souhaite créer une vue nommée vKilométrage pour suivre le kilométrage réalisé par chaque véhicule depuis le début de l'année. Le schéma de la vue est le suivant :

vKilométrage (noVéhicule, noImmat, marque, totalKm)

2.4. Écrire en SQL les requêtes pour :

a) Créer la vue vKilométrage.

Votre réponse n°6

b) Afficher le numéro d'immatriculation du(des) véhicule(s) qui a (ont) le plus roulé depuis le début de l'année.

Votre réponse n°7

Dossier 3 - Outils d'évaluation des prestations

Documents à utiliser : annexes 3A, 3B, 3C

L'ASDOMI reçoit chaque année une dotation globale basée sur un nombre prévu de jours de soins. Afin d'équilibrer son budget et de satisfaire au mieux les demandes d'admission de plus en plus nombreuses, il est demandé à la SSII de développer une application de type « tableau de bord » proposant différents outils d'évaluation des prestations réalisées depuis le début de l'année, notamment en termes de :

Cette application sera réalisée dans un langage de programmation objet.

Les annexes 3A et 3B fournissent une description des classes métier requises pour l'application, notamment :

L'annexe 3C fournit la description textuelle des classes techniques utilisées.

3.1. Écrire la méthode ajoutePrestation() de la classe Dossier.

Votre réponse n°8

3.2. Écrire le constructeur de la classe Prestation, ce dernier ayant la responsabilité d'assurer la navigation bidirectionnelle de l'association entre les classes Prestation et Intervenant.

Votre réponse n°9

Comme dit précédemment, le rapport du nombre global de prestations externes sur le nombre total de prestations constitue un indicateur d'évaluation de l'activité de l'ASDOMI.

3.3. Écrire la méthode getNbPrestationsExternes() de la classe Dossier.

Votre réponse n°10

Le nombre de jours de soins consommés sur l'ensemble des dossiers permet à la directrice de l'ASDOMI de prévoir ses possibilités de prestations pour les semaines à venir.

3.4. Écrire la méthode compareTo() de la classe Prestation, permettant de comparer une prestation à une autre, en regard de la date de réalisation de cette prestation.

Votre réponse n°11

3.5. Écrire la méthode getNbJoursSoins() de la classe Dossier qui retourne le nombre de jours de soins consommés pour le dossier.

Votre réponse n°12

Dossier 4 - Évolution du réseau local

Documents à utiliser : aucune

Une fois leur tournée terminée, les aides-soignants se rendent dans les locaux de l'association pour transférer les informations de leur assistant personnel vers la base de données. Ces assistants personnels sont munis d'une carte réseau Wi-Fi (Wireless Fidelity norme 802.11g) et ne disposent d'aucune adresse IP fixe. Une fois connecté au réseau de l'association, l'assistant personnel invoque un service web hébergé sur le serveur local pour mettre à jour les informations de la tournée.

Le schéma du réseau est présenté ci-dessous :

schéma du réseau

4.1.

a) Indiquer le serveur avec lequel communique un assistant personnel pour obtenir les informations suivantes : adresse IP, masque de sous-réseau, passerelle par défaut, serveur DNS.

Votre réponse n°13

b) Justifier le choix de l'utilisation de ce service par l'administrateur pour les assistants personnels.

Votre réponse n°14

c) Expliquer pourquoi un assistant personnel s'adresse à ce serveur en mode diffusion.

Votre réponse n°15

4.2

a) Proposer une plage d'adresses IP possible dans laquelle un assistant personnel peut obtenir son adresse IP. Justifier la proposition.

Votre réponse n°16

b) Proposer un exemple de configuration IP - adresse IP, masque de sous-réseau, passerelle par défaut, serveur DNS - pouvant être reçue par un assistant personnel.

Votre réponse n°17

L'ASDOMI occupe actuellement le rez-de-chaussée d'une maison. Un câblage de type Ethernet 100Base-TX est installé dans trois bureaux. Une nouvelle salle de réunion est installée au premier étage. Vous êtes chargé(e) par la direction de faire une recherche sur les différentes solutions qui permettraient la connexion depuis cette salle au réseau informatique. Vous étudiez trois possibilités : le Wi-Fi, l'Ethernet filaire et le CPL (courant porteur en ligne).

4.3. Définir, pour chacune des trois technologies citées ci-dessus, les éléments nécessaires pour raccorder les ordinateurs au réseau local.

Votre réponse n°18

Dossier 5 - Échange de données informatisé - EDI

Documents à utiliser : annexes 1C, 4A, 4B

Tous les prestataires, libéraux ou salariés, sont dotés d'assistants personnels pour collecter les données sur les patients (identité, soins pratiqués, etc.) à chaque intervention et restituer les informations relatives aux soins pratiqués notamment selon la nomenclature décrite en annexe 1C pour les soins infirmiers.

À ce jour, le transfert vers la CPAM des feuilles de soins papiers permet le versement à l'ASDOMI des sommes payées aux prestataires libéraux pour les soins infirmiers  pratiqués.

L'ASDOMI est actuellement en phase de test concernant le projet de télétransmission des données émanant des prestataires libéraux vers la CPAM. Tous les soirs, un fichier XML issu d'une extraction par l'application de gestion des soins de l'ASDOMI sera télétransmis à la CPAM.

télétransmission

Un premier fichier XML (annexe 4A) a été produit par l'ASDOMI. La structure attendue des documents XML est définie par le schéma XML de la CPAM (annexe 4B).

5.1. Repérer sur quels points le fichier XML de l'ASDOMI ne satisfait pas le schéma XML de la CPAM.

Votre réponse n°19

5.2. Indiquer sur quel(s) élément(s) du système d'information de l'ASDOMI il faut agir pour rendre valide la télétransmission.

Votre réponse n°20

Le nombre d'intervenants s'accroît et conduit à un équipement en assistants personnels conséquent (40 personnes équipées en 2010 avec une croissance prévisionnelle de 10% par an). Cet équipement pèse sur le budget de l'ASDOMI et les problèmes de maintenance se multiplient.

La directrice de l'association envisage de recourir à compter du 1er janvier 2011 à une location de parcs PDA avec contrat de maintenance inclus.

Deux propositions ont retenu son attention :

Proposition 1 : location des PDA pour un montant annuel unitaire de 100 €.
Services inclus :

Proposition 2 : adhésion à un service de location de parc de 40 à 60 PDA pour un montant annuel de 2 000 € et location unitaire d'un PDA pour un montant annuel de 60 €.
Services inclus :

5.3. Comparer les deux solutions en termes de prestations et de coût pour un parc de 40 unités.

Votre réponse n°21

5.4.

a)Indiquer la taille du parc qui conduira à privilégier la proposition 2.

Votre réponse n°22

b)Indiquer l'année où il sera opportun de choisir la proposition 2.

Votre réponse n°23

Annexes

Annexe 1A : Avis d'admission

AVIS D'ADMISSIONDOSSIER N° 3645
DATE ENTRÉE : 02/07/2009

IDENTIFICATION DU PATIENT
Nom et prénom : BIENASSIS Marie
Adresse :2, rue du docteur Long
01000 Bourg En Bresse
N° de SS : 2 08 11 01 053 012 / 56 Né(e) le : 13/11/1908
Si le patient n'est pas l'assuré, identification de l'assuré(e)
Nom et prénom : LONGWY Marcel
N° de SS : 1 08 09 01 053 020 / 93

CAISSE D'ASSURANCE MALADIE
Nom :MSA - Mutualité Sociale Agricole
Adresse :15, avenue champ de foire
01000 Bourg En Bresse

Médecin traitant à la date du 02/07/2009 : ASTIER Pierre 1, rue des remparts 01000 Bourg En Bresse
Origine de la demande : La famille, les voisins
Médecin prescripteur : ASTIER Pierre 1, rue des remparts 01000 Bourg En Bresse
Date de demande de prise en charge : 02/07/2009
Date de fin de prise en charge : 02/10/2009
Motif d'admission : Troubles du comportement

PLAN DE SOINS
Soins de baseFréq.Soins infirmiersFréq.
Toilette7Injection intramusculaire
PédiluveInjection intraveineuse1
AlimentationPansement courant
Surveillance hydratation7Pansement lourd
Surveillance fonction élimination7Séance de soins infirmiers d'une demi-heure
Change poche urineBranchement de perfusion
Soins prévention escarresChangement de flacon(s) perfusion
Prise médicaments7Arrêt et retrait perfusion
Éducation de l'entourage3
Stimulation7
Soutien psychologique3

Annexe 1B : Origine de la demande de prise en charge

CodeLibellé
1La personne elle-même
2La famille, les voisins
3Le médecin traitant
......

Annexe 1C : Nomenclature des soins infirmiers

Les soins infirmiers sont désignés ici sous le terme d'actes.

Les actes

Chaque acte s'appuie sur une lettre-clé et un coefficient. Le coefficient est un nombre, qui servira de coefficient multiplicateur de la valeur de la lettre-clé pour obtenir la valeur de l'acte. Pour faire simple : Valeur de l'acte =  (tarif associé à la lettre-clé) x coefficient.

Les lettres clés

Les lettres-clés sont propres à chaque profession et participent au codage des actes. Pour les infirmiers, on trouve :

Lettre-cléLibelléTarif
AMIActe médico-infirmier3,00 €
AISActe de soins infirmier2,50 €
DIDémarche de soins infirmiers10, 00 €

Les tarifs des lettres-clé sont régulièrement renégociés entre les syndicats représentatifs de la profession et l'UNCAM (Union Nationale des Caisses d'Assurance Maladie). Les tarifs ci-dessus sont ceux valables à compter du 1er juillet 2009. Par souci de simplification, le système d'information conservera uniquement les derniers tarifs en vigueur.

EXTRAIT de la nomenclature des actes utilisés par le SSIAD

LibelléLettre-CléCoefficient
Injection intramusculaireAMI1
Injection intraveineuseAMI2
Pansement courantAMI2
Pansement lourdAMI4
Séance de soins infirmiers d'une demi-heureAIS3
Branchement de perfusionAIS4
Changement de flacon(s) perfusionAIS2
Arrêt et retrait perfusionAIS3

Quelques exemples

Une injection intramusculaire : lettre-clé AMI coefficient 1  soit 3,00 €
Une injection intraveineuse : lettre-clé AMI coefficient 2 soit 3,00 € x 2 = 6,00 €
Un pansement courant : lettre-clé AMI coefficient 2 soit 3,00€ x 2 = 6,00 €
Une séance de soins infirmiers d'1/2h : lettre-clé AIS coefficient 3  soit 2,50 € x 3 = 7,50 €

Annexe 2 : Schéma relationnel de la base de données des tournées 

DOSSIER (numéro, nom, prénom, ...)
	numéro : clé primaire

	Relation qui regroupe les informations concernant les dossiers d'admission.
	Tous les attributs ne sont pas présentés ici.

SALARIE (matricule, nom, prénom, ...)
	matricule : clé primaire

	Relation qui regroupe les informations concernant les membres du personnel. 
	Tous les attributs ne sont pas présentés ici.

VEHICULE (numéro, noImmat, marque, catégorie, dateAcquisition)
	numéro : clé primaire

	Relation qui regroupe les informations concernant les véhicules du SSIAD. 

INTERVENTION (dateIntervention, heureDébut, matriculeSalarié, duréeIntervention, nbKm, noDossier, noVéhicule)
	dateIntervention, heureDébut, matriculeSalarié : clé primaire
	matriculeSalarié : clé étrangère en référence à matricule de SALARIE
	noDossier : clé étrangère en référence à numéro de DOSSIER
	noVéhicule : clé étrangère en référence à numéro de VEHICULE

	Relation qui regroupe les informations concernant les tournées. 

	Les colonnes heureDébut, duréeIntervention représentent respectivement l'heure de début et la
	durée en minutes de l'intervention au domicile d'un patient. La colonne heureDébut est de type
	TIME qui correspond au format ‘hh:mm:ss'.
	La colonne nbKm représente le nombre de kilomètres parcourus par l'aide-soignant pour se
	rendre au domicile du patient.

	Toutes les clés étrangères sont des entiers.

Le SGBDR utilisé propose différentes fonctions de conversion et de manipulation sur les dates et heures :

Annexe 3A : Diagramme partiel des classes métier

diagramme des classes

Commentaires :
  Accessibilité :

    Symbole - (moins) : membre privé
    Symbole + (plus) : membre public

Remarque : Les constructeurs, accesseurs et paramètres des méthodes ne sont pas présentés sur ce diagramme.

Annexe 3B : Description textuelle des classes métier

Classe Dossier

Attributs privés :
	nomPatient		: Chaîne
	prénomPatient 	: Chaîne
	dateNaissancePatient  : Date
	mesPrestations 	: Collection de Prestation  // cette collection est initialement dans un ordre quelconque
Méthodes publiques :
	Dossier (unNomPatient : Chaîne, unPrénomPatient : Chaîne, uneDateNaissancePatient : Date )
		// constructeur de la classe Dossier
	Procédure ajoutePrestation (unLibellé : Chaîne, uneDate : Date, uneHeure : Heure,
	unIntervenant : Intervenant) 
		// permet d'ajouter une prestation au dossier
	Fonction getNbPrestationsExternes () : Entier
		// Retourne le nombre de prestations externes réalisées pour le dossier
	Fonction getNbPrestations () : Entier
		// Retourne le nombre de prestations réalisées pour le dossier
	Fonction getNbJoursSoins () : Entier
		// Retourne le nombre de jours de soins comptabilisés pour le dossier. Il ne s'agit pas ici de déterminer
		// le nombre de prestations attachées à un dossier, mais le nombre de jours pour lesquels au moins 
		// une prestation a été réalisée.
		// Ainsi, un dossier avec 7 prestations, les 3 premières ayant eu lieu le 10 août 2008, les 4 dernières
		// le 11 août 2008, retournera la valeur 2 sur appel de la méthode getNbJoursSoins().

FinClasse

Classe Prestation

Attributs privés :
	libellé		: Chaîne
	dateSoin	: Date
	heureSoin	: Heure
	l_Intervenant	: Intervenant
Méthodes publiques :
	Prestation (unLibellé : Chaîne, uneDate : Date, uneHeure : Heure, 
	unIntervenant : Intervenant) 	// constructeur de la classe Prestation
	Fonction compareTo (unePrestation : Prestation) : Entier
		// Fonction permettant de comparer 2 prestations, la prestation courante et le paramètre unePrestation,
		// la comparaison porte ici sur la date de la prestation.
		// retourne 0 si la date de la prestation courante est égale à la date de la prestation unePrestation
		// retourne 1 si la date de la prestation courante est postérieure à la date de la prestation unePrestation
		// retourne -1 si la date de la prestation courante est antérieure à la date de la prestation unePrestation
	Fonction getDateSoin ( ) : Date 
		// accesseur sur l'attribut dateSoin 
	Fonction getHeureSoin ( ) : Heure 
		// accesseur sur l'attribut heureSoin 
	Fonction getL_Intervenant ( ) : Intervenant
		// accesseur sur l'attribut l_Intervenant

FinClasse

Remarque : Le constructeur s'utilise de la manière suivante :
    laPrest : Prestation
    laPrest ← new Prestation()

Classe Intervenant

Attributs privés :
	nom		: Chaîne
	prénom		: Chaîne
	lesPrestations 	: Collection de Prestation
Méthodes publiques :
	Intervenant (unNom : Chaîne, unPrénom : Chaîne) 	// constructeur de la classe Intervenant
	Fonction getNom () : 	Chaîne				// accesseur sur l'attribut nom
	Fonction getPrénom () : Chaîne			// accesseur sur l'attribut  prénom
	Procédure ajoutePrestation (unePrestation : Prestation)
		// ajoute unePrestation dans la collection lesPrestations

FinClasse

Classe IntervenantExterne : hérite de Intervenant

Attributs privés :
	spécialité : Chaîne		// Spécialité, tel que Infirmier, Kinésithérapeute, Pédicure, etc.
	adresse : Chaîne
	tél : Chaîne
Méthodes publiques 
	IntervenantExterne (unNom : Chaîne, unPrénom : Chaîne, uneSpécialité : Chaîne, uneAdresse : Chaîne, unTél : Chaîne) 		// constructeur de la classe IntervenantExterne
	Fonction getSpécialité () : Chaîne	// accesseur sur l'attribut spécialité
	Fonction getAdresse () : Chaîne	// accesseur sur l'attribut adresse
	Fonction getTél () : Chaîne		// accesseur sur l'attribut tél

FinClasse

Annexe 3C : Description textuelle des classes techniques

Classe Collection de <nom de la classe>

Méthodes publiques 
	Fonction cardinal () : Entier
		// Renvoie le nombre d'objets de la collection 
	Fonction obtenirObjet (unIndex : Entier) : Objet de la classe
		// Retourne l'objet d'index unIndex, le premier objet de la collection a pour index 1 
	Procédure ajouter (unObjet : Objet de la classe)
		 // Ajoute un objet à la collection 
	Procédure trier ()
		 // Trie la collection en se référant à la fonction compareTo de la classe des éléments.

FinClasse

Pour instancier une collection :

	uneCollection : Collection de <classe> 
	uneCollection ← new Collection() de <classe> 
Pour parcourir par itération les éléments d'un objet Collection
	Pour chaque <objet> dans <collection> faire
		// instructions avec <objet>
	FinPour

Classe Date

Méthodes publiques
	Fonction jour () : Entier	// renvoie la valeur entière correspondant au jour du mois
	Fonction mois () : Entier	// renvoie la valeur entière correspondant au numéro du mois (1 à 12)
	Fonction année () : Entier	// renvoie la valeur entière correspondant à l'année
	Fonction estEgale (uneDate : Date) : Booléen
		// renvoie true si la date courante est égale au paramètre uneDate, false sinon
	Fonction estSupérieure (uneDate : Date) : Booléen
		// renvoie true si la date courante est supérieure au paramètre uneDate, false sinon
	Fonction estInférieure (uneDate : Date) : Booléen
		// renvoie true si la date courante est inférieure au paramètre uneDate, false sinon

FinClasse

Classe Heure

Méthodes publiques
	Fonction heure () : Entier	// renvoie la valeur entière correspondant au nombre d'heures (0 à 23)
	Fonction minute () : Entier	// renvoie la valeur entière correspondant au nombre de minutes (0 à 59)
	Fonction seconde () : Entier	// renvoie la valeur entière correspondant au nombre de secondes (0 à 59)

FinClasse

Classe Objet //toute classe dérive implicitement de la super classe Objet

Méthodes publiques
	Fonction getType () : Chaîne
		// retourne dans une chaîne de caractères le nom de classe de l'objet courant
		// par exemple
		// Dossier  unDossier ← new Dossier() 
		// unDossier.getType() retournera la chaîne de caractères " Dossier "

FinClasse

Annexe 4A : Fichier XML produit par l'ASDOMI

<?xml version="1.0" encoding ="UTF-8"?> <listeSoins xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="feuilleSoins.xsd"> <!-- précise que les règles de structure régissant ce document se situent dans le fichier feuilleSoins.xsd --> <patient> <noSS>1561134453675</noSS> <identite> <nom>Geardeau</nom> <prenom>Jean-François</prenom> </identite> <dateEntentePrealable>2009-08-05</dateEntentePrealable> <numIdentPraticien>01103413200124101</numIdentPraticien> <nomPraticien>Labarthe</nomPraticien> <acte> <code>AIS-3</code> <date>2009-08-16</date> </acte> <acte> <code>AMI-2</code> <date>2009-08-17</date> </acte> </patient> <patient> <noSS>2081101053012</noSS> <identite> <nom>Bienassis</nom> <prenom>Marie</prenom> </identite> <dateEntentePrealable>2009-07-02</dateEntentePrealable> <numIdentPraticien>01105920900124101</numIdentPraticien> <nomPraticien>Astier</nomPraticien> <acte> <code>AMI-2</code> <date>2009-08-16</date> </acte> </patient> </listeSoins>

Annexe 4B : Schéma XML de la CPAM

Un schéma XML fournit un ensemble de règles qui définissent la structure, les éléments du contenu et la sémantique de documents XML. Un schéma XML est lui-même un document XML qui définit les règles d'autres documents XML.

Le fichier feuilleSoins.xsd contient le schéma XML des documents XML des feuilles de soins.

<?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <!-- l'élément "listeSoins" constitue l'élément racine --> <xs:element name="listeSoins"> <xs:complexType> <xs:sequence> <!-- le contenu de l'élément "listeSoins" est de type complexe : il est lui-même composé de sous-éléments qui devront figurer dans l'ordre fourni ci-dessous --> <xs:element ref="patient" minOccurs="1" maxOccurs="unbounded" /> <!-- en l'absence des attributs minOccurs et maxOccurs qui précisent respectivement le nombre d'apparitions minimum et maximum du sous-élément, le sous-élément devra apparaître une et une seule fois --> <!-- il faut se référer à la description de l'élément "patient" pour connaître la structure de son contenu --> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="patient"> <xs:complexType> <xs:sequence> <xs:element ref="noSS"/> <xs:element ref="nom"/> <xs:element ref="prenom"/> <xs:element ref="dateEntentePrealable"/> <xs:element ref="numIdentPraticien"/> <xs:element ref="nomPraticien"/> <xs:element maxOccurs="unbounded" ref="acte"/> <!-- l'élément "acte" doit apparaître une ou plusieurs fois, sa structure est définie plus loin --> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="acte"> <xs:complexType> <xs:sequence> <xs:element ref="dateActe"/> <xs:element ref="codeActe"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="noSS" type="xs:string"/> <!-- le contenu de l'élément "numSS" est de type simple, son type de données est chaîne --> <xs:element name="nom" type="xs:string"/> <xs:element name="prenom" type="xs:string"/> <xs:element name="dateEntentePrealable" type="xs:date"/> <xs:element name="numIdentPraticien" type="xs:string"/> <xs:element name="nomPraticien" type="xs:string"/> <xs:element name="dateActe" type="xs:date"/> <xs:element name="codeActe" type="xs:string"/> </xs:schema>