diff --git a/csv_parser/json_schema2xsd/src/main/resources/schemas.yaml b/csv_parser/json_schema2xsd/src/main/resources/schemas.yaml index fb0e4a7cc7..ba36bf6a76 100644 --- a/csv_parser/json_schema2xsd/src/main/resources/schemas.yaml +++ b/csv_parser/json_schema2xsd/src/main/resources/schemas.yaml @@ -83,6 +83,18 @@ schemas: sheet: RS-RI subschema: N xmlns: eda:1.9:resourcesinfo +- automaticGeneration: Y + customExtendClass: null + customExtendPackage: null + file: model.xlsx + header: Y + package: cisu.resources + perimeter: 15-18 + rootElement: resourcesInfoCisu + schema: RC-RI + sheet: RS-RI + subschema: N + xmlns: eda:1.9:resourcesInfoCisu - automaticGeneration: Y customExtendClass: null customExtendPackage: null diff --git a/csv_parser/models/model.xlsx b/csv_parser/models/model.xlsx old mode 100755 new mode 100644 index b22527beb7..d2f0bac96a Binary files a/csv_parser/models/model.xlsx and b/csv_parser/models/model.xlsx differ diff --git a/csv_parser/out/EMSI/EMSI.schema.docx b/csv_parser/out/EMSI/EMSI.schema.docx index f6f968a408..14902f5211 100644 Binary files a/csv_parser/out/EMSI/EMSI.schema.docx and b/csv_parser/out/EMSI/EMSI.schema.docx differ diff --git a/csv_parser/out/EMSI/EMSI.uml_diagram.pdf b/csv_parser/out/EMSI/EMSI.uml_diagram.pdf index 8455dd0e7b..c2853eafb6 100644 Binary files a/csv_parser/out/EMSI/EMSI.uml_diagram.pdf and b/csv_parser/out/EMSI/EMSI.uml_diagram.pdf differ diff --git a/csv_parser/out/GEO-POS/GEO-POS.schema.docx b/csv_parser/out/GEO-POS/GEO-POS.schema.docx index a60ab20877..ed8b80396a 100644 Binary files a/csv_parser/out/GEO-POS/GEO-POS.schema.docx and b/csv_parser/out/GEO-POS/GEO-POS.schema.docx differ diff --git a/csv_parser/out/GEO-POS/GEO-POS.uml_diagram.pdf b/csv_parser/out/GEO-POS/GEO-POS.uml_diagram.pdf index 3a6a14d947..187e3110c4 100644 Binary files a/csv_parser/out/GEO-POS/GEO-POS.uml_diagram.pdf and b/csv_parser/out/GEO-POS/GEO-POS.uml_diagram.pdf differ diff --git a/csv_parser/out/GEO-REQ/GEO-REQ.schema.docx b/csv_parser/out/GEO-REQ/GEO-REQ.schema.docx index f42c594495..d615d97c35 100644 Binary files a/csv_parser/out/GEO-REQ/GEO-REQ.schema.docx and b/csv_parser/out/GEO-REQ/GEO-REQ.schema.docx differ diff --git a/csv_parser/out/GEO-REQ/GEO-REQ.uml_diagram.pdf b/csv_parser/out/GEO-REQ/GEO-REQ.uml_diagram.pdf index 63ea99c897..03ad63bfb2 100644 Binary files a/csv_parser/out/GEO-REQ/GEO-REQ.uml_diagram.pdf and b/csv_parser/out/GEO-REQ/GEO-REQ.uml_diagram.pdf differ diff --git a/csv_parser/out/GEO-RES/GEO-RES.schema.docx b/csv_parser/out/GEO-RES/GEO-RES.schema.docx index 8883ec2dc3..b614e1005f 100644 Binary files a/csv_parser/out/GEO-RES/GEO-RES.schema.docx and b/csv_parser/out/GEO-RES/GEO-RES.schema.docx differ diff --git a/csv_parser/out/GEO-RES/GEO-RES.uml_diagram.pdf b/csv_parser/out/GEO-RES/GEO-RES.uml_diagram.pdf index cf5c6a0eb4..3d60e25f6a 100644 Binary files a/csv_parser/out/GEO-RES/GEO-RES.uml_diagram.pdf and b/csv_parser/out/GEO-RES/GEO-RES.uml_diagram.pdf differ diff --git a/csv_parser/out/RC-DE/RC-DE.schema.docx b/csv_parser/out/RC-DE/RC-DE.schema.docx index d98879a36d..89939c4730 100644 Binary files a/csv_parser/out/RC-DE/RC-DE.schema.docx and b/csv_parser/out/RC-DE/RC-DE.schema.docx differ diff --git a/csv_parser/out/RC-DE/RC-DE.uml_diagram.pdf b/csv_parser/out/RC-DE/RC-DE.uml_diagram.pdf index 6d9a7e7818..34de63da02 100644 Binary files a/csv_parser/out/RC-DE/RC-DE.uml_diagram.pdf and b/csv_parser/out/RC-DE/RC-DE.uml_diagram.pdf differ diff --git a/csv_parser/out/RC-EDA/RC-EDA.schema.docx b/csv_parser/out/RC-EDA/RC-EDA.schema.docx index 3f01197e9a..dabb5c0387 100644 Binary files a/csv_parser/out/RC-EDA/RC-EDA.schema.docx and b/csv_parser/out/RC-EDA/RC-EDA.schema.docx differ diff --git a/csv_parser/out/RC-EDA/RC-EDA.uml_diagram.pdf b/csv_parser/out/RC-EDA/RC-EDA.uml_diagram.pdf index 03a46e6c46..be6b646429 100644 Binary files a/csv_parser/out/RC-EDA/RC-EDA.uml_diagram.pdf and b/csv_parser/out/RC-EDA/RC-EDA.uml_diagram.pdf differ diff --git a/csv_parser/out/RC-REF/RC-REF.schema.docx b/csv_parser/out/RC-REF/RC-REF.schema.docx index efeab389d3..3142e81bc7 100644 Binary files a/csv_parser/out/RC-REF/RC-REF.schema.docx and b/csv_parser/out/RC-REF/RC-REF.schema.docx differ diff --git a/csv_parser/out/RC-REF/RC-REF.uml_diagram.pdf b/csv_parser/out/RC-REF/RC-REF.uml_diagram.pdf index 4e3a2baca2..6455d1c6f8 100644 Binary files a/csv_parser/out/RC-REF/RC-REF.uml_diagram.pdf and b/csv_parser/out/RC-REF/RC-REF.uml_diagram.pdf differ diff --git a/csv_parser/out/RC-RI/RC-RI.example.json b/csv_parser/out/RC-RI/RC-RI.example.json new file mode 100644 index 0000000000..dbe40d4799 --- /dev/null +++ b/csv_parser/out/RC-RI/RC-RI.example.json @@ -0,0 +1,32 @@ +{ + "caseId": "fr.health.samu440.DRFR15440241550012", + "resource": [ + { + "datetime": "2022-09-27T08:23:34+02:00", + "resourceId": "fr.health.samu770.resource.VLM250\nfr.health.samu440.resource.DRFR15DDXAAJJJ0000.1", + "requestId": "fr.health.samu770.request.1249875\nfr.health.samu690.request.DRFR15690242370035.3", + "missionId": "DRFR15DDXAAJJJ0000.M001", + "orgId": "fr.health.samu440", + "centerName": "CHU Nantes", + "vehicleType": "SMUR", + "name": "SMUR 123", + "centerCity": 44109, + "team": { + "medicalLevel": "MED", + "name": "Equipe A" + }, + "state": { + "datetime": "2022-09-27T08:23:34+02:00", + "status": "ARRIVE", + "availability": "FALSE" + }, + "contact": { + "type": "PHNADD", + "details": "+33671830530" + }, + "freetext": [ + "SMUR pédiatrique" + ] + } + ] +} \ No newline at end of file diff --git a/csv_parser/out/RC-RI/RC-RI.input.csv b/csv_parser/out/RC-RI/RC-RI.input.csv new file mode 100644 index 0000000000..575391285c --- /dev/null +++ b/csv_parser/out/RC-RI/RC-RI.input.csv @@ -0,0 +1,41 @@ +Donnée (Niveau 1),Donnée (Niveau 2),Donnée (Niveau 3),Donnée (Niveau 4),Donnée (Niveau 5),Donnée (Niveau 6),Description,Exemples,Balise,Cardinalité,Objet,Format (ou type),Détails de format +Identifiant affaire/dossier,,,,,,"A valoriser avec l'identifiant partagé de l'affaire/dossier, généré une seule fois par le système du partenaire qui recoit la primo-demande de secours (créateur du dossier). +Il est valorisé comme suit lors de sa création : +{pays}.{domaine}.{organisation}.{senderCaseId} + +Il doit pouvoir être généré de façon décentralisée et ne présenter aucune ambiguïté. + Il doit être unique dans l'ensemble des systèmes : le numéro de dossier fourni par celui qui génère l'identifiant partagé doit donc être un numéro unique dans son système.",fr.health.samu440.DRFR15440241550012,caseId,1..1,,string,"REGEX: ^([a-zA-Z0-9_-]+\.?){4,10}$" +Ressource,,,,,,Objet permettant de communquer la liste des ressource et vecteurs mobilisés en 15-15 et 15-SMUR,,resource,0..n,X,resource, +,Date/heure de déclenchement,,,,,A valoriser avec la date et heure d'engagement de la ressource/du vecteur,2022-09-27T08:23:34+02:00,datetime,1..1,,datetime,Format datetime décrit dans le DSF +,ID Ressource partagé,,,,,"A valoriser avec l'identifiant partagé unique de la ressource engagée, normé comme suit : +{orgID}.resource.{ID unique de la ressource partagée} +OU - uniquement dans le cas où un ID unique de ressource ne peut pas être garanti par l'organisation propriétaire : +{orgID}.resource.{sendercaseId}.{n° d’ordre chronologique de la ressource}","fr.health.samu770.resource.VLM250 +fr.health.samu440.resource.DRFR15DDXAAJJJ0000.1",resourceId,1..1,,string,"REGEX: ^([a-zA-Z0-9_-]+\.){3,8}resource(\.[a-zA-Z0-9_-]+){1,2}$" +,ID Demande partagé,,,,,"A valoriser avec l'identifiant unique partagé de la demande de ressource (si la ressource a été engagée suite à une demande de ressource), normé comme suit : +{orgID}.request.{ID unique de la demande dans le système émetteur} +OU - si un ID unique de la demande n'était pas disponible : +{OrgId émetteur}.request.{senderCaseId}.{numéro d’ordre chronologique}","fr.health.samu770.request.1249875 +fr.health.samu690.request.DRFR15690242370035.3",requestId,0..1,,string,"REGEX: ^([a-zA-Z0-9_-]+\.){3,8}request(\.[a-zA-Z0-9_-]+){1,2}$" +,ID Mission local,,,,,"A valoriser avec le numéro de mission unique du central d’appel (PSAP, …) qui a déclenché le vecteur",DRFR15DDXAAJJJ0000.M001,missionId,0..1,,string, +,ID Organisation propriétaire,,,,,"A valoriser avec l'identifiant de l'organisation à laquelle appartient la ressource, normé comme suit : +{pays}.{domaine}.{organisation}",fr.health.samu440,orgId,0..1,,string, +,Nom du centre d’affectation,,,,,A valoriser avec le lieu de garage principal,CHU Nantes,centerName,0..1,,string, +,Type de vecteur,,,,,A valoriser avec le type de vecteur mobilisé : cf. nomenclature associée,SMUR,vehicleType,1..1,,string,"ENUM: SMUR, SIS" +,Nom du vecteur,,,,,A valoriser avec le nom donné à la ressource par l’organisation d’appartenance,SMUR 123,name,0..1,,string, +,Commune du centre d’affectation,,,,,A valoriser avec le code INSEE de la commune du centre d'affectation,44109,centerCity,0..1,,string,REGEX: ^[0-9]{5}$ +,Equipe vecteur,,,,,Objet qui décrit l'équipe à bord du vecteur,,team,0..1,X,team, +,,Type,,,,A valoriser avec le niveau de médicalisation du vecteur. Cf. nomenclature associée,MED,medicalLevel,0..1,,string,NOMENCLATURE: HubSante.typePEC +,,Nom,,,,A valoriser avec le nom de l'équipe à bord du vecteur (celui communiqué par l'organisation à laquelle l'équipe appartient),Equipe A,name,0..1,,string, +,Etat vecteur,,,,,"Objet qui permet de décrire l'état d'un vecteur mobilisé - sous forme de liste, il permet de décrire l'historique des états connus d'un même vecteur. ",,state,1..1,X,state, +,,Date/heure de changement de statut,,,,A valoriser avec la date et heure d'engagement de changement vers le nouveau statut,2022-09-27T08:23:34+02:00,datetime,1..1,,datetime,Format datetime décrit dans le DSF +,,Statut du vecteur,,,,A valoriser avec le statut du vecteur. Cf nomenclature associée.,ARRIVE,status,1..1,,string,NOMENCLATURE: HubSante.statutVecteur +,,Disponibilité du vecteur,,,,"A valoriser de manière à indiquer la disponibilité du vecteur. +TRUE = DISPONIBLE +FALSE = INDISPONIBLE +VIDE = INCONNU",FALSE,availability,0..1,,boolean, +,Contact,,,,,"Objet qui permet de décrire le type et la valeur de l'URI utilisée par un contact, ici spécifiquement le contact du vecteur mobilisé.",,contact,0..1,X,contact, +,,Type de contact ,,,,A valoriser avec le type de l'URI utilisée. Cf nomenclature associée.,PHNADD,type,0..1,,string,NOMENCLATURE: HubSante.typeCom +,,URI du contact,,,,"A valoriser avec la valeur de l'URI utilisée +Le format attendu pour un numéro de téléphone est le suivant : +{indicatif pays}{numéro de téléphone}",+33671830530,details,0..1,,string, +,Commentaires,,,,,"Texte libre permettant de passer toute autre information sur la ressource (équipements supplémentaires / spécifiques, particularités du vecteur, etc.)",SMUR pédiatrique,freetext,0..n,,string, diff --git a/csv_parser/out/RC-RI/RC-RI.schema.docx b/csv_parser/out/RC-RI/RC-RI.schema.docx new file mode 100644 index 0000000000..4c00094722 Binary files /dev/null and b/csv_parser/out/RC-RI/RC-RI.schema.docx differ diff --git a/csv_parser/out/RC-RI/RC-RI.uml_diagram b/csv_parser/out/RC-RI/RC-RI.uml_diagram new file mode 100644 index 0000000000..7503c3543e --- /dev/null +++ b/csv_parser/out/RC-RI/RC-RI.uml_diagram @@ -0,0 +1,40 @@ +// UML MDD Hub Sante +strict digraph { + node [shape=none] + edge [arrowhead=odiamond arrowtail=none] + rankdir=BT + team [label=< + + + + +
team
objet team
medicalLevel string : [0..1]
name string : [0..1]
>] + team -> resource [headlabel=1 taillabel="0..1"] + state [label=< + + + + +
state
objet state
datetime date-time : [1..1]
status string : [1..1]
availability boolean : [0..1]
>] + state -> resource [headlabel=1 taillabel=1] + contact [label=< + + + + +
contact
objet contact
type string : [0..1]
details string : [0..1]
>] + contact -> resource [headlabel=1 taillabel="0..1"] + resource [label=< + + + + +
resource
objet resource
datetime date-time : [1..1]
resourceId string : [1..1]
requestId string : [0..1]
missionId string : [0..1]
orgId string : [0..1]
centerName string : [0..1]
vehicleType string : [1..1]
name string : [0..1]
centerCity string : [0..1]
freetext string : [0..*]
>] + resource -> resourcesInfoCisu [headlabel=1 taillabel="0..*"] + resourcesInfoCisu [label=< + + + + +
resourcesInfoCisu
objet resourcesInfoCisu
caseId string : [1..1]
>] +} diff --git a/csv_parser/out/RC-RI/RC-RI.uml_diagram.pdf b/csv_parser/out/RC-RI/RC-RI.uml_diagram.pdf new file mode 100644 index 0000000000..bebaa73d89 Binary files /dev/null and b/csv_parser/out/RC-RI/RC-RI.uml_diagram.pdf differ diff --git a/csv_parser/out/RS-BPV/RS-BPV.schema.docx b/csv_parser/out/RS-BPV/RS-BPV.schema.docx index fd3b909e67..7665b48677 100644 Binary files a/csv_parser/out/RS-BPV/RS-BPV.schema.docx and b/csv_parser/out/RS-BPV/RS-BPV.schema.docx differ diff --git a/csv_parser/out/RS-BPV/RS-BPV.uml_diagram.pdf b/csv_parser/out/RS-BPV/RS-BPV.uml_diagram.pdf index 0e4ecc2b91..45947bcac0 100644 Binary files a/csv_parser/out/RS-BPV/RS-BPV.uml_diagram.pdf and b/csv_parser/out/RS-BPV/RS-BPV.uml_diagram.pdf differ diff --git a/csv_parser/out/RS-DR/RS-DR.schema.docx b/csv_parser/out/RS-DR/RS-DR.schema.docx index 5b68020660..697c73c97c 100644 Binary files a/csv_parser/out/RS-DR/RS-DR.schema.docx and b/csv_parser/out/RS-DR/RS-DR.schema.docx differ diff --git a/csv_parser/out/RS-DR/RS-DR.uml_diagram.pdf b/csv_parser/out/RS-DR/RS-DR.uml_diagram.pdf index 0caade4a24..00c4affa12 100644 Binary files a/csv_parser/out/RS-DR/RS-DR.uml_diagram.pdf and b/csv_parser/out/RS-DR/RS-DR.uml_diagram.pdf differ diff --git a/csv_parser/out/RS-EDA-MAJ/RS-EDA-MAJ.schema.docx b/csv_parser/out/RS-EDA-MAJ/RS-EDA-MAJ.schema.docx index 5e371c8e14..156a0422b4 100644 Binary files a/csv_parser/out/RS-EDA-MAJ/RS-EDA-MAJ.schema.docx and b/csv_parser/out/RS-EDA-MAJ/RS-EDA-MAJ.schema.docx differ diff --git a/csv_parser/out/RS-EDA-MAJ/RS-EDA-MAJ.uml_diagram.pdf b/csv_parser/out/RS-EDA-MAJ/RS-EDA-MAJ.uml_diagram.pdf index fff11c8c67..babd85d087 100644 Binary files a/csv_parser/out/RS-EDA-MAJ/RS-EDA-MAJ.uml_diagram.pdf and b/csv_parser/out/RS-EDA-MAJ/RS-EDA-MAJ.uml_diagram.pdf differ diff --git a/csv_parser/out/RS-EDA/RS-EDA.schema.docx b/csv_parser/out/RS-EDA/RS-EDA.schema.docx index 745d5cc5f7..2af8ec649f 100644 Binary files a/csv_parser/out/RS-EDA/RS-EDA.schema.docx and b/csv_parser/out/RS-EDA/RS-EDA.schema.docx differ diff --git a/csv_parser/out/RS-EDA/RS-EDA.uml_diagram.pdf b/csv_parser/out/RS-EDA/RS-EDA.uml_diagram.pdf index 558fd4e79e..086536cc03 100644 Binary files a/csv_parser/out/RS-EDA/RS-EDA.uml_diagram.pdf and b/csv_parser/out/RS-EDA/RS-EDA.uml_diagram.pdf differ diff --git a/csv_parser/out/RS-ER/RS-ER.schema.docx b/csv_parser/out/RS-ER/RS-ER.schema.docx index d745c68253..d4612f7c3a 100644 Binary files a/csv_parser/out/RS-ER/RS-ER.schema.docx and b/csv_parser/out/RS-ER/RS-ER.schema.docx differ diff --git a/csv_parser/out/RS-ER/RS-ER.uml_diagram.pdf b/csv_parser/out/RS-ER/RS-ER.uml_diagram.pdf index f4e7a44a61..a631d5aa86 100644 Binary files a/csv_parser/out/RS-ER/RS-ER.uml_diagram.pdf and b/csv_parser/out/RS-ER/RS-ER.uml_diagram.pdf differ diff --git a/csv_parser/out/RS-ERROR/RS-ERROR.schema.docx b/csv_parser/out/RS-ERROR/RS-ERROR.schema.docx index cac17161b4..25f369c755 100644 Binary files a/csv_parser/out/RS-ERROR/RS-ERROR.schema.docx and b/csv_parser/out/RS-ERROR/RS-ERROR.schema.docx differ diff --git a/csv_parser/out/RS-ERROR/RS-ERROR.uml_diagram.pdf b/csv_parser/out/RS-ERROR/RS-ERROR.uml_diagram.pdf index 0c0b729680..16dd4bc52a 100644 Binary files a/csv_parser/out/RS-ERROR/RS-ERROR.uml_diagram.pdf and b/csv_parser/out/RS-ERROR/RS-ERROR.uml_diagram.pdf differ diff --git a/csv_parser/out/RS-RI/RS-RI.schema.docx b/csv_parser/out/RS-RI/RS-RI.schema.docx index c0d1e01046..421947ea28 100644 Binary files a/csv_parser/out/RS-RI/RS-RI.schema.docx and b/csv_parser/out/RS-RI/RS-RI.schema.docx differ diff --git a/csv_parser/out/RS-RI/RS-RI.uml_diagram.pdf b/csv_parser/out/RS-RI/RS-RI.uml_diagram.pdf index bd6af33156..103407a28f 100644 Binary files a/csv_parser/out/RS-RI/RS-RI.uml_diagram.pdf and b/csv_parser/out/RS-RI/RS-RI.uml_diagram.pdf differ diff --git a/csv_parser/out/RS-RPIS/RS-RPIS.schema.docx b/csv_parser/out/RS-RPIS/RS-RPIS.schema.docx index ab0c43c2bd..653d04a410 100644 Binary files a/csv_parser/out/RS-RPIS/RS-RPIS.schema.docx and b/csv_parser/out/RS-RPIS/RS-RPIS.schema.docx differ diff --git a/csv_parser/out/RS-RPIS/RS-RPIS.uml_diagram.pdf b/csv_parser/out/RS-RPIS/RS-RPIS.uml_diagram.pdf index e3152d2291..656b010dfc 100644 Binary files a/csv_parser/out/RS-RPIS/RS-RPIS.uml_diagram.pdf and b/csv_parser/out/RS-RPIS/RS-RPIS.uml_diagram.pdf differ diff --git a/csv_parser/out/RS-RR/RS-RR.schema.docx b/csv_parser/out/RS-RR/RS-RR.schema.docx index 646c615633..46f0d45e9b 100644 Binary files a/csv_parser/out/RS-RR/RS-RR.schema.docx and b/csv_parser/out/RS-RR/RS-RR.schema.docx differ diff --git a/csv_parser/out/RS-RR/RS-RR.uml_diagram.pdf b/csv_parser/out/RS-RR/RS-RR.uml_diagram.pdf index 5a8434e750..a303234db6 100644 Binary files a/csv_parser/out/RS-RR/RS-RR.uml_diagram.pdf and b/csv_parser/out/RS-RR/RS-RR.uml_diagram.pdf differ diff --git a/csv_parser/out/RS-SAS-RDV/RS-SAS-RDV.schema.docx b/csv_parser/out/RS-SAS-RDV/RS-SAS-RDV.schema.docx index b59a18d880..d37278d521 100644 Binary files a/csv_parser/out/RS-SAS-RDV/RS-SAS-RDV.schema.docx and b/csv_parser/out/RS-SAS-RDV/RS-SAS-RDV.schema.docx differ diff --git a/csv_parser/out/RS-SAS-RDV/RS-SAS-RDV.uml_diagram.pdf b/csv_parser/out/RS-SAS-RDV/RS-SAS-RDV.uml_diagram.pdf index 0c4f45f0b1..476677a254 100644 Binary files a/csv_parser/out/RS-SAS-RDV/RS-SAS-RDV.uml_diagram.pdf and b/csv_parser/out/RS-SAS-RDV/RS-SAS-RDV.uml_diagram.pdf differ diff --git a/csv_parser/out/RS-SR/RS-SR.schema.docx b/csv_parser/out/RS-SR/RS-SR.schema.docx index 112910b693..28ad7c51dd 100644 Binary files a/csv_parser/out/RS-SR/RS-SR.schema.docx and b/csv_parser/out/RS-SR/RS-SR.schema.docx differ diff --git a/csv_parser/out/RS-SR/RS-SR.uml_diagram.pdf b/csv_parser/out/RS-SR/RS-SR.uml_diagram.pdf index 7fa191e476..09603080d7 100644 Binary files a/csv_parser/out/RS-SR/RS-SR.uml_diagram.pdf and b/csv_parser/out/RS-SR/RS-SR.uml_diagram.pdf differ diff --git a/csv_parser/out/RS-URL/RS-URL.schema.docx b/csv_parser/out/RS-URL/RS-URL.schema.docx index 4153d36248..e5a1d6c814 100644 Binary files a/csv_parser/out/RS-URL/RS-URL.schema.docx and b/csv_parser/out/RS-URL/RS-URL.schema.docx differ diff --git a/csv_parser/out/RS-URL/RS-URL.uml_diagram.pdf b/csv_parser/out/RS-URL/RS-URL.uml_diagram.pdf index bdcfd3a677..b24c8d7a0a 100644 Binary files a/csv_parser/out/RS-URL/RS-URL.uml_diagram.pdf and b/csv_parser/out/RS-URL/RS-URL.uml_diagram.pdf differ diff --git a/csv_parser/out/TECHNICAL/TECHNICAL.schema.docx b/csv_parser/out/TECHNICAL/TECHNICAL.schema.docx index bd3a4cac47..219225b22a 100644 Binary files a/csv_parser/out/TECHNICAL/TECHNICAL.schema.docx and b/csv_parser/out/TECHNICAL/TECHNICAL.schema.docx differ diff --git a/csv_parser/out/TECHNICAL/TECHNICAL.uml_diagram.pdf b/csv_parser/out/TECHNICAL/TECHNICAL.uml_diagram.pdf index 5f9d5b3a3d..63a99dee8a 100644 Binary files a/csv_parser/out/TECHNICAL/TECHNICAL.uml_diagram.pdf and b/csv_parser/out/TECHNICAL/TECHNICAL.uml_diagram.pdf differ diff --git a/csv_parser/out/TECHNICAL_NOREQ/TECHNICAL_NOREQ.schema.docx b/csv_parser/out/TECHNICAL_NOREQ/TECHNICAL_NOREQ.schema.docx index 2fa88df6ab..73e538483a 100644 Binary files a/csv_parser/out/TECHNICAL_NOREQ/TECHNICAL_NOREQ.schema.docx and b/csv_parser/out/TECHNICAL_NOREQ/TECHNICAL_NOREQ.schema.docx differ diff --git a/csv_parser/out/TECHNICAL_NOREQ/TECHNICAL_NOREQ.uml_diagram.pdf b/csv_parser/out/TECHNICAL_NOREQ/TECHNICAL_NOREQ.uml_diagram.pdf index b212ac41c2..ff1fb6513d 100644 Binary files a/csv_parser/out/TECHNICAL_NOREQ/TECHNICAL_NOREQ.uml_diagram.pdf and b/csv_parser/out/TECHNICAL_NOREQ/TECHNICAL_NOREQ.uml_diagram.pdf differ diff --git a/csv_parser/out/customContent/customContent.schema.docx b/csv_parser/out/customContent/customContent.schema.docx index b56f3e5571..5a9e778ff7 100644 Binary files a/csv_parser/out/customContent/customContent.schema.docx and b/csv_parser/out/customContent/customContent.schema.docx differ diff --git a/csv_parser/out/customContent/customContent.uml_diagram.pdf b/csv_parser/out/customContent/customContent.uml_diagram.pdf index cf8268ce8a..db2c3ae453 100644 Binary files a/csv_parser/out/customContent/customContent.uml_diagram.pdf and b/csv_parser/out/customContent/customContent.uml_diagram.pdf differ diff --git a/csv_parser/out/hubsante.asyncapi.yaml b/csv_parser/out/hubsante.asyncapi.yaml index cf1f517f03..e37314228d 100644 --- a/csv_parser/out/hubsante.asyncapi.yaml +++ b/csv_parser/out/hubsante.asyncapi.yaml @@ -313,6 +313,7 @@ components: - $ref: '#/components/schemas/createCaseHealthUpdate' - $ref: '#/components/schemas/emsi' - $ref: '#/components/schemas/resourcesInfo' + - $ref: '#/components/schemas/resourcesInfoCisu' - $ref: '#/components/schemas/resourcesEngagement' - $ref: '#/components/schemas/resourcesStatus' - $ref: '#/components/schemas/resourcesRequest' @@ -6159,6 +6160,38 @@ components: - datetime: '2022-09-27T08:23:34+02:00' status: ARRIVE availability: 'FALSE' + resourcesInfoCisu: + $id: classpath:/json-schema/schema# + x-id: RC-RI.schema.json# + example: example.json# + type: object + title: resourcesInfoCisu + required: + - caseId + properties: + caseId: + type: string + title: Identifiant affaire/dossier + x-health-only: false + x-cols: 6 + example: example.json#/caseId + description: "A valoriser avec l'identifiant partag\xE9 de l'affaire/dossier,\ + \ g\xE9n\xE9r\xE9 une seule fois par le syst\xE8me du partenaire qui recoit\ + \ la primo-demande de secours (cr\xE9ateur du dossier). \nIl est valoris\xE9\ + \ comme suit lors de sa cr\xE9ation : \n{pays}.{domaine}.{organisation}.{senderCaseId}\n\ + \nIl doit pouvoir \xEAtre g\xE9n\xE9r\xE9 de fa\xE7on d\xE9centralis\xE9\ + e et ne pr\xE9senter aucune ambigu\xEFt\xE9.\n Il doit \xEAtre unique\ + \ dans l'ensemble des syst\xE8mes : le num\xE9ro de dossier fourni par\ + \ celui qui g\xE9n\xE8re l'identifiant partag\xE9 doit donc \xEAtre un\ + \ num\xE9ro unique dans son syst\xE8me." + pattern: ^([a-zA-Z0-9_-]+\.?){4,10}$ + examples: + - fr.health.samu440.DRFR15440241550012 + resource: + type: array + items: + $ref: '#/components/schemas/resource' + additionalProperties: false resourcesEngagement: $id: classpath:/json-schema/schema# x-id: RS-ER.schema.json# diff --git a/csv_parser/out/schemas.yaml b/csv_parser/out/schemas.yaml index fb0e4a7cc7..ba36bf6a76 100644 --- a/csv_parser/out/schemas.yaml +++ b/csv_parser/out/schemas.yaml @@ -83,6 +83,18 @@ schemas: sheet: RS-RI subschema: N xmlns: eda:1.9:resourcesinfo +- automaticGeneration: Y + customExtendClass: null + customExtendPackage: null + file: model.xlsx + header: Y + package: cisu.resources + perimeter: 15-18 + rootElement: resourcesInfoCisu + schema: RC-RI + sheet: RS-RI + subschema: N + xmlns: eda:1.9:resourcesInfoCisu - automaticGeneration: Y customExtendClass: null customExtendPackage: null diff --git a/generator/config/generated/RC-RI/RC-RI.generator-config.json b/generator/config/generated/RC-RI/RC-RI.generator-config.json new file mode 100644 index 0000000000..f4f5bf7ea7 --- /dev/null +++ b/generator/config/generated/RC-RI/RC-RI.generator-config.json @@ -0,0 +1,22 @@ +{ + "inputSpec": "./input/RC-RI.openapi.yaml", + "outputDir": "classes/", + "generatorName": "java", + "templateDir": "templates/child-classes/", + "globalProperties": { + "models": "", + "apis": false, + "apiTests": false, + "apiDocs": false, + "modelDocs": false, + "modelTests": false + }, + "additionalProperties": { + "library": "native", + "modelPackage": "com.hubsante.model.cisu.resources", + "serializationLibrary": "jackson", + "openApiNullable": true, + "supportUrlQuery": false, + "enablePostProcessFile": true + } +} diff --git a/generator/config/generated/RC-RI/RC-RI.usecase.generator-config.json b/generator/config/generated/RC-RI/RC-RI.usecase.generator-config.json new file mode 100644 index 0000000000..84207f5fb4 --- /dev/null +++ b/generator/config/generated/RC-RI/RC-RI.usecase.generator-config.json @@ -0,0 +1,23 @@ +{ + "inputSpec": "./input/RC-RI.openapi.yaml", + "outputDir": "classes/", + "generatorName": "java", + "templateDir": "templates/useCase/", + "globalProperties": { + "models": "resourcesInfoCisu", + "apis": false, + "apiTests": false, + "apiDocs": false, + "modelDocs": false, + "modelTests": false + }, + "additionalProperties": { + "library": "native", + "modelPackage": "com.hubsante.model.cisu.resources", + "serializationLibrary": "jackson", + "openApiNullable": true, + "supportUrlQuery": false, + "xmlns": "eda:1.9:resourcesInfoCisu", + "enablePostProcessFile": true + } +} diff --git a/generator/config/generated/RC-RI/RC-RI.wrapper.generator-config.json b/generator/config/generated/RC-RI/RC-RI.wrapper.generator-config.json new file mode 100644 index 0000000000..7869930080 --- /dev/null +++ b/generator/config/generated/RC-RI/RC-RI.wrapper.generator-config.json @@ -0,0 +1,23 @@ +{ + "inputSpec": "./input/RC-RI.openapi.yaml", + "outputDir": "classes/", + "generatorName": "java", + "templateDir": "templates/wrapper/", + "globalProperties": { + "models": "resourcesInfoCisuWrapper", + "apis": false, + "apiTests": false, + "apiDocs": false, + "modelDocs": false, + "modelTests": false + }, + "additionalProperties": { + "library": "native", + "modelPackage": "com.hubsante.model.cisu.resources", + "serializationLibrary": "jackson", + "openApiNullable": true, + "supportUrlQuery": false, + "xmlns": "eda:1.9", + "enablePostProcessFile": true + } +} diff --git a/generator/input/RC-RI.openapi.yaml b/generator/input/RC-RI.openapi.yaml new file mode 100644 index 0000000000..6c0316b414 --- /dev/null +++ b/generator/input/RC-RI.openapi.yaml @@ -0,0 +1,327 @@ +openapi: 3.0.0 +components: + schemas: + resourcesInfoCisuWrapper: + type: object + required: + - resourcesInfoCisu + properties: + resourcesInfoCisu: + $ref: '#/components/schemas/resourcesInfoCisu' + resourcesInfoCisu: + $id: classpath:/json-schema/schema# + x-id: RC-RI.schema.json# + example: example.json# + type: object + title: resourcesInfoCisu + required: + - caseId + properties: + caseId: + type: string + title: Identifiant affaire/dossier + x-health-only: false + x-cols: 6 + example: example.json#/caseId + description: "A valoriser avec l'identifiant partag\xE9 de l'affaire/dossier,\ + \ g\xE9n\xE9r\xE9 une seule fois par le syst\xE8me du partenaire qui recoit\ + \ la primo-demande de secours (cr\xE9ateur du dossier). \nIl est valoris\xE9\ + \ comme suit lors de sa cr\xE9ation : \n{pays}.{domaine}.{organisation}.{senderCaseId}\n\ + \nIl doit pouvoir \xEAtre g\xE9n\xE9r\xE9 de fa\xE7on d\xE9centralis\xE9\ + e et ne pr\xE9senter aucune ambigu\xEFt\xE9.\n Il doit \xEAtre unique\ + \ dans l'ensemble des syst\xE8mes : le num\xE9ro de dossier fourni par\ + \ celui qui g\xE9n\xE8re l'identifiant partag\xE9 doit donc \xEAtre un\ + \ num\xE9ro unique dans son syst\xE8me." + pattern: ^([a-zA-Z0-9_-]+\.?){4,10}$ + examples: + - fr.health.samu440.DRFR15440241550012 + resource: + type: array + items: + $ref: '#/components/schemas/resource' + additionalProperties: false + resource: + type: object + title: Ressource + x-display: expansion-panels + x-health-only: false + required: + - datetime + - resourceId + - vehicleType + - state + properties: + datetime: + type: string + title: "Date/heure de d\xE9clenchement" + x-health-only: false + x-cols: 6 + example: example.json#/resource/0/datetime + description: A valoriser avec la date et heure d'engagement de la ressource/du + vecteur + pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[\-+]\d{2}:\d{2}$ + format: date-time + examples: + - '2022-09-27T08:23:34+02:00' + resourceId: + type: string + title: "ID Ressource partag\xE9" + x-health-only: false + x-cols: 6 + example: example.json#/resource/0/resourceId + description: "A valoriser avec l'identifiant partag\xE9 unique de la ressource\ + \ engag\xE9e, norm\xE9 comme suit :\n{orgID}.resource.{ID unique de la\ + \ ressource partag\xE9e}\nOU - uniquement dans le cas o\xF9 un ID unique\ + \ de ressource ne peut pas \xEAtre garanti par l'organisation propri\xE9\ + taire :\n{orgID}.resource.{sendercaseId}.{n\xB0 d\u2019ordre chronologique\ + \ de la ressource}" + pattern: ^([a-zA-Z0-9_-]+\.){3,8}resource(\.[a-zA-Z0-9_-]+){1,2}$ + examples: + - 'fr.health.samu770.resource.VLM250 + + fr.health.samu440.resource.DRFR15DDXAAJJJ0000.1' + requestId: + type: string + title: "ID Demande partag\xE9" + x-health-only: false + x-cols: 6 + example: example.json#/resource/0/requestId + description: "A valoriser avec l'identifiant unique partag\xE9 de la demande\ + \ de ressource (si la ressource a \xE9t\xE9 engag\xE9e suite \xE0 une\ + \ demande de ressource), norm\xE9 comme suit :\n{orgID}.request.{ID unique\ + \ de la demande dans le syst\xE8me \xE9metteur}\nOU - si un ID unique\ + \ de la demande n'\xE9tait pas disponible : \n{OrgId \xE9metteur}.request.{senderCaseId}.{num\xE9\ + ro d\u2019ordre chronologique}" + pattern: ^([a-zA-Z0-9_-]+\.){3,8}request(\.[a-zA-Z0-9_-]+){1,2}$ + examples: + - 'fr.health.samu770.request.1249875 + + fr.health.samu690.request.DRFR15690242370035.3' + missionId: + type: string + title: ID Mission local + x-health-only: false + x-cols: 6 + example: example.json#/resource/0/missionId + description: "A valoriser avec le num\xE9ro de mission unique du central\ + \ d\u2019appel (PSAP, \u2026) qui a d\xE9clench\xE9 le vecteur" + examples: + - DRFR15DDXAAJJJ0000.M001 + orgId: + type: string + title: "ID Organisation propri\xE9taire" + x-health-only: false + x-cols: 6 + example: example.json#/resource/0/orgId + description: "A valoriser avec l'identifiant de l'organisation \xE0 laquelle\ + \ appartient la ressource, norm\xE9 comme suit : \n{pays}.{domaine}.{organisation}" + examples: + - fr.health.samu440 + centerName: + type: string + title: "Nom du centre d\u2019affectation" + x-health-only: false + x-cols: 6 + example: example.json#/resource/0/centerName + description: A valoriser avec le lieu de garage principal + examples: + - CHU Nantes + vehicleType: + type: string + title: Type de vecteur + x-health-only: false + x-cols: 6 + example: example.json#/resource/0/vehicleType + description: "A valoriser avec le type de vecteur mobilis\xE9 : cf. nomenclature\ + \ associ\xE9e" + enum: + - SMUR + - SIS + examples: + - SMUR + name: + type: string + title: Nom du vecteur + x-health-only: false + x-cols: 6 + example: example.json#/resource/0/name + description: "A valoriser avec le nom donn\xE9 \xE0 la ressource par l\u2019\ + organisation d\u2019appartenance" + examples: + - SMUR 123 + centerCity: + type: string + title: "Commune du centre d\u2019affectation" + x-health-only: false + x-cols: 6 + example: example.json#/resource/0/centerCity + description: A valoriser avec le code INSEE de la commune du centre d'affectation + pattern: ^[0-9]{5}$ + examples: + - 44109 + team: + $ref: '#/components/schemas/team' + state: + $ref: '#/components/schemas/state' + contact: + $ref: '#/components/schemas/contact' + freetext: + type: array + x-health-only: false + items: + type: string + title: Commentaires + x-health-only: false + x-cols: 6 + example: example.json#/resource/0/freetext/0 + description: "Texte libre permettant de passer toute autre information\ + \ sur la ressource (\xE9quipements suppl\xE9mentaires / sp\xE9cifiques,\ + \ particularit\xE9s du vecteur, etc.)" + examples: + - "SMUR p\xE9diatrique" + additionalProperties: false + example: example.json#/resource/0 + team: + type: object + title: Equipe vecteur + x-display: expansion-panels + x-health-only: false + required: [] + properties: + medicalLevel: + type: string + title: Type + x-health-only: false + x-cols: 6 + example: example.json#/resource/0/team/medicalLevel + description: "A valoriser avec le niveau de m\xE9dicalisation du vecteur.\ + \ Cf. nomenclature associ\xE9e" + enum: + - MED + - PARAMED + - SECOURS + - SANS + examples: + - MED + name: + type: string + title: Nom + x-health-only: false + x-cols: 6 + example: example.json#/resource/0/team/name + description: "A valoriser avec le nom de l'\xE9quipe \xE0 bord du vecteur\ + \ (celui communiqu\xE9 par l'organisation \xE0 laquelle l'\xE9quipe appartient)" + examples: + - Equipe A + additionalProperties: false + example: example.json#/resource/0/team + examples: + - medicalLevel: MED + name: Equipe A + state: + type: object + title: Etat vecteur + x-display: expansion-panels + x-health-only: false + required: + - datetime + - status + properties: + datetime: + type: string + title: Date/heure de changement de statut + x-health-only: false + x-cols: 6 + example: example.json#/resource/0/state/datetime + description: A valoriser avec la date et heure d'engagement de changement + vers le nouveau statut + pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[\-+]\d{2}:\d{2}$ + format: date-time + examples: + - '2022-09-27T08:23:34+02:00' + status: + type: string + title: Statut du vecteur + x-health-only: false + x-cols: 6 + example: example.json#/resource/0/state/status + description: "A valoriser avec le statut du vecteur. Cf nomenclature associ\xE9\ + e." + enum: + - DECISION + - DECLENCHE + - DEPART + - ANNULE + - ARRIVEE + - PEC + - BILAN + - ORIENTAT + - TRANSP + - ETAPE1 + - TRANSP2 + - ETAPE2 + - TRANSP3 + - DESTIN + - FINPEC + - RETOUR + - RET-BASE + - REN-BASE + examples: + - ARRIVE + availability: + type: boolean + title: "Disponibilit\xE9 du vecteur" + x-health-only: false + x-cols: 6 + example: example.json#/resource/0/state/availability + description: "A valoriser de mani\xE8re \xE0 indiquer la disponibilit\xE9\ + \ du vecteur.\nTRUE = DISPONIBLE\nFALSE = INDISPONIBLE\nVIDE = INCONNU" + examples: + - 'FALSE' + additionalProperties: false + example: example.json#/resource/0/state + examples: + - datetime: '2022-09-27T08:23:34+02:00' + status: ARRIVE + availability: 'FALSE' + contact: + type: object + title: Contact + x-display: expansion-panels + x-health-only: false + required: [] + properties: + type: + type: string + title: 'Type de contact ' + x-health-only: false + x-cols: 6 + example: example.json#/resource/0/contact/type + description: "A valoriser avec le type de l'URI utilis\xE9e. Cf nomenclature\ + \ associ\xE9e." + enum: + - EMAIL + - FAX + - MSS + - POSTAL + - RADIO + - TEL + - WEB + examples: + - PHNADD + details: + type: string + title: URI du contact + x-health-only: false + x-cols: 6 + example: example.json#/resource/0/contact/details + description: "A valoriser avec la valeur de l'URI utilis\xE9e\nLe format\ + \ attendu pour un num\xE9ro de t\xE9l\xE9phone est le suivant : +{indicatif\ + \ pays}{num\xE9ro de t\xE9l\xE9phone}" + examples: + - '+33671830530' + additionalProperties: false + example: example.json#/resource/0/contact + examples: + - type: PHNADD + details: '+33671830530' diff --git a/generator_csharp/config/generated/RC-RI/RC-RI.generator-config.json b/generator_csharp/config/generated/RC-RI/RC-RI.generator-config.json new file mode 100644 index 0000000000..8bdfc6df36 --- /dev/null +++ b/generator_csharp/config/generated/RC-RI/RC-RI.generator-config.json @@ -0,0 +1,16 @@ +{ + "inputSpec": "../generator/input/RC-RI.openapi.yaml", + "outputDir": "package/", + "generatorName": "csharp", + "globalProperties": { + "models": "", + "apis": false, + "apiTests": false, + "apiDocs": false, + "modelDocs": false, + "modelTests": false + }, + "additionalProperties": { + "packageName": "HubsanteModel/Cisu.resources" + } +} diff --git a/generator_python/config/generated/RC-RI/RC-RI.generator-config.json b/generator_python/config/generated/RC-RI/RC-RI.generator-config.json new file mode 100644 index 0000000000..9d174b8723 --- /dev/null +++ b/generator_python/config/generated/RC-RI/RC-RI.generator-config.json @@ -0,0 +1,16 @@ +{ + "inputSpec": "../generator/input/RC-RI.openapi.yaml", + "outputDir": "package/src/", + "generatorName": "python", + "globalProperties": { + "models": "", + "apis": false, + "apiTests": false, + "apiDocs": false, + "modelDocs": false, + "modelTests": false + }, + "additionalProperties": { + "packageName": "hubsante_model.cisu.resources" + } +} diff --git a/generator_ruby/config/generated/RC-RI/RC-RI.generator-config.json b/generator_ruby/config/generated/RC-RI/RC-RI.generator-config.json new file mode 100644 index 0000000000..a348556baa --- /dev/null +++ b/generator_ruby/config/generated/RC-RI/RC-RI.generator-config.json @@ -0,0 +1,20 @@ +{ + "inputSpec": "../generator/input/RC-RI.openapi.yaml", + "outputDir": "gem/cisuresources", + "generatorName": "ruby", + "globalProperties": { + "models": "", + "apis": false, + "apiTests": false, + "apiDocs": false, + "modelDocs": false, + "modelTests": false + }, + "additionalProperties": { + "moduleName": "Cisuresources", + "gemName": "hubsanteModel", + "allowUnicodeIdentifiers": true, + "useAutoload": true, + "sortParamsByRequiredFlag": true + } +} diff --git a/src/main/java/com/hubsante/model/cisu/resources/Contact.java b/src/main/java/com/hubsante/model/cisu/resources/Contact.java new file mode 100644 index 0000000000..595a5a0541 --- /dev/null +++ b/src/main/java/com/hubsante/model/cisu/resources/Contact.java @@ -0,0 +1,186 @@ +/** + * Copyright © 2023-2025 Agence du Numerique en Sante (ANS) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * + * + * + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator + * (https://openapi-generator.tech). https://openapi-generator.tech Do not edit + * the class manually. + */ + +package com.hubsante.model.cisu.resources; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.dataformat.xml.annotation.*; +import java.util.Arrays; +import java.util.Arrays; +import java.util.Objects; + +/** + * Contact + */ +@JsonPropertyOrder({Contact.JSON_PROPERTY_TYPE, Contact.JSON_PROPERTY_DETAILS}) +@JsonTypeName("contact") +@JsonInclude(JsonInclude.Include.NON_EMPTY) + +public class Contact { + + /** + * A valoriser avec le type de l'URI utilisée. Cf nomenclature associée. + */ + public enum TypeEnum { + EMAIL("EMAIL"), + + FAX("FAX"), + + MSS("MSS"), + + POSTAL("POSTAL"), + + RADIO("RADIO"), + + TEL("TEL"), + + WEB("WEB"); + + private String value; + + TypeEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static TypeEnum fromValue(String value) { + for (TypeEnum b : TypeEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + + public static final String JSON_PROPERTY_TYPE = "type"; + private TypeEnum type; + + public static final String JSON_PROPERTY_DETAILS = "details"; + private String details; + + public Contact() {} + + public Contact type(TypeEnum type) { + + this.type = type; + return this; + } + + /** + * A valoriser avec le type de l'URI utilisée. Cf nomenclature associée. + * @return type + **/ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public TypeEnum getType() { + return type; + } + + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setType(TypeEnum type) { + this.type = type; + } + + public Contact details(String details) { + + this.details = details; + return this; + } + + /** + * A valoriser avec la valeur de l'URI utilisée Le format attendu pour un + *numéro de téléphone est le suivant : +{indicatif pays}{numéro de téléphone} + * @return details + **/ + @JsonProperty(JSON_PROPERTY_DETAILS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getDetails() { + return details; + } + + @JsonProperty(JSON_PROPERTY_DETAILS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setDetails(String details) { + this.details = details; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Contact contact = (Contact)o; + return Objects.equals(this.type, contact.type) && + Objects.equals(this.details, contact.details); + } + + @Override + public int hashCode() { + return Objects.hash(type, details); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Contact {\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" details: ").append(toIndentedString(details)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/hubsante/model/cisu/resources/Resource.java b/src/main/java/com/hubsante/model/cisu/resources/Resource.java new file mode 100644 index 0000000000..0c643c8b2e --- /dev/null +++ b/src/main/java/com/hubsante/model/cisu/resources/Resource.java @@ -0,0 +1,537 @@ +/** + * Copyright © 2023-2025 Agence du Numerique en Sante (ANS) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * + * + * + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator + * (https://openapi-generator.tech). https://openapi-generator.tech Do not edit + * the class manually. + */ + +package com.hubsante.model.cisu.resources; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.dataformat.xml.annotation.*; +import com.hubsante.model.cisu.resources.Contact; +import com.hubsante.model.cisu.resources.State; +import com.hubsante.model.cisu.resources.Team; +import java.time.OffsetDateTime; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; + +/** + * Resource + */ +@JsonPropertyOrder( + {Resource.JSON_PROPERTY_DATETIME, Resource.JSON_PROPERTY_RESOURCE_ID, + Resource.JSON_PROPERTY_REQUEST_ID, Resource.JSON_PROPERTY_MISSION_ID, + Resource.JSON_PROPERTY_ORG_ID, Resource.JSON_PROPERTY_CENTER_NAME, + Resource.JSON_PROPERTY_VEHICLE_TYPE, Resource.JSON_PROPERTY_NAME, + Resource.JSON_PROPERTY_CENTER_CITY, Resource.JSON_PROPERTY_TEAM, + Resource.JSON_PROPERTY_STATE, Resource.JSON_PROPERTY_CONTACT, + Resource.JSON_PROPERTY_FREETEXT}) +@JsonTypeName("resource") +@JsonInclude(JsonInclude.Include.NON_EMPTY) + +public class Resource { + public static final String JSON_PROPERTY_DATETIME = "datetime"; + private OffsetDateTime datetime; + + public static final String JSON_PROPERTY_RESOURCE_ID = "resourceId"; + private String resourceId; + + public static final String JSON_PROPERTY_REQUEST_ID = "requestId"; + private String requestId; + + public static final String JSON_PROPERTY_MISSION_ID = "missionId"; + private String missionId; + + public static final String JSON_PROPERTY_ORG_ID = "orgId"; + private String orgId; + + public static final String JSON_PROPERTY_CENTER_NAME = "centerName"; + private String centerName; + + /** + * A valoriser avec le type de vecteur mobilisé : cf. nomenclature associée + */ + public enum VehicleTypeEnum { + SMUR("SMUR"), + + SIS("SIS"); + + private String value; + + VehicleTypeEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static VehicleTypeEnum fromValue(String value) { + for (VehicleTypeEnum b : VehicleTypeEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + + public static final String JSON_PROPERTY_VEHICLE_TYPE = "vehicleType"; + private VehicleTypeEnum vehicleType; + + public static final String JSON_PROPERTY_NAME = "name"; + private String name; + + public static final String JSON_PROPERTY_CENTER_CITY = "centerCity"; + private String centerCity; + + public static final String JSON_PROPERTY_TEAM = "team"; + private Team team; + + public static final String JSON_PROPERTY_STATE = "state"; + private State state; + + public static final String JSON_PROPERTY_CONTACT = "contact"; + private Contact contact; + + public static final String JSON_PROPERTY_FREETEXT = "freetext"; + private List freetext; + + public Resource() {} + + public Resource datetime(OffsetDateTime datetime) { + + this.datetime = datetime; + return this; + } + + /** + * A valoriser avec la date et heure d'engagement de la ressource/du + *vecteur + * @return datetime + **/ + @JsonProperty(JSON_PROPERTY_DATETIME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public OffsetDateTime getDatetime() { + return datetime; + } + + @JsonProperty(JSON_PROPERTY_DATETIME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setDatetime(OffsetDateTime datetime) { + this.datetime = datetime; + } + + public Resource resourceId(String resourceId) { + + this.resourceId = resourceId; + return this; + } + + /** + * A valoriser avec l'identifiant partagé unique de la ressource engagée, + *normé comme suit : {orgID}.resource.{ID unique de la ressource partagée} OU + *- uniquement dans le cas où un ID unique de ressource ne peut pas être + *garanti par l'organisation propriétaire : + *{orgID}.resource.{sendercaseId}.{n° d’ordre chronologique de la ressource} + * @return resourceId + **/ + @JsonProperty(JSON_PROPERTY_RESOURCE_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getResourceId() { + return resourceId; + } + + @JsonProperty(JSON_PROPERTY_RESOURCE_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setResourceId(String resourceId) { + this.resourceId = resourceId; + } + + public Resource requestId(String requestId) { + + this.requestId = requestId; + return this; + } + + /** + * A valoriser avec l'identifiant unique partagé de la demande de + *ressource (si la ressource a été engagée suite à une demande de ressource), + *normé comme suit : {orgID}.request.{ID unique de la demande dans le système + *émetteur} OU - si un ID unique de la demande n'était pas disponible : + *{OrgId émetteur}.request.{senderCaseId}.{numéro d’ordre chronologique} + * @return requestId + **/ + @JsonProperty(JSON_PROPERTY_REQUEST_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getRequestId() { + return requestId; + } + + @JsonProperty(JSON_PROPERTY_REQUEST_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setRequestId(String requestId) { + this.requestId = requestId; + } + + public Resource missionId(String missionId) { + + this.missionId = missionId; + return this; + } + + /** + * A valoriser avec le numéro de mission unique du central d’appel (PSAP, …) + *qui a déclenché le vecteur + * @return missionId + **/ + @JsonProperty(JSON_PROPERTY_MISSION_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getMissionId() { + return missionId; + } + + @JsonProperty(JSON_PROPERTY_MISSION_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setMissionId(String missionId) { + this.missionId = missionId; + } + + public Resource orgId(String orgId) { + + this.orgId = orgId; + return this; + } + + /** + * A valoriser avec l'identifiant de l'organisation à laquelle + *appartient la ressource, normé comme suit : {pays}.{domaine}.{organisation} + * @return orgId + **/ + @JsonProperty(JSON_PROPERTY_ORG_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getOrgId() { + return orgId; + } + + @JsonProperty(JSON_PROPERTY_ORG_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setOrgId(String orgId) { + this.orgId = orgId; + } + + public Resource centerName(String centerName) { + + this.centerName = centerName; + return this; + } + + /** + * A valoriser avec le lieu de garage principal + * @return centerName + **/ + @JsonProperty(JSON_PROPERTY_CENTER_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getCenterName() { + return centerName; + } + + @JsonProperty(JSON_PROPERTY_CENTER_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setCenterName(String centerName) { + this.centerName = centerName; + } + + public Resource vehicleType(VehicleTypeEnum vehicleType) { + + this.vehicleType = vehicleType; + return this; + } + + /** + * A valoriser avec le type de vecteur mobilisé : cf. nomenclature associée + * @return vehicleType + **/ + @JsonProperty(JSON_PROPERTY_VEHICLE_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public VehicleTypeEnum getVehicleType() { + return vehicleType; + } + + @JsonProperty(JSON_PROPERTY_VEHICLE_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setVehicleType(VehicleTypeEnum vehicleType) { + this.vehicleType = vehicleType; + } + + public Resource name(String name) { + + this.name = name; + return this; + } + + /** + * A valoriser avec le nom donné à la ressource par l’organisation + *d’appartenance + * @return name + **/ + @JsonProperty(JSON_PROPERTY_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getName() { + return name; + } + + @JsonProperty(JSON_PROPERTY_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setName(String name) { + this.name = name; + } + + public Resource centerCity(String centerCity) { + + this.centerCity = centerCity; + return this; + } + + /** + * A valoriser avec le code INSEE de la commune du centre d'affectation + * @return centerCity + **/ + @JsonProperty(JSON_PROPERTY_CENTER_CITY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getCenterCity() { + return centerCity; + } + + @JsonProperty(JSON_PROPERTY_CENTER_CITY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setCenterCity(String centerCity) { + this.centerCity = centerCity; + } + + public Resource team(Team team) { + + this.team = team; + return this; + } + + /** + * Get team + * @return team + **/ + @JsonProperty(JSON_PROPERTY_TEAM) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public Team getTeam() { + return team; + } + + @JsonProperty(JSON_PROPERTY_TEAM) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setTeam(Team team) { + this.team = team; + } + + public Resource state(State state) { + + this.state = state; + return this; + } + + /** + * Get state + * @return state + **/ + @JsonProperty(JSON_PROPERTY_STATE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public State getState() { + return state; + } + + @JsonProperty(JSON_PROPERTY_STATE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setState(State state) { + this.state = state; + } + + public Resource contact(Contact contact) { + + this.contact = contact; + return this; + } + + /** + * Get contact + * @return contact + **/ + @JsonProperty(JSON_PROPERTY_CONTACT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public Contact getContact() { + return contact; + } + + @JsonProperty(JSON_PROPERTY_CONTACT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setContact(Contact contact) { + this.contact = contact; + } + + public Resource freetext(List freetext) { + + this.freetext = freetext; + return this; + } + + public Resource addFreetextItem(String freetextItem) { + if (this.freetext == null) { + this.freetext = new ArrayList<>(); + } + this.freetext.add(freetextItem); + return this; + } + + /** + * Get freetext + * @return freetext + **/ + @JsonProperty(JSON_PROPERTY_FREETEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public List getFreetext() { + return freetext; + } + + @JacksonXmlElementWrapper(useWrapping = false) + + @JsonProperty(JSON_PROPERTY_FREETEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setFreetext(List freetext) { + if (freetext == null) { + return; + } + if (this.freetext == null) { + this.freetext = new ArrayList<>(); + } + this.freetext.addAll(freetext); + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Resource resource = (Resource)o; + return Objects.equals(this.datetime, resource.datetime) && + Objects.equals(this.resourceId, resource.resourceId) && + Objects.equals(this.requestId, resource.requestId) && + Objects.equals(this.missionId, resource.missionId) && + Objects.equals(this.orgId, resource.orgId) && + Objects.equals(this.centerName, resource.centerName) && + Objects.equals(this.vehicleType, resource.vehicleType) && + Objects.equals(this.name, resource.name) && + Objects.equals(this.centerCity, resource.centerCity) && + Objects.equals(this.team, resource.team) && + Objects.equals(this.state, resource.state) && + Objects.equals(this.contact, resource.contact) && + Objects.equals(this.freetext, resource.freetext); + } + + @Override + public int hashCode() { + return Objects.hash(datetime, resourceId, requestId, missionId, orgId, + centerName, vehicleType, name, centerCity, team, state, + contact, freetext); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Resource {\n"); + sb.append(" datetime: ").append(toIndentedString(datetime)).append("\n"); + sb.append(" resourceId: ") + .append(toIndentedString(resourceId)) + .append("\n"); + sb.append(" requestId: ") + .append(toIndentedString(requestId)) + .append("\n"); + sb.append(" missionId: ") + .append(toIndentedString(missionId)) + .append("\n"); + sb.append(" orgId: ").append(toIndentedString(orgId)).append("\n"); + sb.append(" centerName: ") + .append(toIndentedString(centerName)) + .append("\n"); + sb.append(" vehicleType: ") + .append(toIndentedString(vehicleType)) + .append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" centerCity: ") + .append(toIndentedString(centerCity)) + .append("\n"); + sb.append(" team: ").append(toIndentedString(team)).append("\n"); + sb.append(" state: ").append(toIndentedString(state)).append("\n"); + sb.append(" contact: ").append(toIndentedString(contact)).append("\n"); + sb.append(" freetext: ").append(toIndentedString(freetext)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/hubsante/model/cisu/resources/ResourcesInfoCisu.java b/src/main/java/com/hubsante/model/cisu/resources/ResourcesInfoCisu.java new file mode 100644 index 0000000000..5fc0514779 --- /dev/null +++ b/src/main/java/com/hubsante/model/cisu/resources/ResourcesInfoCisu.java @@ -0,0 +1,170 @@ +/** + * Copyright © 2023-2025 Agence du Numerique en Sante (ANS) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * + * + * + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator + * (https://openapi-generator.tech). https://openapi-generator.tech Do not edit + * the class manually. + */ + +package com.hubsante.model.cisu.resources; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.dataformat.xml.annotation.*; +import com.hubsante.model.cisu.resources.Resource; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; + +/** + * ResourcesInfoCisu + */ +@JsonPropertyOrder({ResourcesInfoCisu.JSON_PROPERTY_CASE_ID, + ResourcesInfoCisu.JSON_PROPERTY_RESOURCE}) +@JsonTypeName("resourcesInfoCisu") +@JsonInclude(JsonInclude.Include.NON_EMPTY) + +public class ResourcesInfoCisu { + @JacksonXmlProperty(isAttribute = true) + String xmlns = "urn:emergency:eda:1.9:resourcesInfoCisu"; + public static final String JSON_PROPERTY_CASE_ID = "caseId"; + private String caseId; + + public static final String JSON_PROPERTY_RESOURCE = "resource"; + private List resource; + + public ResourcesInfoCisu() {} + + public ResourcesInfoCisu caseId(String caseId) { + + this.caseId = caseId; + return this; + } + + /** + * A valoriser avec l'identifiant partagé de l'affaire/dossier, généré + *une seule fois par le système du partenaire qui recoit la primo-demande de + *secours (créateur du dossier). Il est valorisé comme suit lors de sa + *création : {pays}.{domaine}.{organisation}.{senderCaseId} Il doit pouvoir + *être généré de façon décentralisée et ne présenter aucune ambiguïté. Il + *doit être unique dans l'ensemble des systèmes : le numéro de dossier + *fourni par celui qui génère l'identifiant partagé doit donc être un + *numéro unique dans son système. + * @return caseId + **/ + @JsonProperty(JSON_PROPERTY_CASE_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public String getCaseId() { + return caseId; + } + + @JsonProperty(JSON_PROPERTY_CASE_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setCaseId(String caseId) { + this.caseId = caseId; + } + + public ResourcesInfoCisu resource(List resource) { + + this.resource = resource; + return this; + } + + public ResourcesInfoCisu addResourceItem(Resource resourceItem) { + if (this.resource == null) { + this.resource = new ArrayList<>(); + } + this.resource.add(resourceItem); + return this; + } + + /** + * Get resource + * @return resource + **/ + @JsonProperty(JSON_PROPERTY_RESOURCE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public List getResource() { + return resource; + } + + @JacksonXmlElementWrapper(useWrapping = false) + + @JsonProperty(JSON_PROPERTY_RESOURCE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setResource(List resource) { + if (resource == null) { + return; + } + if (this.resource == null) { + this.resource = new ArrayList<>(); + } + this.resource.addAll(resource); + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ResourcesInfoCisu resourcesInfoCisu = (ResourcesInfoCisu)o; + return Objects.equals(this.caseId, resourcesInfoCisu.caseId) && + Objects.equals(this.resource, resourcesInfoCisu.resource); + } + + @Override + public int hashCode() { + return Objects.hash(caseId, resource); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ResourcesInfoCisu {\n"); + sb.append(" caseId: ").append(toIndentedString(caseId)).append("\n"); + sb.append(" resource: ").append(toIndentedString(resource)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/hubsante/model/cisu/resources/ResourcesInfoCisuWrapper.java b/src/main/java/com/hubsante/model/cisu/resources/ResourcesInfoCisuWrapper.java new file mode 100644 index 0000000000..15b68f53fd --- /dev/null +++ b/src/main/java/com/hubsante/model/cisu/resources/ResourcesInfoCisuWrapper.java @@ -0,0 +1,131 @@ +/** + * Copyright © 2023-2025 Agence du Numerique en Sante (ANS) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * + * + * + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator + * (https://openapi-generator.tech). https://openapi-generator.tech Do not edit + * the class manually. + */ + +package com.hubsante.model.cisu.resources; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.dataformat.xml.annotation.*; +import com.hubsante.model.cisu.resources.ResourcesInfoCisu; +import com.hubsante.model.rcde.DistributionElement; +import java.util.Arrays; +import java.util.Arrays; +import java.util.Objects; + +/** + * ResourcesInfoCisuWrapper + */ +@JsonPropertyOrder({DistributionElement.JSON_PROPERTY_MESSAGE_ID, + DistributionElement.JSON_PROPERTY_SENDER, + DistributionElement.JSON_PROPERTY_SENT_AT, + DistributionElement.JSON_PROPERTY_KIND, + DistributionElement.JSON_PROPERTY_STATUS, + DistributionElement.JSON_PROPERTY_RECIPIENT, + ResourcesInfoCisuWrapper.JSON_PROPERTY_RESOURCES_INFO_CISU}) +@JsonTypeName("resourcesInfoCisuWrapper") +@JsonInclude(JsonInclude.Include.NON_EMPTY) + +public class ResourcesInfoCisuWrapper extends DistributionElement { + @JacksonXmlProperty(isAttribute = true) + String xmlns = "urn:emergency:eda:1.9"; + public static final String JSON_PROPERTY_RESOURCES_INFO_CISU = + "resourcesInfoCisu"; + private ResourcesInfoCisu resourcesInfoCisu; + + public ResourcesInfoCisuWrapper() {} + + public ResourcesInfoCisuWrapper + resourcesInfoCisu(ResourcesInfoCisu resourcesInfoCisu) { + + this.resourcesInfoCisu = resourcesInfoCisu; + return this; + } + + /** + * Get resourcesInfoCisu + * @return resourcesInfoCisu + **/ + @JsonProperty(JSON_PROPERTY_RESOURCES_INFO_CISU) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public ResourcesInfoCisu getResourcesInfoCisu() { + return resourcesInfoCisu; + } + + @JsonProperty(JSON_PROPERTY_RESOURCES_INFO_CISU) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setResourcesInfoCisu(ResourcesInfoCisu resourcesInfoCisu) { + this.resourcesInfoCisu = resourcesInfoCisu; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ResourcesInfoCisuWrapper resourcesInfoCisuWrapper = + (ResourcesInfoCisuWrapper)o; + return Objects.equals(this.resourcesInfoCisu, + resourcesInfoCisuWrapper.resourcesInfoCisu) && + super.equals(o); + } + + @Override + public int hashCode() { + return Objects.hash(resourcesInfoCisu, super.hashCode()); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ResourcesInfoCisuWrapper {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" resourcesInfoCisu: ") + .append(toIndentedString(resourcesInfoCisu)) + .append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/hubsante/model/cisu/resources/State.java b/src/main/java/com/hubsante/model/cisu/resources/State.java new file mode 100644 index 0000000000..e2219171b2 --- /dev/null +++ b/src/main/java/com/hubsante/model/cisu/resources/State.java @@ -0,0 +1,240 @@ +/** + * Copyright © 2023-2025 Agence du Numerique en Sante (ANS) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * + * + * + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator + * (https://openapi-generator.tech). https://openapi-generator.tech Do not edit + * the class manually. + */ + +package com.hubsante.model.cisu.resources; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.dataformat.xml.annotation.*; +import java.time.OffsetDateTime; +import java.util.Arrays; +import java.util.Arrays; +import java.util.Objects; + +/** + * State + */ +@JsonPropertyOrder({State.JSON_PROPERTY_DATETIME, State.JSON_PROPERTY_STATUS, + State.JSON_PROPERTY_AVAILABILITY}) +@JsonTypeName("state") +@JsonInclude(JsonInclude.Include.NON_EMPTY) + +public class State { + public static final String JSON_PROPERTY_DATETIME = "datetime"; + private OffsetDateTime datetime; + + /** + * A valoriser avec le statut du vecteur. Cf nomenclature associée. + */ + public enum StatusEnum { + DECISION("DECISION"), + + DECLENCHE("DECLENCHE"), + + DEPART("DEPART"), + + ANNULE("ANNULE"), + + ARRIVEE("ARRIVEE"), + + PEC("PEC"), + + BILAN("BILAN"), + + ORIENTAT("ORIENTAT"), + + TRANSP("TRANSP"), + + ETAPE1("ETAPE1"), + + TRANSP2("TRANSP2"), + + ETAPE2("ETAPE2"), + + TRANSP3("TRANSP3"), + + DESTIN("DESTIN"), + + FINPEC("FINPEC"), + + RETOUR("RETOUR"), + + RET_BASE("RET-BASE"), + + REN_BASE("REN-BASE"); + + private String value; + + StatusEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static StatusEnum fromValue(String value) { + for (StatusEnum b : StatusEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + + public static final String JSON_PROPERTY_STATUS = "status"; + private StatusEnum status; + + public static final String JSON_PROPERTY_AVAILABILITY = "availability"; + private Boolean availability; + + public State() {} + + public State datetime(OffsetDateTime datetime) { + + this.datetime = datetime; + return this; + } + + /** + * A valoriser avec la date et heure d'engagement de changement vers le + *nouveau statut + * @return datetime + **/ + @JsonProperty(JSON_PROPERTY_DATETIME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public OffsetDateTime getDatetime() { + return datetime; + } + + @JsonProperty(JSON_PROPERTY_DATETIME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setDatetime(OffsetDateTime datetime) { + this.datetime = datetime; + } + + public State status(StatusEnum status) { + + this.status = status; + return this; + } + + /** + * A valoriser avec le statut du vecteur. Cf nomenclature associée. + * @return status + **/ + @JsonProperty(JSON_PROPERTY_STATUS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public StatusEnum getStatus() { + return status; + } + + @JsonProperty(JSON_PROPERTY_STATUS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setStatus(StatusEnum status) { + this.status = status; + } + + public State availability(Boolean availability) { + + this.availability = availability; + return this; + } + + /** + * A valoriser de manière à indiquer la disponibilité du vecteur. TRUE = + *DISPONIBLE FALSE = INDISPONIBLE VIDE = INCONNU + * @return availability + **/ + @JsonProperty(JSON_PROPERTY_AVAILABILITY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public Boolean getAvailability() { + return availability; + } + + @JsonProperty(JSON_PROPERTY_AVAILABILITY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setAvailability(Boolean availability) { + this.availability = availability; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + State state = (State)o; + return Objects.equals(this.datetime, state.datetime) && + Objects.equals(this.status, state.status) && + Objects.equals(this.availability, state.availability); + } + + @Override + public int hashCode() { + return Objects.hash(datetime, status, availability); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class State {\n"); + sb.append(" datetime: ").append(toIndentedString(datetime)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append(" availability: ") + .append(toIndentedString(availability)) + .append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/hubsante/model/cisu/resources/Team.java b/src/main/java/com/hubsante/model/cisu/resources/Team.java new file mode 100644 index 0000000000..9c8438b699 --- /dev/null +++ b/src/main/java/com/hubsante/model/cisu/resources/Team.java @@ -0,0 +1,184 @@ +/** + * Copyright © 2023-2025 Agence du Numerique en Sante (ANS) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * + * + * + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator + * (https://openapi-generator.tech). https://openapi-generator.tech Do not edit + * the class manually. + */ + +package com.hubsante.model.cisu.resources; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.dataformat.xml.annotation.*; +import java.util.Arrays; +import java.util.Arrays; +import java.util.Objects; + +/** + * Team + */ +@JsonPropertyOrder({Team.JSON_PROPERTY_MEDICAL_LEVEL, Team.JSON_PROPERTY_NAME}) +@JsonTypeName("team") +@JsonInclude(JsonInclude.Include.NON_EMPTY) + +public class Team { + + /** + * A valoriser avec le niveau de médicalisation du vecteur. Cf. nomenclature + * associée + */ + public enum MedicalLevelEnum { + MED("MED"), + + PARAMED("PARAMED"), + + SECOURS("SECOURS"), + + SANS("SANS"); + + private String value; + + MedicalLevelEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static MedicalLevelEnum fromValue(String value) { + for (MedicalLevelEnum b : MedicalLevelEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + + public static final String JSON_PROPERTY_MEDICAL_LEVEL = "medicalLevel"; + private MedicalLevelEnum medicalLevel; + + public static final String JSON_PROPERTY_NAME = "name"; + private String name; + + public Team() {} + + public Team medicalLevel(MedicalLevelEnum medicalLevel) { + + this.medicalLevel = medicalLevel; + return this; + } + + /** + * A valoriser avec le niveau de médicalisation du vecteur. Cf. nomenclature + *associée + * @return medicalLevel + **/ + @JsonProperty(JSON_PROPERTY_MEDICAL_LEVEL) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public MedicalLevelEnum getMedicalLevel() { + return medicalLevel; + } + + @JsonProperty(JSON_PROPERTY_MEDICAL_LEVEL) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setMedicalLevel(MedicalLevelEnum medicalLevel) { + this.medicalLevel = medicalLevel; + } + + public Team name(String name) { + + this.name = name; + return this; + } + + /** + * A valoriser avec le nom de l'équipe à bord du vecteur (celui communiqué + *par l'organisation à laquelle l'équipe appartient) + * @return name + **/ + @JsonProperty(JSON_PROPERTY_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getName() { + return name; + } + + @JsonProperty(JSON_PROPERTY_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setName(String name) { + this.name = name; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Team team = (Team)o; + return Objects.equals(this.medicalLevel, team.medicalLevel) && + Objects.equals(this.name, team.name); + } + + @Override + public int hashCode() { + return Objects.hash(medicalLevel, name); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Team {\n"); + sb.append(" medicalLevel: ") + .append(toIndentedString(medicalLevel)) + .append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/hubsante/model/edxl/ContentMessage.java b/src/main/java/com/hubsante/model/edxl/ContentMessage.java index cffc4d7608..1bb3e54266 100644 --- a/src/main/java/com/hubsante/model/edxl/ContentMessage.java +++ b/src/main/java/com/hubsante/model/edxl/ContentMessage.java @@ -35,6 +35,8 @@ import com.hubsante.model.emsi.EmsiWrapper; import com.hubsante.model.resources.info.ResourcesInfo; import com.hubsante.model.resources.info.ResourcesInfoWrapper; +import com.hubsante.model.cisu.resources.ResourcesInfoCisu; +import com.hubsante.model.cisu.resources.ResourcesInfoCisuWrapper; import com.hubsante.model.resources.info.ResourcesEngagement; import com.hubsante.model.resources.info.ResourcesEngagementWrapper; import com.hubsante.model.resources.status.ResourcesStatus; @@ -77,6 +79,7 @@ @JsonSubTypes.Type(CreateCaseHealthUpdateWrapper.class), @JsonSubTypes.Type(EmsiWrapper.class), @JsonSubTypes.Type(ResourcesInfoWrapper.class), + @JsonSubTypes.Type(ResourcesInfoCisuWrapper.class), @JsonSubTypes.Type(ResourcesEngagementWrapper.class), @JsonSubTypes.Type(ResourcesStatusWrapper.class), @JsonSubTypes.Type(ResourcesRequestWrapper.class), @@ -121,6 +124,7 @@ public static class UseCaseHelper { {"createCaseHealthUpdate", CreateCaseHealthUpdate.class.getCanonicalName()}, {"emsi", Emsi.class.getCanonicalName()}, {"resourcesInfo", ResourcesInfo.class.getCanonicalName()}, + {"resourcesInfoCisu", ResourcesInfoCisu.class.getCanonicalName()}, {"resourcesEngagement", ResourcesEngagement.class.getCanonicalName()}, {"resourcesStatus", ResourcesStatus.class.getCanonicalName()}, {"resourcesRequest", ResourcesRequest.class.getCanonicalName()}, diff --git a/src/main/resources/json-schema/EDXL-DE-full.schema.json b/src/main/resources/json-schema/EDXL-DE-full.schema.json index 0157504992..0f522f0510 100644 --- a/src/main/resources/json-schema/EDXL-DE-full.schema.json +++ b/src/main/resources/json-schema/EDXL-DE-full.schema.json @@ -237,6 +237,31 @@ } ] }, + { + "allOf": [ + { + "properties": { + "message": { + "$ref": "RC-DE.schema.json" + } + } + }, + { + "properties": { + "message": { + "properties": { + "resourcesInfoCisu": { + "$ref": "RC-RI.schema.json" + } + }, + "required": [ + "resourcesInfoCisu" + ] + } + } + } + ] + }, { "allOf": [ { diff --git a/src/main/resources/json-schema/EMSI.schema.json b/src/main/resources/json-schema/EMSI.schema.json index 01f1756a1a..59bda68490 100644 --- a/src/main/resources/json-schema/EMSI.schema.json +++ b/src/main/resources/json-schema/EMSI.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "EMSI.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "emsi", diff --git a/src/main/resources/json-schema/GEO-POS.schema.json b/src/main/resources/json-schema/GEO-POS.schema.json index 1ab798653f..02b894f69f 100644 --- a/src/main/resources/json-schema/GEO-POS.schema.json +++ b/src/main/resources/json-schema/GEO-POS.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "GEO-POS.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "geoPositionsUpdate", diff --git a/src/main/resources/json-schema/GEO-REQ.schema.json b/src/main/resources/json-schema/GEO-REQ.schema.json index f4f7e6f354..eb0251542e 100644 --- a/src/main/resources/json-schema/GEO-REQ.schema.json +++ b/src/main/resources/json-schema/GEO-REQ.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "GEO-REQ.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "geoResourcesRequest", diff --git a/src/main/resources/json-schema/GEO-RES.schema.json b/src/main/resources/json-schema/GEO-RES.schema.json index 98d5dba5dc..90f3891267 100644 --- a/src/main/resources/json-schema/GEO-RES.schema.json +++ b/src/main/resources/json-schema/GEO-RES.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "GEO-RES.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "geoResourcesDetails", diff --git a/src/main/resources/json-schema/RC-DE.schema.json b/src/main/resources/json-schema/RC-DE.schema.json index cf5cd40aad..d4920aa3ff 100644 --- a/src/main/resources/json-schema/RC-DE.schema.json +++ b/src/main/resources/json-schema/RC-DE.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "RC-DE.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "distributionElement", diff --git a/src/main/resources/json-schema/RC-EDA.schema.json b/src/main/resources/json-schema/RC-EDA.schema.json index 8a4933968c..826a8a3c4e 100644 --- a/src/main/resources/json-schema/RC-EDA.schema.json +++ b/src/main/resources/json-schema/RC-EDA.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "RC-EDA.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "createCase", diff --git a/src/main/resources/json-schema/RC-REF.schema.json b/src/main/resources/json-schema/RC-REF.schema.json index d40a0f1f5d..393de1eba0 100644 --- a/src/main/resources/json-schema/RC-REF.schema.json +++ b/src/main/resources/json-schema/RC-REF.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "RC-REF.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "reference", diff --git a/src/main/resources/json-schema/RC-RI.schema.json b/src/main/resources/json-schema/RC-RI.schema.json new file mode 100644 index 0000000000..70199c4a46 --- /dev/null +++ b/src/main/resources/json-schema/RC-RI.schema.json @@ -0,0 +1,279 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "classpath:/json-schema/schema#", + "x-id": "RC-RI.schema.json#", + "version": "25.11.13", + "example": "example.json#", + "type": "object", + "title": "resourcesInfoCisu", + "required": [ + "caseId" + ], + "properties": { + "caseId": { + "type": "string", + "title": "Identifiant affaire/dossier", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/caseId", + "description": "A valoriser avec l'identifiant partagé de l'affaire/dossier, généré une seule fois par le système du partenaire qui recoit la primo-demande de secours (créateur du dossier). \nIl est valorisé comme suit lors de sa création : \n{pays}.{domaine}.{organisation}.{senderCaseId}\n\nIl doit pouvoir être généré de façon décentralisée et ne présenter aucune ambiguïté.\n Il doit être unique dans l'ensemble des systèmes : le numéro de dossier fourni par celui qui génère l'identifiant partagé doit donc être un numéro unique dans son système.", + "pattern": "^([a-zA-Z0-9_-]+\\.?){4,10}$" + }, + "resource": { + "type": "array", + "items": { + "$ref": "#/definitions/resource" + } + } + }, + "definitions": { + "resource": { + "type": "object", + "title": "Ressource", + "x-display": "expansion-panels", + "x-health-only": false, + "required": [ + "datetime", + "resourceId", + "vehicleType", + "state" + ], + "properties": { + "datetime": { + "type": "string", + "title": "Date/heure de déclenchement", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/resource/0/datetime", + "description": "A valoriser avec la date et heure d'engagement de la ressource/du vecteur", + "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}[\\-+]\\d{2}:\\d{2}$", + "format": "date-time" + }, + "resourceId": { + "type": "string", + "title": "ID Ressource partagé", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/resource/0/resourceId", + "description": "A valoriser avec l'identifiant partagé unique de la ressource engagée, normé comme suit :\n{orgID}.resource.{ID unique de la ressource partagée}\nOU - uniquement dans le cas où un ID unique de ressource ne peut pas être garanti par l'organisation propriétaire :\n{orgID}.resource.{sendercaseId}.{n° d’ordre chronologique de la ressource}", + "pattern": "^([a-zA-Z0-9_-]+\\.){3,8}resource(\\.[a-zA-Z0-9_-]+){1,2}$" + }, + "requestId": { + "type": "string", + "title": "ID Demande partagé", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/resource/0/requestId", + "description": "A valoriser avec l'identifiant unique partagé de la demande de ressource (si la ressource a été engagée suite à une demande de ressource), normé comme suit :\n{orgID}.request.{ID unique de la demande dans le système émetteur}\nOU - si un ID unique de la demande n'était pas disponible : \n{OrgId émetteur}.request.{senderCaseId}.{numéro d’ordre chronologique}", + "pattern": "^([a-zA-Z0-9_-]+\\.){3,8}request(\\.[a-zA-Z0-9_-]+){1,2}$" + }, + "missionId": { + "type": "string", + "title": "ID Mission local", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/resource/0/missionId", + "description": "A valoriser avec le numéro de mission unique du central d’appel (PSAP, …) qui a déclenché le vecteur" + }, + "orgId": { + "type": "string", + "title": "ID Organisation propriétaire", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/resource/0/orgId", + "description": "A valoriser avec l'identifiant de l'organisation à laquelle appartient la ressource, normé comme suit : \n{pays}.{domaine}.{organisation}" + }, + "centerName": { + "type": "string", + "title": "Nom du centre d’affectation", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/resource/0/centerName", + "description": "A valoriser avec le lieu de garage principal" + }, + "vehicleType": { + "type": "string", + "title": "Type de vecteur", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/resource/0/vehicleType", + "description": "A valoriser avec le type de vecteur mobilisé : cf. nomenclature associée", + "enum": [ + "SMUR", + "SIS" + ] + }, + "name": { + "type": "string", + "title": "Nom du vecteur", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/resource/0/name", + "description": "A valoriser avec le nom donné à la ressource par l’organisation d’appartenance" + }, + "centerCity": { + "type": "string", + "title": "Commune du centre d’affectation", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/resource/0/centerCity", + "description": "A valoriser avec le code INSEE de la commune du centre d'affectation", + "pattern": "^[0-9]{5}$" + }, + "team": { + "$ref": "#/definitions/team" + }, + "state": { + "$ref": "#/definitions/state" + }, + "contact": { + "$ref": "#/definitions/contact" + }, + "freetext": { + "type": "array", + "x-health-only": false, + "items": { + "type": "string", + "title": "Commentaires", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/resource/0/freetext/0", + "description": "Texte libre permettant de passer toute autre information sur la ressource (équipements supplémentaires / spécifiques, particularités du vecteur, etc.)" + } + } + }, + "additionalProperties": false, + "example": "example.json#/resource/0" + }, + "team": { + "type": "object", + "title": "Equipe vecteur", + "x-display": "expansion-panels", + "x-health-only": false, + "required": [], + "properties": { + "medicalLevel": { + "type": "string", + "title": "Type", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/resource/0/team/medicalLevel", + "description": "A valoriser avec le niveau de médicalisation du vecteur. Cf. nomenclature associée", + "enum": [ + "MED", + "PARAMED", + "SECOURS", + "SANS" + ] + }, + "name": { + "type": "string", + "title": "Nom", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/resource/0/team/name", + "description": "A valoriser avec le nom de l'équipe à bord du vecteur (celui communiqué par l'organisation à laquelle l'équipe appartient)" + } + }, + "additionalProperties": false, + "example": "example.json#/resource/0/team" + }, + "state": { + "type": "object", + "title": "Etat vecteur", + "x-display": "expansion-panels", + "x-health-only": false, + "required": [ + "datetime", + "status" + ], + "properties": { + "datetime": { + "type": "string", + "title": "Date/heure de changement de statut", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/resource/0/state/datetime", + "description": "A valoriser avec la date et heure d'engagement de changement vers le nouveau statut", + "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}[\\-+]\\d{2}:\\d{2}$", + "format": "date-time" + }, + "status": { + "type": "string", + "title": "Statut du vecteur", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/resource/0/state/status", + "description": "A valoriser avec le statut du vecteur. Cf nomenclature associée.", + "enum": [ + "DECISION", + "DECLENCHE", + "DEPART", + "ANNULE", + "ARRIVEE", + "PEC", + "BILAN", + "ORIENTAT", + "TRANSP", + "ETAPE1", + "TRANSP2", + "ETAPE2", + "TRANSP3", + "DESTIN", + "FINPEC", + "RETOUR", + "RET-BASE", + "REN-BASE" + ] + }, + "availability": { + "type": "boolean", + "title": "Disponibilité du vecteur", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/resource/0/state/availability", + "description": "A valoriser de manière à indiquer la disponibilité du vecteur.\nTRUE = DISPONIBLE\nFALSE = INDISPONIBLE\nVIDE = INCONNU" + } + }, + "additionalProperties": false, + "example": "example.json#/resource/0/state" + }, + "contact": { + "type": "object", + "title": "Contact", + "x-display": "expansion-panels", + "x-health-only": false, + "required": [], + "properties": { + "type": { + "type": "string", + "title": "Type de contact ", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/resource/0/contact/type", + "description": "A valoriser avec le type de l'URI utilisée. Cf nomenclature associée.", + "enum": [ + "EMAIL", + "FAX", + "MSS", + "POSTAL", + "RADIO", + "TEL", + "WEB" + ] + }, + "details": { + "type": "string", + "title": "URI du contact", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/resource/0/contact/details", + "description": "A valoriser avec la valeur de l'URI utilisée\nLe format attendu pour un numéro de téléphone est le suivant : +{indicatif pays}{numéro de téléphone}" + } + }, + "additionalProperties": false, + "example": "example.json#/resource/0/contact" + } + }, + "additionalProperties": false +} \ No newline at end of file diff --git a/src/main/resources/json-schema/RS-BPV.schema.json b/src/main/resources/json-schema/RS-BPV.schema.json index 41c2ad2898..bd70b8ae09 100644 --- a/src/main/resources/json-schema/RS-BPV.schema.json +++ b/src/main/resources/json-schema/RS-BPV.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "RS-BPV.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "interventionReport", diff --git a/src/main/resources/json-schema/RS-DR.schema.json b/src/main/resources/json-schema/RS-DR.schema.json index 2541845003..f9a99ed335 100644 --- a/src/main/resources/json-schema/RS-DR.schema.json +++ b/src/main/resources/json-schema/RS-DR.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "RS-DR.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "resourcesRequest", diff --git a/src/main/resources/json-schema/RS-EDA-MAJ.schema.json b/src/main/resources/json-schema/RS-EDA-MAJ.schema.json index 6fcbcb390f..9695c8bec3 100644 --- a/src/main/resources/json-schema/RS-EDA-MAJ.schema.json +++ b/src/main/resources/json-schema/RS-EDA-MAJ.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "RS-EDA-MAJ.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "createCaseHealthUpdate", diff --git a/src/main/resources/json-schema/RS-EDA.schema.json b/src/main/resources/json-schema/RS-EDA.schema.json index 5e5cd8f593..ece70749e5 100644 --- a/src/main/resources/json-schema/RS-EDA.schema.json +++ b/src/main/resources/json-schema/RS-EDA.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "RS-EDA.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "createCaseHealth", diff --git a/src/main/resources/json-schema/RS-ER.schema.json b/src/main/resources/json-schema/RS-ER.schema.json index a1f252e689..84f0a22604 100644 --- a/src/main/resources/json-schema/RS-ER.schema.json +++ b/src/main/resources/json-schema/RS-ER.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "RS-ER.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "resourcesEngagement", diff --git a/src/main/resources/json-schema/RS-ERROR.schema.json b/src/main/resources/json-schema/RS-ERROR.schema.json index 086a63adba..2a5c6bb8af 100644 --- a/src/main/resources/json-schema/RS-ERROR.schema.json +++ b/src/main/resources/json-schema/RS-ERROR.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "RS-ERROR.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "error", diff --git a/src/main/resources/json-schema/RS-RI.schema.json b/src/main/resources/json-schema/RS-RI.schema.json index b2d39a6d57..1de5976a64 100644 --- a/src/main/resources/json-schema/RS-RI.schema.json +++ b/src/main/resources/json-schema/RS-RI.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "RS-RI.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "resourcesInfo", diff --git a/src/main/resources/json-schema/RS-RPIS.schema.json b/src/main/resources/json-schema/RS-RPIS.schema.json index 66a4de6899..b682e348af 100644 --- a/src/main/resources/json-schema/RS-RPIS.schema.json +++ b/src/main/resources/json-schema/RS-RPIS.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "RS-RPIS.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "rpis", diff --git a/src/main/resources/json-schema/RS-RR.schema.json b/src/main/resources/json-schema/RS-RR.schema.json index 4938916ecd..b969c54335 100644 --- a/src/main/resources/json-schema/RS-RR.schema.json +++ b/src/main/resources/json-schema/RS-RR.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "RS-RR.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "resourcesResponse", diff --git a/src/main/resources/json-schema/RS-SAS-RDV.schema.json b/src/main/resources/json-schema/RS-SAS-RDV.schema.json index a8218ee021..291802801e 100644 --- a/src/main/resources/json-schema/RS-SAS-RDV.schema.json +++ b/src/main/resources/json-schema/RS-SAS-RDV.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "RS-SAS-RDV.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "appointment", diff --git a/src/main/resources/json-schema/RS-SR.schema.json b/src/main/resources/json-schema/RS-SR.schema.json index 983bcc4ee5..c6fbfb5a11 100644 --- a/src/main/resources/json-schema/RS-SR.schema.json +++ b/src/main/resources/json-schema/RS-SR.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "RS-SR.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "resourcesStatus", diff --git a/src/main/resources/json-schema/RS-URL.schema.json b/src/main/resources/json-schema/RS-URL.schema.json index 75d79a18c3..eab0eb39bb 100644 --- a/src/main/resources/json-schema/RS-URL.schema.json +++ b/src/main/resources/json-schema/RS-URL.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "RS-URL.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "documentLink", diff --git a/src/main/resources/json-schema/TECHNICAL.schema.json b/src/main/resources/json-schema/TECHNICAL.schema.json index f1cb987e7b..5c12285efe 100644 --- a/src/main/resources/json-schema/TECHNICAL.schema.json +++ b/src/main/resources/json-schema/TECHNICAL.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "TECHNICAL.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "technical", diff --git a/src/main/resources/json-schema/TECHNICAL_NOREQ.schema.json b/src/main/resources/json-schema/TECHNICAL_NOREQ.schema.json index 3c923e3411..78511e5b20 100644 --- a/src/main/resources/json-schema/TECHNICAL_NOREQ.schema.json +++ b/src/main/resources/json-schema/TECHNICAL_NOREQ.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "TECHNICAL_NOREQ.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "technicalNoreq", diff --git a/src/main/resources/json-schema/customContent.schema.json b/src/main/resources/json-schema/customContent.schema.json index 1a611315ba..e7b05a8510 100644 --- a/src/main/resources/json-schema/customContent.schema.json +++ b/src/main/resources/json-schema/customContent.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "customContent.schema.json#", - "version": "25.10.23", + "version": "25.11.13", "example": "example.json#", "type": "object", "title": "customContent", diff --git a/src/main/resources/sample/examples/RC-RI/RC-RI_FemmeEnceinte_DelphineVigneau.03.json b/src/main/resources/sample/examples/RC-RI/RC-RI_FemmeEnceinte_DelphineVigneau.03.json new file mode 100644 index 0000000000..9444f8e30b --- /dev/null +++ b/src/main/resources/sample/examples/RC-RI/RC-RI_FemmeEnceinte_DelphineVigneau.03.json @@ -0,0 +1,23 @@ +{ + "resourcesInfoCisu": { + "resource": [ + { + "team": { + "medicalLevel": "MED", + "name": "Equipe VSAV 4" + }, + "vehicleType": "SIS", + "name": "VSAV4", + "datetime": "2024-05-26T15:05:00+02:00", + "resourceId": "fr.fire.sis044.cgo-044.resource.VSAV4", + "orgId": "fr.fire.sdis44.cgo-044", + "state": { + "status": "DECLENCHE", + "datetime": "2024-05-26T15:05:00+02:00", + "availability": false + } + } + ], + "caseId": "fr.fire.sis044.cga-044.SC-20240526-044-cga-AL8" + } +} \ No newline at end of file diff --git a/src/main/resources/sample/examples/RC-RI/RC-RI_FemmeEnceinte_DelphineVigneau.03.xml b/src/main/resources/sample/examples/RC-RI/RC-RI_FemmeEnceinte_DelphineVigneau.03.xml new file mode 100644 index 0000000000..0ecf818f12 --- /dev/null +++ b/src/main/resources/sample/examples/RC-RI/RC-RI_FemmeEnceinte_DelphineVigneau.03.xml @@ -0,0 +1,20 @@ + + + fr.fire.sis044.cga-044.SC-20240526-044-cga-AL8 + + 2024-05-26T15:05:00+02:00 + fr.fire.sis044.cgo-044.resource.VSAV4 + fr.fire.sdis44.cgo-044 + SIS + VSAV4 + + MED + Equipe VSAV 4 + + + 2024-05-26T15:05:00+02:00 + DECLENCHE + false + + + diff --git a/src/main/resources/sample/examples/RC-RI/RC-RI_FuiteDeGaz_AliceGregoireNORMAND.03.json b/src/main/resources/sample/examples/RC-RI/RC-RI_FuiteDeGaz_AliceGregoireNORMAND.03.json new file mode 100644 index 0000000000..064c71f4e1 --- /dev/null +++ b/src/main/resources/sample/examples/RC-RI/RC-RI_FuiteDeGaz_AliceGregoireNORMAND.03.json @@ -0,0 +1,28 @@ +{ + "resourcesInfoCisu": { + "resource": [ + { + "team": { + "name": "Equipe VSAV 2" + }, + "name": "VSAV2", + "datetime": "2024-05-18T18:20:00+02:00", + "resourceId": "fr.fire.sis044.cgo-044.resource.VSAV2", + "orgId": "fr.fire.sdis44.cgo-044", + "state": { + "datetime": "2024-05-18T18:19:00+02:00", + "status": "DECISION" + }, + "vehicleType": "SIS", + "contact": { + "type": "TEL", + "details": "0762865426" + }, + "freetext": [ + "Eric AZERTY, Marie-Jo ANELI, Pierre LOUITUT" + ] + } + ], + "caseId": "fr.health.samu440.DRFR154402413800236" + } +} \ No newline at end of file diff --git a/src/main/resources/sample/examples/RC-RI/RC-RI_FuiteDeGaz_AliceGregoireNORMAND.03.xml b/src/main/resources/sample/examples/RC-RI/RC-RI_FuiteDeGaz_AliceGregoireNORMAND.03.xml new file mode 100644 index 0000000000..a20868a431 --- /dev/null +++ b/src/main/resources/sample/examples/RC-RI/RC-RI_FuiteDeGaz_AliceGregoireNORMAND.03.xml @@ -0,0 +1,23 @@ + + + fr.health.samu440.DRFR154402413800236 + + 2024-05-18T18:20:00+02:00 + fr.fire.sis044.cgo-044.resource.VSAV2 + fr.fire.sdis44.cgo-044 + SIS + VSAV2 + + Equipe VSAV 2 + + + 2024-05-18T18:19:00+02:00 + DECISION + + + TEL +
0762865426
+
+ Eric AZERTY, Marie-Jo ANELI, Pierre LOUITUT +
+
diff --git a/src/main/resources/sample/examples/RC-RI/RC-RI_FuiteDeGaz_AliceGregoireNORMAND.06.json b/src/main/resources/sample/examples/RC-RI/RC-RI_FuiteDeGaz_AliceGregoireNORMAND.06.json new file mode 100644 index 0000000000..acf68bd1ab --- /dev/null +++ b/src/main/resources/sample/examples/RC-RI/RC-RI_FuiteDeGaz_AliceGregoireNORMAND.06.json @@ -0,0 +1,39 @@ +{ + "resourcesInfoCisu": { + "resource": [ + { + "team": { + "medicalLevel": "MED", + "name": "Equipe VSAV 2" + }, + "vehicleType": "SIS", + "name": "VSAV2", + "datetime": "2024-05-18T18:20:00+02:00", + "resourceId": "fr.fire.sis044.cgo-044.resource.VSAV2", + "orgId": "fr.fire.sdis44.cgo-044", + "state": { + "status": "DECLENCHE", + "datetime": "2024-05-18T18:20:00+02:00", + "availability": false + } + }, + { + "team": { + "medicalLevel": "SECOURS" + }, + "datetime": "2024-05-18T18:22:00+02:00", + "resourceId": "fr.fire.sis044.cgo-044.resource.VSAV3", + "orgId": "fr.fire.sdis044.cgo-044", + "vehicleType": "SIS", + "name": "VSAV3", + "centerCity": "44109", + "state": { + "status": "DECLENCHE", + "datetime": "2024-05-18T18:20:00+02:00", + "availability": false + } + } + ], + "caseId": "fr.health.samu440.DRFR154402413800236" + } +} \ No newline at end of file diff --git a/src/main/resources/sample/examples/RC-RI/RC-RI_FuiteDeGaz_AliceGregoireNORMAND.06.xml b/src/main/resources/sample/examples/RC-RI/RC-RI_FuiteDeGaz_AliceGregoireNORMAND.06.xml new file mode 100644 index 0000000000..a63dd9c690 --- /dev/null +++ b/src/main/resources/sample/examples/RC-RI/RC-RI_FuiteDeGaz_AliceGregoireNORMAND.06.xml @@ -0,0 +1,36 @@ + + + fr.health.samu440.DRFR154402413800236 + + 2024-05-18T18:20:00+02:00 + fr.fire.sis044.cgo-044.resource.VSAV2 + fr.fire.sdis44.cgo-044 + SIS + VSAV2 + + MED + Equipe VSAV 2 + + + 2024-05-18T18:20:00+02:00 + DECLENCHE + false + + + + 2024-05-18T18:22:00+02:00 + fr.fire.sis044.cgo-044.resource.VSAV3 + fr.fire.sdis044.cgo-044 + SIS + VSAV3 + 44109 + + SECOURS + + + 2024-05-18T18:20:00+02:00 + DECLENCHE + false + + + diff --git a/src/main/resources/sample/examples/RC-RI/RC-RI_Incendie_RaymondeLECCIA.04.json b/src/main/resources/sample/examples/RC-RI/RC-RI_Incendie_RaymondeLECCIA.04.json new file mode 100644 index 0000000000..04df5f6381 --- /dev/null +++ b/src/main/resources/sample/examples/RC-RI/RC-RI_Incendie_RaymondeLECCIA.04.json @@ -0,0 +1,39 @@ +{ + "resourcesInfoCisu": { + "resource": [ + { + "team": { + "medicalLevel": "MED", + "name": "Equipe FEU 3" + }, + "name": "VSR-Rea3", + "datetime": "2024-08-13T10:23:00+02:00", + "resourceId": "fr.fire.sisXXX.cga-XXX.resource.VSR268", + "orgId": "fr.fire.sisXXX.cgo-XXX", + "state": { + "status": "DECLENCHE", + "datetime": "2024-08-13T10:24:00+02:00", + "availability": false + }, + "vehicleType": "SIS" + }, + { + "team": { + "medicalLevel": "MED" + }, + "datetime": "2024-08-13T10:23:00+02:00", + "resourceId": "fr.fire.sisXXX.cga-XXX.resource.VSR268", + "orgId": "fr.fire.sisXXX.cgo-XXX", + "state": { + "status": "DECLENCHE", + "datetime": "2024-08-13T10:24:00+02:00", + "availability": false + }, + "vehicleType": "SIS", + "name": "VSR-Rea3", + "centerCity": "35580" + } + ], + "caseId": "fr.fire.sisXXX.cga-XXX.SC-20240813-XXX-cga-AT517" + } +} \ No newline at end of file diff --git a/src/main/resources/sample/examples/RC-RI/RC-RI_Incendie_RaymondeLECCIA.04.xml b/src/main/resources/sample/examples/RC-RI/RC-RI_Incendie_RaymondeLECCIA.04.xml new file mode 100644 index 0000000000..1f11b04819 --- /dev/null +++ b/src/main/resources/sample/examples/RC-RI/RC-RI_Incendie_RaymondeLECCIA.04.xml @@ -0,0 +1,36 @@ + + + fr.fire.sisXXX.cga-XXX.SC-20240813-XXX-cga-AT517 + + 2024-08-13T10:23:00+02:00 + fr.fire.sisXXX.cga-XXX.resource.VSR268 + fr.fire.sisXXX.cgo-XXX + SIS + VSR-Rea3 + + MED + Equipe FEU 3 + + + 2024-08-13T10:24:00+02:00 + DECLENCHE + false + + + + 2024-08-13T10:23:00+02:00 + fr.fire.sisXXX.cga-XXX.resource.VSR268 + fr.fire.sisXXX.cgo-XXX + SIS + VSR-Rea3 + 35580 + + MED + + + 2024-08-13T10:24:00+02:00 + DECLENCHE + false + + + diff --git a/src/main/resources/sample/examples/RC-RI/RC-RI_partageDossier_DidierMorel.01b.json b/src/main/resources/sample/examples/RC-RI/RC-RI_partageDossier_DidierMorel.01b.json new file mode 100644 index 0000000000..b74a475054 --- /dev/null +++ b/src/main/resources/sample/examples/RC-RI/RC-RI_partageDossier_DidierMorel.01b.json @@ -0,0 +1,38 @@ +{ + "resourcesInfoCisu": { + "resource": [ + { + "team": { + "medicalLevel": "MED", + "name": "Equipe VSR A" + }, + "vehicleType": "SIS", + "name": "VSR 77 - 250", + "datetime": "2024-01-04T08:05:00+01:00", + "resourceId": "fr.fire.sdis77.cgo-077.resource.VSR250", + "orgId": "fr.fire.sdis77.cgo-077", + "state": { + "status": "DECLENCHE", + "datetime": "2024-01-04T08:05:00+01:00", + "availability": false + } + }, + { + "team": { + "medicalLevel": "SECOURS", + "name": "Equipe 89" + }, + "state": { + "status": "ARRIVEE", + "datetime": "2024-01-04T08:06:00+01:00" + }, + "datetime": "2024-01-04T08:06:00+01:00", + "resourceId": "fr.fire.sis077.cgo-077.resource.VSAV32", + "orgId": "fr.fire.sdis77.cgo-077", + "vehicleType": "SIS", + "name": "VSAV 77 - A7B" + } + ], + "caseId": "fr.health.samu770.DRFR157702400400055" + } +} \ No newline at end of file diff --git a/src/main/resources/sample/examples/RC-RI/RC-RI_partageDossier_DidierMorel.01b.xml b/src/main/resources/sample/examples/RC-RI/RC-RI_partageDossier_DidierMorel.01b.xml new file mode 100644 index 0000000000..6e590d9fde --- /dev/null +++ b/src/main/resources/sample/examples/RC-RI/RC-RI_partageDossier_DidierMorel.01b.xml @@ -0,0 +1,35 @@ + + + fr.health.samu770.DRFR157702400400055 + + 2024-01-04T08:05:00+01:00 + fr.fire.sdis77.cgo-077.resource.VSR250 + fr.fire.sdis77.cgo-077 + SIS + VSR 77 - 250 + + MED + Equipe VSR A + + + 2024-01-04T08:05:00+01:00 + DECLENCHE + false + + + + 2024-01-04T08:06:00+01:00 + fr.fire.sis077.cgo-077.resource.VSAV32 + fr.fire.sdis77.cgo-077 + SIS + VSAV 77 - A7B + + SECOURS + Equipe 89 + + + 2024-01-04T08:06:00+01:00 + ARRIVEE + + + diff --git a/src/main/resources/sample/examples/RC-RI/RC-RI_partageDossier_EnfantsNguyen.03b.json b/src/main/resources/sample/examples/RC-RI/RC-RI_partageDossier_EnfantsNguyen.03b.json new file mode 100644 index 0000000000..5f3665a1a9 --- /dev/null +++ b/src/main/resources/sample/examples/RC-RI/RC-RI_partageDossier_EnfantsNguyen.03b.json @@ -0,0 +1,46 @@ +{ + "resourcesInfoCisu": { + "resource": [ + { + "contact": { + "details": "+33744947325", + "type": "TEL" + }, + "team": { + "medicalLevel": "MED", + "name": "Equipe VSAV 5" + }, + "state": { + "datetime": "2024-08-01T16:42:00+02:00", + "status": "DECLENCHE" + }, + "datetime": "2024-08-01T16:42:00+02:00", + "resourceId": "fr.fire.sisXXX.cga-XXX.resource.VSAV12", + "orgId": "fr.fire.sisXXX.cga-XXX", + "vehicleType": "SIS", + "name": "VSAV 76 - A45" + }, + { + "contact": { + "details": "+33645987297", + "type": "TEL" + }, + "team": { + "name": "Equipe Rouge", + "medicalLevel": "SECOURS" + }, + "state": { + "datetime": "2024-08-01T16:40:00+02:00", + "status": "DECLENCHE", + "availability": false + }, + "datetime": "2024-08-01T16:40:00+02:00", + "resourceId": "fr.fire.sisXXX.cga-XXX.resource.VSAV3A", + "orgId": "fr.fire.sisXXX.cga-XXX", + "name": "VSAV 76 - 22D8", + "vehicleType": "SIS" + } + ], + "caseId": "fr.health.samu760.DRFR158002421400215" + } +} \ No newline at end of file diff --git a/src/main/resources/sample/examples/RC-RI/RC-RI_partageDossier_EnfantsNguyen.03b.xml b/src/main/resources/sample/examples/RC-RI/RC-RI_partageDossier_EnfantsNguyen.03b.xml new file mode 100644 index 0000000000..be1aacf78f --- /dev/null +++ b/src/main/resources/sample/examples/RC-RI/RC-RI_partageDossier_EnfantsNguyen.03b.xml @@ -0,0 +1,43 @@ + + + fr.health.samu760.DRFR158002421400215 + + 2024-08-01T16:42:00+02:00 + fr.fire.sisXXX.cga-XXX.resource.VSAV12 + fr.fire.sisXXX.cga-XXX + SIS + VSAV 76 - A45 + + MED + Equipe VSAV 5 + + + 2024-08-01T16:42:00+02:00 + DECLENCHE + + + TEL +
+33744947325
+
+
+ + 2024-08-01T16:40:00+02:00 + fr.fire.sisXXX.cga-XXX.resource.VSAV3A + fr.fire.sisXXX.cga-XXX + SIS + VSAV 76 - 22D8 + + SECOURS + Equipe Rouge + + + 2024-08-01T16:40:00+02:00 + DECLENCHE + false + + + TEL +
+33645987297
+
+
+
diff --git a/src/main/resources/sample/examples/RC-RI/RC-RI_partageDossier_LolaHalimi.01b.json b/src/main/resources/sample/examples/RC-RI/RC-RI_partageDossier_LolaHalimi.01b.json new file mode 100644 index 0000000000..70908f4043 --- /dev/null +++ b/src/main/resources/sample/examples/RC-RI/RC-RI_partageDossier_LolaHalimi.01b.json @@ -0,0 +1,27 @@ +{ + "resourcesInfoCisu": { + "resource": [ + { + "contact": { + "type": "TEL", + "details": "+33645789512" + }, + "team": { + "medicalLevel": "SECOURS", + "name": "Equipe C" + }, + "state": { + "datetime": "2024-01-18T18:06:00+01:00", + "status": "DECLENCHE", + "availability": false + }, + "datetime": "2024-01-18T18:06:00+01:00", + "resourceId": "fr.fire.sisXXX.cga-XXX.resource.VSAV95", + "orgId": "fr.fire.sisXXX.cga-XXX", + "vehicleType": "SIS", + "name": "VSAV95.C" + } + ], + "caseId": "fr.health.samu950.DRFR159502401800159" + } +} \ No newline at end of file diff --git a/src/main/resources/sample/examples/RC-RI/RC-RI_partageDossier_LolaHalimi.01b.xml b/src/main/resources/sample/examples/RC-RI/RC-RI_partageDossier_LolaHalimi.01b.xml new file mode 100644 index 0000000000..4e7b5b9526 --- /dev/null +++ b/src/main/resources/sample/examples/RC-RI/RC-RI_partageDossier_LolaHalimi.01b.xml @@ -0,0 +1,24 @@ + + + fr.health.samu950.DRFR159502401800159 + + 2024-01-18T18:06:00+01:00 + fr.fire.sisXXX.cga-XXX.resource.VSAV95 + fr.fire.sisXXX.cga-XXX + SIS + VSAV95.C + + SECOURS + Equipe C + + + 2024-01-18T18:06:00+01:00 + DECLENCHE + false + + + TEL +
+33645789512
+
+
+
diff --git a/src/main/resources/sample/examples/messagesList.json b/src/main/resources/sample/examples/messagesList.json index 5c00e997d3..3abf4faa5a 100644 --- a/src/main/resources/sample/examples/messagesList.json +++ b/src/main/resources/sample/examples/messagesList.json @@ -685,6 +685,55 @@ } ] }, + { + "label": "RC-RI", + "schemaName": "RC-RI.schema.json", + "schema": null, + "examples": [ + { + "file": "RC-RI/RC-RI_partageDossier_DidierMorel.01b.json", + "icon": "mdi-circular-saw", + "name": "Didier MOREL.01b", + "environment": "Engagement d'un VSR et d'un VSAV par le SDIS 77" + }, + { + "file": "RC-RI/RC-RI_partageDossier_LolaHalimi.01b.json", + "icon": "mdi-image-broken-variant", + "name": "Lola HALIMI.01b", + "environment": "Engagement d'un VSAV par le SDIS 95" + }, + { + "file": "RC-RI/RC-RI_partageDossier_EnfantsNguyen.03b.json", + "icon": "mdi-baby-face-outline", + "name": "Enfants NGUYEN.03b", + "environment": "Engagement de deux VSAV par le SDIS 76" + }, + { + "file": "RC-RI/RC-RI_FemmeEnceinte_DelphineVigneau.03.json", + "icon": "mdi-human-pregnant", + "name": "Delphine VIGNEAU.03", + "environment": "Engagement d'un VSAV par le SDIS 44" + }, + { + "file": "RC-RI/RC-RI_FuiteDeGaz_AliceGregoireNORMAND.03.json", + "icon": "mdi-molecule-co2", + "name": "Alice et Grégoire NORMAND.03", + "environment": "Engagenement d'un VSAV avec le détail de l'équipe" + }, + { + "file": "RC-RI/RC-RI_FuiteDeGaz_AliceGregoireNORMAND.06.json", + "icon": "mdi-molecule-co2", + "name": "Alice et Grégoire NORMAND.06", + "environment": "Partage des ressources engagées avec le SAMU 44" + }, + { + "file": "RC-RI/RC-RI_Incendie_RaymondeLECCIA.04.json", + "icon": "mdi-fire-truck", + "name": "Raymonde LECCIA.04", + "environment": "Détail des ressources SIS mobilisées pour l'intervention" + } + ] + }, { "label": "EMSI", "schemaName": "EMSI.schema.json", diff --git a/src/main/resources/xsd/RC-RI.xsd b/src/main/resources/xsd/RC-RI.xsd new file mode 100644 index 0000000000..5a747b8a6c --- /dev/null +++ b/src/main/resources/xsd/RC-RI.xsd @@ -0,0 +1,196 @@ + + + + + + + A valoriser avec l'identifiant partagé de l'affaire/dossier, généré une seule fois par le système du partenaire qui recoit la primo-demande de secours (créateur du dossier). +Il est valorisé comme suit lors de sa création : +{pays}.{domaine}.{organisation}.{senderCaseId} + +Il doit pouvoir être généré de façon décentralisée et ne présenter aucune ambiguïté. + Il doit être unique dans l'ensemble des systèmes : le numéro de dossier fourni par celui qui génère l'identifiant partagé doit donc être un numéro unique dans son système. + + + + + + + + + + + + + + + A valoriser avec la date et heure d'engagement de la ressource/du vecteur + + + + + A valoriser avec l'identifiant partagé unique de la ressource engagée, normé comme suit : +{orgID}.resource.{ID unique de la ressource partagée} +OU - uniquement dans le cas où un ID unique de ressource ne peut pas être garanti par l'organisation propriétaire : +{orgID}.resource.{sendercaseId}.{n° d’ordre chronologique de la ressource} + + + + + + + + + + A valoriser avec l'identifiant unique partagé de la demande de ressource (si la ressource a été engagée suite à une demande de ressource), normé comme suit : +{orgID}.request.{ID unique de la demande dans le système émetteur} +OU - si un ID unique de la demande n'était pas disponible : +{OrgId émetteur}.request.{senderCaseId}.{numéro d’ordre chronologique} + + + + + + + + + + A valoriser avec le numéro de mission unique du central d’appel (PSAP, …) qui a déclenché le vecteur + + + + + A valoriser avec l'identifiant de l'organisation à laquelle appartient la ressource, normé comme suit : +{pays}.{domaine}.{organisation} + + + + + A valoriser avec le lieu de garage principal + + + + + A valoriser avec le type de vecteur mobilisé : cf. nomenclature associée + + + + + + + + + + + A valoriser avec le nom donné à la ressource par l’organisation d’appartenance + + + + + A valoriser avec le code INSEE de la commune du centre d'affectation + + + + + + + + + + + + + + + + + + A valoriser avec le niveau de médicalisation du vecteur. Cf. nomenclature associée + + + + + + + + + + + + + A valoriser avec le nom de l'équipe à bord du vecteur (celui communiqué par l'organisation à laquelle l'équipe appartient) + + + + + + + + + A valoriser avec la date et heure d'engagement de changement vers le nouveau statut + + + + + A valoriser avec le statut du vecteur. Cf nomenclature associée. + + + + + + + + + + + + + + + + + + + + + + + + + + + A valoriser de manière à indiquer la disponibilité du vecteur. +TRUE = DISPONIBLE +FALSE = INDISPONIBLE +VIDE = INCONNU + + + + + + + + + A valoriser avec le type de l'URI utilisée. Cf nomenclature associée. + + + + + + + + + + + + + + + + A valoriser avec la valeur de l'URI utilisée +Le format attendu pour un numéro de téléphone est le suivant : +{indicatif pays}{numéro de téléphone} + + + + + diff --git a/src/main/resources/xsd/RC-XML-ContentType.xsd b/src/main/resources/xsd/RC-XML-ContentType.xsd index d106b1c26a..08be73aad7 100644 --- a/src/main/resources/xsd/RC-XML-ContentType.xsd +++ b/src/main/resources/xsd/RC-XML-ContentType.xsd @@ -13,6 +13,7 @@ xmlns:createCaseHealthUpdate="urn:emergency:eda:1.9:createCaseHealthUpdate" xmlns:emsi="urn:emergency:eda:1.9:emsi" xmlns:resourcesInfo="urn:emergency:eda:1.9:resourcesinfo" + xmlns:resourcesInfoCisu="urn:emergency:eda:1.9:resourcesInfoCisu" xmlns:resourcesEngagement="urn:emergency:eda:1.9:resourcesengagement" xmlns:resourcesStatus="urn:emergency:eda:1.9:resourcesstatus" xmlns:resourcesRequest="urn:emergency:eda:1.9:resourcesrequest" @@ -41,6 +42,7 @@ + @@ -81,6 +83,7 @@ +