diff --git a/.github/workflows/generate-model.yaml b/.github/workflows/generate-model.yaml index 17bee73a0..d7f88c4cb 100644 --- a/.github/workflows/generate-model.yaml +++ b/.github/workflows/generate-model.yaml @@ -7,7 +7,7 @@ on: workflow_dispatch: env: - SCHEMAS: "RC-EDA RS-EDA EMSI GEO-POS GEO-REQ GEO-RES" + SCHEMAS: "RC-EDA RS-EDA EMSI GEO-POS GEO-REQ GEO-RES RC-REF RS-ERROR" jobs: generate: @@ -43,7 +43,7 @@ jobs: - name: Install python requirements working-directory: ./csv_parser - if: steps.filter.outputs.parsing_required == 'true' + if: steps.filter.outputs.parsing_required == 'true' || steps.filter.outputs.test_case_parsing_required == 'true' run: pip install -r ./requirements.txt - name: Run csv_parser and collect OpenAPI & JSON Schemas @@ -72,6 +72,7 @@ jobs: working-directory: ./csv_parser/json_schema2xsd if: steps.filter.outputs.parsing_required == 'true' run: | + rm out/RS-ERROR.xsd mv out/*.xsd ../../src/main/resources/xsd/ - name: Remove input JSON Schemas @@ -94,10 +95,8 @@ jobs: - name: Generate Java classes working-directory: ./generator run: | - npx @openapitools/openapi-generator-cli generate -c ./config/common/common.generator-config.json --skip-validate-spec - npx @openapitools/openapi-generator-cli generate -c ./config/common/common.wrapper.generator-config.json --skip-validate-spec - npx @openapitools/openapi-generator-cli generate -c ./config/common/common.reference.generator-config.json --skip-validate-spec - npx @openapitools/openapi-generator-cli generate -c ./config/common/common.distributionElement.generator-config.json --skip-validate-spec + npx @openapitools/openapi-generator-cli generate -c ./config/RC-DE/RC-DE.generator-config.json --skip-validate-spec + npx @openapitools/openapi-generator-cli generate -c ./config/RC-DE/RC-DE.distributionElement.generator-config.json --skip-validate-spec IFS=' ' read -ra SCHEMAS_ARRAY <<< "$SCHEMAS" for SCHEMA in "${SCHEMAS_ARRAY[@]}"; do @@ -108,11 +107,12 @@ jobs: - name: Replace src/ with generated classes run: | - rm -r ./src/main/java/com/hubsante/model/common || true + rm -r ./src/main/java/com/hubsante/model/rcde || true rm -r ./src/main/java/com/hubsante/model/cisu || true rm -r ./src/main/java/com/hubsante/model/health || true rm -r ./src/main/java/com/hubsante/model/emsi || true rm -r ./src/main/java/com/hubsante/model/geolocation || true + rm -r ./generator/classes/src/main/java/com/hubsante/model/report/ErrorCode.java || true cp -r ./generator/classes/src/main/java/com/hubsante/model/* ./src/main/java/com/hubsante/model/ - name: Grant execute permission for Gradlew diff --git a/build.gradle b/build.gradle index 4055faba5..6a847fb3c 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ plugins { } group = 'com.hubsante' -version ='0.4.5' +version ='0.5.0' java { toolchain { diff --git a/csv_parser/common.openapi.yaml b/csv_parser/RC-DE.openapi.yaml similarity index 80% rename from csv_parser/common.openapi.yaml rename to csv_parser/RC-DE.openapi.yaml index 45982d8d1..0423e4bf7 100644 --- a/csv_parser/common.openapi.yaml +++ b/csv_parser/RC-DE.openapi.yaml @@ -59,16 +59,4 @@ components: name: type: string URI: - type: string - ReferenceWrapper: - required: - - Reference - properties: - reference: - $ref: '#/components/schemas/Reference' - Reference: - properties: - distributionID: - type: string - required: - - distributionID \ No newline at end of file + type: string \ No newline at end of file diff --git a/csv_parser/auto.sh b/csv_parser/auto.sh index 105ee0061..38d7b65bd 100755 --- a/csv_parser/auto.sh +++ b/csv_parser/auto.sh @@ -15,6 +15,7 @@ set -x # Function to copy nomenclatures excels from OneDrive to local folder setup() { echo "Copying nomenclatures excels from OneDrive to local folder..." + rm -r "$NOMENCLATURE_FOLDER" cp -r "$NOMENCLATURE_IN_FOLDER" "$NOMENCLATURE_FOLDER" echo "Copying models excel from OneDrive to local folder..." cp "$MODELS_IN_FILE" "$MODELS_FILE" diff --git a/csv_parser/csv_parser.py b/csv_parser/csv_parser.py index be44cc2ac..bc4ea0b00 100644 --- a/csv_parser/csv_parser.py +++ b/csv_parser/csv_parser.py @@ -1,4 +1,6 @@ import copy +import re + import pandas as pd import json from jsonpath_ng import parse @@ -21,11 +23,11 @@ warnings.filterwarnings('ignore', category=UserWarning, module='openpyxl') full_asyncapi = None -first_nomenclature_name = "" -first_nomenclature_id = "" -first_nomenclature_properties = [] +first_codeandlabel_name = "" +first_codeandlabel_properties = [] + -def run(sheet, name, version, filter): +def run(sheet, name, version, perimeter_filter, model_type): class Color: ORANGE = '\033[93m' RED = '\033[91m' @@ -36,7 +38,7 @@ class Color: version = version or date.today().strftime("%y.%m.%d") print(f"{Color.BOLD}{Color.UNDERLINE}{Color.PURPLE}" - f"Building version {version} of {'15-NexSIS' if filter else ''} {sheet} sheet " + f"Building version {version} of {perimeter_filter} {sheet} sheet " f"into {name} schema..." f"{Color.END}") @@ -71,35 +73,34 @@ def get_nomenclature(elem): # filename to target (.csv format) nomenclature_name = elem['Détails de format'][14:] path_file = '' - for filename in os.listdir(os.path.join("..", "nomenclature_parser", "out", "latest", "csv")): + nomenclature_files = os.listdir(os.path.join("..", "nomenclature_parser", "out", "latest", "csv")) + for filename in nomenclature_files: if filename.startswith(nomenclature_name): path_file = os.path.join("..", "nomenclature_parser", "out", "latest", "csv", filename) if path_file != '': df_nomenclature = pd.read_csv(path_file, sep=",", keep_default_na=False, na_values=['_'], encoding="utf-8") L_ret = df_nomenclature["code"].values.tolist() + # ToDo: ajouter un bloc dans le elseif pour détecter des https:// et aller chercher les nomenclatures publiées en ligne (MOS/NOs par exemple) else: - # ToDo: ajouter un bloc dans le else pour détecter des https:// et aller chercher les nomenclatures publiées en ligne (MOS/NOs par exemple) - print(f'{nomenclature_name} does not exist. Cannot load associated nomenclature.') - return [] + print(f"{Color.RED}ERROR: nomenclature {nomenclature_name} does not exist, could not load associated values.") + print(f'Known nomenclatures are {nomenclature_files}') + print("Check if some nomenclature files disappeared. If so, last run of nomenclature_parser.py likely failed.") + exit(1) return L_ret params = get_params_from_sheet(sheet) # Schema name is in name = RC-EDA (or RS-EDA) for instance MODEL_NAME = params['modelName'] # CreateCase - MODEL_TYPE = MODEL_NAME[0].lower() + MODEL_NAME[1:] # createCase - def isCreateCase(): - return MODEL_TYPE == "createCase" - - def is_custom_content(): - return MODEL_TYPE == "customContent" - if not filter and isCreateCase(): - MODEL_TYPE = "createCaseHealth" + MODEL_TYPE = model_type WRAPPER_NAME = f"{MODEL_TYPE}Wrapper" # createCaseWrapper NB_ROWS = params['rows'] NB_COLS = params['cols'] + def is_custom_content(): + return MODEL_TYPE == "customContent" + Path('out/' + name).mkdir(parents=True, exist_ok=True) # DATA COLLECTION AND CLEANING @@ -118,11 +119,9 @@ def is_custom_content(): print(f"Make sure all these columns are existing: {REQUIRED_COLUMNS}.{Color.END}") exit(1) - # Keeping only 15-NexSIS fields if filter is set - if filter: - df = df[df['15-18'] == 'X'] - else: - df = df[df['15-15'] == 'X'] + # Keeping only the relevant perimeter rows + if perimeter_filter: + df = df[pd.notna(df[perimeter_filter])] # Storing input data in a file to track versions df.to_csv(f'out/{name}/{name}.input.csv') @@ -139,11 +138,11 @@ def find_data_level(element): return i return 0 - def format_nomenclature_properties(child, parent): - nomenclature_file = parent['Détails de format'] - """ For 'Code', set nomenclature file name to the 'Détails de format' column, remove it from parent """ + def format_codeandlabel_properties(child, parent): + code_file = parent['Détails de format'] + """ For 'Code', set code file name to the 'Détails de format' column, remove it from parent """ if child['Balise NexSIS'] == "code": - child['Détails de format'] = nomenclature_file + child['Détails de format'] = code_file df.loc[parent.ID-1, 'Détails de format'] = 'nan' """Set the level of the child to be the level of the parent + 1""" if find_data_level(child) != find_data_level(parent)+1: @@ -159,30 +158,29 @@ def shift_child_data_levels(child, parent): child_cpy[f"Donnée (Niveau {i})"] = child[f"Donnée (Niveau {i-shift_difference})"] return child_cpy - global first_nomenclature_properties - first_nomenclature_properties = [] + global first_codeandlabel_properties + first_codeandlabel_properties = [] def regenerate_ids(df): """Regenerate the IDs of the dataframe""" for index, row in df.copy().iterrows(): df.at[index, 'ID'] = index + 1 - # Iterate over df and insert three lines after each entry of type 'nomenclature' + # Iterate over df and insert two lines after each entry of type 'codeAndLabel' for index, row in df.copy().iterrows(): - if row['Format (ou type)'] == 'nomenclature': - # We save the children of the nomenclature (3 next rows) if it's the first one we've seen - - if not first_nomenclature_properties: - for i in range(1, 4): - first_nomenclature_properties.append(df.loc[index + i].to_dict()) - # Otherwise, we add the children of the first nomenclature to the current nomenclature + if row['Format (ou type)'] == 'codeAndLabel': + # We save the children of the codeAndLabel (2 next rows) if it's the first one we've seen + if not first_codeandlabel_properties: + for i in range(1, 3): + first_codeandlabel_properties.append(df.loc[index + i].to_dict()) + # Otherwise, we add the children of the first codeAndLabel to the current codeAndLabel else: - for i in range(1, 4): + for i in range(1, 3): # we check the highest level of data of the current row and make sure to modify # the level of data of each property to be equal to the row's level + 1 - prop_cpy = first_nomenclature_properties[i-1].copy() + prop_cpy = first_codeandlabel_properties[i - 1].copy() prop_cpy['ID'] = row['ID']+i/10 - df.loc[index + i/10] = format_nomenclature_properties(prop_cpy, row) + df.loc[index + i/10] = format_codeandlabel_properties(prop_cpy, row) df.sort_index(axis=0, ascending=True, inplace=True, kind='quicksort') df.reset_index(drop=True, inplace=True) @@ -236,6 +234,7 @@ def get_row_donnees_count(df): f"Check these columns are correctly set up.{Color.END}") HAS_ERROR = True # - name with spaces + test = df[df['name'].str.contains(' ')] if not df[df['name'].str.contains(' ')].empty: print(f"{Color.RED}ERROR: some rows have spaces in their 'name' field:{Color.ORANGE}") print(df[df['name'].str.contains(' ')]) @@ -295,7 +294,7 @@ def capitalizeFirstLetter(string): def get_true_type(row): """Get the type of elem (defaults to its name if there is no type specified)""" - if row['Format (ou type)'] == 'nomenclature': + if row['Format (ou type)'] == 'codeAndLabel': return row['name'] elif row["Objet"] != "X" or row['is_typed_object']: return row["Format (ou type)"] @@ -325,6 +324,38 @@ def build_full_name(row): df['parent_type'] = df.apply(get_parent_type, axis=1) df['full_name'] = df.apply(build_full_name, axis=1) + # Replace 'Cardinalité' column values with the relevant perimeter column values (whenever the value is not 'X') + if perimeter_filter: + df['Cardinalité'] = df.where(df[perimeter_filter] == 'X', df[perimeter_filter], axis=0)['Cardinalité'] + + # Verify that cardinality is formatted correctly (e.g. '0..1', '1..1', '0..n', '1..n'; regex (\d+..(\d+|n))) + def validate_cardinality_format(cardinality): + if re.match(r'^\d+\.\.(\d+|n)$', cardinality) and validate_cardinality_values(cardinality): + return True + return False + + # Verify that cardinality value is valid (first number is lower than second number or second number is 'n') + def validate_cardinality_values(cardinality): + cardinality_values = cardinality.split('..') + if cardinality_values[1] == 'n': + return True + if int(cardinality_values[0]) <= int(cardinality_values[1]): + return True + return False + + # Validate cardinality for each row of df + errs = [] + for index, row in df.iterrows(): + if not validate_cardinality_format(row['Cardinalité']): + errs.append(row) + if errs: + print(f"{Color.RED}ERROR: some rows have invalid cardinality values in sheet {sheet}, perimeter {perimeter_filter}:{Color.ORANGE}") + for err in errs: + print("Row ID: ", f"{str(int(err['ID'])):<5s}", "Name: ", f"{err['name']:<25s}", "Cardinality: ", err['Cardinalité']) + print(f"{Color.RED}Cardinalities should be formatted as '0..1', '1..1', '0..n', '1..n'.{Color.END}") + exit(1) + + # 2. Recursive data (children in their parent, to be explored like a tree) def get_element_with_its_children(previous_children, elem_id): elem = df.loc[elem_id].to_dict() @@ -485,7 +516,9 @@ def add_field_child_property(parent, child, definitions): def add_object_child_definition(parent, child, definitions): """ Update parent definitions (required and properties) by adding the child information for an object child - Creates definitions for the child object if it does not exist yet + Creates definitions for the child object if it does not exist yet. + Special case: sourceMessage in rs-error message should allow additional properies (by default it is an + empty object with no required or optional properties) """ childOriginalTypeName = child['Format (ou type)'] parentExamplePath = get_parent_example_path(parent) @@ -501,14 +534,14 @@ def add_object_child_definition(parent, child, definitions): 'additionalProperties': is_source_message(childTrueTypeName), 'example': parentExamplePath + '/' + child['name'] + ('/0' if is_array(child) else '') } - """If this is the first nomenclature, we record its name, otherwise we copy the properties from the first - nomenclature to the current nomenclature""" - if childOriginalTypeName == "nomenclature": - global first_nomenclature_name - if first_nomenclature_name == "": - first_nomenclature_name = childTrueTypeName + """If this is the first codeAndLabel, we record its name, otherwise we copy the properties from the first + codeAndLabel to the current codeAndLabel""" + if childOriginalTypeName == "codeAndLabel": + global first_codeandlabel_name + if first_codeandlabel_name == "": + first_codeandlabel_name = childTrueTypeName else: - json_schema['definitions'][childTrueTypeName]['properties'] = json_schema['definitions'][first_nomenclature_name]['properties'].copy() + json_schema['definitions'][childTrueTypeName]['properties'] = json_schema['definitions'][first_codeandlabel_name]['properties'].copy() if child['Cardinalité'].startswith('1'): definitions['required'].append(child['name']) @@ -550,8 +583,8 @@ def fill_object_definition(elem, root=False): definition = json_schema else: if 'children' not in elem: - """If element type is 'nomenclature' we check by 'name', else we check by 'Format (ou type)'""" - if elem['Format (ou type)'] != 'nomenclature': + """If element type is 'codeAndLabel' we check by 'name', else we check by 'Format (ou type)'""" + if elem['Format (ou type)'] != 'codeAndLabel': assert elem['Format (ou type)'] in json_schema['definitions'], \ (f"The type of the object '{elem['name']}' is not defined.\n" f"Make sure the object is not empty") @@ -646,7 +679,7 @@ def json_schema_to_openapi_schema(json_schema): return openapi_schema openapi_components = json_schema_to_openapi_schema(json_schema) - with open('common.openapi.yaml') as f: + with open('RC-DE.openapi.yaml') as f: common_openapi_components = yaml.load(f, Loader=yaml.loader.SafeLoader) with open('template.openapi.yaml') as f: @@ -695,7 +728,7 @@ def json_schema_to_openapi_schema(json_schema): print('AsyncAPI schema collected.') print(f'{Color.BOLD}{Color.UNDERLINE}{Color.PURPLE}Generating UML diagrams...{Color.END}') - uml_generator.run(name, MODEL_TYPE, version=version, filter=filter) + uml_generator.run(name, MODEL_TYPE, version=version) print('UML diagrams generated.') if not is_custom_content(): diff --git a/csv_parser/model.xlsx b/csv_parser/model.xlsx index 5f333b7c2..53ce08262 100644 Binary files a/csv_parser/model.xlsx and b/csv_parser/model.xlsx differ diff --git a/csv_parser/out/EMSI/EMSI.input.csv b/csv_parser/out/EMSI/EMSI.input.csv index ad5f73991..8d9e49765 100644 --- a/csv_parser/out/EMSI/EMSI.input.csv +++ b/csv_parser/out/EMSI/EMSI.input.csv @@ -129,7 +129,7 @@ La localisation de l'affaire est transmise en amont dans un message RC-EDA et le La localisation de l'affaire est transmise en amont dans un message RC-EDA et le lieu souhaité pour l'intervention est systématiquement reprécisé dans un objet MISSION. A constituer depuis ref_mapping_EMSI_EVENT_EGEO_TYPE_NEXSIS_ /!\ plusieurs champs NEXSIS -/!\ plusieurs valeurs par champs d'où un groupe à créer par type différents","Describes the type of area. If geographical information can be classified with several types, it shall provide several EGEO elements. One main EGEO element shall describe the details of the area (including the EGEO/ POSITION element with a EGEO/POSITION/COORD sub-element and a EGEO/POSITION/LOC_ID element). Then other EGEO ele- ments (of the other types) shall also provide a EGEO/POSITION element providing the same value for the EGEO/POSITION/ LOC_ID (and without repeating the COORD values). cf. Table B.9 — EVENT EGEO TYPE",HLT,X,TYPE,,TYPE,,,,,1..1,1..1,1..1,,,string,,NOMENCLATURE: EMSI-EVENT.EGEO.TYPE,X,X +/!\ plusieurs valeurs par champs d'où un groupe à créer par type différents","Describes the type of area. If geographical information can be classified with several types, it shall provide several EGEO elements. One main EGEO element shall describe the details of the area (including the EGEO/ POSITION element with a EGEO/POSITION/COORD sub-element and a EGEO/POSITION/LOC_ID element). Then other EGEO ele- ments (of the other types) shall also provide a EGEO/POSITION element providing the same value for the EGEO/POSITION/ LOC_ID (and without repeating the COORD values). cf. Table B.9 — EVENT EGEO TYPE",HLT,X,TYPE,,TYPE,,,,,0..1,1..1,1..1,,,string,,NOMENCLATURE: EMSI-EVENT.EGEO.TYPE,X,X 56,57,,,Condition météo,,,,"Optionnel La localisation de l'affaire est transmise en amont dans un message RC-EDA et le lieu souhaité pour l'intervention est systématiquement reprécisé dans un objet MISSION","Where several WEATHER elements are present, all are applicable. @@ -139,12 +139,12 @@ La localisation de l'affaire est transmise en amont dans un message RC-EDA et le description of the location and its significance in the context of the event.",Un peu de pluie vers 8h,,FREETEXT,,FREETEXT,,,,,0..1,0..1,0..1,,,string,,,X,X 58,59,,,Position de l'opération,,,,"Optionnel -La localisation de l'affaire est transmise en amont dans un message RC-EDA et le lieu souhaité pour l'intervention est systématiquement reprécisé dans un objet MISSION","Provides the position of the EGEO element. All elements of POSITION are optional, but at least one shall be provided. ",,,POSITION,,POSITION,,,,,1..1,1..1,1..1,,X,position,,,X,X +La localisation de l'affaire est transmise en amont dans un message RC-EDA et le lieu souhaité pour l'intervention est systématiquement reprécisé dans un objet MISSION","Provides the position of the EGEO element. All elements of POSITION are optional, but at least one shall be provided. ",,,POSITION,,POSITION,,,,,0..1,1..1,1..1,,X,position,,,X,X 59,60,,,,ID position,,,"Optionnel La localisation de l'affaire est transmise en amont dans un message RC-EDA et le lieu souhaité pour l'intervention est systématiquement reprécisé dans un objet MISSION. Lorsque le lieu d'intervention est identique à celle d'une position de l'affaire partagée dans le message RC-EDA, le champ MISSION.RGEO.POSITION.LOC_ID doit être alimenté valorisé comme le champ eventLocation.locId du message RC-EDA envoyé en amont. ","Defines the identifier for this geographical area (for later reference). Unique inside an event for the node. MISSION : Provides an identifier, which is unique inside the current EMSI file. This identifier can be used in another part of the EMSI in order to avoid duplicating the same position object (cf. the explanation of the TYPE element for an example of the use of this element). -RESSOURCE : Provides an identifier, which is unique inside the current EMSI file.",111fb03a-6fd9-41e0-8e81-990c45188887,X,LOC_ID,,LOC_ID,,,,,1..1,1..1,1..1,,,string,,,X,X +RESSOURCE : Provides an identifier, which is unique inside the current EMSI file.",111fb03a-6fd9-41e0-8e81-990c45188887,X,LOC_ID,,LOC_ID,,,,,0..1,1..1,1..1,,,string,,,X,X 60,61,,,,Nom de position,,,"Optionnel, non utilisé par NexSIS nom de lieu","NOTE: It is the responsibility of the agency to define a consistent approach to naming locations, for example, using names from a particular map, or, in a multi-lingual marked area, such as Belgium or Wales, putting both names in separated by a “/”.",Lycée Pierre de Coubertin,,NAME,,NAME,,,,,0..1,0..1,0..1,,,string,,,X,X 61,62,,,,Type,,,"Optionnel Dans le cadre de l'interface LRM NexSIS, seul le libellé POINT doit obligatoirement être interprétable par les deux partenaires. diff --git a/csv_parser/out/EMSI/EMSI.schema.docx b/csv_parser/out/EMSI/EMSI.schema.docx index 588c75f1f..27c1581c6 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 b/csv_parser/out/EMSI/EMSI.uml_diagram index 9b708b9b1..f5a88d4c7 100644 --- a/csv_parser/out/EMSI/EMSI.uml_diagram +++ b/csv_parser/out/EMSI/EMSI.uml_diagram @@ -70,14 +70,14 @@ strict digraph { POSITION - objet positionLOC_ID string : [1..1] NAME string : [0..1] TYPE string : [0..1] HEIGHT_ROLE string : [0..1] COORDSYS string : [0..1] ADDRESS string : [0..*] + objet positionLOC_ID string : [0..1] NAME string : [0..1] TYPE string : [0..1] HEIGHT_ROLE string : [0..1] COORDSYS string : [0..1] ADDRESS string : [0..*] >] - POSITION -> EGEO [headlabel=1 taillabel=1] + POSITION -> EGEO [headlabel=1 taillabel="0..1"] EGEO [label=< - +
EGEO
objet egeo
DATIME date-time : [0..1]
TYPE string : [1..1]
WEATHER string : [0..*]
FREETEXT string : [0..1]
objet egeo
DATIME date-time : [0..1]
TYPE string : [0..1]
WEATHER string : [0..*]
FREETEXT string : [0..1]
>] EGEO -> EVENT [headlabel=1 taillabel="0..*"] EVENT [label=< @@ -98,7 +98,7 @@ strict digraph { - +
POSITION
objet position
LOC_ID string : [1..1]
NAME string : [0..1]
TYPE string : [0..1]
HEIGHT_ROLE string : [0..1]
COORDSYS string : [0..1]
ADDRESS string : [0..*]
objet position
LOC_ID string : [0..1]
NAME string : [0..1]
TYPE string : [0..1]
HEIGHT_ROLE string : [0..1]
COORDSYS string : [0..1]
ADDRESS string : [0..*]
>] POSITION -> MISSION [headlabel=1 taillabel="0..1"] MISSION [label=< @@ -126,7 +126,7 @@ strict digraph { - +
POSITION
objet position
LOC_ID string : [1..1]
NAME string : [0..1]
TYPE string : [0..1]
HEIGHT_ROLE string : [0..1]
COORDSYS string : [0..1]
ADDRESS string : [0..*]
objet position
LOC_ID string : [0..1]
NAME string : [0..1]
TYPE string : [0..1]
HEIGHT_ROLE string : [0..1]
COORDSYS string : [0..1]
ADDRESS string : [0..*]
>] POSITION -> RGEO [headlabel=1 taillabel="0..*"] RGEO [label=< diff --git a/csv_parser/out/EMSI/EMSI.uml_diagram.pdf b/csv_parser/out/EMSI/EMSI.uml_diagram.pdf index 246bdfdc5..327e8a13a 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 092fd006c..c811bca3d 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 9666f1109..33e96d8cc 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 a159e865a..dbd78a4dc 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 f6f13b610..9ebe49518 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.example.json b/csv_parser/out/GEO-RES/GEO-RES.example.json index b4257db91..9192bcb9f 100644 --- a/csv_parser/out/GEO-RES/GEO-RES.example.json +++ b/csv_parser/out/GEO-RES/GEO-RES.example.json @@ -6,8 +6,8 @@ "name": "SMUR 1 Rouen", "type": "SMUR", "nature": "BASE", - "mobility": "VEHCL", - "capacity": "MED", + "mobility": "VEHICULE", + "capacity": "MEDICALE", "contacts": [ { "type": "PHNADD", diff --git a/csv_parser/out/GEO-RES/GEO-RES.input.csv b/csv_parser/out/GEO-RES/GEO-RES.input.csv index 351798483..200e6bd9b 100644 --- a/csv_parser/out/GEO-RES/GEO-RES.input.csv +++ b/csv_parser/out/GEO-RES/GEO-RES.input.csv @@ -7,8 +7,8 @@ L'immatriculation peut être utilisée dans le nom courant des véhicules.",SMUR 1 Rouen,,name,,,,,,0..1,,string,,,X,X 4,5,,Type de ressource,,,,,"Catégorie de la ressource (SMUR, SDIS, TSU, SNP, MSPE, navire)",SMUR,,type,,,,,,1..1,,string,X,"ENUM: SMUR, SDIS, TSU, SNP, MSPE, SHIP",X,X 5,6,,Nature de la ressource,,,,,"Nature de la ressource (effecteur, base)",BASE,,nature,,,,,,0..1,,string,X,"ENUM: EFFECTEUR, BASE",X,X -6,7,,Mobilité de la ressource,,,,,"Mobilité de la ressource (fixe, vehicule, heliporté, navire)",VEHCL,,mobility,,,,,,0..1,,string,X,"ENUM: FIXE, VEHICULE, HELICOPTERE, SHIP ",X,X -7,8,,Capacités de la ressource,,,,,Capacité de transport d'un patient,MED,,capacity,,,,,,0..1,,string,X,"ENUM: URGENCE, MEDICALE, PARAMEDICALE, INCONNUE",X,X +6,7,,Mobilité de la ressource,,,,,"Mobilité de la ressource (fixe, vehicule, heliporté, navire)",VEHICULE,,mobility,,,,,,0..1,,string,X,"ENUM: FIXE, VEHICULE, HELICOPTERE, SHIP ",X,X +7,8,,Capacités de la ressource,,,,,Capacité de transport d'un patient,MEDICALE,,capacity,,,,,,0..1,,string,X,"ENUM: URGENCE, MEDICALE, PARAMEDICALE, INCONNUE",X,X 8,9,,Contacts,,,,,Liste de contacts utiles pour contacter par exemple le véhicule ou le personnel engagé dans l'opération.,,,contacts,,,,,,0..n,X,contact,,,X,X 9,10,,,Type de contact,,,,"Type de contact, voir énumération associée 1. PMRADD (si RFGI disponible) diff --git a/csv_parser/out/GEO-RES/GEO-RES.schema.docx b/csv_parser/out/GEO-RES/GEO-RES.schema.docx index 597831a4e..126bc5ef8 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 c5f1a24f0..97120dfaa 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-EDA/RC-EDA.example.json b/csv_parser/out/RC-EDA/RC-EDA.example.json index 78b1b3af0..35ebeccc7 100644 --- a/csv_parser/out/RC-EDA/RC-EDA.example.json +++ b/csv_parser/out/RC-EDA/RC-EDA.example.json @@ -6,25 +6,21 @@ "qualification": { "whatsHappen": { "code": "C07.13.02", - "label": "Rod\u00e9o automobile", - "freetext": "None" + "label": "Rod\u00e9o automobile" }, "locationKind": { "code": "C07.13.02", - "label": "Rod\u00e9o automobile", - "freetext": "None" + "label": "Rod\u00e9o automobile" }, "riskThreat": [ { "code": "C07.13.02", - "label": "Rod\u00e9o automobile", - "freetext": "None" + "label": "Rod\u00e9o automobile" } ], "healthMotive": { "code": "C07.13.02", - "label": "Rod\u00e9o automobile", - "freetext": "None" + "label": "Rod\u00e9o automobile" }, "victims": { "count": "SEVERAL", @@ -36,6 +32,12 @@ "locID": "111fb03a-6fd9-41e0-8e81-990c45188887", "locLabel": "Lyc\u00e9e Pierre de Coubertin - 12 rue de l'Amiti\u00e9 77288 Melun, Mus\u00e9e Bossuet - Acc\u00e8s 2 - 77048 Saint-Albray", "name": "Lyc\u00e9e Pierre de Coubertin", + "externalLocationId": [ + { + "source": "FINESS g\u00e9ographique, FINESS administratif, SIREN, SIRET, APE, NAF", + "value": "920000650\u00a0" + } + ], "detailedAddress": { "complete": "9 Bd du Montparnasse", "number": "9, 4bis, PK10, \u2026", @@ -92,9 +94,15 @@ "id": "SGO050-20230605-AL0123", "reception": "2022-09-27T08:21:06+02:00", "reporting": "STANDARD", - "freetext": "D\u00e9clenchement t\u00e9l\u00e9alarme, voisine sur les lieux", + "notes": [ + { + "creation": "None", + "freetext": "La personne est inconsciente (perte de connaissance). " + } + ], "caller": { "callerContact": { + "channel": "Personne", "type": "PHNADD", "detail": "0671830530" }, @@ -109,11 +117,6 @@ "firstName": "Jean" } }, - "alertSource": { - "channel": "Personne", - "type": "PHNADD", - "detail": "0671830530" - }, "location": {}, "qualification": {}, "callTaker": { @@ -136,14 +139,17 @@ }, "patient": [ { - "id": "None", + "id": "fr.health.samu044.DRFR15DDXAAJJJ00000.P00", "identity": { "strictFeatures": { "birthDate": "None", "sex": "F" }, "nonStrictFeatures": {} - } + }, + "freetext": [ + "None" + ] } ], "decision": [ @@ -151,18 +157,15 @@ "id": "None", "creation": "2022-09-27T08:23:34+02:00", "type": "conseil m\u00e9dical / d\u00e9cision d\u2019intervention / d\u00e9cision d\u2019orientation et de transport / Pas de d\u00e9cision suppl\u00e9mentaire", - "orientation": "None", - "transportation": [ - "SMUR " - ], - "teamCare": "M\u00e9dical, param\u00e9dical, secouriste", - "destination": { - "type": "None", - "facility": "None", - "adminFiness": "None", - "geoFiness": "None", - "service": "None", - "freetext": "None" + "transportDetails": { + "orientation": "laiss\u00e9 sur place, d\u00e9c\u00e9d\u00e9, ou transport\u00e9", + "concoursRequest": "None", + "transportationID": "None", + "teamCare": "M\u00e9dical, param\u00e9dical, secouriste", + "destination": { + "type": "None", + "destinationLocation": {} + } } } ], @@ -179,5 +182,7 @@ } ] }, - "freetext": "None" + "freetext": [ + "Le forcen\u00e9 n'est pas ma\u00eetris\u00e9. Voiture renvers\u00e9e. Urgences ferm\u00e9es de 22h \u00e0 6h00." + ] } \ No newline at end of file diff --git a/csv_parser/out/RC-EDA/RC-EDA.input.csv b/csv_parser/out/RC-EDA/RC-EDA.input.csv index c3a61fa23..29245da4c 100644 --- a/csv_parser/out/RC-EDA/RC-EDA.input.csv +++ b/csv_parser/out/RC-EDA/RC-EDA.input.csv @@ -1,184 +1,183 @@ -,ID,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 NexSIS,Nouvelle balise,Nantes - balise,Nantes - description,GT399,GT399 description,Priorisation,Cardinalité,Objet,Format (ou type),Nomenclature/ énumération,Détails de format,15-18,15-15 +,ID,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 NexSIS,Nouvelle balise,Nantes - balise,Nantes - description,GT399,GT399 description,Priorisation,Cardinalité,Objet,Format (ou type),Nomenclature/ énumération,Détails de format,15-18,15-15,15-SMUR 0,1,Identifiant affaire/dossier,,,,,,"Identifiant de l'affaire partagé entre tous les intervenants = aux champs {organization}.{senderCaseId}. Il doit pouvoir être généré de façon unique et décentralisée et ne présenter aucune ambiguïté. Il est généré par le système du partenaire récepteur de la primo-demande de secours (créateur du dossier). -Valorisation : {pays}.{domaine}.{organisation}.{structure interne}*.{unité fonctionnelle}*.{numéro de dossier}",fr.health.samu440-DRFR15DDXAAJJJ0000,eventId,caseId,NR,Numéro de requête émise,,,1.0,1..1,,string,,,X,X +Valorisation : {pays}.{domaine}.{organisation}.{structure interne}*.{unité fonctionnelle}*.{numéro de dossier}",fr.health.samu440-DRFR15DDXAAJJJ0000,eventId,caseId,NR,Numéro de requête émise,,,1.0,1..1,,string,,,X,X,X 1,2,Identifiant local de l'affaire/dossier,,,,,,"Valoriser avec le numéro du dossier dans le SI de l'émetteur du message. Ce champ est facultatif, il ne sera notamment pas transmis par NexSIS. -",DRFR15DDXAAJJJ0000,,senderCaseId,NO,Numéro de dossier de l'émetteur,,,,0..1,,string,,,X,X -2,3,Date Heure de création de l'affaire/dossier,,,,,,Groupe date heure de début de partage lié à la création de l'affaire (et donc de génération du caseId). Il doit être renseigné à la fin du processus de la création de la première alerte. Lors de l'ajout d'alerte à une affaire ce champ ne doit pas être modifié. L'indicateur de fuseau horaire Z ne doit pas être utilisé.,2022-09-27T08:23:34+02:00,createdAt,creation,,,,,1.0,1..1,,datetime,,Format datetime décrit dans le DSF,X,X +",DRFR15DDXAAJJJ0000,,senderCaseId,NO,Numéro de dossier de l'émetteur,,,,0..1,,string,,,X,X,X +2,3,Date Heure de création de l'affaire/dossier,,,,,,Groupe date heure de début de partage lié à la création de l'affaire (et donc de génération du caseId). Il doit être renseigné à la fin du processus de la création de la première alerte. Lors de l'ajout d'alerte à une affaire ce champ ne doit pas être modifié. L'indicateur de fuseau horaire Z ne doit pas être utilisé.,2022-09-27T08:23:34+02:00,createdAt,creation,,,,,1.0,1..1,,datetime,,Format datetime décrit dans le DSF,X,X,X 3,4,Version des nomenclatures du référentiel CISU,,,,,,"Indique le numéro de version du référentiel des nomenclatures des codes transmis. -Cela permet aux différents systèmes de s'assurer qu'ils utilisent la même version des codes de nomenclature que leurs partenaires.",1.2,cisuNomenclatureVersion,referenceVersion,,,,,,1..1,,string,,,X,X -4,5,Qualification de l'affaire/dossier,,,,,,Permet de qualifier l'affaire en générale. La qualification est issue d'une interprétation métier des alertes reçues.,,alertCode,qualification,,,,,,1..1,X,qualification,,,X,X -5,6,,Nature de fait,,,,,"Décrit la nature de fait de l'alerte (NF) à partir de la nomenclature CISU. -Le champs freetext sert à passer les informations de gestion des évènements (main courante sans les informations médicales privilégiées).",,whatsHappen,,CE/CK,raison de l'appel,,,1.0,1..1,X,nomenclature,,,X,X -6,7,,,Code,,,,A valoriser avec un code la nomenclature associée,C07.13.02,code,,,,,,1.0,1..1,,string,,,X,X -7,8,,,Libellé,,,,"A valoriser avec le libellé de la nomenclature associée. -Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut directement afficher le libellé qui est obligatoirement fourni avec le code.",Rodéo automobile,label,,,,,,1.0,1..1,,string,,,X,X -8,9,,,Commentaire,,,,Commentaire libre permettant de passer des informations complémentaires associées à la nomenclature,,freetext,,,,,,,0..1,,string,,,X,X -9,10,,Type de lieu,# Voir whatsHappen (type nomenclature),,,,Décrit le type de lieu (TL). Référentiel : nomenclature CISU,,locationKind,,CI,Type de lieu d'intervention,,,1.0,0..1,X,nomenclature,,,X,X -10,11,,"Risque, menace et sensibilité",# Voir whatsHappen (type nomenclature),,,,"Décrit les risques, menaces et sensibilités (RMS). Référentiel : nomenclature CISU.",,riskThreat,,,,,,1.0,0..n,X,nomenclature,,,X,X -11,12,,Motif de recours médico-secouriste,# Voir whatsHappen (type nomenclature),,,,Décrit le motif de recours médico-secouriste (MR). Référentiel : nomenclature CISU.,,healthMotive,,,,,,1.0,0..1,X,nomenclature,,,X,X -17,18,,Patients-Victimes,,,,,,,victims,,,,,,,0..1,X,victims,,,X,X -18,19,,,Nombre de patients-victimes,,,,Indique le nombre de victimes selon la nomenclature du référentiel CISU,SEVERAL,count,,NV,Nombre de victimes,,,,0..1,,string,X,"ENUM: 0, 1, SEVERAL, MANY, UNKNOWN",X,X -19,20,,,Type du patient-victime principal,,,,Identifie le type de la principale victime (celle dont l'état de santé provoque le déclenchement de l'envoi des secours). Prend les valeurs du référentiel CISU. Entre dans la détermination des partenaires impliqués par NexSIS.,CHILD,mainVictim,,,,,,,0..1,,string,X,"ENUM: INFANT, CHILD, ADULT, SENIOR",X,X -20,21,,,Informations complémentaires sur les patients-victimes,,,,Permet de complémenter en commentaire libre la(les) victime(s),"Jeanne Dupont, 6 ans, ne répond plus",freetext,,,,,,,0..1,,string,,,X,X -21,22,Localisation de l'affaire/dossier,,,,,,Concerne bien le dossier de régulation pour le périmetre 15-15,,eventLocation,location,,,,,,1..1,X,location,,,X,X -22,23,,Identifiant technique de localisation,,,,,ID technique et provisoire permettant d'identifier le lieu dans le cadre des échanges de cette affaire.,111fb03a-6fd9-41e0-8e81-990c45188887,locID,,,,,,,1..1,,string,,,X,X -23,24,,Résumé de la localisation,,,,,"Permet d'indiquer des indications auto suffisantes permettant pour un opérationnel d'accéder facilement au lieu avec des indications minimales. -Dans les messages NexSIS, va souvent correspondre à la concaténation suivant des règles métiers de différentes informations, dont le ""name"" (toponyme) et l'adresse. -Comprend au maximum 255 caractères","Lycée Pierre de Coubertin - 12 rue de l'Amitié 77288 Melun, Musée Bossuet - Accès 2 - 77048 Saint-Albray",locLabel,,,,,,,0..1,,string,,,X,X -24,25,,Nom du lieu,,,,,"Indique le nom de lieu : nom commercial, forêt de Fontainebleau, lac du Der (plutôt à destination des systèmes).",Lycée Pierre de Coubertin,name,,LE/L4,Nom de l'établissement répertorié/point d'intérêt,,,,0..1,,string,,,X,X -25,26,,Détails de l'adresse,,,,,,,,detailedAddress,,,,,,0..1,X,detailedAddress,,,X,X -26,27,,,"Numéro, type et nom de voie",,,,"Numéro, type et nom de la voie. -Utilisé pour tout type de voie : autoroute (PK, nom et sens), voie ferrée, voie navigable… -Obligatoire et seule valeur des détails de l'adresse fournie par NexSIS.",9 Bd du Montparnasse,address,complete,,,,,,1..1,,string,,TEMPLATE: {number} {wayName},X,X -27,28,,,Numéro dans la voie,,,,"Numéro dans l'adresse (inclut point kilométrique sur l'autoroute, voie ferrée ou voie navigable). Inclut l'indice de répétition associé au numéro (par exemple bis, a…).","9, 4bis, PK10, …",,number,LO,N° dans la voie,,,,0..1,,string,,,X,X -28,29,,,Type et nom de voie,,,,,,,wayName,LY/LB/LV,"Type, particule, nom de voie",,,,0..1,X,wayName,,,X,X -29,30,,,,Type et nom,,,"Type et nom de la voie (venant d'un référentiel ou non) -Si les champs type et name sont renseignés, le champ callerName doit être valorisé ainsi : ""{type} {nom}"".",Boulevard du Montparnasse,,complete,,,,,,1..1,,string,,TEMPLATE: {type} {name},X,X -30,31,,,,Type,,,,Boulevard,,type,,,,,,0..1,,string,,,X,X -31,32,,,,Nom,,,,du Montparnasse,,name,,,,,,0..1,,string,,,X,X -32,33,,Détails de la commune,,,,,,,,city,,,,,,0..1,X,city,,,X,X -33,34,,,Nom de la commune,,,,Nom officiel de la commune actuelle,Lille,city,name,LC,Nom de la commune,,,,0..1,,string,,,X,X -34,35,,,Code INSEE de la commune,,,,Code INSEE de la commune actuelle sur la base du Code Officiel géographique en vigueur. Obligatoire si le nom de la commune est renseigné.,59350,citycode,inseeCode,LZ,Code INSEE de la commune,,,,0..1,,string,,REGEX: [0-9]{5},X,X -35,36,,,Complément de commune,,,,"Informations complémentaires permettant de préciser le quartier, lieu-dit, ancienne commune, … ou autre information aidant à préciser l'adresse et notamment gérer les cas de communes fusionnées pour le système émetteur -NB : dans tous les cas, la localisation GPS de la commune doit être fournie afin d'éviter une trop forte ambiguïté","Quartie Melun Nord, Lhomme, …",,detail,,,,,,0..1,,string,,,X,X -36,37,,Détails d'accès,,,,,Non gérés par NexSIS : ne seront pas transmis au SAMU et seront affichés côté NexSIS en clés / valeurs dans le champ libre,,,access,,,,,,0..1,X,access,,,X,X -37,38,,,Etage,,,,Etage ,RDC,,floor,LG,Etage,,,,0..1,,string,,,X,X -38,39,,,Numéro de porte,,,,"Spécifie numéro d'appartement, de chambre, de bureau",A16,,roomNumber,LP,Porte,,,,0..1,,string,,,X,X -39,40,,,Interphone,,,,"Indique les informations nécessaires à l'identification de l'interphone (numéro, nom)",Dupont,,interphone,,,,,,0..1,,string,,,X,X -40,41,,,Digicode,,,,Indique le ou les digicodes dans l'ordre de progression dans le bâtiment,1234A,,accessCode,LD,Digicode,,,,0..n,,string,,,X,X -41,42,,,Ascenseur/escalier,,,,Indique l'ascenseur ou la cage d'escalier ,C3,,elevator,,,,,,0..1,,string,,,X,X -42,43,,,Bâtiment,,,,Nom du bâtiment,Batiment B,,buildingName,,,,,,0..1,,string,,,X,X -43,44,,,Entrée,,,,,Zone Sud,,entrance,,,,,,0..1,,string,,,X,X -44,45,,,Service,,,,"Nom du service concerné au sein de l'établissement : Infirmerie, service finance, service cardiologie, …",Infirmerie,,entity,,,,,,0..1,,string,,,X,X -45,46,,,N° de téléphone du lieu,,,,"Numéro de téléphone permettant d'accéder au lieu de l'intervention, par exemple : téléphone du secrétariat, téléphone du service administratif ou se trouve le patient/victime.",33123452323,,phoneNumber,,,,,,0..1,,number,,,X,X -46,47,,Géometrie associée,,,,,,,objectGeometry,geometry,,,,,,0..1,X,geometry,,,X,X -47,48,,,Heure du dernier relevé,,,,Groupe date heure de renseignement des coordonnées du point clé de la localisation. Permet de connaître la fraîcheur et donc pertinence des informations pour intervenir.,2022-09-27T08:23:34+02:00,,obsDatime,,,,,,1..1,,datetime,,,X,X -48,49,,,Point ,,,,"Fournir au maximum même s'il est imprécis (et adapter le champs ""Précision"" en fonction). +Cela permet aux différents systèmes de s'assurer qu'ils utilisent la même version des codes de nomenclature que leurs partenaires.",1.2,cisuNomenclatureVersion,referenceVersion,,,,,,1..1,,string,,,X,X, +6,7,Qualification de l'affaire/dossier,,,,,,"Permet de qualifier l'affaire/dossier en général. +15-18 : La qualification est issue d'une interprétation métier des alertes reçues.",,alertCode,qualification,,,,,,1..1,X,qualification,,,X,X,X +7,8,,Nature de fait,,,,,"Décrit la nature de fait de l'alerte (NF) à partir de la nomenclature CISU. +Le champs freetext sert à passer les informations de gestion des évènements (main courante sans les informations médicales privilégiées).",,whatsHappen,,CE/CK,raison de l'appel,,,1.0,1..1,X,codeAndLabel,,NOMENCLATURE: CISU-Code_Nature_de_fait,X,X,X +8,9,,,Code,,,,A valoriser avec un code la nomenclature associée,C07.13.02,code,,,,,,1.0,1..1,,string,,,X,X,X +9,10,,,Libellé,,,,"A valoriser avec le libellé de la nomenclature associée. +Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut directement afficher le libellé qui est obligatoirement fourni avec le code.",Rodéo automobile,label,,,,,,1.0,1..1,,string,,,X,X,X +10,11,,Type de lieu,# Voir whatsHappen (type codeAndLabel),,,,Décrit le type de lieu (TL). Référentiel : nomenclature CISU,,locationKind,,CI,Type de lieu d'intervention,,,1.0,0..1,X,codeAndLabel,,NOMENCLATURE: CISU-Code_Type_de_lieu,X,X,X +11,12,,"Risque, menace et sensibilité",# Voir whatsHappen (type codeAndLabel),,,,"Décrit les risques, menaces et sensibilités (RMS). Référentiel : nomenclature CISU.",,riskThreat,,,,,,1.0,0..n,X,codeAndLabel,,NOMENCLATURE: CISU-Code_Risque-Menace-Sensibilité,X,X,X +12,13,,Motif de recours médico-secouriste,# Voir whatsHappen (type codeAndLabel),,,,Décrit le motif de recours médico-secouriste (MR). Référentiel : nomenclature CISU.,,healthMotive,,,,,,1.0,0..1,X,codeAndLabel,,NOMENCLATURE: CISU-Code_Motif_patient-victime,X,X,X +18,19,,Patients-Victimes,,,,,,,victims,,,,,,,0..1,X,victims,,,X,,X +19,20,,,Nombre de patients-victimes,,,,Indique le nombre de victimes selon la nomenclature du référentiel CISU,SEVERAL,count,,NV,Nombre de victimes,,,,0..1,,string,X,"ENUM: 0, 1, SEVERAL, MANY, UNKNOWN",X,,X +20,21,,,Type du patient-victime principal,,,,Identifie le type de la principale victime (celle dont l'état de santé provoque le déclenchement de l'envoi des secours). Prend les valeurs du référentiel CISU. Entre dans la détermination des partenaires impliqués par NexSIS.,CHILD,mainVictim,,,,,,,0..1,,string,X,"ENUM: INFANT, CHILD, ADULT, SENIOR",X,, +21,22,,,Informations complémentaires sur les patients-victimes,,,,Permet de complémenter en commentaire libre la(les) victime(s),"Jeanne Dupont, 6 ans, ne répond plus",freetext,,,,,,,0..1,,string,,,X,, +22,23,Localisation de l'affaire/dossier,,,,,,Permet de décrire le lieu d'intervention.,,eventLocation,location,,,,,,1..1,X,location,,,X,X,X +23,24,,Identifiant technique de localisation,,,,,ID technique et provisoire permettant d'identifier le lieu dans le cadre des échanges de cette affaire.,111fb03a-6fd9-41e0-8e81-990c45188887,locID,,,,,,,1..1,,string,,,X,X,X +24,25,,Résumé de la localisation,,,,,"Donne les informations minimales d'identification du lieu d'intervention, qui permet d'identifier rapidement le lieu pour les équipes opérationnelles. Comprend au maximum 255 caractères. +15-18 : Dans les messages NexSIS, va souvent correspondre à la concaténation suivant des règles métiers de différentes informations, dont le ""name"" (toponyme) et l'adresse. +","Lycée Pierre de Coubertin - 12 rue de l'Amitié 77288 Melun, Musée Bossuet - Accès 2 - 77048 Saint-Albray",locLabel,,,,,,,0..1,,string,,,X,X,X +25,26,,Nom du lieu,,,,,"Indique le nom de lieu : nom commercial, Etablissement, forêt de Fontainebleau, lac du Der (plutôt à destination des systèmes).",Lycée Pierre de Coubertin,name,,LE/L4,Nom de l'établissement répertorié/point d'intérêt,,,,0..1,,string,,,X,X,X +26,27,,Identifiant(s) du lieu,,,,,Permet d'identifier une structure commerciale ou un établissement,,,externalLocationId,,,,,,0..n,X,externalLocationId,,,X,X,X +27,28,,,Source / type d'identifiant,,,,Type de l'identifiant fourni,"FINESS géographique, FINESS administratif, SIREN, SIRET, APE, NAF",,source,,,,,,1..1,,string,X,"ENUM: FINESS administratif, FINESS géographique, SIREN, SIRET, APE/NAF",X,X,X +28,29,,,Identifiant,,,,L'identifiant en lui-même,920000650 ,,value,,,,,,1..1,,string,,,X,X,X +29,30,,Détails de l'adresse,,,,,,,,detailedAddress,,,,,,0..1,X,detailedAddress,,,X,X,X +30,31,,,"Numéro, type et nom de voie",,,,"Numéro, type et nom de la voie. Utilisé pour tout type de voie : autoroute (PK, nom et sens), voie ferrée, voie navigable… +15-18 : Obligatoire et seule valeur des détails de l'adresse fournie par NexSIS.",9 Bd du Montparnasse,address,complete,,,,,,1..1,,string,,TEMPLATE: {number} {wayName},X,X,X +31,32,,,Numéro dans la voie,,,,"Numéro dans l'adresse (inclut point kilométrique sur l'autoroute, voie ferrée ou voie navigable). Inclut l'indice de répétition associé au numéro (par exemple bis, a…).","9, 4bis, PK10, …",,number,LO,N° dans la voie,,,,0..1,,string,,,X,X,X +32,33,,,Type et nom de voie,,,,,,,wayName,LY/LB/LV,"Type, particule, nom de voie",,,,0..1,X,wayName,,,X,X,X +33,34,,,,Type et nom,,,"Type et nom de la voie (venant d'un référentiel ou non) +Si les champs type et name sont renseignés, le champ callerName doit être valorisé ainsi : ""{type} {nom}"".",Boulevard du Montparnasse,,complete,,,,,,1..1,,string,,TEMPLATE: {type} {name},X,X,X +34,35,,,,Type,,,Type de la voie,Boulevard,,type,,,,,,0..1,,string,,,X,X,X +35,36,,,,Nom,,,Nom de la voie,du Montparnasse,,name,,,,,,0..1,,string,,,X,X,X +36,37,,Détails de la commune,,,,,,,,city,,,,,,0..1,X,city,,,X,X,X +37,38,,,Nom de la commune,,,,Nom officiel de la commune actuelle,Lille,city,name,LC,Nom de la commune,,,,0..1,,string,,,X,X,X +38,39,,,Code INSEE de la commune,,,,Code INSEE de la commune actuelle sur la base du Code Officiel géographique en vigueur. Obligatoire si le nom de la commune est renseigné.,59350,citycode,inseeCode,LZ,Code INSEE de la commune,,,,0..1,,string,,REGEX: [0-9]{5},X,X,X +39,40,,,Complément de commune,,,,"Informations complémentaires permettant de préciser le quartier, lieu-dit, ancienne commune, … ou autre information aidant à préciser l'adresse et notamment gérer les cas de communes fusionnées pour le système émetteur +NB : dans tous les cas, la localisation GPS de la commune doit être fournie afin d'éviter une trop forte ambiguïté.","Quartie Melun Nord, Lhomme, …",,detail,,,,,,0..1,,string,,,X,X,X +40,41,,Détails d'accès,,,,,"Permet d'envoyer l'ensemble des détails d'accès au lieu d'intervention. Si les détails ne sont pas gérés individuellement, il est préférable de passer ces indications dans le freetext lié à la localisation de l'affaire. +15-18 - Non gérés par NexSIS; ne seront pas transmis au SAMU et seront affichés côté NexSIS en clés / valeurs dans le champ libre",,,access,,,,,,0..1,X,access,,,X,X,X +41,42,,,Etage,,,,Etage ,RDC,,floor,LG,Etage,,,,0..1,,string,,,X,X,X +42,43,,,Numéro de porte,,,,"Spécifie numéro d'appartement, de chambre, de bureau",A16,,roomNumber,LP,Porte,,,,0..1,,string,,,X,X,X +43,44,,,Interphone,,,,"Indique les informations nécessaires à l'identification de l'interphone (numéro, nom)",Dupont,,interphone,,,,,,0..1,,string,,,X,X,X +44,45,,,Digicode,,,,Indique le ou les digicodes dans l'ordre de progression dans le bâtiment,1234A,,accessCode,LD,Digicode,,,,0..n,,string,,,X,X,X +45,46,,,Ascenseur/escalier,,,,Indique l'ascenseur ou la cage d'escalier ,C3,,elevator,,,,,,0..1,,string,,,X,X,X +46,47,,,Bâtiment,,,,Nom du bâtiment,Batiment B,,buildingName,,,,,,0..1,,string,,,X,X,X +47,48,,,Entrée,,,,,Zone Sud,,entrance,,,,,,0..1,,string,,,X,X,X +48,49,,,Service,,,,"Nom du service concerné au sein de l'établissement : Infirmerie, service finance, service cardiologie, …",Infirmerie,,entity,,,,,,0..1,,string,,,X,X,X +49,50,,,N° de téléphone du lieu,,,,"Numéro de téléphone permettant d'accéder au lieu de l'intervention, par exemple : téléphone du secrétariat, téléphone du service administratif ou se trouve le patient/victime.",33123452323,,phoneNumber,,,,,,0..1,,number,,,X,X,X +50,51,,Géometrie associée,,,,,,,objectGeometry,geometry,,,,,,0..1,X,geometry,,,X,X,X +51,52,,,Heure du dernier relevé,,,,Groupe date heure de renseignement des coordonnées du point clé de la localisation. Permet de connaître la fraîcheur et donc pertinence des informations pour intervenir.,2022-09-27T08:23:34+02:00,,obsDatime,,,,,,1..1,,datetime,,,X,X,X +52,53,,,Point ,,,,"Fournir au maximum même s'il est imprécis (et adapter le champs ""Précision"" en fonction). Par exemple, sans adresse, il est possible de fournir le point GPS de la commune et d'adapter et préciser l'adresse en cours d'intervention. -Sera toujours fourni par NexSIS.",,point,point,,,,,,0..1,X,point,,,X,X -49,50,,,,Coordonnées,,,"Le SGO ne fonctionne toujours sur des coordonnées X/Y ainsi qu'une adresse indicative associée. +Sera toujours fourni par NexSIS.",,point,point,,,,,,0..1,X,point,,,X,X,X +53,54,,,,Coordonnées,,,"Le SGO ne fonctionne toujours sur des coordonnées X/Y ainsi qu'une adresse indicative associée. NexSIS dispose donc toujours d'un point GPS utilisé pour le temps de trajet, la détermination de l'intervenant le plus proche, ... -L'adresse est elle utilisée par l’intervenant pour aller sur le lieu.",,coord,coord,,,,,,1..1,X,coord,,,X,X -50,51,,,,,Latitude,,Latitude du point clé de la localisation ,48.866667,lat,lat,,,,,,1..1,,number,,,X,X -51,52,,,,,Longitude,,Longitude du point clé de la localisation,2.333333,lon,lon,,,,,,1..1,,number,,,X,X -52,53,,,,,Altitude ,,"Altitude du point clé de la localisation, en mètre, ignoré côté NexSIS. ",120,,height,,,,,,0..1,,number,,,X,X -53,54,,,,,Cap,,En degré,96,,heading,,,,,,0..1,,number,,,X,X -54,55,,,,,Vitesse,,"Vitesse en km/h, notamment fournie par eCall, tel, nouveau AML, …",34,,speed,,,,,,0..1,,number,,,X,X -55,56,,,,,Précision,,"Indique via une nomenclature le niveau de précision des coordonnées fournies par le système emetteur. -CITY=Précision à l'échelle de la ville, STREET=Précision à l'échelle de la rue, ADDRESS=Adresse précise, EXACT=Point coordonnée GPS exact, UNKNOWN=Précision de la localisation non évaluable par l'émetteur",ADDRESS,,precision,,,,,,1..1,,string,X,"ENUM: CITY, STREET, ADDRESS, EXACT, UNKNOWN",X,X -56,57,,,,Système de coordonnées,,,"Indique le type de coordonnées utilisé. Actuellement, la seule valeur valide est «EPSG-4326», indiquant l'utilisation de WGS-84. Si ce champ n'est pas renseigné, on considère que la valeur par défaut est «».",EPSG-4326,coordsys,sysCoord,,,,,1.0,0..1,,string,,,X,X -57,58,,,Formes géométriques,,,,"Objet gml (équivalent xml du geojson). Le langage GML permet de décrire une forme dans un système de projection donné. +L'adresse est elle utilisée par l’intervenant pour aller sur le lieu.",,coord,coord,,,,,,1..1,X,coord,,,X,X,X +54,55,,,,,Latitude,,Latitude du point clé de la localisation ,48.866667,lat,lat,,,,,,1..1,,number,,,X,X,X +55,56,,,,,Longitude,,Longitude du point clé de la localisation,2.333333,lon,lon,,,,,,1..1,,number,,,X,X,X +56,57,,,,,Altitude ,,"Altitude du point clé de la localisation, en mètre, ignoré côté NexSIS. ",120,,height,,,,,,0..1,,number,,,X,X,X +57,58,,,,,Cap,,En degré,96,,heading,,,,,,0..1,,number,,,X,X,X +58,59,,,,,Vitesse,,"Vitesse en km/h, notamment fournie par eCall, tel, nouveau AML, …",34,,speed,,,,,,0..1,,number,,,X,X,X +59,60,,,,,Précision,,"Indique via une nomenclature le niveau de précision des coordonnées fournies par le système emetteur. +CITY=Précision à l'échelle de la ville, STREET=Précision à l'échelle de la rue, ADDRESS=Adresse précise, EXACT=Point coordonnée GPS exact, UNKNOWN=Précision de la localisation non évaluable par l'émetteur",ADDRESS,,precision,,,,,,1..1,,string,X,"ENUM: CITY, STREET, ADDRESS, EXACT, UNKNOWN",X,X,X +60,61,,,,Système de coordonnées,,,"Indique le type de coordonnées utilisé. Actuellement, la seule valeur valide est «EPSG-4326», indiquant l'utilisation de WGS-84. Si ce champ n'est pas renseigné, on considère que la valeur par défaut est «».",EPSG-4326,coordsys,sysCoord,,,,,1.0,0..1,,string,,,X,X,X +61,62,,,Formes géométriques,,,,"Objet gml (équivalent xml du geojson). Le langage GML permet de décrire une forme dans un système de projection donné. Dans le cas d'une alerte donnée sur une zone géographique non précise (par exemple une section d'autoroute ou une zone sur un chemin de randonnée), une indication sur la zone de recherche peut être fournie. En XML, un objet gml est encapsulé dans une balise En JSON, les balises sont reprises depuis le modèle gml -Voir http://www.opengis.net/gml pour le format de l'objet sketch",,sketch,sketch,,,,,,0..1,,string,,,X,X -58,59,,Liens aux systèmes externes,,,,,"Permet de partager l'identifiant d'un objet ayant servi à l'établissement de la localisation. L'objet reprend la structure EXTERNAL_INFO de l'EMSI -L'identifiant BAN de l'adresse (clé d'interopérabilité) doit être partagé au maximum.",,link,externalInfo,,,,,,0..n,X,externalInfo,,,X,X -59,60,,,Nom de la source,,,,"Système fournissant le localisant : NexSiS ou l'ORG_ID (BAN, IGN, ...)","NexSIS, BAN, IGN, …",source,freetext,,,,,,1..1,,string,X,"ENUM: BAN, IGN, NexSIS",X,X -60,61,,,Type ,,,,"Définition du type d'objet dans le système -Ex : SIG NexSIS / OSM ont plusieurs types de données -> savoir du quel on parle (POI, tronçon de route, …) pour faciliter le filtre | Aussi table dans une base de données","ega, egr, egm, DIO (données d'influence opérationnelle), …",type,type,,,,,,1..1,,string,X,"ENUM: MANUAL, MAP, OTHER, PHOTO, WEBSIT",X,X -61,62,,,Identifiant,,,,Identifiant unique dans le type. Exemple : UUID d'un ega,id987,id,uri,,,,,,1..1,,string,,,X,X -62,63,,Pays,,,,,,France,country,,,,,,,1..1,,string,X,NOMENCLATURE: ISO 3166-ISO3166-2,X,X -63,64,,Commentaire,,,,,Champ libre pour compléter les informations de localisation,Clé derrière le pot de fleur,comment,freetext,LI,Itinéraire (texte libre),,,,0..1,,string,,,X,X -64,65,Alerte initiale,,,,,,"L'objet alert correspond à la transcription d'une communication d'urgence. Une alerte est une photo d'une situation donnée décrite par un requérant et n'est pas amenée à évoluer dans le temps. En cas de modification (adresse, qualification, ...), cela passera par une mise à jour opération ou une nouvelle alerte. -L'alerte initiale est la premiere alerte concernant la situation d'urgence et conduisant à la création d'une affaire. -Le système destinataire reçoit une affaire lorsqu'une alerte le concerne. S'il ne gère pas les affaires multi-alertes, il doit donc créer une affaire seulement sur l'alerte le concernant : pour une création d'affaire, sur l'alerte initiale et pour une mise à jour d'affaire, sur la nouvelle alerte (en récupérant éventuellement des informations de l'alerte initiale en historique). -Pour répondre sur une alerte, l'alerte initiale n'est pas obligatoire car pas forcément stockée dans le système (notamment pour ceux avec des affaires mono-alertes). -NB : -- Dans le cadre une mise à jour d'affaire, les objets alert sont IMMUTABLES dans la mesure où il décrivent une ""photo"" de la situation décrite par le requérant.",,primaryAlert,initialAlert,,,,,,0..1,X,alert,,,X,X -65,66,,Identifiant alerte,,,,,"Identifiant technique unique de l'alerte. Il doit pouvoir être généré automatiquement par le système émetteur et ne doit pas avoir de signification / utilisation particulière par les différents systèmes pour garantir leur découplage. +Voir http://www.opengis.net/gml pour le format de l'objet sketch",,sketch,sketch,,,,,,0..1,,string,,,X,X,X +62,63,,Liens aux systèmes externes,,,,,"Permet de partager l'identifiant d'un objet ayant servi à l'établissement de la localisation. L'objet reprend la structure EXTERNAL_INFO de l'EMSI +L'identifiant BAN de l'adresse (clé d'interopérabilité) doit être partagé au maximum.",,link,externalInfo,,,,,,0..n,X,externalInfo,,,X,X,X +63,64,,,Nom de la source,,,,"Système fournissant le localisant : NexSiS ou l'ORG_ID (BAN, IGN, ...)","NexSIS, BAN, IGN, …",source,freetext,,,,,,1..1,,string,X,"ENUM: BAN, IGN, NexSIS",X,X,X +64,65,,,Type ,,,,"Définition du type d'objet dans le système +Ex : SIG NexSIS / OSM ont plusieurs types de données -> savoir du quel on parle (POI, tronçon de route, …) pour faciliter le filtre | Aussi table dans une base de données","ega, egr, egm, DIO (données d'influence opérationnelle), …",type,type,,,,,,1..1,,string,X,"ENUM: MANUAL, MAP, OTHER, PHOTO, WEBSIT",X,X,X +65,66,,,Identifiant,,,,Identifiant unique dans le type. Exemple : UUID d'un ega,id987,id,uri,,,,,,1..1,,string,,,X,X,X +66,67,,Pays,,,,,,France,country,,,,,,,1..1,,string,X,NOMENCLATURE: ISO 3166-ISO3166-2,X,X, +67,68,,Informations complémentaires sur la localisation,,,,,Champ libre pour compléter les informations de localisation,Clé derrière le pot de fleur,comment,freetext,LI,Itinéraire (texte libre),,,,0..1,,string,,,X,X, +68,69,Alerte initiale,,,,,,"L'objet alert correspond à la transcription d'une communication d'urgence, par exemple un appel téléphonique. +15-18 : Une alerte est une photo d'une situation donnée décrite par un requérant et n'est pas amenée à évoluer dans le temps. En cas de modification (adresse, qualification, ...), cela passera par une mise à jour opération ou une nouvelle alerte, L'alerte initiale est la premiere alerte concernant la situation d'urgence et conduisant à la création d'une affaire.",,primaryAlert,initialAlert,,,,,,0..1,X,alert,,,X,X,X +69,70,,Identifiant alerte,,,,,"Identifiant technique unique de l'alerte. Il doit pouvoir être généré automatiquement par le système émetteur et ne doit pas avoir de signification / utilisation particulière par les différents systèmes pour garantir leur découplage. Voir la description de l'identifiant de l'affaire pour voir le format. Lorsqu’une alerte est générée dans NexSIS et crée une affaire, elle est qualifiée d’Alerte Initiale. a) Si cette dernière concerne un partenaire (caractère médical pour la Santé par exemple), elle est relayée seule dans le message. Il y’a un seul objet initialAlert. b) Sinon, une autre alerte liée à la même affaire peut être déclarée ultérieurement, concernant cette fois le partenaire. Lorsqu’elle est déclarée cette Nouvelle Alerte est relayée avec l’Alerte Initiale pour partager un contexte commun. Dans le message de création d’affaire il y’a deux objets alerte : initialAlert et newAlert. -Le rattachement des messages à une affaire doivent s'appuyer sur les caseId et non les alertId qui peuvent varier d'un système à l'autre.",SGO050-20230605-AL0123,alertId,id,,,,,1.0,1..1,,string,,,X,X -66,67,,Date de réception de l'alerte,,,,,Groupe date heure de réception de l'alerte,2022-09-27T08:21:06+02:00,receivedAt,reception,HA , Date et heure de prise d'appel (format DD/MM/YYYY HH24:MI:SS),,,,1..1,,datetime,,Format datetime décrit dans le DSF,X,X -67,68,,Signalement,,,,,"Permet d'attirer l'attention des forces partenaires sur une affaire pour le faire sortir du lot. +Le rattachement des messages à une affaire doivent s'appuyer sur les caseId et non les alertId qui peuvent varier d'un système à l'autre.",SGO050-20230605-AL0123,alertId,id,,,,,1.0,1..1,,string,,,X,X,X +70,71,,Date de réception de l'alerte,,,,,Groupe date heure de réception de l'alerte,2022-09-27T08:21:06+02:00,receivedAt,reception,HA , Date et heure de prise d'appel (format DD/MM/YYYY HH24:MI:SS),,,,1..1,,datetime,,Format datetime décrit dans le DSF,X,X,X +71,72,,Signalement,,,,,"Permet d'attirer l'attention des forces partenaires sur une affaire pour le faire sortir du lot. Eventuellement automatisé en fonction des critères saisis et de leur paramétrage, ou renseigné par l'opérateur. Prend les valeurs définies dans la nomenclature CISU : - standard : STANDARD - signalé : ATTENTION -Les systèmes peuvent proposer des fonctionnalités faisant ressortir les dossiers avec le libellé ATTENTION",STANDARD,,reporting,,,,,1.0,1..1,,string,X,"ENUM: STANDARD, ATTENTION",X,X -68,69,,Informations complémentaires sur l'alerte,,,,,Texte libre permettant de donner des informations supplémentaires concernant l'alerte.,"Déclenchement téléalarme, voisine sur les lieux",comment,freetext,OG,Observations générales (texte libre),,,1.0,0..1,,string,,,X,X -69,70,,Requérant,,,,,Objet permettant d'identifer la personne qui a alerté les secours et de la recontacter,,caller,,,,,,,1..1,X,caller,,,X,X -70,71,,,Contact,,,,Type et valeur de l'URI utilisée par le requérant à l'origine de l'alerte.,,callerURI,callerContact,AT,N° de téléphone,,,1.0,0..1,X,contact,,,X,X -71,72,,,,Type de contact du requérant,,,"Type de l'URI utilisée par le requérant, cf. nomenclature EMSI",PHNADD,,type,,,,,,1..1,,string,X,"ENUM: PSTADD, EMLADD, IPADD, FTPADD, WWWADD, PHNADD, FAXADD, PMRADD",X,X -72,73,,,,URI du contact requérant,,,Valeur de l'URI utilisée pour contacter le partenaire,0671830530,,detail,,,,,,1..1,,string,,,X,X -73,74,,,Contact de contre-appel,# Voir callerContact (type contact),,,"Type et valeur de l'URI permettant un rappel pour avoir plus d'informations : il peut s'agit du requérant, de la victime ou d'un témoin. ",,,callbackContact,LT,N° de téléphone sur les lieux,,,1.0,0..1,X,contact,,,X,X -74,75,,,Langue parlée,,,,Langue parlée par le requérant. Permet de mettre en place des traducteurs si besoin. Utilise la nomenclature LANGUE du SI-SAMU.,FR,spokenLanguage,language,,,,,,0..1,,string,X,NOMENCLATURE: ISO 3166-ISO3166-2,X,X -75,76,,,Type de requérant,,,,Indique la relation du requérant avec l'incident / le patient / la victime,"le patient lui-même, père, mère",,type,,,,,,0..1,,string,,,X,X -76,77,,,Difficulté de communication,,,,Indique si le requérant rencontre ou non des difficulté de communication,"Malentendant, aucune difficulté de communication",,communication,,,,,,0..1,,string,,,X,X -77,78,,,Informations complémentaires sur le requérant,,,,"Informations complémentaires sur le requérant -Les informations peuvent être passées sous forme de texte libre ou via une liste d'adjectif",témoin de l'accident,freetext,freetext,CH,Profil appelant,,,1.0,0..1,,string,,,X,X -78,79,,,Prénom & nom usuel,,,,,,callerName,detailedName,,,,,,0..1,X,detailedName,,,X,X -79,80,,,,Prénom et nom,,,"Prénom et nom usuel du requérant. +Les systèmes peuvent proposer des fonctionnalités faisant ressortir les dossiers avec le libellé ATTENTION",STANDARD,,reporting,,,,,1.0,1..1,,string,X,"ENUM: STANDARD, ATTENTION",X,X,X +72,73,,Informations complémentaires sur l'alerte (observations ARM),,,,,"Texte libre permettant de donner des informations supplémentaires concernant l'alerte. +15-15 : ce champ est celui dédié pour passer les observations ARM en texte libre.","Déclenchement téléalarme, voisine sur les lieux",comment,notes,OG,Observations générales (texte libre),,,1.0,0..n,X,notes,,,X,X, +73,74,,,Date et heure de l'information complémentaire/l'observation ARM,,,,date et heure de l'observation,,,creation,,,,,,0..1,,datetime,,Format datetime décrit dans le DSF,X,X, +74,75,,,Commentaire/Observations,,,,texte libre contenant les indications renseignées par l'ARM,La personne est inconsciente (perte de connaissance). ,,freetext,,,,,,0..1,,string,,,X,X, +75,76,,Requérant,,,,,Objet permettant d'identifer la personne qui a alerté les secours et de la recontacter,,caller,,,,,,,1..1,X,caller,,,X,X,X +76,77,,,Contact,,,,Type et valeur de l'URI utilisée par le requérant à l'origine de l'alerte.,,callerURI,callerContact,AT,N° de téléphone,,,1.0,1..1,X,contact,,,X,X,X +77,78,,,,Canal,,,"Permet d'indiquer l'origine du canal établit : Personne, application, DAU, BAU, défibrillateur, ecall",Personne,,channel,,,,,,1..1,,string,,,X,X,X +78,79,,,,Type de contact du requérant,,,"Type de l'URI utilisée par le requérant, cf. nomenclature EMSI",PHNADD,,type,,,,,,1..1,,string,X,"ENUM: PSTADD, EMLADD, IPADD, FTPADD, WWWADD, PHNADD, FAXADD, PMRADD",X,X,X +79,80,,,,URI du contact requérant,,,Valeur de l'URI utilisée pour contacter le partenaire,0671830530,,detail,,,,,,1..1,,string,,,X,X,X +80,81,,,Contact de contre-appel,# Voir callerContact (type contact),,,"Type et valeur de l'URI permettant un rappel pour avoir plus d'informations : il peut s'agir du requérant, de la victime ou d'un témoin. ",,,callbackContact,LT,N° de téléphone sur les lieux,,,1.0,0..1,X,contact,,,X,X,X +81,82,,,Langue parlée,,,,Langue parlée par le requérant. Permet de mettre en place des traducteurs si besoin. Utilise la nomenclature LANGUE du SI-SAMU.,FR,spokenLanguage,language,,,,,,0..1,,string,X,NOMENCLATURE: ISO 3166-ISO3166-2,X,X,X +82,83,,,Type de requérant,,,,Indique la relation du requérant avec l'incident / le patient / la victime,"le patient lui-même, père, mère",,type,,,,,,0..1,,string,,NOMENCLATURE: SI-SAMU-TYPAPPLT,X,X,X +83,84,,,Difficulté de communication,,,,Indique si le requérant rencontre ou non des difficulté de communication,"Malentendant, aucune difficulté de communication",,communication,,,,,,0..1,,string,,NOMENCLATURE: SI-SAMU-PBAPL,X,X,X +84,85,,,Informations complémentaires sur le requérant,,,,"Informations complémentaires sur le requérant +Les informations peuvent être passées sous forme de texte libre ou via une liste d'adjectif",témoin de l'accident,freetext,freetext,CH,Profil appelant,,,1.0,0..1,,string,,,X,X,X +85,86,,,Prénom & nom usuel,,,,,,callerName,detailedName,,,,,,0..1,X,detailedName,,,X,X,X +86,87,,,,Prénom et nom,,,"Prénom et nom usuel du requérant. Si les champs callerLastName et callerFirstName sont renseignés, le champ callerName doit être valorisé ainsi : ""{callerFirstName} {callerLastName}"". Note : NexSIS ne dispose que de ces informations (concaténées) et pas de deux champs séparés.",Jean Dupont,,complete,AN/AP,"Nom -Prénom",,,,1..1,,string,,TEMPLATE: {callerLastName} {callerFirstName},X,X -80,81,,,,Nom,,,Nom du requérant,Dupont,,lastName,,,,,,0..1,,string,,,X,X -81,82,,,,Prénom,,,"Prénom du réquérant. -Par convention les prénoms composés doivent préférablement être séparés par le caractère ""-""",Jean,,firstName,,,,,,0..1,,string,,,X,X -82,83,,Source de l'alerte,,,,,"Source de contact permettant d'identifier le requérant. -Dans le cas où le requérant est à l'origine de l'alerte les objets contactSource et callerContact sont valorisés de la même façon",,source,alertSource,,,,,,1..1,X,contactSource,,,X,X -83,84,,,Canal,,,,"Permet d'indiquer l'origine du canal établit : Personne, application, DAU, BAU, défibrillateur, ecall",Personne,,channel,,,,,,1..1,,string,,,X,X -84,85,,,Type de contact de la source,,,,"Type de l'URI utilisée par la source, cf. nomenclature EMSI",PHNADD,,type,,,,,,1..1,,string,X,"ENUM: PSTADD, EMLADD, IPADD, FTPADD, WWWADD, PHNADD, FAXADD, PMRADD",X,X -85,86,,,URI de contact de la source,,,,Valeur de l'URI utilisée par la source,0671830530,,detail,,,,,,1..1,,string,,,X,X -86,87,,Localisation de l'alerte,# Voir createCase.location (type location),,,,Cet élément peut représenter la localisation du requérant si celle-ci diffère de celle de l'événement ou pointer vers la localisation d'accès à l'affaire si elle est confondue avec celle de l'alerte.,,alertLocation,location,AB/AV/AC/AZ,"Particule et nom de voie, nom/code commune",,,,1..1,X,location,,,X,X -87,88,,Qualification,# Voir qualification,,,,Qualification de l'alerte.,,alertCode,qualification,,,,,,1..1,X,qualification,,,X,X -88,89,,Agent,,,,,Objet permettant d'identifer et recontacter l'opérateur ayant traité l'alerte,,callTaker,callTaker,,,,,,1..1,X,callTaker,,,X,X -89,90,,,Service d'urgence,,,,"Décrit la structure ou le service à laquelle est rattachée l'agent (en fonction du niveau de précision disponible). +Prénom",,,,1..1,,string,,TEMPLATE: {callerLastName} {callerFirstName},X,X,X +87,88,,,,Nom,,,Nom du requérant,Dupont,,lastName,,,,,,0..1,,string,,,X,X,X +88,89,,,,Prénom,,,"Prénom du réquérant. +Par convention les prénoms composés doivent préférablement être séparés par le caractère ""-""",Jean,,firstName,,,,,,0..1,,string,,,X,X,X +89,90,,Localisation de l'alerte,# Voir createCase.location (type location),,,,Cet élément peut représenter la localisation du requérant si celle-ci diffère de celle de l'événement ou pointer vers la localisation d'accès à l'affaire si elle est confondue avec celle de l'alerte.,,alertLocation,location,AB/AV/AC/AZ,"Particule et nom de voie, nom/code commune",,,,1..1,X,location,,,X,, +90,91,,Qualification,# Voir qualification,,,,Qualification de l'alerte.,,alertCode,qualification,,,,,,1..1,X,qualification,,,X,, +91,92,,Agent,,,,,Objet permettant d'identifer et recontacter l'opérateur ayant traité l'alerte,,callTaker,callTaker,,,,,,1..1,X,callTaker,,,X,X, +92,93,,,Service d'urgence,,,,"Décrit la structure ou le service à laquelle est rattachée l'agent (en fonction du niveau de précision disponible). Se référer au DSF pour la structure normée des organisations. -Le format est le suivant {pays}.{domaine}.{organisation}.{structure interne}*.{unité fonctionnelle}*.",fr.health.samu440,organization,,,,,,,1..1,,string,,,X,X -90,91,,,Centre d'appels,,,,Décrit le centre d'appel auquel est rattaché l'agent,"CGA, CGO 21, CRRA 44, ...",controlRoom,,,,,,,1..1,,string,,,X,X -91,92,,,Rôle agent,,,,Décrit le rôle de l'agent au sein du service selon la nomenclature PERSO (nomenclature SI-SAMU),ARM,callTakerRole,role,,,,,,0..1,,string,,,X,X -92,93,,,Contact de l'agent,# Voir callerContact (type contact),,,Objet contact permettant d'indiquer le contact de l'agent,,calltakerURI,calltakerContact,,,,,,0..1,X,contact,,,X,X -93,94,,,ID de l'agent,,,,"Identifiant unique de l'opérateur ayant traité l'alerte (peut être un identifiant technique, un numéro de carte CPS etc)",id1234,calltakerId,,O1,Code de l'opérateur ayant pris l'appel,,,,0..1,,string,,,X,X -94,95,,Pièces jointes,,,,,"Permet d'envoyer tout type de fichiers (photos, vidéos, sons, …) par lien. +Le format est le suivant {pays}.{domaine}.{organisation}.{structure interne}*.{unité fonctionnelle}*.",fr.health.samu440,organization,,,,,,,1..1,,string,,,X,X, +93,94,,,Centre d'appels,,,,Décrit le centre d'appel auquel est rattaché l'agent,"CGA, CGO 21, CRRA 44, ...",controlRoom,,,,,,,1..1,,string,,,X,X, +94,95,,,Rôle agent,,,,Décrit le rôle de l'agent au sein du service selon la nomenclature PERSO (nomenclature SI-SAMU),ARM,callTakerRole,role,,,,,,0..1,,string,,,X,X, +95,96,,,Contact de l'agent,# Voir callerContact (type contact),,,Objet contact permettant d'indiquer le contact de l'agent,,calltakerURI,calltakerContact,,,,,,0..1,X,contact,,,X,X, +96,97,,,ID de l'agent,,,,"Identifiant unique de l'opérateur ayant traité l'alerte (peut être un identifiant technique, un numéro de carte CPS etc)",id1234,calltakerId,,O1,Code de l'opérateur ayant pris l'appel,,,,0..1,,string,,,X,X, +97,98,,Pièces jointes,,,,,"Permet d'envoyer tout type de fichiers (photos, vidéos, sons, …) par lien. Les URI doivent correspondre à des espaces sécurisés auxquels les accès ont déjà été fournies ou doivent être fournies avec des tokens éphémères si besoin de sécuriser l'accès aux ressources tout en en garantissant l'accès par tous les destinataires des messages. -",,resource,attachment,,,,,,0..n,X,attachment,,,X,X -95,96,,,Type ou description pj,,,,"Décrit la ressource en précisant le type et le contenu, tels que «carte» ou «photo»","photo, carte, …",resourceDesc,description,,,,,,0..1,,string,X,,X,X -96,97,,,Type MIME,,,,L'identifiant du type MIME de contenu et sous-type décrivant la ressource,"PDF, XML, JPEG, …",mimeType,,,,,,,0..1,,string,,,X,X -97,98,,,Taille approximative,,,,Taille approximative de la ressource en kO,"1235, 35, …",size,,,,,,,0..1,,integer,,,X,X -98,99,,,URI,,,,"Une URI, généralement une URL, qui permet d'atteindre la ressource sur Internet ou sur un réseau privé -Nous suggérons d'employer le format suivant de regex (https?|ftp|file):\/\/([\w-]+(\.[\w-]+)*)(\/[\w\-\.]*)*\/?(\?[^\s]*)?",https://hub.esante.gouv.fr/resourceExample,URI,,,,,,,1..1,,string,,,X,X -99,100,,,URI base 64,,,,"Peut être utilisé à la place de l'élément 'URI' pour envoyer la ressource encodée en base64 pour éviter des problèmes de transcodage (sur des double quotes qui casseraient le message, …)",,derefURI,,,,,,,0..1,,string,,,X,X -100,101,,,Hash,,,,"Hash de la ressource pour confirmer la réception de la bonne ressource -La ressource est hashée avec le protocole SHA-256",,digest,,,,,,,0..1,,string,,,X,X -106,107,Patient / victime,,,,,,Identification des patients / victimes,,,patient,,,,,,0..n,X,patient,,,X,X -107,108,,ID patient partagé,,,,,Identifiant technique du patient pour permettre les rapprochements d'infos. Le 1er qui créé l'ID patient a raison.,,,id,,,,,,1..1,,string,,,X,X -121,122,,Identité INS,,,,,L'identitée du patient basée sur les règles de l'INS,,,identity,,,,,,0..1,X,insIdentity,,,X,X -128,129,,,Traits stricts de l'identité,,,,"L’Identité Nationale de Santé (INS) permet de référencer les données de santé avec une identité unique, pérenne, partagée par l'ensemble des professionnels du monde de la santé. +",,resource,attachment,,,,,,0..n,X,attachment,,,X,X,X +98,99,,,Type ou description pj,,,,"Décrit la ressource en précisant le type et le contenu, tels que «carte» ou «photo»","photo, carte, …",resourceDesc,description,,,,,,0..1,,string,X,,X,X,X +99,100,,,Type MIME,,,,L'identifiant du type MIME de contenu et sous-type décrivant la ressource,"PDF, XML, JPEG, …",mimeType,,,,,,,0..1,,string,,,X,X,X +100,101,,,Taille approximative,,,,Taille approximative de la ressource en kO,"1235, 35, …",size,,,,,,,0..1,,integer,,,X,X,X +101,102,,,URI,,,,"Une URI, généralement une URL, qui permet d'atteindre la ressource sur Internet ou sur un réseau privé +Nous suggérons d'employer le format suivant de regex (https?|ftp|file):\/\/([\w-]+(\.[\w-]+)*)(\/[\w\-\.]*)*\/?(\?[^\s]*)?",https://hub.esante.gouv.fr/resourceExample,URI,,,,,,,1..1,,string,,,X,X,X +102,103,,,URI base 64,,,,"Peut être utilisé à la place de l'élément 'URI' pour envoyer la ressource encodée en base64 pour éviter des problèmes de transcodage (sur des double quotes qui casseraient le message, …)",,derefURI,,,,,,,0..1,,string,,,X,X,X +103,104,,,Hash,,,,"Hash de la ressource pour confirmer la réception de la bonne ressource +La ressource est hashée avec le protocole SHA-256",,digest,,,,,,,0..1,,string,,,X,X,X +109,110,Patient / victime,,,,,,Identification des patients / victimes,,,patient,,,,,,0..n,X,patient,,,X,X,X +110,111,,ID patient partagé,,,,,Identifiant technique du patient pour permettre les rapprochements d'infos. Le 1er qui créé l'ID patient a raison.,fr.health.samu044.DRFR15DDXAAJJJ00000.P00,,id,,,,,,1..1,,string,,,X,X,X +124,125,,Identité INS,,,,,L'identitée du patient basée sur les règles de l'INS,,,identity,,,,,,0..1,X,insIdentity,,,X,X,X +131,132,,,Traits stricts de l'identité,,,,"L’Identité Nationale de Santé (INS) permet de référencer les données de santé avec une identité unique, pérenne, partagée par l'ensemble des professionnels du monde de la santé. Elle est composée : - Du matricule INS (NIR - numéro d’inscription au répertoire national des personnes physiques - ou NIA – numéro identifiant attente - de l’individu). Concrètement, ce numéro correspond au numéro de sécurité sociale pour les ouvrants-droits, c’est-à-dire la très grande majorité des personnes majeures. Pour les autres assurés, ce numéro figure sur leur attestation de sécurité sociale et sera affiché dans l’espace numérique de santé (Mon espace santé) ; -- Des cinq traits stricts de référence (nom de naissance, prénom(s) de naissance, date de naissance, sexe, lieu de naissance).",,,strictFeatures,,,,,,0..1,X,insStrictFeatures,,,X,X -132,133,,,,Date de naissance,,,Date de naissance du patient,,,birthDate,,,,,,0..1,,date,,,X,X -133,134,,,,Sexe ,,,Sexe du patient,F,,sex,,,,,,0..1,,string,X,,X,X -135,136,,,Traits non stricts de l'identité,# Voir detailedName,,,Prénom et nom usuels,,,nonStrictFeatures,,,,,,0..1,X,detailedName,,,X,X -154,154,Décisions,,,,,,Mesures prises par le Samu-Centre 15 en réponse à la demande exprimée en fonction de l’événement et de la situation du ou des patients,,,decision,,,,,,0..n,X,decision,,,X,X -155,155,,ID patient partagé,,,,,"ID partagé du patient concerné, lorsque le patient existe et est identifié",,,id,,,,,,0..1,,string,,,X,X -156,157,,Date Heure de création de la décision,,,,,Groupe date heure de création de la décision. L'indicateur de fuseau horaire Z ne doit pas être utilisé.,2022-09-27T08:23:34+02:00,,creation,,,,,,1..1,,datetime,,,X,X -157,158,,Type de décision,,,,,Type de décision prise,conseil médical / décision d’intervention / décision d’orientation et de transport / Pas de décision supplémentaire,,type,,,,,,0..1,,string,X,,X,X -158,159,,Orientation,,,,,Décision(s) d'orientation prise par le médecin régulateur,,,orientation,,,,,,0..1,,string,X,,X,X -159,160,,Type de transport,,,,,Type de transport à engager pour la prise en charge du patient,SMUR ,,transportation,,,,,,0..n,,string,,,X,X -160,161,,Niveau de prise en charge,,,,,"Type d’équipe (médical, paramédicale, non médicale, standard, incomplete, ...)","Médical, paramédical, secouriste",,teamCare,,,,,,0..1,,string,,,X,X -161,162,,Destination,,,,,,,,destination,,,,,,0..1,X,destination,,,X,X -162,163,,,Type de destination,,,,"Indique le type de destination de la ressource : service d’urgences d’un Etablissement de santé, autres services d’un établissement de santé, cabinet d’un professionnel de santé, domicile personnel, EPHAD ou long séjour, autre",,,type,,,,,,0..1,,string,X,"ENUM: service d’urgences d’un Etablissement de santé, autres services d’un établissement de santé, cabinet d’un professionnel de santé, domicile personnel, EPHAD ou long séjour, autre",X,X -163,165,,,Etablissement,,,,Nom de l'établissement,,,facility,,,,,,0..1,,string,,,X,X -164,166,,,FINESS administratif,,,,N° Finess administratif de l'établissement,,,adminFiness,,,,,,0..1,,string,,,X,X -165,167,,,FINESS géographique,,,,N° Finess géographique de l'établissement,,,geoFiness,,,,,,0..1,,string,,,X,X -166,168,,,Service,,,,Service concerné par l'admission du patient,,,service,,,,,,0..1,,string,,,X,X -167,170,,,Autre,,,,,,,freetext,,,,,,0..1,,string,,,X,X -168,171,Nouvelle alerte,# Voir alerte initiale,,,,,"Lorsque plusieurs alertes correspondent à une même affaire/dossier, la première alerte reçue est appelée Alerte initial ""initialAlert"", la seconde et les suivantes sont des objets ""newAlert"". +- Des cinq traits stricts de référence (nom de naissance, prénom(s) de naissance, date de naissance, sexe, lieu de naissance).",,,strictFeatures,,,,,,0..1,X,insStrictFeatures,,,X,X,X +135,136,,,,Date de naissance,,,Date de naissance du patient,,,birthDate,,,,,,0..1,,date,,,X,X,X +136,137,,,,Sexe ,,,Sexe du patient,F,,sex,,,,,,0..1,,string,X,NOMENCLATURE: SI-SAMU-NOMENC_SEXE,X,X,X +138,139,,,Traits non stricts de l'identité,# Voir detailedName,,,Prénom et nom usuels,,,nonStrictFeatures,,,,,,0..1,X,detailedName,,,X,X,X +149,150,,Informations complémentaires sur le patient,,,,,Correspond à la zone de commentaire renseigné par patient créé/identifié,,,freetext,,,,,,0..n,,string,,,X,X,X +161,162,Décisions,,,,,,Mesures prises par le Samu-Centre 15 en réponse à la demande exprimée en fonction de l’événement et de la situation du ou des patients,,,decision,,,,,,0..n,X,decision,,,X,X,X +162,163,,ID patient partagé,,,,,"ID partagé du patient concerné par la décision, lorsque le patient existe et est identifié",,,id,,,,,,0..1,,string,,,X,X,X +163,164,,Date Heure de création de la décision,,,,,Groupe date heure de création de la décision. L'indicateur de fuseau horaire Z ne doit pas être utilisé.,2022-09-27T08:23:34+02:00,,creation,,,,,,1..1,,datetime,,,X,X,X +164,165,,Type de décision,,,,,Type de décision prise,conseil médical / décision d’intervention / décision d’orientation et de transport / Pas de décision supplémentaire,,type,,,,,,1..1,,string,X,NOMENCLATURE: SI-SAMU-TYPEDEC,X,X,X +170,171,,Décision de transport/orientation,,,,,,,,transportDetails,,,,,,0..1,X,transportDetails,,,X,X,X +171,172,,,Type de devenir du patient,,,,"Décision(s) d'orientation prise par le médecin régulateur : +- A transporter +- Laisser sur place","laissé sur place, décédé, ou transporté",,orientation,,,,,,1..1,,string,X,,X,X,X +172,173,,,ID demande de concours/de ressources,,,,Identifiant de la ou des demandes de concours ,,,concoursRequest,,,,,,0..1,,string,,,X,X, +173,174,,,ID vecteur partagé,,,,"Identifiant du véhicule terrestre / aérien / maritime de transport principal (= celui dans lequel se trouve le patient), permettant d'associer la décision à un véhicule spécifique + au patient. ",,,transportationID,,,,,,0..1,,string,,,X,X,X +174,175,,,Niveau de prise en charge,,,,"Type d’équipe (médical, paramédicale, non médicale, standard, incomplete, ...)","Médical, paramédical, secouriste",,teamCare,,,,,,1..1,,string,,NOMENCLATURE : NIVSOIN,X,X,X +175,176,,,Destination,,,,,,,destination,,,,,,0..1,X,destination,,,X,X,X +176,177,,,,Type de destination,,,"Indique le type de destination de la ressource : service d’urgences d’un Etablissement de santé, autres services d’un établissement de santé, cabinet d’un professionnel de santé, domicile personnel, EPHAD ou long séjour, autre",,,type,,,,,,0..1,,string,X,"ENUM: service d’urgences d’un Etablissement de santé, autres services d’un établissement de santé, cabinet d’un professionnel de santé, domicile personnel, EPHAD ou long séjour, autre",X,X,X +177,178,,,,Localisation de la destination,# Voir type location,,,,,destinationLocation,,,,,,0..1,X,location,,,X,X,X +178,179,Nouvelle alerte,# Voir alerte initiale,,,,,"Lorsque plusieurs alertes correspondent à une même affaire/dossier, la première alerte reçue est appelée Alerte initial ""initialAlert"", la seconde et les suivantes sont des objets ""newAlert"". Les objet newAlert suivent le modèle d'un objet initialAlert -Dans le cadre d'une mise à jour d'affaire, les objets alertes sont IMMUTABLES.",,otherAlert,newAlert,,,,,1.0,0..n,X,alert,,,X,X -169,172,Informations complémentaires,,,,,,,,,additionalInformation,,,,,,0..1,X,additionalInformation,,,X,X -170,173,,Clé valeur adaptable,,,,,Permet de rajouter quelques paires de champs,,,customMap,,,,,,0..3,X,customMap,,,X,X -171,174,,,Clé,,,,Nom de la balise,neighborhood,,key,,,,,,1..1,,string,,,X,X -172,176,,,Libellé,,,,Libellé correspondant,Quartier,,label,,,,,,0..1,,string,,,X,X -173,177,,,Valeur,,,,Valeur associée à la clé,LYON 2e arrondissement,,value,,,,,,1..1,,string,,,X,X -174,178,,,Détails,,,,Informations complémentaires sur le contexte / utilisation de ce matching additionnel,Précision sur le quartier d'intervention,,freetext,,,,,,0..1,,string,,,X,X -175,179,Description de l'affaire/dossier,,,,,,Texte libre permettant de donner des informations supplémentaires concernant l'affaire,,,freetext,,,,,,0..1,,string,,,X,X +15-18 : Dans le cadre d'une mise à jour d'affaire, les objets alertes sont IMMUTABLES.",,otherAlert,newAlert,,,,,1.0,0..n,X,alert,,,X,X, +179,180,Informations complémentaires,,,,,,,,,additionalInformation,,,,,,0..1,X,additionalInformation,,,X,X,X +180,181,,Clé valeur adaptable,,,,,Permet de rajouter quelques paires de champs,,,customMap,,,,,,0..3,X,customMap,,,X,X,X +181,182,,,Clé,,,,Nom de la balise,neighborhood,,key,,,,,,1..1,,string,,,X,X,X +182,183,,,Libellé,,,,Libellé correspondant,Quartier,,label,,,,,,0..1,,string,,,X,X,X +183,184,,,Valeur,,,,Valeur associée à la clé,LYON 2e arrondissement,,value,,,,,,1..1,,string,,,X,X,X +184,185,,,Détails,,,,Informations complémentaires sur le contexte / utilisation de ce matching additionnel,Précision sur le quartier d'intervention,,freetext,,,,,,0..1,,string,,,X,X,X +185,186,Description de l'affaire/dossier,,,,,,"Texte libre permettant de donner des informations supplémentaires concernant l'affaire/dossier. Ces informations sont générales, et ont vocation à être échangées en inter-force. ",Le forcené n'est pas maîtrisé. Voiture renversée. Urgences fermées de 22h à 6h00.,,freetext,,,,,,0..n,,string,,,X,X,X diff --git a/csv_parser/out/RC-EDA/RC-EDA.schema.docx b/csv_parser/out/RC-EDA/RC-EDA.schema.docx index 9fbc9698c..6190185a0 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 b/csv_parser/out/RC-EDA/RC-EDA.uml_diagram index b2a251059..140f9b159 100644 --- a/csv_parser/out/RC-EDA/RC-EDA.uml_diagram +++ b/csv_parser/out/RC-EDA/RC-EDA.uml_diagram @@ -7,28 +7,28 @@ strict digraph { - +
whatsHappen
objet whatsHappen
code string : [1..1]
label string : [1..1]
freetext string : [0..1]
objet whatsHappen
code string : [1..1]
label string : [1..1]
>] whatsHappen -> qualification [headlabel=1 taillabel=1] locationKind [label=< - +
locationKind
objet locationKind
code string : [1..1]
label string : [1..1]
freetext string : [0..1]
objet locationKind
code string : [1..1]
label string : [1..1]
>] locationKind -> qualification [headlabel=1 taillabel="0..1"] riskThreat [label=< - +
riskThreat
objet riskThreat
code string : [1..1]
label string : [1..1]
freetext string : [0..1]
objet riskThreat
code string : [1..1]
label string : [1..1]
>] riskThreat -> qualification [headlabel=1 taillabel="0..*"] healthMotive [label=< - +
healthMotive
objet healthMotive
code string : [1..1]
label string : [1..1]
freetext string : [0..1]
objet healthMotive
code string : [1..1]
label string : [1..1]
>] healthMotive -> qualification [headlabel=1 taillabel="0..1"] victims [label=< @@ -45,6 +45,13 @@ strict digraph {
objet qualification
>] qualification -> createCase [headlabel=1 taillabel=1] + externalLocationId [label=< + + + + +
externalLocationId
objet externalLocationId
source string : [1..1]
value string : [1..1]
>] + externalLocationId -> location [headlabel=1 taillabel="0..*"] wayName [label=< @@ -108,18 +115,25 @@ strict digraph {
wayName
objet location
locID string : [1..1]
locLabel string : [0..1]
name string : [0..1]
country string : [1..1]
freetext string : [0..1]
>] location -> createCase [headlabel=1 taillabel=1] + notes [label=< + + + + +
notes
objet notes
creation date-time : [0..1]
freetext string : [0..1]
>] + notes -> initialAlert [headlabel=1 taillabel="0..*"] callerContact [label=< - +
callerContact
objet contact
type string : [1..1]
detail string : [1..1]
objet contact
channel string : [1..1]
type string : [1..1]
detail string : [1..1]
>] - callerContact -> caller [headlabel=1 taillabel="0..1"] + callerContact -> caller [headlabel=1 taillabel=1] callbackContact [label=< - +
callbackContact
objet contact
type string : [1..1]
detail string : [1..1]
objet contact
channel string : [1..1]
type string : [1..1]
detail string : [1..1]
>] callbackContact -> caller [headlabel=1 taillabel="0..1"] detailedName [label=< @@ -136,13 +150,13 @@ strict digraph {
objet caller
language string : [0..1]
type string : [0..1]
communication string : [0..1]
freetext string : [0..1]
>] caller -> initialAlert [headlabel=1 taillabel=1] - alertSource [label=< + externalLocationId [label=<
- + - +
alertSourceexternalLocationId
objet contactSource
channel string : [1..1]
type string : [1..1]
detail string : [1..1]
objet externalLocationId
source string : [1..1]
value string : [1..1]
>] - alertSource -> initialAlert [headlabel=1 taillabel=1] + externalLocationId -> location [headlabel=1 taillabel="0..*"] wayName [label=< @@ -210,28 +224,28 @@ strict digraph { - +
wayName
whatsHappen
objet whatsHappen
code string : [1..1]
label string : [1..1]
freetext string : [0..1]
objet whatsHappen
code string : [1..1]
label string : [1..1]
>] whatsHappen -> qualification [headlabel=1 taillabel=1] locationKind [label=< - +
locationKind
objet locationKind
code string : [1..1]
label string : [1..1]
freetext string : [0..1]
objet locationKind
code string : [1..1]
label string : [1..1]
>] locationKind -> qualification [headlabel=1 taillabel="0..1"] riskThreat [label=< - +
riskThreat
objet riskThreat
code string : [1..1]
label string : [1..1]
freetext string : [0..1]
objet riskThreat
code string : [1..1]
label string : [1..1]
>] riskThreat -> qualification [headlabel=1 taillabel="0..*"] healthMotive [label=< - +
healthMotive
objet healthMotive
code string : [1..1]
label string : [1..1]
freetext string : [0..1]
objet healthMotive
code string : [1..1]
label string : [1..1]
>] healthMotive -> qualification [headlabel=1 taillabel="0..1"] victims [label=< @@ -252,7 +266,7 @@ strict digraph { - +
calltakerContact
objet contact
type string : [1..1]
detail string : [1..1]
objet contact
channel string : [1..1]
type string : [1..1]
detail string : [1..1]
>] calltakerContact -> callTaker [headlabel=1 taillabel="0..1"] callTaker [label=< @@ -273,7 +287,7 @@ strict digraph { - +
initialAlert
objet alert
id string : [1..1]
reception date-time : [1..1]
reporting string : [1..1]
freetext string : [0..1]
objet alert
id string : [1..1]
reception date-time : [1..1]
reporting string : [1..1]
>] initialAlert -> createCase [headlabel=1 taillabel="0..1"] strictFeatures [label=< @@ -301,21 +315,98 @@ strict digraph { - +
patient
objet patient
id string : [1..1]
objet patient
id string : [1..1]
freetext string : [0..*]
>] patient -> createCase [headlabel=1 taillabel="0..*"] + externalLocationId [label=< + + + + +
externalLocationId
objet externalLocationId
source string : [1..1]
value string : [1..1]
>] + externalLocationId -> destinationLocation [headlabel=1 taillabel="0..*"] + wayName [label=< + + + + +
wayName
objet wayName
complete string : [1..1]
type string : [0..1]
name string : [0..1]
>] + wayName -> detailedAddress [headlabel=1 taillabel="0..1"] + detailedAddress [label=< + + + + +
detailedAddress
objet detailedAddress
complete string : [1..1]
number string : [0..1]
>] + detailedAddress -> destinationLocation [headlabel=1 taillabel="0..1"] + city [label=< + + + + +
city
objet city
name string : [0..1]
inseeCode string : [0..1]
detail string : [0..1]
>] + city -> destinationLocation [headlabel=1 taillabel="0..1"] + access [label=< + + + + +
access
objet access
floor string : [0..1]
roomNumber string : [0..1]
interphone string : [0..1]
accessCode string : [0..*]
elevator string : [0..1]
buildingName string : [0..1]
entrance string : [0..1]
entity string : [0..1]
phoneNumber number : [0..1]
>] + access -> destinationLocation [headlabel=1 taillabel="0..1"] + coord [label=< + + + + +
coord
objet coord
lat number : [1..1]
lon number : [1..1]
height number : [0..1]
heading number : [0..1]
speed number : [0..1]
precision string : [1..1]
>] + coord -> point [headlabel=1 taillabel=1] + point [label=< + + + + +
point
objet point
sysCoord string : [0..1]
>] + point -> geometry [headlabel=1 taillabel="0..1"] + geometry [label=< + + + + +
geometry
objet geometry
obsDatime date-time : [1..1]
sketch string : [0..1]
>] + geometry -> destinationLocation [headlabel=1 taillabel="0..1"] + externalInfo [label=< + + + + +
externalInfo
objet externalInfo
freetext string : [1..1]
type string : [1..1]
uri string : [1..1]
>] + externalInfo -> destinationLocation [headlabel=1 taillabel="0..*"] + destinationLocation [label=< + + + + +
destinationLocation
objet location
locID string : [1..1]
locLabel string : [0..1]
name string : [0..1]
country string : [1..1]
freetext string : [0..1]
>] + destinationLocation -> destination [headlabel=1 taillabel="0..1"] destination [label=< - + +
destination
objet destination
type string : [0..1]
facility string : [0..1]
adminFiness string : [0..1]
geoFiness string : [0..1]
service string : [0..1]
freetext string : [0..1]
objet destination
type string : [0..1]
>] + destination -> transportDetails [headlabel=1 taillabel="0..1"] + transportDetails [label=< + + + +
transportDetails
objet transportDetails
orientation string : [1..1]
concoursRequest string : [0..1]
transportationID string : [0..1]
teamCare string : [1..1]
>] - destination -> decision [headlabel=1 taillabel="0..1"] + transportDetails -> decision [headlabel=1 taillabel="0..1"] decision [label=< - +
decision
objet decision
id string : [0..1]
creation date-time : [1..1]
type string : [0..1]
orientation string : [0..1]
transportation string : [0..*]
teamCare string : [0..1]
objet decision
id string : [0..1]
creation date-time : [1..1]
type string : [1..1]
>] decision -> createCase [headlabel=1 taillabel="0..*"] newAlert [label=< @@ -343,6 +434,6 @@ strict digraph { - +
createCase
objet createCase
caseId string : [1..1]
senderCaseId string : [0..1]
creation date-time : [1..1]
referenceVersion string : [1..1]
freetext string : [0..1]
objet createCase
caseId string : [1..1]
senderCaseId string : [0..1]
creation date-time : [1..1]
referenceVersion string : [1..1]
freetext string : [0..*]
>] } 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 58acbe040..267d3e3f2 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.example.json b/csv_parser/out/RC-REF/RC-REF.example.json index 0d920268d..b5d6344e8 100644 --- a/csv_parser/out/RC-REF/RC-REF.example.json +++ b/csv_parser/out/RC-REF/RC-REF.example.json @@ -1,5 +1,5 @@ { "distributionID": "None", "refused": "None", - "infoDistributionID": "None" + "errorDistributionID": "None" } \ No newline at end of file diff --git a/csv_parser/out/RC-REF/RC-REF.input.csv b/csv_parser/out/RC-REF/RC-REF.input.csv index 56abb1aed..482f766cc 100644 --- a/csv_parser/out/RC-REF/RC-REF.input.csv +++ b/csv_parser/out/RC-REF/RC-REF.input.csv @@ -1,4 +1,4 @@ ,ID,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 NexSIS,Nouvelle balise,Nantes - balise,Nantes - description,GT399,GT399 description,Priorisation,Cardinalité,Objet,Format (ou type),Nomenclature/ énumération,Détails de format,15-18,15-15 0,1,Identifiant du message référencé,,,,,,Identifiant unique du message référencé,,,distributionID,,,,,,1..1,,string,,,X,X 1,2,Indicateur de refus de message,,,,,,Indique si le message acquitté a été refusé,,,refused,,,,,,0..1,,boolean,,,X,X -2,3,Identifiant du message d'erreur lié,,,,,,Identifiant unique du message d'erreur lié,,,infoDistributionID,,,,,,0..1,,string,,,X,X +2,3,Identifiant du message d'erreur lié,,,,,,Identifiant unique du message d'erreur lié,,,errorDistributionID,,,,,,0..1,,string,,,X,X diff --git a/csv_parser/out/RC-REF/RC-REF.schema.docx b/csv_parser/out/RC-REF/RC-REF.schema.docx index 585b16512..68963ba8d 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 b/csv_parser/out/RC-REF/RC-REF.uml_diagram index 07b1c93f0..79cbe2f86 100644 --- a/csv_parser/out/RC-REF/RC-REF.uml_diagram +++ b/csv_parser/out/RC-REF/RC-REF.uml_diagram @@ -7,6 +7,6 @@ strict digraph { reference - objet referencedistributionID string : [1..1] refused boolean : [0..1] infoDistributionID string : [0..1] + objet referencedistributionID string : [1..1] refused boolean : [0..1] errorDistributionID string : [0..1] >] } 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 858cbe1db..4189b6446 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/RS-EDA/RS-EDA.example.json b/csv_parser/out/RS-EDA/RS-EDA.example.json index 1859eafdc..cf9ad8566 100644 --- a/csv_parser/out/RS-EDA/RS-EDA.example.json +++ b/csv_parser/out/RS-EDA/RS-EDA.example.json @@ -3,45 +3,44 @@ "senderCaseId": "DRFR15DDXAAJJJ0000", "creation": "2022-09-27T08:23:34+02:00", "referenceVersion": "1.2", + "perimeter": "AMU", + "interventionType": "Primaire", "qualification": { "whatsHappen": { "code": "C07.13.02", - "label": "Rod\u00e9o automobile", - "freetext": "None" + "label": "Rod\u00e9o automobile" }, "locationKind": { "code": "C07.13.02", - "label": "Rod\u00e9o automobile", - "freetext": "None" + "label": "Rod\u00e9o automobile" }, "riskThreat": [ { "code": "C07.13.02", - "label": "Rod\u00e9o automobile", - "freetext": "None" + "label": "Rod\u00e9o automobile" } ], "healthMotive": { "code": "C07.13.02", - "label": "Rod\u00e9o automobile", - "freetext": "None" + "label": "Rod\u00e9o automobile" }, "details": { "status": "None", "type": "DR", "attribution": "MU", "priority": "P1" - }, - "victims": { - "count": "SEVERAL", - "mainVictim": "CHILD", - "freetext": "Jeanne Dupont, 6 ans, ne r\u00e9pond plus" } }, "location": { "locID": "111fb03a-6fd9-41e0-8e81-990c45188887", "locLabel": "Lyc\u00e9e Pierre de Coubertin - 12 rue de l'Amiti\u00e9 77288 Melun, Mus\u00e9e Bossuet - Acc\u00e8s 2 - 77048 Saint-Albray", "name": "Lyc\u00e9e Pierre de Coubertin", + "externalLocationId": [ + { + "source": "FINESS g\u00e9ographique, FINESS administratif, SIREN, SIRET, APE, NAF", + "value": "920000650\u00a0" + } + ], "detailedAddress": { "complete": "9 Bd du Montparnasse", "number": "9, 4bis, PK10, \u2026", @@ -98,9 +97,15 @@ "id": "SGO050-20230605-AL0123", "reception": "2022-09-27T08:21:06+02:00", "reporting": "STANDARD", - "freetext": "D\u00e9clenchement t\u00e9l\u00e9alarme, voisine sur les lieux", + "notes": [ + { + "creation": "None", + "freetext": "La personne est inconsciente (perte de connaissance). " + } + ], "caller": { "callerContact": { + "channel": "Personne", "type": "PHNADD", "detail": "0671830530" }, @@ -115,13 +120,6 @@ "firstName": "Jean" } }, - "alertSource": { - "channel": "Personne", - "type": "PHNADD", - "detail": "0671830530" - }, - "location": {}, - "qualification": {}, "callTaker": { "organization": "fr.health.samu440", "controlRoom": "CGA, CGO 21, CRRA 44, ...", @@ -141,16 +139,9 @@ ] }, "owner": "fr.health.samu440", - "operator": [ - { - "detailedName": {}, - "id": "None", - "role": "ARM, Medecin r\u00e9gulateur\u2026" - } - ], "patient": [ { - "id": "None", + "id": "fr.health.samu044.DRFR15DDXAAJJJ00000.P00", "administrativeFile": { "externalId": [ { @@ -195,8 +186,7 @@ }, "healthMotive": { "code": "C07.13.02", - "label": "Rod\u00e9o automobile", - "freetext": "None" + "label": "Rod\u00e9o automobile" }, "detail": { "weight": 31, @@ -207,28 +197,28 @@ "hypothesis": { "mainDiagnosis": { "code": "C07.13.02", - "label": "Rod\u00e9o automobile", - "freetext": "None" + "label": "Rod\u00e9o automobile" }, "otherDiagnosis": [ { "code": "C07.13.02", - "label": "Rod\u00e9o automobile", - "freetext": "None" + "label": "Rod\u00e9o automobile" } ] }, - "resourceDiagnosis": { - "code": "C07.13.02", - "label": "Rod\u00e9o automobile", - "freetext": "None" - } + "freetext": [ + "None" + ] } ], "medicalNote": [ { "id": "None", - "operator": {}, + "operator": { + "detailedName": {}, + "id": "None", + "role": "ARM, Medecin r\u00e9gulateur\u2026" + }, "creation": "2022-09-27T08:23:34+02:00", "freetext": "None", "medicalHistory": "None", @@ -241,18 +231,21 @@ "id": "None", "creation": "2022-09-27T08:23:34+02:00", "type": "conseil m\u00e9dical / d\u00e9cision d\u2019intervention / d\u00e9cision d\u2019orientation et de transport / Pas de d\u00e9cision suppl\u00e9mentaire", - "orientation": "None", - "transportation": [ - "SMUR " - ], - "teamCare": "M\u00e9dical, param\u00e9dical, secouriste", - "destination": { - "type": "None", - "facility": "None", - "adminFiness": "None", - "geoFiness": "None", - "service": "None", - "freetext": "None" + "engagementDetails": { + "categoryType": "SMUR, Pompiers", + "resourceType": "AR, VLM, VSAV", + "resourceId": "None", + "teamCareInitial": "M\u00e9dical, param\u00e9dical, secouriste" + }, + "transportDetails": { + "orientation": "laiss\u00e9 sur place, d\u00e9c\u00e9d\u00e9, ou transport\u00e9", + "concoursRequest": "None", + "transportationID": "None", + "teamCare": "M\u00e9dical, param\u00e9dical, secouriste", + "destination": { + "type": "None", + "destinationLocation": {} + } } } ], @@ -269,5 +262,7 @@ } ] }, - "freetext": "None" + "freetext": [ + "Le forcen\u00e9 n'est pas ma\u00eetris\u00e9. Voiture renvers\u00e9e. Urgences ferm\u00e9es de 22h \u00e0 6h00." + ] } \ No newline at end of file diff --git a/csv_parser/out/RS-EDA/RS-EDA.input.csv b/csv_parser/out/RS-EDA/RS-EDA.input.csv index 0bb2de8f5..f1f69d704 100644 --- a/csv_parser/out/RS-EDA/RS-EDA.input.csv +++ b/csv_parser/out/RS-EDA/RS-EDA.input.csv @@ -1,260 +1,254 @@ -,ID,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 NexSIS,Nouvelle balise,Nantes - balise,Nantes - description,GT399,GT399 description,Priorisation,Cardinalité,Objet,Format (ou type),Nomenclature/ énumération,Détails de format,15-18,15-15 +,ID,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 NexSIS,Nouvelle balise,Nantes - balise,Nantes - description,GT399,GT399 description,Priorisation,Cardinalité,Objet,Format (ou type),Nomenclature/ énumération,Détails de format,15-18,15-15,15-SMUR 0,1,Identifiant affaire/dossier,,,,,,"Identifiant de l'affaire partagé entre tous les intervenants = aux champs {organization}.{senderCaseId}. Il doit pouvoir être généré de façon unique et décentralisée et ne présenter aucune ambiguïté. Il est généré par le système du partenaire récepteur de la primo-demande de secours (créateur du dossier). -Valorisation : {pays}.{domaine}.{organisation}.{structure interne}*.{unité fonctionnelle}*.{numéro de dossier}",fr.health.samu440-DRFR15DDXAAJJJ0000,eventId,caseId,NR,Numéro de requête émise,,,1.0,1..1,,string,,,X,X +Valorisation : {pays}.{domaine}.{organisation}.{structure interne}*.{unité fonctionnelle}*.{numéro de dossier}",fr.health.samu440-DRFR15DDXAAJJJ0000,eventId,caseId,NR,Numéro de requête émise,,,1.0,1..1,,string,,,X,X,X 1,2,Identifiant local de l'affaire/dossier,,,,,,"Valoriser avec le numéro du dossier dans le SI de l'émetteur du message. Ce champ est facultatif, il ne sera notamment pas transmis par NexSIS. -",DRFR15DDXAAJJJ0000,,senderCaseId,NO,Numéro de dossier de l'émetteur,,,,0..1,,string,,,X,X -2,3,Date Heure de création de l'affaire/dossier,,,,,,Groupe date heure de début de partage lié à la création de l'affaire (et donc de génération du caseId). Il doit être renseigné à la fin du processus de la création de la première alerte. Lors de l'ajout d'alerte à une affaire ce champ ne doit pas être modifié. L'indicateur de fuseau horaire Z ne doit pas être utilisé.,2022-09-27T08:23:34+02:00,createdAt,creation,,,,,1.0,1..1,,datetime,,Format datetime décrit dans le DSF,X,X +",DRFR15DDXAAJJJ0000,,senderCaseId,NO,Numéro de dossier de l'émetteur,,,,0..1,,string,,,X,X,X +2,3,Date Heure de création de l'affaire/dossier,,,,,,Groupe date heure de début de partage lié à la création de l'affaire (et donc de génération du caseId). Il doit être renseigné à la fin du processus de la création de la première alerte. Lors de l'ajout d'alerte à une affaire ce champ ne doit pas être modifié. L'indicateur de fuseau horaire Z ne doit pas être utilisé.,2022-09-27T08:23:34+02:00,createdAt,creation,,,,,1.0,1..1,,datetime,,Format datetime décrit dans le DSF,X,X,X 3,4,Version des nomenclatures du référentiel CISU,,,,,,"Indique le numéro de version du référentiel des nomenclatures des codes transmis. -Cela permet aux différents systèmes de s'assurer qu'ils utilisent la même version des codes de nomenclature que leurs partenaires.",1.2,cisuNomenclatureVersion,referenceVersion,,,,,,1..1,,string,,,X,X -4,5,Qualification de l'affaire/dossier,,,,,,Permet de qualifier l'affaire en générale. La qualification est issue d'une interprétation métier des alertes reçues.,,alertCode,qualification,,,,,,1..1,X,qualification,,,X,X -5,6,,Nature de fait,,,,,"Décrit la nature de fait de l'alerte (NF) à partir de la nomenclature CISU. -Le champs freetext sert à passer les informations de gestion des évènements (main courante sans les informations médicales privilégiées).",,whatsHappen,,CE/CK,raison de l'appel,,,1.0,1..1,X,nomenclature,,,X,X -6,7,,,Code,,,,A valoriser avec un code la nomenclature associée,C07.13.02,code,,,,,,1.0,1..1,,string,,,X,X -7,8,,,Libellé,,,,"A valoriser avec le libellé de la nomenclature associée. -Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut directement afficher le libellé qui est obligatoirement fourni avec le code.",Rodéo automobile,label,,,,,,1.0,1..1,,string,,,X,X -8,9,,,Commentaire,,,,Commentaire libre permettant de passer des informations complémentaires associées à la nomenclature,,freetext,,,,,,,0..1,,string,,,X,X -9,10,,Type de lieu,# Voir whatsHappen (type nomenclature),,,,Décrit le type de lieu (TL). Référentiel : nomenclature CISU,,locationKind,,CI,Type de lieu d'intervention,,,1.0,0..1,X,nomenclature,,,X,X -10,11,,"Risque, menace et sensibilité",# Voir whatsHappen (type nomenclature),,,,"Décrit les risques, menaces et sensibilités (RMS). Référentiel : nomenclature CISU.",,riskThreat,,,,,,1.0,0..n,X,nomenclature,,,X,X -11,12,,Motif de recours médico-secouriste,# Voir whatsHappen (type nomenclature),,,,Décrit le motif de recours médico-secouriste (MR). Référentiel : nomenclature CISU.,,healthMotive,,,,,,1.0,0..1,X,nomenclature,,,X,X -12,13,,Détails du dossier ,,,,,,,,details,,,,,,0..1,X,caseDetails,,,,X -13,14,,,Etat du dossier,,,,"cf. cycle SI SAMU : échanger l'état du dossier si le cycle de vie du dossier est implémenté de manière conforme au cycle de vie du dossier SI-SAMU. -Echanger à minima l'information que le dossier est clôturé.",,,status,,,,,,0..1,,string,X,"ENUM: Programmé, Actif , Achevé, Validé , Clôturé , Classé, Archivé",,X -14,15,,,Type de dossier,,,,D/DR/DRM si cycle SI-SAMU implémenté,DR,,type,,,,,,0..1,,string,X,"ENUM: D, DR, DRM -NOMENC_TYPEDOS",,X -15,16,,,Attribution du dossier,,,,"Décrit le type de professionnel médical à qui le dossier est attribué : Médecin généraliste, médecin urgentiste etc.",MU,,attribution,,,,,,0..1,,string,,,,X -16,17,,,Priorité de régulation médicale,,,,"Décrit la priorité de régulation médicale du dossier : P0, P1, P2, P3",P1,,priority,,,,,,0..1,,string,,,,X -17,18,,Patients-Victimes,,,,,,,victims,,,,,,,0..1,X,victims,,,X,X -18,19,,,Nombre de patients-victimes,,,,Indique le nombre de victimes selon la nomenclature du référentiel CISU,SEVERAL,count,,NV,Nombre de victimes,,,,0..1,,string,X,"ENUM: 0, 1, SEVERAL, MANY, UNKNOWN",X,X -19,20,,,Type du patient-victime principal,,,,Identifie le type de la principale victime (celle dont l'état de santé provoque le déclenchement de l'envoi des secours). Prend les valeurs du référentiel CISU. Entre dans la détermination des partenaires impliqués par NexSIS.,CHILD,mainVictim,,,,,,,0..1,,string,X,"ENUM: INFANT, CHILD, ADULT, SENIOR",X,X -20,21,,,Informations complémentaires sur les patients-victimes,,,,Permet de complémenter en commentaire libre la(les) victime(s),"Jeanne Dupont, 6 ans, ne répond plus",freetext,,,,,,,0..1,,string,,,X,X -21,22,Localisation de l'affaire/dossier,,,,,,Concerne bien le dossier de régulation pour le périmetre 15-15,,eventLocation,location,,,,,,1..1,X,location,,,X,X -22,23,,Identifiant technique de localisation,,,,,ID technique et provisoire permettant d'identifier le lieu dans le cadre des échanges de cette affaire.,111fb03a-6fd9-41e0-8e81-990c45188887,locID,,,,,,,1..1,,string,,,X,X -23,24,,Résumé de la localisation,,,,,"Permet d'indiquer des indications auto suffisantes permettant pour un opérationnel d'accéder facilement au lieu avec des indications minimales. -Dans les messages NexSIS, va souvent correspondre à la concaténation suivant des règles métiers de différentes informations, dont le ""name"" (toponyme) et l'adresse. -Comprend au maximum 255 caractères","Lycée Pierre de Coubertin - 12 rue de l'Amitié 77288 Melun, Musée Bossuet - Accès 2 - 77048 Saint-Albray",locLabel,,,,,,,0..1,,string,,,X,X -24,25,,Nom du lieu,,,,,"Indique le nom de lieu : nom commercial, forêt de Fontainebleau, lac du Der (plutôt à destination des systèmes).",Lycée Pierre de Coubertin,name,,LE/L4,Nom de l'établissement répertorié/point d'intérêt,,,,0..1,,string,,,X,X -25,26,,Détails de l'adresse,,,,,,,,detailedAddress,,,,,,0..1,X,detailedAddress,,,X,X -26,27,,,"Numéro, type et nom de voie",,,,"Numéro, type et nom de la voie. -Utilisé pour tout type de voie : autoroute (PK, nom et sens), voie ferrée, voie navigable… -Obligatoire et seule valeur des détails de l'adresse fournie par NexSIS.",9 Bd du Montparnasse,address,complete,,,,,,1..1,,string,,TEMPLATE: {number} {wayName},X,X -27,28,,,Numéro dans la voie,,,,"Numéro dans l'adresse (inclut point kilométrique sur l'autoroute, voie ferrée ou voie navigable). Inclut l'indice de répétition associé au numéro (par exemple bis, a…).","9, 4bis, PK10, …",,number,LO,N° dans la voie,,,,0..1,,string,,,X,X -28,29,,,Type et nom de voie,,,,,,,wayName,LY/LB/LV,"Type, particule, nom de voie",,,,0..1,X,wayName,,,X,X -29,30,,,,Type et nom,,,"Type et nom de la voie (venant d'un référentiel ou non) -Si les champs type et name sont renseignés, le champ callerName doit être valorisé ainsi : ""{type} {nom}"".",Boulevard du Montparnasse,,complete,,,,,,1..1,,string,,TEMPLATE: {type} {name},X,X -30,31,,,,Type,,,,Boulevard,,type,,,,,,0..1,,string,,,X,X -31,32,,,,Nom,,,,du Montparnasse,,name,,,,,,0..1,,string,,,X,X -32,33,,Détails de la commune,,,,,,,,city,,,,,,0..1,X,city,,,X,X -33,34,,,Nom de la commune,,,,Nom officiel de la commune actuelle,Lille,city,name,LC,Nom de la commune,,,,0..1,,string,,,X,X -34,35,,,Code INSEE de la commune,,,,Code INSEE de la commune actuelle sur la base du Code Officiel géographique en vigueur. Obligatoire si le nom de la commune est renseigné.,59350,citycode,inseeCode,LZ,Code INSEE de la commune,,,,0..1,,string,,REGEX: [0-9]{5},X,X -35,36,,,Complément de commune,,,,"Informations complémentaires permettant de préciser le quartier, lieu-dit, ancienne commune, … ou autre information aidant à préciser l'adresse et notamment gérer les cas de communes fusionnées pour le système émetteur -NB : dans tous les cas, la localisation GPS de la commune doit être fournie afin d'éviter une trop forte ambiguïté","Quartie Melun Nord, Lhomme, …",,detail,,,,,,0..1,,string,,,X,X -36,37,,Détails d'accès,,,,,Non gérés par NexSIS : ne seront pas transmis au SAMU et seront affichés côté NexSIS en clés / valeurs dans le champ libre,,,access,,,,,,0..1,X,access,,,X,X -37,38,,,Etage,,,,Etage ,RDC,,floor,LG,Etage,,,,0..1,,string,,,X,X -38,39,,,Numéro de porte,,,,"Spécifie numéro d'appartement, de chambre, de bureau",A16,,roomNumber,LP,Porte,,,,0..1,,string,,,X,X -39,40,,,Interphone,,,,"Indique les informations nécessaires à l'identification de l'interphone (numéro, nom)",Dupont,,interphone,,,,,,0..1,,string,,,X,X -40,41,,,Digicode,,,,Indique le ou les digicodes dans l'ordre de progression dans le bâtiment,1234A,,accessCode,LD,Digicode,,,,0..n,,string,,,X,X -41,42,,,Ascenseur/escalier,,,,Indique l'ascenseur ou la cage d'escalier ,C3,,elevator,,,,,,0..1,,string,,,X,X -42,43,,,Bâtiment,,,,Nom du bâtiment,Batiment B,,buildingName,,,,,,0..1,,string,,,X,X -43,44,,,Entrée,,,,,Zone Sud,,entrance,,,,,,0..1,,string,,,X,X -44,45,,,Service,,,,"Nom du service concerné au sein de l'établissement : Infirmerie, service finance, service cardiologie, …",Infirmerie,,entity,,,,,,0..1,,string,,,X,X -45,46,,,N° de téléphone du lieu,,,,"Numéro de téléphone permettant d'accéder au lieu de l'intervention, par exemple : téléphone du secrétariat, téléphone du service administratif ou se trouve le patient/victime.",33123452323,,phoneNumber,,,,,,0..1,,number,,,X,X -46,47,,Géometrie associée,,,,,,,objectGeometry,geometry,,,,,,0..1,X,geometry,,,X,X -47,48,,,Heure du dernier relevé,,,,Groupe date heure de renseignement des coordonnées du point clé de la localisation. Permet de connaître la fraîcheur et donc pertinence des informations pour intervenir.,2022-09-27T08:23:34+02:00,,obsDatime,,,,,,1..1,,datetime,,,X,X -48,49,,,Point ,,,,"Fournir au maximum même s'il est imprécis (et adapter le champs ""Précision"" en fonction). +Cela permet aux différents systèmes de s'assurer qu'ils utilisent la même version des codes de nomenclature que leurs partenaires.",1.2,cisuNomenclatureVersion,referenceVersion,,,,,,1..1,,string,,,X,X, +4,5,Filière,,,,,,Sert à indiquer à quelle filière du CRRA le dossier doit être adressé/affiché,AMU,,perimeter,,,,,,0..1,,string,,"ENUM: AMU, SNP, NEONAT",,X, +5,6,Type d'intervention,,,,,,Indiquer s'il s'agit d'un dossier dit primaire (première intervention urgente) ou secondaire (par exemple TIH),Primaire,,interventionType,,,,,,0..1,,string,,"ENUM: Primaire, Secondaire",,X, +6,7,Qualification de l'affaire/dossier,,,,,,"Permet de qualifier l'affaire/dossier en général. +15-18 : La qualification est issue d'une interprétation métier des alertes reçues.",,alertCode,qualification,,,,,,1..1,X,qualification,,,X,X,X +7,8,,Nature de fait,,,,,"Décrit la nature de fait de l'alerte (NF) à partir de la nomenclature CISU. +Le champs freetext sert à passer les informations de gestion des évènements (main courante sans les informations médicales privilégiées).",,whatsHappen,,CE/CK,raison de l'appel,,,1.0,1..1,X,codeAndLabel,,NOMENCLATURE: CISU-Code_Nature_de_fait,X,X,X +8,9,,,Code,,,,A valoriser avec un code la nomenclature associée,C07.13.02,code,,,,,,1.0,1..1,,string,,,X,X,X +9,10,,,Libellé,,,,"A valoriser avec le libellé de la nomenclature associée. +Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut directement afficher le libellé qui est obligatoirement fourni avec le code.",Rodéo automobile,label,,,,,,1.0,1..1,,string,,,X,X,X +10,11,,Type de lieu,# Voir whatsHappen (type codeAndLabel),,,,Décrit le type de lieu (TL). Référentiel : nomenclature CISU,,locationKind,,CI,Type de lieu d'intervention,,,1.0,0..1,X,codeAndLabel,,NOMENCLATURE: CISU-Code_Type_de_lieu,X,X,X +11,12,,"Risque, menace et sensibilité",# Voir whatsHappen (type codeAndLabel),,,,"Décrit les risques, menaces et sensibilités (RMS). Référentiel : nomenclature CISU.",,riskThreat,,,,,,1.0,0..n,X,codeAndLabel,,NOMENCLATURE: CISU-Code_Risque-Menace-Sensibilité,X,X,X +12,13,,Motif de recours médico-secouriste,# Voir whatsHappen (type codeAndLabel),,,,Décrit le motif de recours médico-secouriste (MR). Référentiel : nomenclature CISU.,,healthMotive,,,,,,1.0,0..1,X,codeAndLabel,,NOMENCLATURE: CISU-Code_Motif_patient-victime,X,X,X +13,14,,Détails du dossier ,,,,,,,,details,,,,,,0..1,X,caseDetails,,,,X, +14,15,,,Etat du dossier,,,,"cf. cycle SI SAMU : échanger l'état du dossier si le cycle de vie du dossier est implémenté de manière conforme au cycle de vie du dossier SI-SAMU. +Echanger à minima l'information que le dossier est clôturé.",,,status,,,,,,0..1,,string,X,"ENUM: Programmé, Actif , Achevé, Validé , Clôturé , Classé, Archivé",,X, +15,16,,,Type de dossier,,,,D/DR/DRM si cycle SI-SAMU implémenté,DR,,type,,,,,,0..1,,string,X,"ENUM: D, DR, DRM",,X, +16,17,,,Attribution du dossier,,,,"Décrit le type de professionnel médical à qui le dossier est attribué : Médecin généraliste, médecin urgentiste etc.",MU,,attribution,,,,,,0..1,,string,,NOMENCLATURE: SI-SAMU-DEVENIRD,,X, +17,18,,,Priorité de régulation médicale,,,,"Décrit la priorité de régulation médicale du dossier : P0, P1, P2, P3",P1,,priority,,,,,,0..1,,string,,NOMENCLATURE: SI-SAMU-PRIORITE,,X, +22,23,Localisation de l'affaire/dossier,,,,,,Permet de décrire le lieu d'intervention.,,eventLocation,location,,,,,,1..1,X,location,,,X,X,X +23,24,,Identifiant technique de localisation,,,,,ID technique et provisoire permettant d'identifier le lieu dans le cadre des échanges de cette affaire.,111fb03a-6fd9-41e0-8e81-990c45188887,locID,,,,,,,1..1,,string,,,X,X,X +24,25,,Résumé de la localisation,,,,,"Donne les informations minimales d'identification du lieu d'intervention, qui permet d'identifier rapidement le lieu pour les équipes opérationnelles. Comprend au maximum 255 caractères. +15-18 : Dans les messages NexSIS, va souvent correspondre à la concaténation suivant des règles métiers de différentes informations, dont le ""name"" (toponyme) et l'adresse. +","Lycée Pierre de Coubertin - 12 rue de l'Amitié 77288 Melun, Musée Bossuet - Accès 2 - 77048 Saint-Albray",locLabel,,,,,,,0..1,,string,,,X,X,X +25,26,,Nom du lieu,,,,,"Indique le nom de lieu : nom commercial, Etablissement, forêt de Fontainebleau, lac du Der (plutôt à destination des systèmes).",Lycée Pierre de Coubertin,name,,LE/L4,Nom de l'établissement répertorié/point d'intérêt,,,,0..1,,string,,,X,X,X +26,27,,Identifiant(s) du lieu,,,,,Permet d'identifier une structure commerciale ou un établissement,,,externalLocationId,,,,,,0..n,X,externalLocationId,,,X,X,X +27,28,,,Source / type d'identifiant,,,,Type de l'identifiant fourni,"FINESS géographique, FINESS administratif, SIREN, SIRET, APE, NAF",,source,,,,,,1..1,,string,X,"ENUM: FINESS administratif, FINESS géographique, SIREN, SIRET, APE/NAF",X,X,X +28,29,,,Identifiant,,,,L'identifiant en lui-même,920000650 ,,value,,,,,,1..1,,string,,,X,X,X +29,30,,Détails de l'adresse,,,,,,,,detailedAddress,,,,,,0..1,X,detailedAddress,,,X,X,X +30,31,,,"Numéro, type et nom de voie",,,,"Numéro, type et nom de la voie. Utilisé pour tout type de voie : autoroute (PK, nom et sens), voie ferrée, voie navigable… +15-18 : Obligatoire et seule valeur des détails de l'adresse fournie par NexSIS.",9 Bd du Montparnasse,address,complete,,,,,,1..1,,string,,TEMPLATE: {number} {wayName},X,X,X +31,32,,,Numéro dans la voie,,,,"Numéro dans l'adresse (inclut point kilométrique sur l'autoroute, voie ferrée ou voie navigable). Inclut l'indice de répétition associé au numéro (par exemple bis, a…).","9, 4bis, PK10, …",,number,LO,N° dans la voie,,,,0..1,,string,,,X,X,X +32,33,,,Type et nom de voie,,,,,,,wayName,LY/LB/LV,"Type, particule, nom de voie",,,,0..1,X,wayName,,,X,X,X +33,34,,,,Type et nom,,,"Type et nom de la voie (venant d'un référentiel ou non) +Si les champs type et name sont renseignés, le champ callerName doit être valorisé ainsi : ""{type} {nom}"".",Boulevard du Montparnasse,,complete,,,,,,1..1,,string,,TEMPLATE: {type} {name},X,X,X +34,35,,,,Type,,,Type de la voie,Boulevard,,type,,,,,,0..1,,string,,,X,X,X +35,36,,,,Nom,,,Nom de la voie,du Montparnasse,,name,,,,,,0..1,,string,,,X,X,X +36,37,,Détails de la commune,,,,,,,,city,,,,,,0..1,X,city,,,X,X,X +37,38,,,Nom de la commune,,,,Nom officiel de la commune actuelle,Lille,city,name,LC,Nom de la commune,,,,0..1,,string,,,X,X,X +38,39,,,Code INSEE de la commune,,,,Code INSEE de la commune actuelle sur la base du Code Officiel géographique en vigueur. Obligatoire si le nom de la commune est renseigné.,59350,citycode,inseeCode,LZ,Code INSEE de la commune,,,,0..1,,string,,REGEX: [0-9]{5},X,X,X +39,40,,,Complément de commune,,,,"Informations complémentaires permettant de préciser le quartier, lieu-dit, ancienne commune, … ou autre information aidant à préciser l'adresse et notamment gérer les cas de communes fusionnées pour le système émetteur +NB : dans tous les cas, la localisation GPS de la commune doit être fournie afin d'éviter une trop forte ambiguïté.","Quartie Melun Nord, Lhomme, …",,detail,,,,,,0..1,,string,,,X,X,X +40,41,,Détails d'accès,,,,,"Permet d'envoyer l'ensemble des détails d'accès au lieu d'intervention. Si les détails ne sont pas gérés individuellement, il est préférable de passer ces indications dans le freetext lié à la localisation de l'affaire. +15-18 - Non gérés par NexSIS; ne seront pas transmis au SAMU et seront affichés côté NexSIS en clés / valeurs dans le champ libre",,,access,,,,,,0..1,X,access,,,X,X,X +41,42,,,Etage,,,,Etage ,RDC,,floor,LG,Etage,,,,0..1,,string,,,X,X,X +42,43,,,Numéro de porte,,,,"Spécifie numéro d'appartement, de chambre, de bureau",A16,,roomNumber,LP,Porte,,,,0..1,,string,,,X,X,X +43,44,,,Interphone,,,,"Indique les informations nécessaires à l'identification de l'interphone (numéro, nom)",Dupont,,interphone,,,,,,0..1,,string,,,X,X,X +44,45,,,Digicode,,,,Indique le ou les digicodes dans l'ordre de progression dans le bâtiment,1234A,,accessCode,LD,Digicode,,,,0..n,,string,,,X,X,X +45,46,,,Ascenseur/escalier,,,,Indique l'ascenseur ou la cage d'escalier ,C3,,elevator,,,,,,0..1,,string,,,X,X,X +46,47,,,Bâtiment,,,,Nom du bâtiment,Batiment B,,buildingName,,,,,,0..1,,string,,,X,X,X +47,48,,,Entrée,,,,,Zone Sud,,entrance,,,,,,0..1,,string,,,X,X,X +48,49,,,Service,,,,"Nom du service concerné au sein de l'établissement : Infirmerie, service finance, service cardiologie, …",Infirmerie,,entity,,,,,,0..1,,string,,,X,X,X +49,50,,,N° de téléphone du lieu,,,,"Numéro de téléphone permettant d'accéder au lieu de l'intervention, par exemple : téléphone du secrétariat, téléphone du service administratif ou se trouve le patient/victime.",33123452323,,phoneNumber,,,,,,0..1,,number,,,X,X,X +50,51,,Géometrie associée,,,,,,,objectGeometry,geometry,,,,,,0..1,X,geometry,,,X,X,X +51,52,,,Heure du dernier relevé,,,,Groupe date heure de renseignement des coordonnées du point clé de la localisation. Permet de connaître la fraîcheur et donc pertinence des informations pour intervenir.,2022-09-27T08:23:34+02:00,,obsDatime,,,,,,1..1,,datetime,,,X,X,X +52,53,,,Point ,,,,"Fournir au maximum même s'il est imprécis (et adapter le champs ""Précision"" en fonction). Par exemple, sans adresse, il est possible de fournir le point GPS de la commune et d'adapter et préciser l'adresse en cours d'intervention. -Sera toujours fourni par NexSIS.",,point,point,,,,,,0..1,X,point,,,X,X -49,50,,,,Coordonnées,,,"Le SGO ne fonctionne toujours sur des coordonnées X/Y ainsi qu'une adresse indicative associée. +Sera toujours fourni par NexSIS.",,point,point,,,,,,0..1,X,point,,,X,X,X +53,54,,,,Coordonnées,,,"Le SGO ne fonctionne toujours sur des coordonnées X/Y ainsi qu'une adresse indicative associée. NexSIS dispose donc toujours d'un point GPS utilisé pour le temps de trajet, la détermination de l'intervenant le plus proche, ... -L'adresse est elle utilisée par l’intervenant pour aller sur le lieu.",,coord,coord,,,,,,1..1,X,coord,,,X,X -50,51,,,,,Latitude,,Latitude du point clé de la localisation ,48.866667,lat,lat,,,,,,1..1,,number,,,X,X -51,52,,,,,Longitude,,Longitude du point clé de la localisation,2.333333,lon,lon,,,,,,1..1,,number,,,X,X -52,53,,,,,Altitude ,,"Altitude du point clé de la localisation, en mètre, ignoré côté NexSIS. ",120,,height,,,,,,0..1,,number,,,X,X -53,54,,,,,Cap,,En degré,96,,heading,,,,,,0..1,,number,,,X,X -54,55,,,,,Vitesse,,"Vitesse en km/h, notamment fournie par eCall, tel, nouveau AML, …",34,,speed,,,,,,0..1,,number,,,X,X -55,56,,,,,Précision,,"Indique via une nomenclature le niveau de précision des coordonnées fournies par le système emetteur. -CITY=Précision à l'échelle de la ville, STREET=Précision à l'échelle de la rue, ADDRESS=Adresse précise, EXACT=Point coordonnée GPS exact, UNKNOWN=Précision de la localisation non évaluable par l'émetteur",ADDRESS,,precision,,,,,,1..1,,string,X,"ENUM: CITY, STREET, ADDRESS, EXACT, UNKNOWN",X,X -56,57,,,,Système de coordonnées,,,"Indique le type de coordonnées utilisé. Actuellement, la seule valeur valide est «EPSG-4326», indiquant l'utilisation de WGS-84. Si ce champ n'est pas renseigné, on considère que la valeur par défaut est «».",EPSG-4326,coordsys,sysCoord,,,,,1.0,0..1,,string,,,X,X -57,58,,,Formes géométriques,,,,"Objet gml (équivalent xml du geojson). Le langage GML permet de décrire une forme dans un système de projection donné. +L'adresse est elle utilisée par l’intervenant pour aller sur le lieu.",,coord,coord,,,,,,1..1,X,coord,,,X,X,X +54,55,,,,,Latitude,,Latitude du point clé de la localisation ,48.866667,lat,lat,,,,,,1..1,,number,,,X,X,X +55,56,,,,,Longitude,,Longitude du point clé de la localisation,2.333333,lon,lon,,,,,,1..1,,number,,,X,X,X +56,57,,,,,Altitude ,,"Altitude du point clé de la localisation, en mètre, ignoré côté NexSIS. ",120,,height,,,,,,0..1,,number,,,X,X,X +57,58,,,,,Cap,,En degré,96,,heading,,,,,,0..1,,number,,,X,X,X +58,59,,,,,Vitesse,,"Vitesse en km/h, notamment fournie par eCall, tel, nouveau AML, …",34,,speed,,,,,,0..1,,number,,,X,X,X +59,60,,,,,Précision,,"Indique via une nomenclature le niveau de précision des coordonnées fournies par le système emetteur. +CITY=Précision à l'échelle de la ville, STREET=Précision à l'échelle de la rue, ADDRESS=Adresse précise, EXACT=Point coordonnée GPS exact, UNKNOWN=Précision de la localisation non évaluable par l'émetteur",ADDRESS,,precision,,,,,,1..1,,string,X,"ENUM: CITY, STREET, ADDRESS, EXACT, UNKNOWN",X,X,X +60,61,,,,Système de coordonnées,,,"Indique le type de coordonnées utilisé. Actuellement, la seule valeur valide est «EPSG-4326», indiquant l'utilisation de WGS-84. Si ce champ n'est pas renseigné, on considère que la valeur par défaut est «».",EPSG-4326,coordsys,sysCoord,,,,,1.0,0..1,,string,,,X,X,X +61,62,,,Formes géométriques,,,,"Objet gml (équivalent xml du geojson). Le langage GML permet de décrire une forme dans un système de projection donné. Dans le cas d'une alerte donnée sur une zone géographique non précise (par exemple une section d'autoroute ou une zone sur un chemin de randonnée), une indication sur la zone de recherche peut être fournie. En XML, un objet gml est encapsulé dans une balise En JSON, les balises sont reprises depuis le modèle gml -Voir http://www.opengis.net/gml pour le format de l'objet sketch",,sketch,sketch,,,,,,0..1,,string,,,X,X -58,59,,Liens aux systèmes externes,,,,,"Permet de partager l'identifiant d'un objet ayant servi à l'établissement de la localisation. L'objet reprend la structure EXTERNAL_INFO de l'EMSI -L'identifiant BAN de l'adresse (clé d'interopérabilité) doit être partagé au maximum.",,link,externalInfo,,,,,,0..n,X,externalInfo,,,X,X -59,60,,,Nom de la source,,,,"Système fournissant le localisant : NexSiS ou l'ORG_ID (BAN, IGN, ...)","NexSIS, BAN, IGN, …",source,freetext,,,,,,1..1,,string,X,"ENUM: BAN, IGN, NexSIS",X,X -60,61,,,Type ,,,,"Définition du type d'objet dans le système -Ex : SIG NexSIS / OSM ont plusieurs types de données -> savoir du quel on parle (POI, tronçon de route, …) pour faciliter le filtre | Aussi table dans une base de données","ega, egr, egm, DIO (données d'influence opérationnelle), …",type,type,,,,,,1..1,,string,X,"ENUM: MANUAL, MAP, OTHER, PHOTO, WEBSIT",X,X -61,62,,,Identifiant,,,,Identifiant unique dans le type. Exemple : UUID d'un ega,id987,id,uri,,,,,,1..1,,string,,,X,X -62,63,,Pays,,,,,,France,country,,,,,,,1..1,,string,X,NOMENCLATURE: ISO 3166-ISO3166-2,X,X -63,64,,Commentaire,,,,,Champ libre pour compléter les informations de localisation,Clé derrière le pot de fleur,comment,freetext,LI,Itinéraire (texte libre),,,,0..1,,string,,,X,X -64,65,Alerte initiale,,,,,,"L'objet alert correspond à la transcription d'une communication d'urgence. Une alerte est une photo d'une situation donnée décrite par un requérant et n'est pas amenée à évoluer dans le temps. En cas de modification (adresse, qualification, ...), cela passera par une mise à jour opération ou une nouvelle alerte. -L'alerte initiale est la premiere alerte concernant la situation d'urgence et conduisant à la création d'une affaire. -Le système destinataire reçoit une affaire lorsqu'une alerte le concerne. S'il ne gère pas les affaires multi-alertes, il doit donc créer une affaire seulement sur l'alerte le concernant : pour une création d'affaire, sur l'alerte initiale et pour une mise à jour d'affaire, sur la nouvelle alerte (en récupérant éventuellement des informations de l'alerte initiale en historique). -Pour répondre sur une alerte, l'alerte initiale n'est pas obligatoire car pas forcément stockée dans le système (notamment pour ceux avec des affaires mono-alertes). -NB : -- Dans le cadre une mise à jour d'affaire, les objets alert sont IMMUTABLES dans la mesure où il décrivent une ""photo"" de la situation décrite par le requérant.",,primaryAlert,initialAlert,,,,,,0..1,X,alert,,,X,X -65,66,,Identifiant alerte,,,,,"Identifiant technique unique de l'alerte. Il doit pouvoir être généré automatiquement par le système émetteur et ne doit pas avoir de signification / utilisation particulière par les différents systèmes pour garantir leur découplage. +Voir http://www.opengis.net/gml pour le format de l'objet sketch",,sketch,sketch,,,,,,0..1,,string,,,X,X,X +62,63,,Liens aux systèmes externes,,,,,"Permet de partager l'identifiant d'un objet ayant servi à l'établissement de la localisation. L'objet reprend la structure EXTERNAL_INFO de l'EMSI +L'identifiant BAN de l'adresse (clé d'interopérabilité) doit être partagé au maximum.",,link,externalInfo,,,,,,0..n,X,externalInfo,,,X,X,X +63,64,,,Nom de la source,,,,"Système fournissant le localisant : NexSiS ou l'ORG_ID (BAN, IGN, ...)","NexSIS, BAN, IGN, …",source,freetext,,,,,,1..1,,string,X,"ENUM: BAN, IGN, NexSIS",X,X,X +64,65,,,Type ,,,,"Définition du type d'objet dans le système +Ex : SIG NexSIS / OSM ont plusieurs types de données -> savoir du quel on parle (POI, tronçon de route, …) pour faciliter le filtre | Aussi table dans une base de données","ega, egr, egm, DIO (données d'influence opérationnelle), …",type,type,,,,,,1..1,,string,X,"ENUM: MANUAL, MAP, OTHER, PHOTO, WEBSIT",X,X,X +65,66,,,Identifiant,,,,Identifiant unique dans le type. Exemple : UUID d'un ega,id987,id,uri,,,,,,1..1,,string,,,X,X,X +66,67,,Pays,,,,,,France,country,,,,,,,1..1,,string,X,NOMENCLATURE: ISO 3166-ISO3166-2,X,X, +67,68,,Informations complémentaires sur la localisation,,,,,Champ libre pour compléter les informations de localisation,Clé derrière le pot de fleur,comment,freetext,LI,Itinéraire (texte libre),,,,0..1,,string,,,X,X, +68,69,Alerte initiale,,,,,,"L'objet alert correspond à la transcription d'une communication d'urgence, par exemple un appel téléphonique. +15-18 : Une alerte est une photo d'une situation donnée décrite par un requérant et n'est pas amenée à évoluer dans le temps. En cas de modification (adresse, qualification, ...), cela passera par une mise à jour opération ou une nouvelle alerte, L'alerte initiale est la premiere alerte concernant la situation d'urgence et conduisant à la création d'une affaire.",,primaryAlert,initialAlert,,,,,,0..1,X,alert,,,X,X,X +69,70,,Identifiant alerte,,,,,"Identifiant technique unique de l'alerte. Il doit pouvoir être généré automatiquement par le système émetteur et ne doit pas avoir de signification / utilisation particulière par les différents systèmes pour garantir leur découplage. Voir la description de l'identifiant de l'affaire pour voir le format. Lorsqu’une alerte est générée dans NexSIS et crée une affaire, elle est qualifiée d’Alerte Initiale. a) Si cette dernière concerne un partenaire (caractère médical pour la Santé par exemple), elle est relayée seule dans le message. Il y’a un seul objet initialAlert. b) Sinon, une autre alerte liée à la même affaire peut être déclarée ultérieurement, concernant cette fois le partenaire. Lorsqu’elle est déclarée cette Nouvelle Alerte est relayée avec l’Alerte Initiale pour partager un contexte commun. Dans le message de création d’affaire il y’a deux objets alerte : initialAlert et newAlert. -Le rattachement des messages à une affaire doivent s'appuyer sur les caseId et non les alertId qui peuvent varier d'un système à l'autre.",SGO050-20230605-AL0123,alertId,id,,,,,1.0,1..1,,string,,,X,X -66,67,,Date de réception de l'alerte,,,,,Groupe date heure de réception de l'alerte,2022-09-27T08:21:06+02:00,receivedAt,reception,HA , Date et heure de prise d'appel (format DD/MM/YYYY HH24:MI:SS),,,,1..1,,datetime,,Format datetime décrit dans le DSF,X,X -67,68,,Signalement,,,,,"Permet d'attirer l'attention des forces partenaires sur une affaire pour le faire sortir du lot. +Le rattachement des messages à une affaire doivent s'appuyer sur les caseId et non les alertId qui peuvent varier d'un système à l'autre.",SGO050-20230605-AL0123,alertId,id,,,,,1.0,1..1,,string,,,X,X,X +70,71,,Date de réception de l'alerte,,,,,Groupe date heure de réception de l'alerte,2022-09-27T08:21:06+02:00,receivedAt,reception,HA , Date et heure de prise d'appel (format DD/MM/YYYY HH24:MI:SS),,,,1..1,,datetime,,Format datetime décrit dans le DSF,X,X,X +71,72,,Signalement,,,,,"Permet d'attirer l'attention des forces partenaires sur une affaire pour le faire sortir du lot. Eventuellement automatisé en fonction des critères saisis et de leur paramétrage, ou renseigné par l'opérateur. Prend les valeurs définies dans la nomenclature CISU : - standard : STANDARD - signalé : ATTENTION -Les systèmes peuvent proposer des fonctionnalités faisant ressortir les dossiers avec le libellé ATTENTION",STANDARD,,reporting,,,,,1.0,1..1,,string,X,"ENUM: STANDARD, ATTENTION",X,X -68,69,,Informations complémentaires sur l'alerte,,,,,Texte libre permettant de donner des informations supplémentaires concernant l'alerte.,"Déclenchement téléalarme, voisine sur les lieux",comment,freetext,OG,Observations générales (texte libre),,,1.0,0..1,,string,,,X,X -69,70,,Requérant,,,,,Objet permettant d'identifer la personne qui a alerté les secours et de la recontacter,,caller,,,,,,,1..1,X,caller,,,X,X -70,71,,,Contact,,,,Type et valeur de l'URI utilisée par le requérant à l'origine de l'alerte.,,callerURI,callerContact,AT,N° de téléphone,,,1.0,0..1,X,contact,,,X,X -71,72,,,,Type de contact du requérant,,,"Type de l'URI utilisée par le requérant, cf. nomenclature EMSI",PHNADD,,type,,,,,,1..1,,string,X,"ENUM: PSTADD, EMLADD, IPADD, FTPADD, WWWADD, PHNADD, FAXADD, PMRADD",X,X -72,73,,,,URI du contact requérant,,,Valeur de l'URI utilisée pour contacter le partenaire,0671830530,,detail,,,,,,1..1,,string,,,X,X -73,74,,,Contact de contre-appel,# Voir callerContact (type contact),,,"Type et valeur de l'URI permettant un rappel pour avoir plus d'informations : il peut s'agit du requérant, de la victime ou d'un témoin. ",,,callbackContact,LT,N° de téléphone sur les lieux,,,1.0,0..1,X,contact,,,X,X -74,75,,,Langue parlée,,,,Langue parlée par le requérant. Permet de mettre en place des traducteurs si besoin. Utilise la nomenclature LANGUE du SI-SAMU.,FR,spokenLanguage,language,,,,,,0..1,,string,X,NOMENCLATURE: ISO 3166-ISO3166-2,X,X -75,76,,,Type de requérant,,,,Indique la relation du requérant avec l'incident / le patient / la victime,"le patient lui-même, père, mère",,type,,,,,,0..1,,string,,,X,X -76,77,,,Difficulté de communication,,,,Indique si le requérant rencontre ou non des difficulté de communication,"Malentendant, aucune difficulté de communication",,communication,,,,,,0..1,,string,,,X,X -77,78,,,Informations complémentaires sur le requérant,,,,"Informations complémentaires sur le requérant -Les informations peuvent être passées sous forme de texte libre ou via une liste d'adjectif",témoin de l'accident,freetext,freetext,CH,Profil appelant,,,1.0,0..1,,string,,,X,X -78,79,,,Prénom & nom usuel,,,,,,callerName,detailedName,,,,,,0..1,X,detailedName,,,X,X -79,80,,,,Prénom et nom,,,"Prénom et nom usuel du requérant. +Les systèmes peuvent proposer des fonctionnalités faisant ressortir les dossiers avec le libellé ATTENTION",STANDARD,,reporting,,,,,1.0,1..1,,string,X,"ENUM: STANDARD, ATTENTION",X,X,X +72,73,,Informations complémentaires sur l'alerte (observations ARM),,,,,"Texte libre permettant de donner des informations supplémentaires concernant l'alerte. +15-15 : ce champ est celui dédié pour passer les observations ARM en texte libre.","Déclenchement téléalarme, voisine sur les lieux",comment,notes,OG,Observations générales (texte libre),,,1.0,0..n,X,notes,,,X,X, +73,74,,,Date et heure de l'information complémentaire/l'observation ARM,,,,date et heure de l'observation,,,creation,,,,,,0..1,,datetime,,Format datetime décrit dans le DSF,X,X, +74,75,,,Commentaire/Observations,,,,texte libre contenant les indications renseignées par l'ARM,La personne est inconsciente (perte de connaissance). ,,freetext,,,,,,0..1,,string,,,X,X, +75,76,,Requérant,,,,,Objet permettant d'identifer la personne qui a alerté les secours et de la recontacter,,caller,,,,,,,1..1,X,caller,,,X,X,X +76,77,,,Contact,,,,Type et valeur de l'URI utilisée par le requérant à l'origine de l'alerte.,,callerURI,callerContact,AT,N° de téléphone,,,1.0,1..1,X,contact,,,X,X,X +77,78,,,,Canal,,,"Permet d'indiquer l'origine du canal établit : Personne, application, DAU, BAU, défibrillateur, ecall",Personne,,channel,,,,,,1..1,,string,,,X,X,X +78,79,,,,Type de contact du requérant,,,"Type de l'URI utilisée par le requérant, cf. nomenclature EMSI",PHNADD,,type,,,,,,1..1,,string,X,"ENUM: PSTADD, EMLADD, IPADD, FTPADD, WWWADD, PHNADD, FAXADD, PMRADD",X,X,X +79,80,,,,URI du contact requérant,,,Valeur de l'URI utilisée pour contacter le partenaire,0671830530,,detail,,,,,,1..1,,string,,,X,X,X +80,81,,,Contact de contre-appel,# Voir callerContact (type contact),,,"Type et valeur de l'URI permettant un rappel pour avoir plus d'informations : il peut s'agir du requérant, de la victime ou d'un témoin. ",,,callbackContact,LT,N° de téléphone sur les lieux,,,1.0,0..1,X,contact,,,X,X,X +81,82,,,Langue parlée,,,,Langue parlée par le requérant. Permet de mettre en place des traducteurs si besoin. Utilise la nomenclature LANGUE du SI-SAMU.,FR,spokenLanguage,language,,,,,,0..1,,string,X,NOMENCLATURE: ISO 3166-ISO3166-2,X,X,X +82,83,,,Type de requérant,,,,Indique la relation du requérant avec l'incident / le patient / la victime,"le patient lui-même, père, mère",,type,,,,,,0..1,,string,,NOMENCLATURE: SI-SAMU-TYPAPPLT,X,X,X +83,84,,,Difficulté de communication,,,,Indique si le requérant rencontre ou non des difficulté de communication,"Malentendant, aucune difficulté de communication",,communication,,,,,,0..1,,string,,NOMENCLATURE: SI-SAMU-PBAPL,X,X,X +84,85,,,Informations complémentaires sur le requérant,,,,"Informations complémentaires sur le requérant +Les informations peuvent être passées sous forme de texte libre ou via une liste d'adjectif",témoin de l'accident,freetext,freetext,CH,Profil appelant,,,1.0,0..1,,string,,,X,X,X +85,86,,,Prénom & nom usuel,,,,,,callerName,detailedName,,,,,,0..1,X,detailedName,,,X,X,X +86,87,,,,Prénom et nom,,,"Prénom et nom usuel du requérant. Si les champs callerLastName et callerFirstName sont renseignés, le champ callerName doit être valorisé ainsi : ""{callerFirstName} {callerLastName}"". Note : NexSIS ne dispose que de ces informations (concaténées) et pas de deux champs séparés.",Jean Dupont,,complete,AN/AP,"Nom -Prénom",,,,1..1,,string,,TEMPLATE: {callerLastName} {callerFirstName},X,X -80,81,,,,Nom,,,Nom du requérant,Dupont,,lastName,,,,,,0..1,,string,,,X,X -81,82,,,,Prénom,,,"Prénom du réquérant. -Par convention les prénoms composés doivent préférablement être séparés par le caractère ""-""",Jean,,firstName,,,,,,0..1,,string,,,X,X -82,83,,Source de l'alerte,,,,,"Source de contact permettant d'identifier le requérant. -Dans le cas où le requérant est à l'origine de l'alerte les objets contactSource et callerContact sont valorisés de la même façon",,source,alertSource,,,,,,1..1,X,contactSource,,,X,X -83,84,,,Canal,,,,"Permet d'indiquer l'origine du canal établit : Personne, application, DAU, BAU, défibrillateur, ecall",Personne,,channel,,,,,,1..1,,string,,,X,X -84,85,,,Type de contact de la source,,,,"Type de l'URI utilisée par la source, cf. nomenclature EMSI",PHNADD,,type,,,,,,1..1,,string,X,"ENUM: PSTADD, EMLADD, IPADD, FTPADD, WWWADD, PHNADD, FAXADD, PMRADD",X,X -85,86,,,URI de contact de la source,,,,Valeur de l'URI utilisée par la source,0671830530,,detail,,,,,,1..1,,string,,,X,X -86,87,,Localisation de l'alerte,# Voir createCase.location (type location),,,,Cet élément peut représenter la localisation du requérant si celle-ci diffère de celle de l'événement ou pointer vers la localisation d'accès à l'affaire si elle est confondue avec celle de l'alerte.,,alertLocation,location,AB/AV/AC/AZ,"Particule et nom de voie, nom/code commune",,,,1..1,X,location,,,X,X -87,88,,Qualification,# Voir qualification,,,,Qualification de l'alerte.,,alertCode,qualification,,,,,,1..1,X,qualification,,,X,X -88,89,,Agent,,,,,Objet permettant d'identifer et recontacter l'opérateur ayant traité l'alerte,,callTaker,callTaker,,,,,,1..1,X,callTaker,,,X,X -89,90,,,Service d'urgence,,,,"Décrit la structure ou le service à laquelle est rattachée l'agent (en fonction du niveau de précision disponible). +Prénom",,,,1..1,,string,,TEMPLATE: {callerLastName} {callerFirstName},X,X,X +87,88,,,,Nom,,,Nom du requérant,Dupont,,lastName,,,,,,0..1,,string,,,X,X,X +88,89,,,,Prénom,,,"Prénom du réquérant. +Par convention les prénoms composés doivent préférablement être séparés par le caractère ""-""",Jean,,firstName,,,,,,0..1,,string,,,X,X,X +91,92,,Agent,,,,,Objet permettant d'identifer et recontacter l'opérateur ayant traité l'alerte,,callTaker,callTaker,,,,,,1..1,X,callTaker,,,X,X, +92,93,,,Service d'urgence,,,,"Décrit la structure ou le service à laquelle est rattachée l'agent (en fonction du niveau de précision disponible). Se référer au DSF pour la structure normée des organisations. -Le format est le suivant {pays}.{domaine}.{organisation}.{structure interne}*.{unité fonctionnelle}*.",fr.health.samu440,organization,,,,,,,1..1,,string,,,X,X -90,91,,,Centre d'appels,,,,Décrit le centre d'appel auquel est rattaché l'agent,"CGA, CGO 21, CRRA 44, ...",controlRoom,,,,,,,1..1,,string,,,X,X -91,92,,,Rôle agent,,,,Décrit le rôle de l'agent au sein du service selon la nomenclature PERSO (nomenclature SI-SAMU),ARM,callTakerRole,role,,,,,,0..1,,string,,,X,X -92,93,,,Contact de l'agent,# Voir callerContact (type contact),,,Objet contact permettant d'indiquer le contact de l'agent,,calltakerURI,calltakerContact,,,,,,0..1,X,contact,,,X,X -93,94,,,ID de l'agent,,,,"Identifiant unique de l'opérateur ayant traité l'alerte (peut être un identifiant technique, un numéro de carte CPS etc)",id1234,calltakerId,,O1,Code de l'opérateur ayant pris l'appel,,,,0..1,,string,,,X,X -94,95,,Pièces jointes,,,,,"Permet d'envoyer tout type de fichiers (photos, vidéos, sons, …) par lien. +Le format est le suivant {pays}.{domaine}.{organisation}.{structure interne}*.{unité fonctionnelle}*.",fr.health.samu440,organization,,,,,,,1..1,,string,,,X,X, +93,94,,,Centre d'appels,,,,Décrit le centre d'appel auquel est rattaché l'agent,"CGA, CGO 21, CRRA 44, ...",controlRoom,,,,,,,1..1,,string,,,X,X, +94,95,,,Rôle agent,,,,Décrit le rôle de l'agent au sein du service selon la nomenclature PERSO (nomenclature SI-SAMU),ARM,callTakerRole,role,,,,,,0..1,,string,,,X,X, +95,96,,,Contact de l'agent,# Voir callerContact (type contact),,,Objet contact permettant d'indiquer le contact de l'agent,,calltakerURI,calltakerContact,,,,,,0..1,X,contact,,,X,X, +96,97,,,ID de l'agent,,,,"Identifiant unique de l'opérateur ayant traité l'alerte (peut être un identifiant technique, un numéro de carte CPS etc)",id1234,calltakerId,,O1,Code de l'opérateur ayant pris l'appel,,,,0..1,,string,,,X,X, +97,98,,Pièces jointes,,,,,"Permet d'envoyer tout type de fichiers (photos, vidéos, sons, …) par lien. Les URI doivent correspondre à des espaces sécurisés auxquels les accès ont déjà été fournies ou doivent être fournies avec des tokens éphémères si besoin de sécuriser l'accès aux ressources tout en en garantissant l'accès par tous les destinataires des messages. -",,resource,attachment,,,,,,0..n,X,attachment,,,X,X -95,96,,,Type ou description pj,,,,"Décrit la ressource en précisant le type et le contenu, tels que «carte» ou «photo»","photo, carte, …",resourceDesc,description,,,,,,0..1,,string,X,,X,X -96,97,,,Type MIME,,,,L'identifiant du type MIME de contenu et sous-type décrivant la ressource,"PDF, XML, JPEG, …",mimeType,,,,,,,0..1,,string,,,X,X -97,98,,,Taille approximative,,,,Taille approximative de la ressource en kO,"1235, 35, …",size,,,,,,,0..1,,integer,,,X,X -98,99,,,URI,,,,"Une URI, généralement une URL, qui permet d'atteindre la ressource sur Internet ou sur un réseau privé -Nous suggérons d'employer le format suivant de regex (https?|ftp|file):\/\/([\w-]+(\.[\w-]+)*)(\/[\w\-\.]*)*\/?(\?[^\s]*)?",https://hub.esante.gouv.fr/resourceExample,URI,,,,,,,1..1,,string,,,X,X -99,100,,,URI base 64,,,,"Peut être utilisé à la place de l'élément 'URI' pour envoyer la ressource encodée en base64 pour éviter des problèmes de transcodage (sur des double quotes qui casseraient le message, …)",,derefURI,,,,,,,0..1,,string,,,X,X -100,101,,,Hash,,,,"Hash de la ressource pour confirmer la réception de la bonne ressource -La ressource est hashée avec le protocole SHA-256",,digest,,,,,,,0..1,,string,,,X,X -101,102,CRRA traitant,,,,,,"Champ servant à transférer la responsabilité du traitement d'un dossier à un autre CRAA / à lui demander de prendre en charge le traitement du dossier. -Le SAMU demandeur entre dans ce champ l'ID du CRAA à qui il demande de traiter l'affaire (uniquement en cas de transfert intégral du traitement d'un dossier). -Le SAMU qui reçoit la demande de transfert et l'accepte renvoie un RC-EDA de mise à jour en laissant son ID dans ce champ + en ajoutant l'ID local du dossier chez lui dans le message. -Le SAMU qui reçoit la demande de transfert et la refuse renvoie un RC-EDA de mise à jour en remettant l'ID du SAMU demandeur dans ce champ + il envoie l'ID local du dossier chez lui.",fr.health.samu440,,owner,,,,,,1..1,,string,,,,X -102,103,Opérateurs impliqués,,,,,,"Si pertinent et si le SAMU émetteur souhaite partager les opérateurs spécifiques à contacter chez lui (ARM Référent, Médecin référent, etc) pour le traitement d'un dossier.",,,operator,,,,,,0..n,X,operator,,,,X -103,104,,Prénom et nom,,,,,Prénom & nom de l'opérateur,,,detailedName,,,,,,0..1,X,detailedName,,,,X -104,105,,ID,,,,,Identifiant professionnel de l'opérateur si existant,,,id,,,,,,0..1,,string,,,,X -105,106,,Rôle,,,,,Rôle de l'opérateur au sein de l'entité émettrice du message,"ARM, Medecin régulateur…",,role,,,,,,1..1,,string,,,,X -106,107,Patient / victime,,,,,,Identification des patients / victimes,,,patient,,,,,,0..n,X,patient,,,X,X -107,108,,ID patient partagé,,,,,Identifiant technique du patient pour permettre les rapprochements d'infos. Le 1er qui créé l'ID patient a raison.,,,id,,,,,,1..1,,string,,,X,X -108,109,,Dossier administratif,,,,,,,,administrativeFile,,,,,,0..1,X,administrativeFile,,,,X -109,110,,,Identifiant(s) patient(s),,,,Identifiant autre que le matricule INS,,,externalId,,,,,,0..n,X,externalId,,,,X -110,111,,,,Source / type d'identifiant,,,Type de l'identifiant fourni,"NIR, SINUS, SI-VIC, …",,source,,,,,,1..1,,string,X,"ENUM: NIR, SINUS, SI-VIC, DOSSARD, PLACE",,X -111,112,,,,Identifiant,,,L'identifiant en lui-même,id1234,,value,,,,,,1..1,,string,,,,X -112,113,,,Contact,# Voir callerContact (type contact),,,Type et valeur des URI utilisées par le patient concerné,,,contact,,,,,,0..n,X,contact,,,,X -113,114,,,Adresse,,,,Voir pour ajouter l'adresse postale du patient uniquement : pas besoin du niveau de détail de l'adresse d'intervention qui est un objet différent,,,personalAddress,,,,,,0..1,X,personalAddress,,,,X -114,115,,,,Détails de l'adresse,# Voir detailedAddress,,,,,detailedAddress,,,,,,0..1,X,detailedAddress,,,,X -115,116,,,,Détails de la commune,# Voir city,,,,,city,,,,,,0..1,X,city,,,,X -116,117,,,Médecin traitant ,,,,,,,generalPractitioner,,,,,,0..1,X,generalPractitioner,,,,X -117,118,,,,Prénom et nom,,,Nom du médecin traitant du patient si connu,,,detailedName,,,,,,1..1,X,detailedName,,,,X -118,119,,,,Identifiant,,,Numéro RPPS du médecin traitant,10000668540,,id,,,,,,0..1,,string,,,,X -119,120,,,,Adresse medecin,# Voir patientAddress (type personalAddress),,,,,personalAddress,,,,,,0..1,X,personalAddress,,,,X -120,121,,,,Contact médecin,# Voir callerContact (type contact),,Type et valeur des URI utilisées par le patient concerné,,,contact,,,,,,0..n,X,contact,,,,X -121,122,,Identité INS,,,,,L'identitée du patient basée sur les règles de l'INS,,,identity,,,,,,0..1,X,insIdentity,,,X,X -122,123,,,Implémentation INS,,,,"Le RNIV exige que les logiciels référentiels d’identités gèrent les 4 statuts fonctionnels suivants : +",,resource,attachment,,,,,,0..n,X,attachment,,,X,X,X +98,99,,,Type ou description pj,,,,"Décrit la ressource en précisant le type et le contenu, tels que «carte» ou «photo»","photo, carte, …",resourceDesc,description,,,,,,0..1,,string,X,,X,X,X +99,100,,,Type MIME,,,,L'identifiant du type MIME de contenu et sous-type décrivant la ressource,"PDF, XML, JPEG, …",mimeType,,,,,,,0..1,,string,,,X,X,X +100,101,,,Taille approximative,,,,Taille approximative de la ressource en kO,"1235, 35, …",size,,,,,,,0..1,,integer,,,X,X,X +101,102,,,URI,,,,"Une URI, généralement une URL, qui permet d'atteindre la ressource sur Internet ou sur un réseau privé +Nous suggérons d'employer le format suivant de regex (https?|ftp|file):\/\/([\w-]+(\.[\w-]+)*)(\/[\w\-\.]*)*\/?(\?[^\s]*)?",https://hub.esante.gouv.fr/resourceExample,URI,,,,,,,1..1,,string,,,X,X,X +102,103,,,URI base 64,,,,"Peut être utilisé à la place de l'élément 'URI' pour envoyer la ressource encodée en base64 pour éviter des problèmes de transcodage (sur des double quotes qui casseraient le message, …)",,derefURI,,,,,,,0..1,,string,,,X,X,X +103,104,,,Hash,,,,"Hash de la ressource pour confirmer la réception de la bonne ressource +La ressource est hashée avec le protocole SHA-256",,digest,,,,,,,0..1,,string,,,X,X,X +104,105,CRRA traitant,,,,,,Champ servant à transférer la prise en charge d'un dossier à un autre CRAA après accord verbal de ce dernier.,fr.health.samu440,,owner,,,,,,1..1,,string,,,,X,X +109,110,Patient / victime,,,,,,Identification des patients / victimes,,,patient,,,,,,0..n,X,patient,,,X,X,X +110,111,,ID patient partagé,,,,,Identifiant technique du patient pour permettre les rapprochements d'infos. Le 1er qui créé l'ID patient a raison.,fr.health.samu044.DRFR15DDXAAJJJ00000.P00,,id,,,,,,1..1,,string,,,X,X,X +111,112,,Dossier administratif,,,,,,,,administrativeFile,,,,,,0..1,X,administrativeFile,,,,X,X +112,113,,,Identifiant(s) patient(s),,,,Identifiant autre que le matricule INS,,,externalId,,,,,,0..n,X,externalId,,,,X,X +113,114,,,,Source / type d'identifiant,,,Type de l'identifiant fourni,"NIR, SINUS, SI-VIC, …",,source,,,,,,1..1,,string,X,"ENUM: NIR, SINUS, SI-VIC, DOSSARD, PLACE",,X,X +114,115,,,,Identifiant,,,L'identifiant en lui-même,id1234,,value,,,,,,1..1,,string,,,,X,X +115,116,,,Contact,# Voir callerContact (type contact),,,Type et valeur des URI utilisées par le patient concerné,,,contact,,,,,,0..n,X,contact,,,,X,X +116,117,,,Adresse,,,,Voir pour ajouter l'adresse postale du patient uniquement : pas besoin du niveau de détail de l'adresse d'intervention qui est un objet différent,,,personalAddress,,,,,,0..1,X,personalAddress,,,,X,X +117,118,,,,Détails de l'adresse,# Voir detailedAddress,,,,,detailedAddress,,,,,,0..1,X,detailedAddress,,,,X,X +118,119,,,,Détails de la commune,# Voir city,,,,,city,,,,,,0..1,X,city,,,,X,X +119,120,,,Médecin traitant ,,,,,,,generalPractitioner,,,,,,0..1,X,generalPractitioner,,,,X,X +120,121,,,,Prénom et nom,,,Nom du médecin traitant du patient si connu,,,detailedName,,,,,,1..1,X,detailedName,,,,X,X +121,122,,,,Identifiant RPPS,,,Numéro RPPS du médecin traitant,10000668540,,id,,,,,,0..1,,string,,,,X,X +122,123,,,,Adresse medecin,# Voir patientAddress (type personalAddress),,,,,personalAddress,,,,,,0..1,X,personalAddress,,,,X,X +123,124,,,,Contact médecin,# Voir callerContact (type contact),,Type et valeur des URI utilisées par le patient concerné,,,contact,,,,,,0..n,X,contact,,,,X,X +124,125,,Identité INS,,,,,L'identitée du patient basée sur les règles de l'INS,,,identity,,,,,,0..1,X,insIdentity,,,X,X,X +125,126,,,Implémentation INS,,,,"Le RNIV exige que les logiciels référentiels d’identités gèrent les 4 statuts fonctionnels suivants : - « identité provisoire », - « identité récupérée », - « identité validée », - « identité qualifiée ». -Ces statuts fonctionnels sont exclusifs les uns des autres. Le référentiel INS [EXI 18] précise en outre que le matricule INS et l’OID doivent être accompagnés d’informations confirmant qu’ils ont été qualifiés.",,,cycle,,,,,,0..1,X,insCycle,,,,X -123,124,,,,Statut de l'identité,,,"Le RNIV exige que les logiciels référentiels d’identités gèrent les 4 statuts fonctionnels suivants : +Ces statuts fonctionnels sont exclusifs les uns des autres. Le référentiel INS [EXI 18] précise en outre que le matricule INS et l’OID doivent être accompagnés d’informations confirmant qu’ils ont été qualifiés.",,,cycle,,,,,,0..1,X,insCycle,,,,X, +126,127,,,,Statut de l'identité,,,"Le RNIV exige que les logiciels référentiels d’identités gèrent les 4 statuts fonctionnels suivants : - « identité provisoire », - « identité récupérée », - « identité validée », - « identité qualifiée ». -Ces statuts fonctionnels sont exclusifs les uns des autres. Le référentiel INS [EXI 18] précise en outre que le matricule INS et l’OID doivent être accompagnés d’informations confirmant qu’ils ont été qualifiés.",,,status,,,,,,0..1,,string,X,"ENUM: Provisoire, Validée, Récupérée, Qualifiée",,X -124,125,,,,Attribut de l'identité,,,"Le RNIV recommande que les logiciels référentiels d’identités gèrent a minima les 3 attributs suivants : +Ces statuts fonctionnels sont exclusifs les uns des autres. Le référentiel INS [EXI 18] précise en outre que le matricule INS et l’OID doivent être accompagnés d’informations confirmant qu’ils ont été qualifiés.",,,status,,,,,,0..1,,string,X,"ENUM: Provisoire, Validée, Récupérée, Qualifiée",,X, +127,128,,,,Attribut de l'identité,,,"Le RNIV recommande que les logiciels référentiels d’identités gèrent a minima les 3 attributs suivants : - identité homonyme, - identité douteuse, -- identité fictive.",,,attribute,,,,,,0..1,,string,X,"ENUM: Homonyme, Fictive, Douteuse",,X -125,126,,,Matricule INS,,,,"n° NIR OU n° NIA de l'individu. Le matricule INS (et son OID) ne doit jamais être propagé (= échangé) si l'identité est à un statut autre que qualifiée. Il correspond au numéro personnel de sécurité sociale. Il peut être différent du numéro de sécurité sociale utilisé pour le remboursement des soins par l’assurance maladie, dans le cas par exemple où l’usager n’est pas l’assuré social (ex.: l’enfant qui est rattaché à l’un de ses parents). -Le matricule INS est composé des 13 caractères et de la clé de contrôle. ",,,number,,,,,,0..1,X,insNumber,,,,X -126,127,,,,Matricule ,,,"n° NIR OU n° NIA de l'individu. Le matricule INS (et son OID) ne doit jamais être propagé (= échangé) si l'identité est à un statut autre que qualifiée. Il correspond au numéro personnel de sécurité sociale. Il peut être différent du numéro de sécurité sociale utilisé pour le remboursement des soins par l’assurance maladie, dans le cas par exemple où l’usager n’est pas l’assuré social (ex.: l’enfant qui est rattaché à l’un de ses parents). -Le matricule INS est composé des 13 caractères et de la clé de contrôle. ",2 77 01 01 154 002 29,,value,,,,,,0..1,,string,,,,X -127,128,,,,OID,,,"Identifiant de la structure qui a affecté l’INS sous la forme d'un OID. Les OID (Object Identifier) sont des identifiants universels, représentés sous la forme d'une suite d'entiers. Ils sont organisés sous forme hiérarchique avec des nœuds. L'OID est toujours associé à un matricule INS, il n'est donc pas propagé si le statut de l'identité n'est pas ""qualifiée""",1.2.250.1.213.1.4.8,,oid,,,,,,0..1,,string,X,,,X -128,129,,,Traits stricts de l'identité,,,,"L’Identité Nationale de Santé (INS) permet de référencer les données de santé avec une identité unique, pérenne, partagée par l'ensemble des professionnels du monde de la santé. +- identité fictive.",,,attribute,,,,,,0..1,,string,X,"ENUM: Homonyme, Fictive, Douteuse",,X, +128,129,,,Matricule INS,,,,"n° NIR OU n° NIA de l'individu. Le matricule INS (et son OID) ne doit jamais être propagé (= échangé) si l'identité est à un statut autre que qualifiée. Il correspond au numéro personnel de sécurité sociale. Il peut être différent du numéro de sécurité sociale utilisé pour le remboursement des soins par l’assurance maladie, dans le cas par exemple où l’usager n’est pas l’assuré social (ex.: l’enfant qui est rattaché à l’un de ses parents). +Le matricule INS est composé des 13 caractères et de la clé de contrôle. ",,,number,,,,,,0..1,X,insNumber,,,,X, +129,130,,,,Matricule ,,,"n° NIR OU n° NIA de l'individu. Le matricule INS (et son OID) ne doit jamais être propagé (= échangé) si l'identité est à un statut autre que qualifiée. Il correspond au numéro personnel de sécurité sociale. Il peut être différent du numéro de sécurité sociale utilisé pour le remboursement des soins par l’assurance maladie, dans le cas par exemple où l’usager n’est pas l’assuré social (ex.: l’enfant qui est rattaché à l’un de ses parents). +Le matricule INS est composé des 13 caractères et de la clé de contrôle. ",2 77 01 01 154 002 29,,value,,,,,,0..1,,string,,,,X, +130,131,,,,OID,,,"Identifiant de la structure qui a affecté l’INS sous la forme d'un OID. Les OID (Object Identifier) sont des identifiants universels, représentés sous la forme d'une suite d'entiers. Ils sont organisés sous forme hiérarchique avec des nœuds. L'OID est toujours associé à un matricule INS, il n'est donc pas propagé si le statut de l'identité n'est pas ""qualifiée""",1.2.250.1.213.1.4.8,,oid,,,,,,0..1,,string,X,,,X, +131,132,,,Traits stricts de l'identité,,,,"L’Identité Nationale de Santé (INS) permet de référencer les données de santé avec une identité unique, pérenne, partagée par l'ensemble des professionnels du monde de la santé. Elle est composée : - Du matricule INS (NIR - numéro d’inscription au répertoire national des personnes physiques - ou NIA – numéro identifiant attente - de l’individu). Concrètement, ce numéro correspond au numéro de sécurité sociale pour les ouvrants-droits, c’est-à-dire la très grande majorité des personnes majeures. Pour les autres assurés, ce numéro figure sur leur attestation de sécurité sociale et sera affiché dans l’espace numérique de santé (Mon espace santé) ; -- Des cinq traits stricts de référence (nom de naissance, prénom(s) de naissance, date de naissance, sexe, lieu de naissance).",,,strictFeatures,,,,,,0..1,X,insStrictFeatures,,,X,X -129,130,,,,Nom de naissance,,,Egalement appelé nom de famille.,Dupont,,birthName,,,,,,0..1,,string,,,,X -130,131,,,,Premier prénom de naissance,,,"Doit être cohérent avec la liste des prénoms de naissance renvoyée par INSi. Ex: si la liste des prénoms renvoyée est ""Pierre Alain Jacques"", le premier prénom de naissance ne peut être que : +- Des cinq traits stricts de référence (nom de naissance, prénom(s) de naissance, date de naissance, sexe, lieu de naissance).",,,strictFeatures,,,,,,0..1,X,insStrictFeatures,,,X,X,X +132,133,,,,Nom de naissance,,,Egalement appelé nom de famille.,Dupont,,birthName,,,,,,0..1,,string,,,,X,X +133,134,,,,Premier prénom de naissance,,,"Doit être cohérent avec la liste des prénoms de naissance renvoyée par INSi. Ex: si la liste des prénoms renvoyée est ""Pierre Alain Jacques"", le premier prénom de naissance ne peut être que : Pierre Pierre Alain -Pierre Alain Jacques",,,birthFirstName,,,,,,0..1,,string,,,,X -131,132,,,,Liste des prénoms de naissance,,,Ensemble des prénoms de naissance (renvoyés par INSi),,,birthFirstNamesList,,,,,,0..1,,string,,,,X -132,133,,,,Date de naissance,,,Date de naissance du patient,,,birthDate,,,,,,0..1,,date,,,X,X -133,134,,,,Sexe ,,,Sexe du patient,F,,sex,,,,,,0..1,,string,X,,X,X -134,135,,,,Code lieu de naissance,,,"Il s’agit de la commune de naissance pour les personnes nées en France et du pays de naissance pour les personnes nées à l’étranger. Utilisation du code INSEE (différent du code postal), auquel est associé le nom de la commune ou du pays correspondant.",,,birthPlaceCode,,,,,,0..1,,number,,,,X -135,136,,,Traits non stricts de l'identité,# Voir detailedName,,,Prénom et nom usuels,,,nonStrictFeatures,,,,,,0..1,X,detailedName,,,X,X -136,137,,Motif de recours médico-secouriste,# Voir whatsHappen (type nomenclature),,,,Décrit le motif de recours médico-secouriste spécifique au patient concerné (MR). Référentiel : nomenclature CISU.,,,healthMotive,,,,,,0..1,X,nomenclature,,,,X -137,138,,Informations patient,,,,,,,,detail,,,,,,0..1,X,patientDetail,,,,X -138,139,,,Poids,,,,Poids en kilogrammes,31,,weight,,,,,,0..1,,integer,,,,X -139,140,,,Taille,,,,Taille en centimètres,109,,height,,,,,,0..1,,integer,,,,X -140,141,,,Age,,,,"Age du patient. -Au format Durée de la norme ISO 8601 (https://fr.wikipedia.org/wiki/ISO_8601#Dur%C3%A9e) en n'utilisant qu'une seule unité de durée (années, mois, semaines ou jours)",P6Y,,age,,,,,,0..1,,string,,"REGEX: P[0-9]{1,3}[YMWD]",,X -141,142,,,Niveau de soin,,,,,R1,,careLevel,,,,,,0..1,,string,X,,,X -142,143,,Hypothèses de régulation médicale,,,,,,,,hypothesis,,,,,,0..1,X,hypothesis,,,,X -143,144,,,Hypothèse de régulation médicale principale,# Voir whatsHappen (type nomenclature),,,Hypothese diagnostique principale émise par le médecin régulateur du CRAA,,,mainDiagnosis,,,,,,0..1,X,nomenclature,X,,,X -144,145,,,Hypothèses de régulation médicale secondaires,# Voir whatsHappen (type nomenclature),,,Hypotheses diagnostiques secondaires émises par le médecin régulateur du CRAA,,,otherDiagnosis,,,,,,0..n,X,nomenclature,X,,,X -145,146,,Diagnostic de l'effecteur,# Voir whatsHappen (type nomenclature),,,,"Diagnostic posé par le médecin effecteur qui se trouve sur les lieux de l'affaire, ou diagnostic par le médecin régulateur après avoir reçu le retour de l'effecteur",,,resourceDiagnosis,,,,,,0..1,X,nomenclature,X,,,X -146,147,Interrogatoire médical,,,,,,Interrogatoire médical. Aussi appelé note de régulation médicale.,,,medicalNote,,,,,,0..n,X,medicalNote,,,,X -147,155,,ID patient partagé,,,,,"ID partagé du patient concerné, lorsque le patient existe et est identifié",,,id,,,,,,0..1,,string,,,,X -148,148,,Professionnel de santé qui réalise l'interrogatoire,# Voir operator,,,,Professionnel de santé qui réalise l'interrogatoire médical. ,,,operator,,,,,,0..1,X,operator,,,,X -149,149,,Date Heure de création de l'interrogatoire,,,,,Groupe date heure de création de l'interrogatoire. L'indicateur de fuseau horaire Z ne doit pas être utilisé.,2022-09-27T08:23:34+02:00,,creation,,,,,,1..1,,datetime,,Format datetime décrit dans le DSF,,X -150,150,,Observations et commentaires,,,,,"Observations médicales du professionnel de santé qui réalise l'interrogatoire (texte libre) -Champ à utiliser pour aggréger l'ensemble des antécédents /traitements/allergies du patient si les catégories ne sont pas disctinctes dans le LRM",,,freetext,,,,,,1..1,,string,,,,X -151,151,,Antécédents,,,,,Texte libre pour décrire les antécédents du patient,,,medicalHistory,,,,,,0..1,,string,,,,X -152,152,,Traitements,,,,,Texte libre pour décrire les traitements du patient,,,treatments,,,,,,0..1,,string,,,,X -153,153,,Allergies,,,,,Texte libre pour décrire les allergies du patient,,,allergies,,,,,,0..1,,string,,,,X -154,154,Décisions,,,,,,Mesures prises par le Samu-Centre 15 en réponse à la demande exprimée en fonction de l’événement et de la situation du ou des patients,,,decision,,,,,,0..n,X,decision,,,X,X -155,155,,ID patient partagé,,,,,"ID partagé du patient concerné, lorsque le patient existe et est identifié",,,id,,,,,,0..1,,string,,,X,X -156,157,,Date Heure de création de la décision,,,,,Groupe date heure de création de la décision. L'indicateur de fuseau horaire Z ne doit pas être utilisé.,2022-09-27T08:23:34+02:00,,creation,,,,,,1..1,,datetime,,,X,X -157,158,,Type de décision,,,,,Type de décision prise,conseil médical / décision d’intervention / décision d’orientation et de transport / Pas de décision supplémentaire,,type,,,,,,0..1,,string,X,,X,X -158,159,,Orientation,,,,,Décision(s) d'orientation prise par le médecin régulateur,,,orientation,,,,,,0..1,,string,X,,X,X -159,160,,Type de transport,,,,,Type de transport à engager pour la prise en charge du patient,SMUR ,,transportation,,,,,,0..n,,string,,,X,X -160,161,,Niveau de prise en charge,,,,,"Type d’équipe (médical, paramédicale, non médicale, standard, incomplete, ...)","Médical, paramédical, secouriste",,teamCare,,,,,,0..1,,string,,,X,X -161,162,,Destination,,,,,,,,destination,,,,,,0..1,X,destination,,,X,X -162,163,,,Type de destination,,,,"Indique le type de destination de la ressource : service d’urgences d’un Etablissement de santé, autres services d’un établissement de santé, cabinet d’un professionnel de santé, domicile personnel, EPHAD ou long séjour, autre",,,type,,,,,,0..1,,string,X,"ENUM: service d’urgences d’un Etablissement de santé, autres services d’un établissement de santé, cabinet d’un professionnel de santé, domicile personnel, EPHAD ou long séjour, autre",X,X -163,165,,,Etablissement,,,,Nom de l'établissement,,,facility,,,,,,0..1,,string,,,X,X -164,166,,,FINESS administratif,,,,N° Finess administratif de l'établissement,,,adminFiness,,,,,,0..1,,string,,,X,X -165,167,,,FINESS géographique,,,,N° Finess géographique de l'établissement,,,geoFiness,,,,,,0..1,,string,,,X,X -166,168,,,Service,,,,Service concerné par l'admission du patient,,,service,,,,,,0..1,,string,,,X,X -167,170,,,Autre,,,,,,,freetext,,,,,,0..1,,string,,,X,X -168,171,Nouvelle alerte,# Voir alerte initiale,,,,,"Lorsque plusieurs alertes correspondent à une même affaire/dossier, la première alerte reçue est appelée Alerte initial ""initialAlert"", la seconde et les suivantes sont des objets ""newAlert"". +Pierre Alain Jacques",,,birthFirstName,,,,,,0..1,,string,,,,X, +134,135,,,,Liste des prénoms de naissance,,,Ensemble des prénoms de naissance (renvoyés par INSi),,,birthFirstNamesList,,,,,,0..1,,string,,,,X, +135,136,,,,Date de naissance,,,Date de naissance du patient,,,birthDate,,,,,,0..1,,date,,,X,X,X +136,137,,,,Sexe ,,,Sexe du patient,F,,sex,,,,,,0..1,,string,X,NOMENCLATURE: SI-SAMU-NOMENC_SEXE,X,X,X +137,138,,,,Code lieu de naissance,,,"Il s’agit de la commune de naissance pour les personnes nées en France et du pays de naissance pour les personnes nées à l’étranger. Utilisation du code INSEE (différent du code postal), auquel est associé le nom de la commune ou du pays correspondant.",,,birthPlaceCode,,,,,,0..1,,number,,,,X, +138,139,,,Traits non stricts de l'identité,# Voir detailedName,,,Prénom et nom usuels,,,nonStrictFeatures,,,,,,0..1,X,detailedName,,,X,X,X +139,140,,Motif de recours médico-secouriste,# Voir whatsHappen (type codeAndLabel),,,,Décrit le motif de recours médico-secouriste spécifique au patient concerné (MR). Référentiel : nomenclature CISU.,,,healthMotive,,,,,,0..1,X,codeAndLabel,,NOMENCLATURE: CISU-Code_Motif_patient-victime,,X, +140,141,,Informations patient,,,,,,,,detail,,,,,,0..1,X,patientDetail,,,,X,X +141,142,,,Poids,,,,Poids en kilogrammes,31,,weight,,,,,,0..1,,integer,,,,X,X +142,143,,,Taille,,,,Taille en centimètres,109,,height,,,,,,0..1,,integer,,,,X,X +143,144,,,Age,,,,"Age du patient. +Au format Durée de la norme ISO 8601 (https://fr.wikipedia.org/wiki/ISO_8601#Dur%C3%A9e) en n'utilisant qu'une seule unité de durée (années, mois, semaines ou jours)",P6Y,,age,,,,,,0..1,,string,,"REGEX: P[0-9]{1,3}[YMWD]",,X,X +144,145,,,Niveau de soin,,,,,R1,,careLevel,,,,,,0..1,,string,X,NOMENCLATURE: SI-SAMU-GRAVITE,,X, +145,146,,Hypothèses de régulation médicale,,,,,,,,hypothesis,,,,,,0..1,X,hypothesis,,,,X,X +146,147,,,Hypothèse de régulation médicale principale,# Voir whatsHappen (type codeAndLabel),,,Hypothese diagnostique principale émise par le médecin régulateur du CRAA,,,mainDiagnosis,,,,,,0..1,X,codeAndLabel,X,,,X,X +147,148,,,Hypothèses de régulation médicale secondaires,# Voir whatsHappen (type codeAndLabel),,,Hypotheses diagnostiques secondaires émises par le médecin régulateur du CRAA,,,otherDiagnosis,,,,,,0..n,X,codeAndLabel,X,,,X,X +149,150,,Informations complémentaires sur le patient,,,,,Correspond à la zone de commentaire renseigné par patient créé/identifié,,,freetext,,,,,,0..n,,string,,,X,X,X +150,151,Interrogatoire médical,,,,,,Interrogatoire médical. Aussi appelé note de régulation médicale.,,,medicalNote,,,,,,0..n,X,medicalNote,,,,X,X +151,152,,ID patient partagé,,,,,"ID partagé du patient concerné, lorsque le patient existe et est identifié",,,id,,,,,,0..1,,string,,,,X,X +152,153,,Professionnel de santé qui réalise l'interrogatoire,,,,,Professionnel de santé qui réalise l'interrogatoire médical. ,,,operator,,,,,,0..1,X,operator,,,,X,X +153,154,,,Prénom et nom,,,,Prénom & nom de l'opérateur,,,detailedName,,,,,,0..1,X,detailedName,,,,X,X +154,155,,,ID,,,,Identifiant professionnel de l'opérateur si existant,,,id,,,,,,0..1,,string,,,,X,X +155,156,,,Rôle,,,,Rôle de l'opérateur au sein de l'entité émettrice du message,"ARM, Medecin régulateur…",,role,,,,,,1..1,,string,,,,X,X +156,157,,Date Heure de création de l'interrogatoire,,,,,Groupe date heure de création de l'interrogatoire. L'indicateur de fuseau horaire Z ne doit pas être utilisé.,2022-09-27T08:23:34+02:00,,creation,,,,,,1..1,,datetime,,,,X,X +157,158,,Observations et commentaires,,,,,"Observations médicales du professionnel de santé qui réalise l'interrogatoire (texte libre) +Champ à utiliser pour aggréger l'ensemble des antécédents /traitements/allergies du patient si les catégories ne sont pas disctinctes dans le LRM",,,freetext,,,,,,1..1,,string,,,,X,X +158,159,,Antécédents,,,,,Texte libre pour décrire les antécédents du patient,,,medicalHistory,,,,,,0..1,,string,,,,X,X +159,160,,Traitements,,,,,Texte libre pour décrire les traitements du patient,,,treatments,,,,,,0..1,,string,,,,X,X +160,161,,Allergies,,,,,Texte libre pour décrire les allergies du patient,,,allergies,,,,,,0..1,,string,,,,X,X +161,162,Décisions,,,,,,Mesures prises par le Samu-Centre 15 en réponse à la demande exprimée en fonction de l’événement et de la situation du ou des patients,,,decision,,,,,,0..n,X,decision,,,X,X,X +162,163,,ID patient partagé,,,,,"ID partagé du patient concerné par la décision, lorsque le patient existe et est identifié",,,id,,,,,,0..1,,string,,,X,X,X +163,164,,Date Heure de création de la décision,,,,,Groupe date heure de création de la décision. L'indicateur de fuseau horaire Z ne doit pas être utilisé.,2022-09-27T08:23:34+02:00,,creation,,,,,,1..1,,datetime,,,X,X,X +164,165,,Type de décision,,,,,Type de décision prise,conseil médical / décision d’intervention / décision d’orientation et de transport / Pas de décision supplémentaire,,type,,,,,,1..1,,string,X,NOMENCLATURE: SI-SAMU-TYPEDEC,X,X,X +165,166,,Décision d'engagement,,,,,Partage de l'équipe à engager sur le lieu de l'intervention,,,engagementDetails,,,,,,0..1,X,engagementDetails,,,,X,X +166,167,,,Type de moyen,,,,détaille le moyen à engager,"SMUR, Pompiers",,categoryType,,,,,,1..1,,string,X,NOMENCLATURE : TYPE_MOYEN,,X,X +167,168,,,Type de vecteur,,,,détaille le type de vecteur à engager,"AR, VLM, VSAV",,resourceType,,,,,,0..1,,string,X,NOMENCLATURE : TYPE_VECTEUR,,X,X +168,169,,,ID vecteur ,,,,,,,resourceId,,,,,,0..1,,string,,,,X,X +169,170,,,Niveau de prise en charge,,,,"Type d’équipe (médical, paramédicale, non médicale, standard, incomplete, ...)","Médical, paramédical, secouriste",,teamCareInitial,,,,,,1..1,,string,,NOMENCLATURE : NIVSOIN,,X,X +170,171,,Décision de transport/orientation,,,,,,,,transportDetails,,,,,,0..1,X,transportDetails,,,X,X,X +171,172,,,Type de devenir du patient,,,,"Décision(s) d'orientation prise par le médecin régulateur : +- A transporter +- Laisser sur place","laissé sur place, décédé, ou transporté",,orientation,,,,,,1..1,,string,X,,X,X,X +172,173,,,ID demande de concours/de ressources,,,,Identifiant de la ou des demandes de concours ,,,concoursRequest,,,,,,0..1,,string,,,X,X, +173,174,,,ID vecteur partagé,,,,"Identifiant du véhicule terrestre / aérien / maritime de transport principal (= celui dans lequel se trouve le patient), permettant d'associer la décision à un véhicule spécifique + au patient. ",,,transportationID,,,,,,0..1,,string,,,X,X,X +174,175,,,Niveau de prise en charge,,,,"Type d’équipe (médical, paramédicale, non médicale, standard, incomplete, ...)","Médical, paramédical, secouriste",,teamCare,,,,,,1..1,,string,,NOMENCLATURE : NIVSOIN,X,X,X +175,176,,,Destination,,,,,,,destination,,,,,,0..1,X,destination,,,X,X,X +176,177,,,,Type de destination,,,"Indique le type de destination de la ressource : service d’urgences d’un Etablissement de santé, autres services d’un établissement de santé, cabinet d’un professionnel de santé, domicile personnel, EPHAD ou long séjour, autre",,,type,,,,,,0..1,,string,X,"ENUM: service d’urgences d’un Etablissement de santé, autres services d’un établissement de santé, cabinet d’un professionnel de santé, domicile personnel, EPHAD ou long séjour, autre",X,X,X +177,178,,,,Localisation de la destination,# Voir type location,,,,,destinationLocation,,,,,,0..1,X,location,,,X,X,X +178,179,Nouvelle alerte,# Voir alerte initiale,,,,,"Lorsque plusieurs alertes correspondent à une même affaire/dossier, la première alerte reçue est appelée Alerte initial ""initialAlert"", la seconde et les suivantes sont des objets ""newAlert"". Les objet newAlert suivent le modèle d'un objet initialAlert -Dans le cadre d'une mise à jour d'affaire, les objets alertes sont IMMUTABLES.",,otherAlert,newAlert,,,,,1.0,0..n,X,alert,,,X,X -169,172,Informations complémentaires,,,,,,,,,additionalInformation,,,,,,0..1,X,additionalInformation,,,X,X -170,173,,Clé valeur adaptable,,,,,Permet de rajouter quelques paires de champs,,,customMap,,,,,,0..3,X,customMap,,,X,X -171,174,,,Clé,,,,Nom de la balise,neighborhood,,key,,,,,,1..1,,string,,,X,X -172,176,,,Libellé,,,,Libellé correspondant,Quartier,,label,,,,,,0..1,,string,,,X,X -173,177,,,Valeur,,,,Valeur associée à la clé,LYON 2e arrondissement,,value,,,,,,1..1,,string,,,X,X -174,178,,,Détails,,,,Informations complémentaires sur le contexte / utilisation de ce matching additionnel,Précision sur le quartier d'intervention,,freetext,,,,,,0..1,,string,,,X,X -175,179,Description de l'affaire/dossier,,,,,,Texte libre permettant de donner des informations supplémentaires concernant l'affaire,,,freetext,,,,,,0..1,,string,,,X,X +15-18 : Dans le cadre d'une mise à jour d'affaire, les objets alertes sont IMMUTABLES.",,otherAlert,newAlert,,,,,1.0,0..n,X,alert,,,X,X, +179,180,Informations complémentaires,,,,,,,,,additionalInformation,,,,,,0..1,X,additionalInformation,,,X,X,X +180,181,,Clé valeur adaptable,,,,,Permet de rajouter quelques paires de champs,,,customMap,,,,,,0..3,X,customMap,,,X,X,X +181,182,,,Clé,,,,Nom de la balise,neighborhood,,key,,,,,,1..1,,string,,,X,X,X +182,183,,,Libellé,,,,Libellé correspondant,Quartier,,label,,,,,,0..1,,string,,,X,X,X +183,184,,,Valeur,,,,Valeur associée à la clé,LYON 2e arrondissement,,value,,,,,,1..1,,string,,,X,X,X +184,185,,,Détails,,,,Informations complémentaires sur le contexte / utilisation de ce matching additionnel,Précision sur le quartier d'intervention,,freetext,,,,,,0..1,,string,,,X,X,X +185,186,Description de l'affaire/dossier,,,,,,"Texte libre permettant de donner des informations supplémentaires concernant l'affaire/dossier. Ces informations sont générales, et ont vocation à être échangées en inter-force. ",Le forcené n'est pas maîtrisé. Voiture renversée. Urgences fermées de 22h à 6h00.,,freetext,,,,,,0..n,,string,,,X,X,X diff --git a/csv_parser/out/RS-EDA/RS-EDA.schema.docx b/csv_parser/out/RS-EDA/RS-EDA.schema.docx index ad7e66878..0f259338f 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 b/csv_parser/out/RS-EDA/RS-EDA.uml_diagram index fabb30173..586cc8d95 100644 --- a/csv_parser/out/RS-EDA/RS-EDA.uml_diagram +++ b/csv_parser/out/RS-EDA/RS-EDA.uml_diagram @@ -7,28 +7,28 @@ strict digraph { whatsHappen - objet whatsHappencode string : [1..1] label string : [1..1] freetext string : [0..1] + objet whatsHappencode string : [1..1] label string : [1..1] >] whatsHappen -> qualification [headlabel=1 taillabel=1] locationKind [label=< - +
locationKind
objet locationKind
code string : [1..1]
label string : [1..1]
freetext string : [0..1]
objet locationKind
code string : [1..1]
label string : [1..1]
>] locationKind -> qualification [headlabel=1 taillabel="0..1"] riskThreat [label=< - +
riskThreat
objet riskThreat
code string : [1..1]
label string : [1..1]
freetext string : [0..1]
objet riskThreat
code string : [1..1]
label string : [1..1]
>] riskThreat -> qualification [headlabel=1 taillabel="0..*"] healthMotive [label=< - +
healthMotive
objet healthMotive
code string : [1..1]
label string : [1..1]
freetext string : [0..1]
objet healthMotive
code string : [1..1]
label string : [1..1]
>] healthMotive -> qualification [headlabel=1 taillabel="0..1"] details [label=< @@ -38,13 +38,6 @@ strict digraph {
objet caseDetails
status string : [0..1] 15-15
type string : [0..1] 15-15
attribution string : [0..1] 15-15
priority string : [0..1] 15-15
>] details -> qualification [headlabel=1 taillabel="0..1"] - victims [label=< - - - - -
victims
objet victims
count string : [0..1]
mainVictim string : [0..1]
freetext string : [0..1]
>] - victims -> qualification [headlabel=1 taillabel="0..1"] qualification [label=< @@ -52,6 +45,13 @@ strict digraph {
qualification
objet qualification
>] qualification -> createCaseHealth [headlabel=1 taillabel=1] + externalLocationId [label=< + + + + +
externalLocationId
objet externalLocationId
source string : [1..1]
value string : [1..1]
>] + externalLocationId -> location [headlabel=1 taillabel="0..*"] wayName [label=< @@ -115,18 +115,25 @@ strict digraph {
wayName
objet location
locID string : [1..1]
locLabel string : [0..1]
name string : [0..1]
country string : [1..1]
freetext string : [0..1]
>] location -> createCaseHealth [headlabel=1 taillabel=1] + notes [label=< + + + + +
notes
objet notes
creation date-time : [0..1]
freetext string : [0..1]
>] + notes -> initialAlert [headlabel=1 taillabel="0..*"] callerContact [label=< - +
callerContact
objet contact
type string : [1..1]
detail string : [1..1]
objet contact
channel string : [1..1]
type string : [1..1]
detail string : [1..1]
>] - callerContact -> caller [headlabel=1 taillabel="0..1"] + callerContact -> caller [headlabel=1 taillabel=1] callbackContact [label=< - +
callbackContact
objet contact
type string : [1..1]
detail string : [1..1]
objet contact
channel string : [1..1]
type string : [1..1]
detail string : [1..1]
>] callbackContact -> caller [headlabel=1 taillabel="0..1"] detailedName [label=< @@ -143,130 +150,11 @@ strict digraph {
objet caller
language string : [0..1]
type string : [0..1]
communication string : [0..1]
freetext string : [0..1]
>] caller -> initialAlert [headlabel=1 taillabel=1] - alertSource [label=< - - - - -
alertSource
objet contactSource
channel string : [1..1]
type string : [1..1]
detail string : [1..1]
>] - alertSource -> initialAlert [headlabel=1 taillabel=1] - wayName [label=< - - - - -
wayName
objet wayName
complete string : [1..1]
type string : [0..1]
name string : [0..1]
>] - wayName -> detailedAddress [headlabel=1 taillabel="0..1"] - detailedAddress [label=< - - - - -
detailedAddress
objet detailedAddress
complete string : [1..1]
number string : [0..1]
>] - detailedAddress -> location [headlabel=1 taillabel="0..1"] - city [label=< - - - - -
city
objet city
name string : [0..1]
inseeCode string : [0..1]
detail string : [0..1]
>] - city -> location [headlabel=1 taillabel="0..1"] - access [label=< - - - - -
access
objet access
floor string : [0..1]
roomNumber string : [0..1]
interphone string : [0..1]
accessCode string : [0..*]
elevator string : [0..1]
buildingName string : [0..1]
entrance string : [0..1]
entity string : [0..1]
phoneNumber number : [0..1]
>] - access -> location [headlabel=1 taillabel="0..1"] - coord [label=< - - - - -
coord
objet coord
lat number : [1..1]
lon number : [1..1]
height number : [0..1]
heading number : [0..1]
speed number : [0..1]
precision string : [1..1]
>] - coord -> point [headlabel=1 taillabel=1] - point [label=< - - - - -
point
objet point
sysCoord string : [0..1]
>] - point -> geometry [headlabel=1 taillabel="0..1"] - geometry [label=< - - - - -
geometry
objet geometry
obsDatime date-time : [1..1]
sketch string : [0..1]
>] - geometry -> location [headlabel=1 taillabel="0..1"] - externalInfo [label=< - - - - -
externalInfo
objet externalInfo
freetext string : [1..1]
type string : [1..1]
uri string : [1..1]
>] - externalInfo -> location [headlabel=1 taillabel="0..*"] - location [label=< - - - - -
location
objet location
locID string : [1..1]
locLabel string : [0..1]
name string : [0..1]
country string : [1..1]
freetext string : [0..1]
>] - location -> initialAlert [headlabel=1 taillabel=1] - whatsHappen [label=< - - - - -
whatsHappen
objet whatsHappen
code string : [1..1]
label string : [1..1]
freetext string : [0..1]
>] - whatsHappen -> qualification [headlabel=1 taillabel=1] - locationKind [label=< - - - - -
locationKind
objet locationKind
code string : [1..1]
label string : [1..1]
freetext string : [0..1]
>] - locationKind -> qualification [headlabel=1 taillabel="0..1"] - riskThreat [label=< - - - - -
riskThreat
objet riskThreat
code string : [1..1]
label string : [1..1]
freetext string : [0..1]
>] - riskThreat -> qualification [headlabel=1 taillabel="0..*"] - healthMotive [label=< - - - - -
healthMotive
objet healthMotive
code string : [1..1]
label string : [1..1]
freetext string : [0..1]
>] - healthMotive -> qualification [headlabel=1 taillabel="0..1"] - details [label=< - - - - -
details
objet caseDetails
status string : [0..1] 15-15
type string : [0..1] 15-15
attribution string : [0..1] 15-15
priority string : [0..1] 15-15
>] - details -> qualification [headlabel=1 taillabel="0..1"] - victims [label=< - - - - -
victims
objet victims
count string : [0..1]
mainVictim string : [0..1]
freetext string : [0..1]
>] - victims -> qualification [headlabel=1 taillabel="0..1"] - qualification [label=< - - - - -
qualification
objet qualification
>] - qualification -> initialAlert [headlabel=1 taillabel=1] calltakerContact [label=< - +
calltakerContact
objet contact
type string : [1..1]
detail string : [1..1]
objet contact
channel string : [1..1]
type string : [1..1]
detail string : [1..1]
>] calltakerContact -> callTaker [headlabel=1 taillabel="0..1"] callTaker [label=< @@ -287,23 +175,9 @@ strict digraph { - +
initialAlert
objet alert
id string : [1..1]
reception date-time : [1..1]
reporting string : [1..1]
freetext string : [0..1]
objet alert
id string : [1..1]
reception date-time : [1..1]
reporting string : [1..1]
>] initialAlert -> createCaseHealth [headlabel=1 taillabel="0..1"] - detailedName [label=< - - - - -
detailedName
objet detailedName
complete string : [1..1]
lastName string : [0..1]
firstName string : [0..1]
>] - detailedName -> operator [headlabel=1 taillabel="0..1"] - operator [label=< - - - - -
operator
objet operator
id string : [0..1] 15-15
role string : [1..1] 15-15
>] - operator -> createCaseHealth [headlabel=1 taillabel="0..*"] externalId [label=< @@ -315,7 +189,7 @@ strict digraph { - +
externalId
contact
objet contact
type string : [1..1]
detail string : [1..1]
objet contact
channel string : [1..1]
type string : [1..1]
detail string : [1..1]
>] contact -> administrativeFile [headlabel=1 taillabel="0..*"] wayName [label=< @@ -385,7 +259,7 @@ strict digraph { - +
contact
objet contact
type string : [1..1]
detail string : [1..1]
objet contact
channel string : [1..1]
type string : [1..1]
detail string : [1..1]
>] contact -> generalPractitioner [headlabel=1 taillabel="0..*"] generalPractitioner [label=< @@ -441,7 +315,7 @@ strict digraph { - +
healthMotive
objet healthMotive
code string : [1..1]
label string : [1..1]
freetext string : [0..1]
objet healthMotive
code string : [1..1]
label string : [1..1]
>] healthMotive -> patient [headlabel=1 taillabel="0..1"] detail [label=< @@ -455,14 +329,14 @@ strict digraph { - +
mainDiagnosis
objet mainDiagnosis
code string : [1..1]
label string : [1..1]
freetext string : [0..1]
objet mainDiagnosis
code string : [1..1]
label string : [1..1]
>] mainDiagnosis -> hypothesis [headlabel=1 taillabel="0..1"] otherDiagnosis [label=< - +
otherDiagnosis
objet otherDiagnosis
code string : [1..1]
label string : [1..1]
freetext string : [0..1]
objet otherDiagnosis
code string : [1..1]
label string : [1..1]
>] otherDiagnosis -> hypothesis [headlabel=1 taillabel="0..*"] hypothesis [label=< @@ -472,18 +346,11 @@ strict digraph {
objet hypothesis
>] hypothesis -> patient [headlabel=1 taillabel="0..1"] - resourceDiagnosis [label=< - - - - -
resourceDiagnosis
objet resourceDiagnosis
code string : [1..1]
label string : [1..1]
freetext string : [0..1]
>] - resourceDiagnosis -> patient [headlabel=1 taillabel="0..1"] patient [label=< - +
patient
objet patient
id string : [1..1]
objet patient
id string : [1..1]
freetext string : [0..*]
>] patient -> createCaseHealth [headlabel=1 taillabel="0..*"] detailedName [label=< @@ -507,18 +374,102 @@ strict digraph {
objet medicalNote
id string : [0..1] 15-15
creation date-time : [1..1] 15-15
freetext string : [1..1] 15-15
medicalHistory string : [0..1] 15-15
treatments string : [0..1] 15-15
allergies string : [0..1] 15-15
>] medicalNote -> createCaseHealth [headlabel=1 taillabel="0..*"] + engagementDetails [label=< + + + + +
engagementDetails
objet engagementDetails
categoryType string : [1..1] 15-15
resourceType string : [0..1] 15-15
resourceId string : [0..1] 15-15
teamCareInitial string : [1..1] 15-15
>] + engagementDetails -> decision [headlabel=1 taillabel="0..1"] + externalLocationId [label=< + + + + +
externalLocationId
objet externalLocationId
source string : [1..1]
value string : [1..1]
>] + externalLocationId -> destinationLocation [headlabel=1 taillabel="0..*"] + wayName [label=< + + + + +
wayName
objet wayName
complete string : [1..1]
type string : [0..1]
name string : [0..1]
>] + wayName -> detailedAddress [headlabel=1 taillabel="0..1"] + detailedAddress [label=< + + + + +
detailedAddress
objet detailedAddress
complete string : [1..1]
number string : [0..1]
>] + detailedAddress -> destinationLocation [headlabel=1 taillabel="0..1"] + city [label=< + + + + +
city
objet city
name string : [0..1]
inseeCode string : [0..1]
detail string : [0..1]
>] + city -> destinationLocation [headlabel=1 taillabel="0..1"] + access [label=< + + + + +
access
objet access
floor string : [0..1]
roomNumber string : [0..1]
interphone string : [0..1]
accessCode string : [0..*]
elevator string : [0..1]
buildingName string : [0..1]
entrance string : [0..1]
entity string : [0..1]
phoneNumber number : [0..1]
>] + access -> destinationLocation [headlabel=1 taillabel="0..1"] + coord [label=< + + + + +
coord
objet coord
lat number : [1..1]
lon number : [1..1]
height number : [0..1]
heading number : [0..1]
speed number : [0..1]
precision string : [1..1]
>] + coord -> point [headlabel=1 taillabel=1] + point [label=< + + + + +
point
objet point
sysCoord string : [0..1]
>] + point -> geometry [headlabel=1 taillabel="0..1"] + geometry [label=< + + + + +
geometry
objet geometry
obsDatime date-time : [1..1]
sketch string : [0..1]
>] + geometry -> destinationLocation [headlabel=1 taillabel="0..1"] + externalInfo [label=< + + + + +
externalInfo
objet externalInfo
freetext string : [1..1]
type string : [1..1]
uri string : [1..1]
>] + externalInfo -> destinationLocation [headlabel=1 taillabel="0..*"] + destinationLocation [label=< + + + + +
destinationLocation
objet location
locID string : [1..1]
locLabel string : [0..1]
name string : [0..1]
country string : [1..1]
freetext string : [0..1]
>] + destinationLocation -> destination [headlabel=1 taillabel="0..1"] destination [label=< - + +
destination
objet destination
type string : [0..1]
facility string : [0..1]
adminFiness string : [0..1]
geoFiness string : [0..1]
service string : [0..1]
freetext string : [0..1]
objet destination
type string : [0..1]
>] + destination -> transportDetails [headlabel=1 taillabel="0..1"] + transportDetails [label=< + + + +
transportDetails
objet transportDetails
orientation string : [1..1]
concoursRequest string : [0..1]
transportationID string : [0..1]
teamCare string : [1..1]
>] - destination -> decision [headlabel=1 taillabel="0..1"] + transportDetails -> decision [headlabel=1 taillabel="0..1"] decision [label=< - +
decision
objet decision
id string : [0..1]
creation date-time : [1..1]
type string : [0..1]
orientation string : [0..1]
transportation string : [0..*]
teamCare string : [0..1]
objet decision
id string : [0..1]
creation date-time : [1..1]
type string : [1..1]
>] decision -> createCaseHealth [headlabel=1 taillabel="0..*"] newAlert [label=< @@ -546,6 +497,6 @@ strict digraph { - +
createCaseHealth
objet createCaseHealth
caseId string : [1..1]
senderCaseId string : [0..1]
creation date-time : [1..1]
referenceVersion string : [1..1]
owner string : [1..1] 15-15
freetext string : [0..1]
objet createCaseHealth
caseId string : [1..1]
senderCaseId string : [0..1]
creation date-time : [1..1]
referenceVersion string : [1..1]
perimeter string : [0..1] 15-15
interventionType string : [0..1] 15-15
owner string : [1..1] 15-15
freetext string : [0..*]
>] } 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 fb6b4bde4..ea941a5e5 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-ERROR/RS-ERROR.schema.docx b/csv_parser/out/RS-ERROR/RS-ERROR.schema.docx index 622bc5b89..e0f43b4b4 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 8e2ed9198..ea74299c5 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-INFO/RS-INFO.schema.docx b/csv_parser/out/RS-INFO/RS-INFO.schema.docx index 853117712..b01a4b676 100644 Binary files a/csv_parser/out/RS-INFO/RS-INFO.schema.docx and b/csv_parser/out/RS-INFO/RS-INFO.schema.docx differ diff --git a/csv_parser/out/RS-INFO/RS-INFO.uml_diagram.pdf b/csv_parser/out/RS-INFO/RS-INFO.uml_diagram.pdf index 2b08c125d..6a4338008 100644 Binary files a/csv_parser/out/RS-INFO/RS-INFO.uml_diagram.pdf and b/csv_parser/out/RS-INFO/RS-INFO.uml_diagram.pdf differ diff --git a/csv_parser/out/customContent/customContent.example.json b/csv_parser/out/customContent/customContent.example.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/csv_parser/out/customContent/customContent.example.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/csv_parser/out/customContent/customContent.input.csv b/csv_parser/out/customContent/customContent.input.csv new file mode 100644 index 000000000..eba3b4047 --- /dev/null +++ b/csv_parser/out/customContent/customContent.input.csv @@ -0,0 +1 @@ +,ID,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 NexSIS,Nouvelle balise,Nantes - balise,Nantes - description,GT399,GT399 description,Priorisation,Cardinalité,Objet,Format (ou type),Nomenclature/ énumération,Détails de format,15-18,15-15 diff --git a/csv_parser/out/CustomContent/CustomContent.schema.docx b/csv_parser/out/customContent/customContent.schema.docx similarity index 94% rename from csv_parser/out/CustomContent/CustomContent.schema.docx rename to csv_parser/out/customContent/customContent.schema.docx index 20918789c..6c4979aae 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 b/csv_parser/out/customContent/customContent.uml_diagram new file mode 100644 index 000000000..1fd2d1646 --- /dev/null +++ b/csv_parser/out/customContent/customContent.uml_diagram @@ -0,0 +1,12 @@ +// UML MDD Hub Sante +strict digraph { + node [shape=none] + edge [arrowhead=odiamond arrowtail=none] + rankdir=BT + customContent [label=< + + + + +
customContent
objet customContent
>] +} diff --git a/csv_parser/out/CustomContent/CustomContent.uml_diagram.pdf b/csv_parser/out/customContent/customContent.uml_diagram.pdf similarity index 99% rename from csv_parser/out/CustomContent/CustomContent.uml_diagram.pdf rename to csv_parser/out/customContent/customContent.uml_diagram.pdf index 2229c2b50..37df1c038 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 76638ead2..7d2bd92a3 100644 --- a/csv_parser/out/hubsante.asyncapi.yaml +++ b/csv_parser/out/hubsante.asyncapi.yaml @@ -278,18 +278,6 @@ components: type: string URI: type: string - ReferenceWrapper: - required: - - Reference - properties: - reference: - $ref: '#/components/schemas/Reference' - Reference: - properties: - distributionID: - type: string - required: - - distributionID createCase: $id: classpath:/json-schema/schema# x-id: RC-EDA.schema.json# @@ -378,15 +366,20 @@ components: additionalInformation: $ref: '#/components/schemas/additionalInformation' freetext: - type: string - title: Description de l'affaire/dossier + type: array x-health-only: false - x-cols: 6 - example: example.json#/freetext - description: "Texte libre permettant de donner des informations suppl\xE9\ - mentaires concernant l'affaire" - examples: - - None + items: + type: string + title: Description de l'affaire/dossier + x-health-only: false + x-cols: 6 + example: example.json#/freetext/0 + description: "Texte libre permettant de donner des informations suppl\xE9\ + mentaires concernant l'affaire/dossier. Ces informations sont g\xE9\ + n\xE9rales, et ont vocation \xE0 \xEAtre \xE9chang\xE9es en inter-force. " + examples: + - "Le forcen\xE9 n'est pas ma\xEEtris\xE9. Voiture renvers\xE9e. Urgences\ + \ ferm\xE9es de 22h \xE0 6h00." additionalProperties: false qualification: type: object @@ -408,8 +401,6 @@ components: $ref: '#/components/schemas/healthMotive' details: $ref: '#/components/schemas/caseDetails' - victims: - $ref: '#/components/schemas/victims' additionalProperties: false example: example.json#/qualification location: @@ -437,12 +428,12 @@ components: x-health-only: false x-cols: 6 example: example.json#/location/locLabel - description: "Permet d'indiquer des indications auto suffisantes permettant\ - \ pour un op\xE9rationnel d'acc\xE9der facilement au lieu avec des indications\ - \ minimales.\nDans les messages NexSIS, va souvent correspondre \xE0 la\ - \ concat\xE9nation suivant des r\xE8gles m\xE9tiers de diff\xE9rentes\ - \ informations, dont le \"name\" (toponyme) et l'adresse.\nComprend au\ - \ maximum 255 caract\xE8res" + description: "Donne les informations minimales d'identification du lieu\ + \ d'intervention, qui permet d'identifier rapidement le lieu pour les\ + \ \xE9quipes op\xE9rationnelles. Comprend au maximum 255 caract\xE8res.\n\ + 15-18 : Dans les messages NexSIS, va souvent correspondre \xE0 la concat\xE9\ + nation suivant des r\xE8gles m\xE9tiers de diff\xE9rentes informations,\ + \ dont le \"name\" (toponyme) et l'adresse.\n" examples: - "Lyc\xE9e Pierre de Coubertin - 12 rue de l'Amiti\xE9 77288 Melun, Mus\xE9\ e Bossuet - Acc\xE8s 2 - 77048 Saint-Albray" @@ -452,10 +443,15 @@ components: x-health-only: false x-cols: 6 example: example.json#/location/name - description: "Indique le nom de lieu : nom commercial, for\xEAt de Fontainebleau,\ - \ lac du Der (plut\xF4t \xE0 destination des syst\xE8mes)." + description: "Indique le nom de lieu : nom commercial, Etablissement, for\xEA\ + t de Fontainebleau, lac du Der (plut\xF4t \xE0 destination des syst\xE8\ + mes)." examples: - "Lyc\xE9e Pierre de Coubertin" + externalLocationId: + type: array + items: + $ref: '#/components/schemas/externalLocationId' detailedAddress: $ref: '#/components/schemas/detailedAddress' city: @@ -720,7 +716,7 @@ components: - France freetext: type: string - title: Commentaire + title: "Informations compl\xE9mentaires sur la localisation" x-health-only: false x-cols: 6 example: example.json#/location/freetext @@ -739,9 +735,6 @@ components: - reception - reporting - caller - - alertSource - - location - - qualification - callTaker properties: id: @@ -798,24 +791,12 @@ components: - ATTENTION examples: - STANDARD - freetext: - type: string - title: "Informations compl\xE9mentaires sur l'alerte" - x-health-only: false - x-cols: 6 - example: example.json#/initialAlert/freetext - description: "Texte libre permettant de donner des informations suppl\xE9\ - mentaires concernant l'alerte." - examples: - - "D\xE9clenchement t\xE9l\xE9alarme, voisine sur les lieux" + notes: + type: array + items: + $ref: '#/components/schemas/notes' caller: $ref: '#/components/schemas/caller' - alertSource: - $ref: '#/components/schemas/contactSource' - location: - $ref: '#/components/schemas/location' - qualification: - $ref: '#/components/schemas/qualification' callTaker: $ref: '#/components/schemas/callTaker' attachment: @@ -841,7 +822,7 @@ components: description: "Identifiant technique du patient pour permettre les rapprochements\ \ d'infos. Le 1er qui cr\xE9\xE9 l'ID patient a raison." examples: - - None + - fr.health.samu044.DRFR15DDXAAJJJ00000.P00 administrativeFile: $ref: '#/components/schemas/administrativeFile' identity: @@ -852,8 +833,19 @@ components: $ref: '#/components/schemas/patientDetail' hypothesis: $ref: '#/components/schemas/hypothesis' - resourceDiagnosis: - $ref: '#/components/schemas/resourceDiagnosis' + freetext: + type: array + x-health-only: false + items: + type: string + title: "Informations compl\xE9mentaires sur le patient" + x-health-only: false + x-cols: 6 + example: example.json#/patient/0/freetext/0 + description: "Correspond \xE0 la zone de commentaire renseign\xE9 par\ + \ patient cr\xE9\xE9/identifi\xE9" + examples: + - None additionalProperties: false example: example.json#/patient/0 decision: @@ -863,6 +855,7 @@ components: x-health-only: false required: - creation + - type properties: id: type: string @@ -870,8 +863,8 @@ components: x-health-only: false x-cols: 6 example: example.json#/decision/0/id - description: "ID partag\xE9 du patient concern\xE9, lorsque le patient existe\ - \ et est identifi\xE9" + description: "ID partag\xE9 du patient concern\xE9 par la d\xE9cision, lorsque\ + \ le patient existe et est identifi\xE9" examples: - None creation: @@ -893,44 +886,19 @@ components: x-cols: 6 example: example.json#/decision/0/type description: "Type de d\xE9cision prise" + enum: + - CONSEIL + - PMT + - INTER + - ORIENT + - PASPLUS examples: - "conseil m\xE9dical / d\xE9cision d\u2019intervention / d\xE9cision d\u2019\ orientation et de transport / Pas de d\xE9cision suppl\xE9mentaire" - orientation: - type: string - title: Orientation - x-health-only: false - x-cols: 6 - example: example.json#/decision/0/orientation - description: "D\xE9cision(s) d'orientation prise par le m\xE9decin r\xE9\ - gulateur" - examples: - - None - transportation: - type: array - x-health-only: false - items: - type: string - title: Type de transport - x-health-only: false - x-cols: 6 - example: example.json#/decision/0/transportation/0 - description: "Type de transport \xE0 engager pour la prise en charge du\ - \ patient" - examples: - - 'SMUR ' - teamCare: - type: string - title: Niveau de prise en charge - x-health-only: false - x-cols: 6 - example: example.json#/decision/0/teamCare - description: "Type d\u2019\xE9quipe (m\xE9dical, param\xE9dicale, non m\xE9\ - dicale, standard, incomplete, ...)" - examples: - - "M\xE9dical, param\xE9dical, secouriste" - destination: - $ref: '#/components/schemas/destination' + engagementDetails: + $ref: '#/components/schemas/engagementDetails' + transportDetails: + $ref: '#/components/schemas/transportDetails' additionalProperties: false example: example.json#/decision/0 additionalInformation: @@ -977,22 +945,11 @@ components: \ fourni avec le code." examples: - "Rod\xE9o automobile" - freetext: - type: string - title: Commentaire - x-health-only: false - x-cols: 6 - example: example.json#/qualification/whatsHappen/freetext - description: "Commentaire libre permettant de passer des informations compl\xE9\ - mentaires associ\xE9es \xE0 la nomenclature" - examples: - - None additionalProperties: false example: example.json#/qualification/whatsHappen examples: - code: C07.13.02 label: "Rod\xE9o automobile" - freetext: None locationKind: type: object title: Type de lieu @@ -1009,6 +966,186 @@ components: x-cols: 6 example: example.json#/qualification/locationKind/code description: "A valoriser avec un code la nomenclature associ\xE9e" + enum: + - L01.00.00 + - L01.01.00 + - L01.01.01 + - L01.01.02 + - L01.01.03 + - L01.01.04 + - L01.02.00 + - L01.02.01 + - L01.02.02 + - L01.02.03 + - L01.02.04 + - L01.02.05 + - L01.02.06 + - L01.02.07 + - L01.02.08 + - L01.02.09 + - L01.02.10 + - L01.02.11 + - L01.02.12 + - L01.03.00 + - L01.03.01 + - L01.03.02 + - L01.03.03 + - L01.04.00 + - L02.00.00 + - L02.01.00 + - L02.02.00 + - L02.02.01 + - L02.02.02 + - L02.02.03 + - L02.02.04 + - L02.02.05 + - L02.03.00 + - L02.03.01 + - L02.03.02 + - L02.03.03 + - L02.04.00 + - L02.05.00 + - L02.05.01 + - L02.05.02 + - L02.05.03 + - L02.05.04 + - L02.05.05 + - L02.05.06 + - L02.05.07 + - L02.05.08 + - L02.05.09 + - L02.05.10 + - L02.05.11 + - L02.05.12 + - L02.05.13 + - L02.05.14 + - L02.05.15 + - L02.05.16 + - L02.06.00 + - L02.06.01 + - L02.06.02 + - L02.06.03 + - L02.06.04 + - L02.06.05 + - L02.06.06 + - L02.06.07 + - L02.06.08 + - L02.07.00 + - L02.07.01 + - L02.07.02 + - L02.08.00 + - L03.00.00 + - L03.01.00 + - L03.02.00 + - L03.03.00 + - L03.04.00 + - L03.05.00 + - L04.00.00 + - L04.01.00 + - L04.02.00 + - L04.02.01 + - L04.02.02 + - L04.02.03 + - L04.03.00 + - L04.03.01 + - L04.03.02 + - L04.03.03 + - L04.04.00 + - L04.05.00 + - L04.06.00 + - L04.06.01 + - L04.06.02 + - L04.06.03 + - L04.06.04 + - L04.06.05 + - L04.07.00 + - L04.07.01 + - L04.07.02 + - L04.07.03 + - L04.08.00 + - L04.08.01 + - L04.08.02 + - L04.09.00 + - L04.09.01 + - L04.09.02 + - L04.10.00 + - L04.11.00 + - L04.11.01 + - L04.11.02 + - L04.11.03 + - L04.11.04 + - L04.12.00 + - L04.12.01 + - L04.12.02 + - L04.12.03 + - L04.12.04 + - L04.13.00 + - L04.13.01 + - L04.13.02 + - L04.13.03 + - L04.13.04 + - L04.14.00 + - L04.14.01 + - L04.14.02 + - L04.15.00 + - L04.16.00 + - L05.00.00 + - L05.01.00 + - L05.01.01 + - L05.01.02 + - L05.01.03 + - L05.01.04 + - L05.02.00 + - L05.02.01 + - L05.02.02 + - L05.02.03 + - L05.02.04 + - L05.03.00 + - L05.03.01 + - L05.03.02 + - L05.04.00 + - L05.04.01 + - L05.04.02 + - L05.04.03 + - L05.04.04 + - L05.04.05 + - L05.04.06 + - L05.05.00 + - L05.06.00 + - L05.07.00 + - L06.00.00 + - L06.01.00 + - L06.01.01 + - L06.01.02 + - L06.01.03 + - L06.01.04 + - L06.01.05 + - L06.01.06 + - L06.01.07 + - L06.01.08 + - L06.02.00 + - L06.03.00 + - L06.03.01 + - L06.03.02 + - L06.03.03 + - L06.03.04 + - L06.03.05 + - L06.04.00 + - L06.05.00 + - L06.05.01 + - L06.05.02 + - L06.06.00 + - L06.06.01 + - L06.06.02 + - L06.06.03 + - L06.06.04 + - L06.07.00 + - L06.07.01 + - L06.07.02 + - L07.00.00 + - L07.01.00 + - L07.01.01 + - L07.02.00 examples: - C07.13.02 label: @@ -1023,22 +1160,11 @@ components: \ fourni avec le code." examples: - "Rod\xE9o automobile" - freetext: - type: string - title: Commentaire - x-health-only: false - x-cols: 6 - example: example.json#/qualification/locationKind/freetext - description: "Commentaire libre permettant de passer des informations compl\xE9\ - mentaires associ\xE9es \xE0 la nomenclature" - examples: - - None additionalProperties: false example: example.json#/qualification/locationKind examples: - code: C07.13.02 label: "Rod\xE9o automobile" - freetext: None riskThreat: type: object title: "Risque, menace et sensibilit\xE9" @@ -1055,6 +1181,44 @@ components: x-cols: 6 example: example.json#/qualification/riskThreat/0/code description: "A valoriser avec un code la nomenclature associ\xE9e" + enum: + - R01 + - R02 + - R03 + - R04 + - R05 + - R06 + - R07 + - R08 + - R09 + - R10 + - R11 + - R12 + - R13 + - R14 + - R15 + - R16 + - R17 + - R18 + - R19 + - R20 + - R21 + - R22 + - R23 + - R24 + - R25 + - R26 + - R27 + - R28 + - R29 + - R30 + - R31 + - R32 + - R33 + - R34 + - R35 + - R36 + - R37 examples: - C07.13.02 label: @@ -1069,22 +1233,11 @@ components: \ fourni avec le code." examples: - "Rod\xE9o automobile" - freetext: - type: string - title: Commentaire - x-health-only: false - x-cols: 6 - example: example.json#/qualification/riskThreat/0/freetext - description: "Commentaire libre permettant de passer des informations compl\xE9\ - mentaires associ\xE9es \xE0 la nomenclature" - examples: - - None additionalProperties: false example: example.json#/qualification/riskThreat/0 examples: - code: C07.13.02 label: "Rod\xE9o automobile" - freetext: None healthMotive: type: object title: "Motif de recours m\xE9dico-secouriste" @@ -1103,6 +1256,59 @@ components: x-cols: 6 example: example.json#/qualification/healthMotive/code description: "A valoriser avec un code la nomenclature associ\xE9e" + enum: + - M01.00 + - M01.01 + - M01.02 + - M01.03 + - M02.00 + - M02.01 + - M02.02 + - M02.03 + - M02.04 + - M02.05 + - M02.06 + - M02.07 + - M02.08 + - M02.09 + - M02.10 + - M03.00 + - M03.01 + - M03.02 + - M03.03 + - M03.04 + - M03.05 + - M03.06 + - M03.07 + - M03.08 + - M03.09 + - M03.10 + - M03.11 + - M03.12 + - M03.13 + - M03.14 + - M03.15 + - M03.16 + - M03.17 + - M03.18 + - M03.19 + - M03.20 + - M03.21 + - M03.22 + - M04.00 + - M04.01 + - M04.02 + - M04.03 + - M04.04 + - M05.00 + - M05.01 + - M05.02 + - M06.00 + - M06.01 + - M06.02 + - M06.03 + - M06.04 + - M07.00 examples: - C07.13.02 label: @@ -1117,22 +1323,11 @@ components: \ fourni avec le code." examples: - "Rod\xE9o automobile" - freetext: - type: string - title: Commentaire - x-health-only: false - x-cols: 6 - example: example.json#/qualification/healthMotive/freetext - description: "Commentaire libre permettant de passer des informations compl\xE9\ - mentaires associ\xE9es \xE0 la nomenclature" - examples: - - None additionalProperties: false example: example.json#/qualification/healthMotive examples: - code: C07.13.02 label: "Rod\xE9o automobile" - freetext: None victims: type: object title: Patients-Victimes @@ -1188,6 +1383,45 @@ components: - count: SEVERAL mainVictim: CHILD freetext: "Jeanne Dupont, 6 ans, ne r\xE9pond plus" + externalLocationId: + type: object + title: Identifiant(s) du lieu + x-display: expansion-panels + x-health-only: false + required: + - source + - value + properties: + source: + type: string + title: Source / type d'identifiant + x-health-only: false + x-cols: 6 + example: example.json#/location/externalLocationId/0/source + description: Type de l'identifiant fourni + enum: + - FINESS administratif + - "FINESS g\xE9ographique" + - SIREN + - SIRET + - APE/NAF + examples: + - "FINESS g\xE9ographique, FINESS administratif, SIREN, SIRET, APE, NAF" + value: + type: string + title: Identifiant + x-health-only: false + x-cols: 6 + example: example.json#/location/externalLocationId/0/value + description: "L'identifiant en lui-m\xEAme" + examples: + - "920000650\_" + additionalProperties: false + example: example.json#/location/externalLocationId/0 + examples: + - source: "FINESS g\xE9ographique, FINESS administratif, SIREN, SIRET, APE,\ + \ NAF" + value: "920000650\_" detailedAddress: type: object title: "D\xE9tails de l'adresse" @@ -1202,10 +1436,10 @@ components: x-health-only: false x-cols: 6 example: example.json#/location/detailedAddress/complete - description: "Num\xE9ro, type et nom de la voie. \nUtilis\xE9 pour tout\ - \ type de voie : autoroute (PK, nom et sens), voie ferr\xE9e, voie navigable\u2026\ - \nObligatoire et seule valeur des d\xE9tails de l'adresse fournie par\ - \ NexSIS." + description: "Num\xE9ro, type et nom de la voie. Utilis\xE9 pour tout type\ + \ de voie : autoroute (PK, nom et sens), voie ferr\xE9e, voie navigable\u2026\ + \n15-18 : Obligatoire et seule valeur des d\xE9tails de l'adresse fournie\ + \ par NexSIS." examples: - 9 Bd du Montparnasse number: @@ -1262,7 +1496,7 @@ components: \ aidant \xE0 pr\xE9ciser l'adresse et notamment g\xE9rer les cas de communes\ \ fusionn\xE9es pour le syst\xE8me \xE9metteur\nNB : dans tous les cas,\ \ la localisation GPS de la commune doit \xEAtre fournie afin d'\xE9viter\ - \ une trop forte ambigu\xEFt\xE9" + \ une trop forte ambigu\xEFt\xE9." examples: - "Quartie Melun Nord, Lhomme, \u2026" additionalProperties: false @@ -1482,6 +1716,7 @@ components: x-health-only: false x-cols: 6 example: example.json#/location/detailedAddress/wayName/type + description: Type de la voie examples: - Boulevard name: @@ -1490,6 +1725,7 @@ components: x-health-only: false x-cols: 6 example: example.json#/location/detailedAddress/wayName/name + description: Nom de la voie examples: - du Montparnasse additionalProperties: false @@ -1567,12 +1803,45 @@ components: - lat: '47.221866' lon: '-1.575807' height: 1 + notes: + type: object + title: "Informations compl\xE9mentaires sur l'alerte (observations ARM)" + x-display: expansion-panels + x-health-only: false + required: [] + properties: + creation: + type: string + title: "Date et heure de l'information compl\xE9mentaire/l'observation ARM" + x-health-only: false + x-cols: 6 + example: example.json#/initialAlert/notes/0/creation + description: date et heure de l'observation + pattern: \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[\-+]\d{2}:\d{2} + format: date-time + examples: + - None + freetext: + type: string + title: Commentaire/Observations + x-health-only: false + x-cols: 6 + example: example.json#/initialAlert/notes/0/freetext + description: "texte libre contenant les indications renseign\xE9es par l'ARM" + examples: + - 'La personne est inconsciente (perte de connaissance). ' + additionalProperties: false + example: example.json#/initialAlert/notes/0 + examples: + - creation: None + freetext: 'La personne est inconsciente (perte de connaissance). ' caller: type: object title: "Requ\xE9rant" x-display: expansion-panels x-health-only: false - required: [] + required: + - callerContact properties: callerContact: $ref: '#/components/schemas/contact' @@ -1838,6 +2107,28 @@ components: example: example.json#/initialAlert/caller/type description: "Indique la relation du requ\xE9rant avec l'incident / le patient\ \ / la victime" + enum: + - SUJET + - FAMILLE + - TIERS + - POMPIER + - AMBULANC + - SECOUR + - MED + - MEDSOS + - MRL + - EFFML + - SANTE + - INF + - AIDESOIN + - SF + - AIDEDOM + - FDO-MILI + - ADM-TUTL + - VIP + - OBJCONNC + - AUTRE + - INCONNU examples: - "le patient lui-m\xEAme, p\xE8re, m\xE8re" communication: @@ -1848,6 +2139,16 @@ components: example: example.json#/initialAlert/caller/communication description: "Indique si le requ\xE9rant rencontre ou non des difficult\xE9\ \ de communication" + enum: + - AUCUNE + - MUET + - VISION + - LANGUE + - PANIQUE + - HOSTILE + - AGITE + - AUTRE + - IMPOSS examples: - "Malentendant, aucune difficult\xE9 de communication" freetext: @@ -1865,60 +2166,6 @@ components: $ref: '#/components/schemas/detailedName' additionalProperties: false example: example.json#/initialAlert/caller - contactSource: - type: object - title: Source de l'alerte - x-display: expansion-panels - x-health-only: false - required: - - channel - - type - - detail - properties: - channel: - type: string - title: Canal - x-health-only: false - x-cols: 6 - example: example.json#/initialAlert/alertSource/channel - description: "Permet d'indiquer l'origine du canal \xE9tablit : Personne,\ - \ application, DAU, BAU, d\xE9fibrillateur, ecall" - examples: - - Personne - type: - type: string - title: Type de contact de la source - x-health-only: false - x-cols: 6 - example: example.json#/initialAlert/alertSource/type - description: "Type de l'URI utilis\xE9e par la source, cf. nomenclature\ - \ EMSI" - enum: - - PSTADD - - EMLADD - - IPADD - - FTPADD - - WWWADD - - PHNADD - - FAXADD - - PMRADD - examples: - - PHNADD - detail: - type: string - title: URI de contact de la source - x-health-only: false - x-cols: 6 - example: example.json#/initialAlert/alertSource/detail - description: "Valeur de l'URI utilis\xE9e par la source" - examples: - - 0671830530 - additionalProperties: false - example: example.json#/initialAlert/alertSource - examples: - - channel: Personne - type: PHNADD - detail: 0671830530 callTaker: type: object title: Agent @@ -2212,6 +2459,11 @@ components: x-cols: 6 example: example.json#/patient/0/identity/strictFeatures/sex description: Sexe du patient + enum: + - MASC + - FEM + - AUTRE + - INCONNU examples: - F birthPlaceCode: @@ -2236,85 +2488,92 @@ components: birthDate: None sex: F birthPlaceCode: None - destination: + transportDetails: type: object - title: Destination + title: "D\xE9cision de transport/orientation" x-display: expansion-panels x-health-only: false - required: [] + required: + - orientation + - teamCare properties: - type: - type: string - title: Type de destination - x-health-only: false - x-cols: 6 - example: example.json#/decision/0/destination/type - description: "Indique le type de destination de la ressource : service d\u2019\ - urgences d\u2019un Etablissement de sant\xE9, autres services d\u2019\ - un \xE9tablissement de sant\xE9, cabinet d\u2019un professionnel de sant\xE9\ - , domicile personnel, EPHAD ou long s\xE9jour, autre" - enum: - - "service d\u2019urgences d\u2019un Etablissement de sant\xE9" - - "autres services d\u2019un \xE9tablissement de sant\xE9" - - "cabinet d\u2019un professionnel de sant\xE9" - - domicile personnel - - "EPHAD ou long s\xE9jour" - - autre - examples: - - None - facility: + orientation: type: string - title: Etablissement + title: Type de devenir du patient x-health-only: false x-cols: 6 - example: example.json#/decision/0/destination/facility - description: "Nom de l'\xE9tablissement" + example: example.json#/decision/0/transportDetails/orientation + description: "D\xE9cision(s) d'orientation prise par le m\xE9decin r\xE9\ + gulateur : \n- A transporter\n- Laisser sur place" examples: - - None - adminFiness: + - "laiss\xE9 sur place, d\xE9c\xE9d\xE9, ou transport\xE9" + concoursRequest: type: string - title: FINESS administratif + title: ID demande de concours/de ressources x-health-only: false x-cols: 6 - example: example.json#/decision/0/destination/adminFiness - description: "N\xB0 Finess administratif de l'\xE9tablissement" + example: example.json#/decision/0/transportDetails/concoursRequest + description: 'Identifiant de la ou des demandes de concours ' examples: - None - geoFiness: + transportationID: type: string - title: "FINESS g\xE9ographique" + title: "ID vecteur partag\xE9" x-health-only: false x-cols: 6 - example: example.json#/decision/0/destination/geoFiness - description: "N\xB0 Finess g\xE9ographique de l'\xE9tablissement" + example: example.json#/decision/0/transportDetails/transportationID + description: "Identifiant du v\xE9hicule terrestre / a\xE9rien / maritime\ + \ de transport principal (= celui dans lequel se trouve le patient), permettant\ + \ d'associer la d\xE9cision \xE0 un v\xE9hicule sp\xE9cifique + au patient. " examples: - None - service: + teamCare: type: string - title: Service + title: Niveau de prise en charge x-health-only: false x-cols: 6 - example: example.json#/decision/0/destination/service - description: "Service concern\xE9 par l'admission du patient" + example: example.json#/decision/0/transportDetails/teamCare + description: "Type d\u2019\xE9quipe (m\xE9dical, param\xE9dicale, non m\xE9\ + dicale, standard, incomplete, ...)" examples: - - None - freetext: + - "M\xE9dical, param\xE9dical, secouriste" + destination: + $ref: '#/components/schemas/destination' + additionalProperties: false + example: example.json#/decision/0/transportDetails + destination: + type: object + title: Destination + x-display: expansion-panels + x-health-only: false + required: [] + properties: + type: type: string - title: Autre + title: Type de destination x-health-only: false x-cols: 6 - example: example.json#/decision/0/destination/freetext + example: example.json#/decision/0/transportDetails/destination/type + description: "Indique le type de destination de la ressource : service d\u2019\ + urgences d\u2019un Etablissement de sant\xE9, autres services d\u2019\ + un \xE9tablissement de sant\xE9, cabinet d\u2019un professionnel de sant\xE9\ + , domicile personnel, EPHAD ou long s\xE9jour, autre" + enum: + - "service d\u2019urgences d\u2019un Etablissement de sant\xE9" + - "autres services d\u2019un \xE9tablissement de sant\xE9" + - "cabinet d\u2019un professionnel de sant\xE9" + - domicile personnel + - "EPHAD ou long s\xE9jour" + - autre examples: - None + destinationLocation: + $ref: '#/components/schemas/location' additionalProperties: false - example: example.json#/decision/0/destination + example: example.json#/decision/0/transportDetails/destination examples: - type: None - facility: None - adminFiness: None - geoFiness: None - service: None - freetext: None + destinationLocation: {} customMap: type: object title: "Cl\xE9 valeur adaptable" @@ -2436,6 +2695,33 @@ components: \ partenaires." examples: - '1.2' + perimeter: + type: string + title: "Fili\xE8re" + x-health-only: true + x-cols: 6 + example: example.json#/perimeter + description: "Sert \xE0 indiquer \xE0 quelle fili\xE8re du CRRA le dossier\ + \ doit \xEAtre adress\xE9/affich\xE9" + enum: + - AMU + - SNP + - NEONAT + examples: + - AMU + interventionType: + type: string + title: Type d'intervention + x-health-only: true + x-cols: 6 + example: example.json#/interventionType + description: "Indiquer s'il s'agit d'un dossier dit primaire (premi\xE8\ + re intervention urgente) ou secondaire (par exemple TIH)" + enum: + - Primaire + - Secondaire + examples: + - Primaire qualification: $ref: '#/components/schemas/qualification' location: @@ -2448,23 +2734,10 @@ components: x-health-only: true x-cols: 6 example: example.json#/owner - description: "Champ servant \xE0 transf\xE9rer la responsabilit\xE9 du traitement\ - \ d'un dossier \xE0 un autre CRAA / \xE0 lui demander de prendre en charge\ - \ le traitement du dossier.\nLe SAMU demandeur entre dans ce champ l'ID\ - \ du CRAA \xE0 qui il demande de traiter l'affaire (uniquement en cas\ - \ de transfert int\xE9gral du traitement d'un dossier).\nLe SAMU qui re\xE7\ - oit la demande de transfert et l'accepte renvoie un RC-EDA de mise \xE0\ - \ jour en laissant son ID dans ce champ + en ajoutant l'ID local du dossier\ - \ chez lui dans le message.\nLe SAMU qui re\xE7oit la demande de transfert\ - \ et la refuse renvoie un RC-EDA de mise \xE0 jour en remettant l'ID du\ - \ SAMU demandeur dans ce champ + il envoie l'ID local du dossier chez\ - \ lui." + description: "Champ servant \xE0 transf\xE9rer la prise en charge d'un dossier\ + \ \xE0 un autre CRAA apr\xE8s accord verbal de ce dernier." examples: - fr.health.samu440 - operator: - type: array - items: - $ref: '#/components/schemas/operator' patient: type: array items: @@ -2484,51 +2757,21 @@ components: additionalInformation: $ref: '#/components/schemas/additionalInformation' freetext: - type: string - title: Description de l'affaire/dossier + type: array x-health-only: false - x-cols: 6 - example: example.json#/freetext - description: "Texte libre permettant de donner des informations suppl\xE9\ - mentaires concernant l'affaire" - examples: - - None - additionalProperties: false - operator: - type: object - title: "Op\xE9rateurs impliqu\xE9s" - x-display: expansion-panels - x-health-only: true - required: - - role - properties: - detailedName: - $ref: '#/components/schemas/detailedName' - id: - type: string - title: ID - x-health-only: true - x-cols: 6 - example: example.json#/operator/0/id - description: "Identifiant professionnel de l'op\xE9rateur si existant" - examples: - - None - role: - type: string - title: "R\xF4le" - x-health-only: true - x-cols: 6 - example: example.json#/operator/0/role - description: "R\xF4le de l'op\xE9rateur au sein de l'entit\xE9 \xE9mettrice\ - \ du message" - examples: - - "ARM, Medecin r\xE9gulateur\u2026" + items: + type: string + title: Description de l'affaire/dossier + x-health-only: false + x-cols: 6 + example: example.json#/freetext/0 + description: "Texte libre permettant de donner des informations suppl\xE9\ + mentaires concernant l'affaire/dossier. Ces informations sont g\xE9\ + n\xE9rales, et ont vocation \xE0 \xEAtre \xE9chang\xE9es en inter-force. " + examples: + - "Le forcen\xE9 n'est pas ma\xEEtris\xE9. Voiture renvers\xE9e. Urgences\ + \ ferm\xE9es de 22h \xE0 6h00." additionalProperties: false - example: example.json#/operator/0 - examples: - - detailedName: {} - id: None - role: "ARM, Medecin r\xE9gulateur\u2026" medicalNote: type: object title: "Interrogatoire m\xE9dical" @@ -2603,14 +2846,6 @@ components: - None additionalProperties: false example: example.json#/medicalNote/0 - examples: - - id: None - operator: {} - creation: '2022-09-27T08:23:34+02:00' - freetext: None - medicalHistory: None - treatments: None - allergies: None caseDetails: type: object title: "D\xE9tails du dossier " @@ -2648,7 +2883,7 @@ components: enum: - D - DR - - "DRM \nNOMENC_TYPEDOS" + - DRM examples: - DR attribution: @@ -2660,6 +2895,43 @@ components: description: "D\xE9crit le type de professionnel m\xE9dical \xE0 qui le\ \ dossier est attribu\xE9 : M\xE9decin g\xE9n\xE9raliste, m\xE9decin urgentiste\ \ etc." + enum: + - DRM + - DRMMRU + - MU + - DENT + - GERIA + - PEDIA + - PSY + - TOXICOL + - INDISPMU + - SSE + - PLANBLAN + - PCSAMU + - DRMMRL + - MG + - INDISPMG + - ABSML + - DR + - DREG + - DRARM + - DRMED + - DRPHARMA + - DRDENT + - DRINFO + - DOS-SIS + - DOS-FDO + - D + - D-MALV + - ERR + - NRP + - MALV + - FAX + - ITERATIF + - D-IDENT + - ADMIN + - PERSO + - AUTRE examples: - MU priority: @@ -2670,6 +2942,12 @@ components: example: example.json#/qualification/details/priority description: "D\xE9crit la priorit\xE9 de r\xE9gulation m\xE9dicale du dossier\ \ : P0, P1, P2, P3" + enum: + - P0 + - P1 + - P2 + - P3 + - NR examples: - P1 additionalProperties: false @@ -2743,6 +3021,11 @@ components: x-health-only: true x-cols: 6 example: example.json#/patient/0/detail/careLevel + enum: + - R1 + - R2 + - R3 + - R4 examples: - R1 additionalProperties: false @@ -2767,52 +3050,6 @@ components: $ref: '#/components/schemas/otherDiagnosis' additionalProperties: false example: example.json#/patient/0/hypothesis - resourceDiagnosis: - type: object - title: Diagnostic de l'effecteur - x-display: expansion-panels - x-health-only: true - required: - - code - - label - properties: - code: - type: string - title: Code - x-health-only: false - x-cols: 6 - example: example.json#/patient/0/resourceDiagnosis/code - description: "A valoriser avec un code la nomenclature associ\xE9e" - examples: - - C07.13.02 - label: - type: string - title: "Libell\xE9" - x-health-only: false - x-cols: 6 - example: example.json#/patient/0/resourceDiagnosis/label - description: "A valoriser avec le libell\xE9 de la nomenclature associ\xE9\ - e.\nDans le cas o\xF9 un syst\xE8me n'est pas en mesure de reconna\xEE\ - tre un code, il peut directement afficher le libell\xE9 qui est obligatoirement\ - \ fourni avec le code." - examples: - - "Rod\xE9o automobile" - freetext: - type: string - title: Commentaire - x-health-only: false - x-cols: 6 - example: example.json#/patient/0/resourceDiagnosis/freetext - description: "Commentaire libre permettant de passer des informations compl\xE9\ - mentaires associ\xE9es \xE0 la nomenclature" - examples: - - None - additionalProperties: false - example: example.json#/patient/0/resourceDiagnosis - examples: - - code: C07.13.02 - label: "Rod\xE9o automobile" - freetext: None externalId: type: object title: Identifiant(s) patient(s) @@ -2879,7 +3116,7 @@ components: $ref: '#/components/schemas/detailedName' id: type: string - title: Identifiant + title: Identifiant RPPS x-health-only: true x-cols: 6 example: example.json#/patient/0/administrativeFile/generalPractitioner/id @@ -3015,22 +3252,11 @@ components: \ fourni avec le code." examples: - "Rod\xE9o automobile" - freetext: - type: string - title: Commentaire - x-health-only: false - x-cols: 6 - example: example.json#/patient/0/hypothesis/mainDiagnosis/freetext - description: "Commentaire libre permettant de passer des informations compl\xE9\ - mentaires associ\xE9es \xE0 la nomenclature" - examples: - - None additionalProperties: false example: example.json#/patient/0/hypothesis/mainDiagnosis examples: - code: C07.13.02 label: "Rod\xE9o automobile" - freetext: None otherDiagnosis: type: object title: "Hypoth\xE8ses de r\xE9gulation m\xE9dicale secondaires" @@ -3061,22 +3287,98 @@ components: \ fourni avec le code." examples: - "Rod\xE9o automobile" - freetext: + additionalProperties: false + example: example.json#/patient/0/hypothesis/otherDiagnosis/0 + examples: + - code: C07.13.02 + label: "Rod\xE9o automobile" + operator: + type: object + title: "Professionnel de sant\xE9 qui r\xE9alise l'interrogatoire" + x-display: expansion-panels + x-health-only: true + required: + - role + properties: + detailedName: + $ref: '#/components/schemas/detailedName' + id: type: string - title: Commentaire - x-health-only: false + title: ID + x-health-only: true x-cols: 6 - example: example.json#/patient/0/hypothesis/otherDiagnosis/0/freetext - description: "Commentaire libre permettant de passer des informations compl\xE9\ - mentaires associ\xE9es \xE0 la nomenclature" + example: example.json#/medicalNote/0/operator/id + description: "Identifiant professionnel de l'op\xE9rateur si existant" examples: - None + role: + type: string + title: "R\xF4le" + x-health-only: true + x-cols: 6 + example: example.json#/medicalNote/0/operator/role + description: "R\xF4le de l'op\xE9rateur au sein de l'entit\xE9 \xE9mettrice\ + \ du message" + examples: + - "ARM, Medecin r\xE9gulateur\u2026" additionalProperties: false - example: example.json#/patient/0/hypothesis/otherDiagnosis/0 + example: example.json#/medicalNote/0/operator examples: - - code: C07.13.02 - label: "Rod\xE9o automobile" - freetext: None + - detailedName: {} + id: None + role: "ARM, Medecin r\xE9gulateur\u2026" + engagementDetails: + type: object + title: "D\xE9cision d'engagement" + x-display: expansion-panels + x-health-only: true + required: + - categoryType + - teamCareInitial + properties: + categoryType: + type: string + title: Type de moyen + x-health-only: true + x-cols: 6 + example: example.json#/decision/0/engagementDetails/categoryType + description: "d\xE9taille le moyen \xE0 engager" + examples: + - SMUR, Pompiers + resourceType: + type: string + title: Type de vecteur + x-health-only: true + x-cols: 6 + example: example.json#/decision/0/engagementDetails/resourceType + description: "d\xE9taille le type de vecteur \xE0 engager" + examples: + - AR, VLM, VSAV + resourceId: + type: string + title: 'ID vecteur ' + x-health-only: true + x-cols: 6 + example: example.json#/decision/0/engagementDetails/resourceId + examples: + - None + teamCareInitial: + type: string + title: Niveau de prise en charge + x-health-only: true + x-cols: 6 + example: example.json#/decision/0/engagementDetails/teamCareInitial + description: "Type d\u2019\xE9quipe (m\xE9dical, param\xE9dicale, non m\xE9\ + dicale, standard, incomplete, ...)" + examples: + - "M\xE9dical, param\xE9dical, secouriste" + additionalProperties: false + example: example.json#/decision/0/engagementDetails + examples: + - categoryType: SMUR, Pompiers + resourceType: AR, VLM, VSAV + resourceId: None + teamCareInitial: "M\xE9dical, param\xE9dical, secouriste" emsi: $id: classpath:/json-schema/schema# x-id: EMSI.schema.json# @@ -3953,7 +4255,7 @@ components: - HELICOPTERE - 'SHIP ' examples: - - VEHCL + - VEHICULE capacity: type: string title: "Capacit\xE9s de la ressource" @@ -3967,7 +4269,7 @@ components: - PARAMEDICALE - INCONNUE examples: - - MED + - MEDICALE contacts: type: array items: @@ -4409,12 +4711,12 @@ components: description: "Indique si le message acquitt\xE9 a \xE9t\xE9 refus\xE9" examples: - None - infoDistributionID: + errorDistributionID: type: string title: "Identifiant du message d'erreur li\xE9" x-health-only: false x-cols: 6 - example: example.json#/infoDistributionID + example: example.json#/errorDistributionID description: "Identifiant unique du message d'erreur li\xE9" examples: - None @@ -4422,7 +4724,7 @@ components: examples: - distributionID: None refused: None - infoDistributionID: None + errorDistributionID: None casualties: type: object title: Victimes @@ -4564,9 +4866,7 @@ components: title: "Localisation de l'\xE9v\xE9nement" x-display: expansion-panels x-health-only: false - required: - - TYPE - - POSITION + required: [] properties: DATIME: type: string @@ -5768,7 +6068,7 @@ components: - info: None customContent: $id: classpath:/json-schema/schema# - x-id: CustomContent.schema.json# + x-id: customContent.schema.json# example: example.json# type: object title: customContent diff --git a/csv_parser/out/test_cases.json b/csv_parser/out/test_cases.json index ef062bf25..b3f40b384 100644 --- a/csv_parser/out/test_cases.json +++ b/csv_parser/out/test_cases.json @@ -12,21 +12,50 @@ "description":"Envoyer un message de partage de dossier pour le périmètre 15-15 sans demande de transfert; qui contient les valeurs obligatoires minimales attendues", "message":{ "requiredValues":[ + { + "path":"$.createCaseHealth.freetext", + "value":[ + "Coupure grave causée par une scie circulaire au niveau de la main; saigne beaucoup. La victime est inconsciente (perte de connaissance).", + "Entorse de la cheville, avec possible fracture. Cheville gonflée et douloureuse. Marche impossible.", + "Confusion, étourdissements, s’exprime difficilement" + ], + "verificationLevel":2 + }, { "path":"$.createCaseHealth.qualification.whatsHappen.code", "value":[ "C02.08.05", "C02.08.02", "C02.05.00" - ] + ], + "verificationLevel":2 }, { - "path":"$.createCaseHealth.qualification.whatsHappen.freetext", + "path":"$.createCaseHealth.qualification.whatsHappen.label", "value":[ - "Coupure grave causée par une scie circulaire au niveau de la main; saigne beaucoup. La victime est inconsciente (perte de connaissance).", - "Entorse de la cheville, avec possible fracture. Cheville gonflée et douloureuse. Marche impossible.", - "Confusion, étourdissements, s’exprime difficilement" - ] + "Atteinte aux personnes ; Traumatisme \/ Accident ; Par objet tranchant ou perforant", + "Atteinte aux personnes ; Traumatisme \/ Accident ; Accident domestique", + "Atteinte aux personnes ; Pathologie \/ maladie" + ], + "verificationLevel":3 + }, + { + "path":"$.createCaseHealth.qualification.locationKind.code", + "value":[ + "L01.01.04", + "L01.02.10", + "L04.12.00" + ], + "verificationLevel":2 + }, + { + "path":"$.createCaseHealth.qualification.locationKind.label", + "value":[ + "Domicile ; Maison particulière, pavillon ; dépendance", + "Domicile ; Lieu d'habitation collectif ou foyer d'hébergement ; escaliers", + "Lieu accueillant du public ; Hébergement touristique" + ], + "verificationLevel":3 }, { "path":"$.createCaseHealth.qualification.healthMotive.code", @@ -34,7 +63,17 @@ "M01.02", "M02.07", "M03.08" - ] + ], + "verificationLevel":1 + }, + { + "path":"$.createCaseHealth.qualification.healthMotive.label", + "value":[ + "Détresse vitale; Altération de la conscience; Dont inconscient, coma", + "Traumatisme sérieux, plaie intermédiaire", + "Signes d’AVC" + ], + "verificationLevel":3 }, { "path":"$.createCaseHealth.qualification.details.priority", @@ -42,252 +81,209 @@ "P0", "P2", "P1" - ] + ], + "verificationLevel":1 }, { - "path":"$.createCaseHealth.owner", + "path":"$.createCaseHealth.qualification.victims.count", "value":[ - "fr.health.samu770", - "fr.health.samu950", - "fr.health.samu009" - ] + 1, + 1, + 1 + ], + "verificationLevel":3 }, { - "path":"$.createCaseHealth.patient.[0].identity.strictFeatures.sex", + "path":"$.createCaseHealth.qualification.victims.mainvictim", "value":[ - "MASC", - "FEM", - "INCONNU" - ] + "ADULT", + "CHILD", + "SENIOR" + ], + "verificationLevel":3 }, { - "path":"$.createCaseHealth.patient.[0].identity.nonstrictFeatures.complete", + "path":"$.createCaseHealth.qualification.details.attribution", "value":[ - "Didier Morel", - "Lola Halimi", - "Inconnu" - ] - }, - { - "path":"$.createCaseHealth.location.country", - "value":[ - "FR", - "FR", - "FR" - ] + "MU", + "MU", + "MU" + ], + "verificationLevel":3 }, { - "path":"$.createCaseHealth.location.detailedAddress.complete", - "value":[ - "12 Rue Louis Aristide Verdier ", - "4 rue Danielle Mitterrand", - "Rue principale" - ] - }, - { - "path":"$.createCaseHealth.location.city.name", + "path":"$.createCaseHealth.owner", "value":[ - "Vaires-sur-Marne", - "Bezons", - "Aulus-les-Bains" - ] + "fr.health.samu770", + "fr.health.samu950", + "fr.health.samu009" + ], + "verificationLevel":1 }, { - "path":"$.createCaseHealth.location.freetext", + "path":"$.createCaseHealth.patient.[0].identity.strictFeatures.sex", "value":[ - "Aller directement dans le garage", - "dans la cage d’escalier B", - "Maison avec la porte verte, 100 m après le lavoir" - ] + "MASC", + "FEM", + "INCONNU" + ], + "verificationLevel":1 }, { - "path":"$.createCaseHealth.intialAlert.caller.callerContact.type", + "path":"$.createCaseHealth.patient.[0].identity.strictFeatures.birthDate", "value":[ - "PHNADD", - "PHNADD", - "PHNADD" - ] + "1959-02-01", + "2014-03-03" + ], + "verificationLevel":2 }, { - "path":"$.createCaseHealth.intialAlert.caller.callerContact.detail", + "path":"$.createCaseHealth.patient.[0].identity.nonstrictFeatures.complete", "value":[ - 607080915, - 702880946, - 632085528 - ] + "Didier Morel", + "Lola Halimi" + ], + "verificationLevel":1 }, { - "path":"$.createCaseHealth.intialAlert.caller.detailedName.complete", + "path":"$.createCaseHealth.patient.[0].detail.age", "value":[ - "Sébastien Morel", - "Amina BERTRAND ", - "Lucas Bernardi " - ] + "P65Y", + "P10Y", + "P80Y" + ], + "verificationLevel":2 }, { - "path":"$.createCaseHealth.initialalert.location.country", + "path":"$.createCaseHealth.location.country", "value":[ "FR", "FR", "FR" - ] + ], + "verificationLevel":2 }, { - "path":"$.createCaseHealth.initialalert.location.detailedAddress.complete", + "path":"$.createCaseHealth.location.detailedAddress.complete", "value":[ "12 Rue Louis Aristide Verdier ", "4 rue Danielle Mitterrand", "Rue principale" - ] + ], + "verificationLevel":1 }, { - "path":"$.createCaseHealth.initialalert.location.city.name", + "path":"$.createCaseHealth.location.city.name", "value":[ "Vaires-sur-Marne", "Bezons", "Aulus-les-Bains" - ] + ], + "verificationLevel":1 }, { - "path":"$.createCaseHealth.initialalert.location.freetext", + "path":"$.createCaseHealth.location.city.inseeCode", "value":[ - "Aller directement dans le garage", - "dans la cage d’escalier B", - "Maison avec la porte verte, 100 m après le lavoir" - ] + 77479, + 95063, + 9029 + ], + "verificationLevel":3 }, { - "path":"$.createCaseHealth.initialalert.qualification.whatsHappen.code", + "path":"$.createCaseHealth.location.access.floor", "value":[ - "C02.08.05", - "C02.08.02", - "C02.05.00" - ] + 3 + ], + "verificationLevel":2 }, { - "path":"$.createCaseHealth.initialalert.qualification.whatsHappen.freetext", + "path":"$.createCaseHealth.location.access.roomNumber", "value":[ - "Coupure grave causée par une scie circulaire au niveau de la main; saigne beaucoup. La victime est inconsciente (perte de connaissance).", - "Entorse de la cheville, avec possible fracture. Cheville gonflée et douloureuse. Marche impossible.", - "Confusion, étourdissements, s’exprime difficilement" - ] + + ], + "verificationLevel":2 }, { - "path":"$.createCaseHealth.initialalert.qualification.healthMotive.code", + "path":"$.createCaseHealth.location.access.interphone", "value":[ - "M01.02", - "M02.07", - "M03.08" - ] + "Halimi" + ], + "verificationLevel":2 }, { - "path":"$.createCaseHealth.initialalert.qualification.details.priority", + "path":"$.createCaseHealth.location.access.elevator", "value":[ - "P0", - "P2", - "P1" - ] - } - ] - } - } - ] - }, - { - "label":"Partage de dossier simple (avec demande de prise en charge)", - "description":"Envoi d'un message RS-EDA avec demande de prise en charge, réception d'une réponse RS-EDA d'acceptation", - "steps":[ - { - "type":"send", - "label":"Envoi RS-EDA", - "description":"Envoyer un message de partage de dossier pour le périmètre 15-15 sans demande de transfert; qui contient les valeurs obligatoires minimales attendues", - "message":{ - "requiredValues":[ - { - "path":"$.createCaseHealth.qualification.whatsHappen.code", - "value":[ - "C02.05.01", - "C02.05.01", - "C02.08.02" - ] + 5678 + ], + "verificationLevel":2 }, { - "path":"$.createCaseHealth.qualification.whatsHappen.freetext", + "path":"$.createCaseHealth.location.access.roomNumber", "value":[ - "Douleurs dans la poitrine, pas de difficulté à respirer, la victime est consciente.", - "Personne âgée isolée, a perdu beaucoup de poids, est affaiblie. Sa fille souhaite qu’un médecin aille vérifier l’état de sa mère qui semble faible, et confuse au téléphone. ", - "Enfants ayant chuté d’environ 2 m dans la piscine en travaux (sans eau). Conscients, plaies visibles, notamment une à l’arcade sourcilière et suspicion de fracture" - ] + "ESC B" + ], + "verificationLevel":2 }, { - "path":"$.createCaseHealth.qualification.healthMotive.code", + "path":"$.createCaseHealth.location.access.buildingName", "value":[ - "M03.06", - "M03.00", - "M02.07" - ] + "A" + ], + "verificationLevel":2 }, { - "path":"$.createCaseHealth.qualification.details.priority", + "path":"$.createCaseHealth.location.access.entrance", "value":[ - "P1", - "P2", - "P1" - ] + + ], + "verificationLevel":2 }, { - "path":"$.createCaseHealth.owner", - "value":[ - "fr.health.samu780", - "fr.health.samu500", - "fr.health.samu800" - ] - }, - { - "path":"$.createCaseHealth.patient.[0].identity.strictFeatures.sex", + "path":"$.createCaseHealth.location.access.entity", "value":[ - "FEM", - "FEM", - "FEM" - ] + + ], + "verificationLevel":2 }, { - "path":"$.createCaseHealth.patient.[0].identity.nonstrictFeatures.complete", + "path":"$.createCaseHealth.location.access.phoneNumber", "value":[ - "Ouardia Boudadi", - "Inès Girard", - "Kamélia Nguyen" - ] + 561964589 + ], + "verificationLevel":2 }, { - "path":"$.createCaseHealth.location.country", + "path":"$.createCaseHealth.location.freetext", "value":[ - "FR", - "FR", - "FR" - ] + "Aller directement dans le garage", + "dans la cage d’escalier B", + "Maison avec la porte verte, 100 m après le lavoir" + ], + "verificationLevel":2 }, { - "path":"$.createCaseHealth.location.detailedAddress.complete", + "path":"$.createCaseHealth.location.geometry.point.coord.lat", "value":[ - "18 rue des Bois Rochefort", - "3 La Quibouquière", - "2 Rue de la Neuville " - ] + "48.866920471191406", + "48.92399978637695" + ], + "verificationLevel":3 }, { - "path":"$.createCaseHealth.location.city.name", + "path":"$.createCaseHealth.location.geometry.point.coord.lon", "value":[ - "Sartrouville", - "Coutances", - "Humbercourt" - ] + "2.631575345993042", + "2.2162439823150635" + ], + "verificationLevel":3 }, { - "path":"$.createCaseHealth.location.freetext", + "path":"$.createCaseHealth.intialAlert.freetext", "value":[ - "Sonner chez M. Prodhomme (voisin qui a les clés)" - ] + + ], + "verificationLevel":2 }, { "path":"$.createCaseHealth.intialAlert.caller.callerContact.type", @@ -295,88 +291,72 @@ "PHNADD", "PHNADD", "PHNADD" - ] + ], + "verificationLevel":1 }, { "path":"$.createCaseHealth.intialAlert.caller.callerContact.detail", "value":[ - 607080928, - "06 45 89 68 89", - "06 54 46 42 95" - ] - }, - { - "path":"$.createCaseHealth.intialAlert.caller.detailedName.complete", - "value":[ - "Magda Lena", - "Inès Diop", - "Quentin Diawara" - ] - }, - { - "path":"$.createCaseHealth.initialalert.location.country", - "value":[ - "FR", - "FR", - "FR" - ] - }, - { - "path":"$.createCaseHealth.initialalert.location.detailedAddress.complete", - "value":[ - "18 rue des Bois Rochefort", - "3 La Quibouquière", - "2 Rue de la Neuville " - ] - }, - { - "path":"$.createCaseHealth.initialalert.location.city.name", - "value":[ - "Sartrouville", - "Coutances", - "Humbercourt" - ] - }, - { - "path":"$.createCaseHealth.initialalert.location.freetext", - "value":[ - "Sonner chez M. Prodhomme (voisin qui a les clés)" - ] + 607080915, + 702880946, + 632085528 + ], + "verificationLevel":1 }, { - "path":"$.createCaseHealth.initialalert.qualification.whatsHappen.code", + "path":"$.createCaseHealth.intialAlert.caller.callbackContact.type", "value":[ - "C02.05.01", - "C02.05.01", - "C02.08.02" - ] + "PHNADD", + "PHNADD", + "PHNADD" + ], + "verificationLevel":2 }, { - "path":"$.createCaseHealth.initialalert.qualification.whatsHappen.freetext", + "path":"$.createCaseHealth.intialAlert.caller.callbackContact.detail", "value":[ - "Douleurs dans la poitrine, pas de difficulté à respirer, la victime est consciente.", - "Personne âgée isolée, a perdu beaucoup de poids, est affaiblie. Sa fille souhaite qu’un médecin aille vérifier l’état de sa mère qui semble faible, et confuse au téléphone. ", - "Enfants ayant chuté d’environ 2 m dans la piscine en travaux (sans eau). Conscients, plaies visibles, notamment une à l’arcade sourcilière et suspicion de fracture" - ] + 607080915, + 702880946, + 561964589 + ], + "verificationLevel":2 }, { - "path":"$.createCaseHealth.initialalert.qualification.healthMotive.code", + "path":"$.createCaseHealth.intialAlert.caller.type", "value":[ - "M03.06", - "M03.00", - "M02.07" - ] + "FAMILLE", + "TIERS", + "TIERS" + ], + "verificationLevel":3 }, { - "path":"$.createCaseHealth.initialalert.qualification.details.priority", + "path":"$.createCaseHealth.intialAlert.caller.detailedName.complete", "value":[ - "P0", - "P2", - "P1" - ] + "Sébastien Morel", + "Amina BERTRAND ", + "Lucas Bernardi " + ], + "verificationLevel":1 } ] } + } + ] + }, + { + "label":"Partage de dossier simple (avec demande de prise en charge)", + "description":"Envoi d'un message RS-EDA avec demande de prise en charge, réception d'une réponse RS-EDA d'acceptation", + "steps":[ + { + "type":"send", + "label":"Envoi RS-EDA", + "description":"Envoyer un message de partage de dossier pour le périmètre 15-15 sans demande de transfert; qui contient les valeurs obligatoires minimales attendues", + "message":{ + "requiredValues":[ + + ] + } }, { "type":"receive", @@ -384,178 +364,7 @@ "description":"Recevoir un message RS-EDA d'acceptation de la demande de prise en charge, saisir et valider les valeurs spécifiées dans le message reçu dans le cadre à droite puis envoyer un aquittement du message", "message":{ "requiredValues":[ - { - "path":"$.createCaseHealth.qualification.whatsHappen.code", - "value":[ - "C02.05.01", - "C02.05.01", - "C02.08.02" - ] - }, - { - "path":"$.createCaseHealth.qualification.whatsHappen.freetext", - "value":[ - "Douleurs dans la poitrine, pas de difficulté à respirer, la victime est consciente.", - "Personne âgée isolée, a perdu beaucoup de poids, est affaiblie. Sa fille souhaite qu’un médecin aille vérifier l’état de sa mère qui semble faible, et confuse au téléphone. ", - "Enfants ayant chuté d’environ 2 m dans la piscine en travaux (sans eau). Conscients, plaies visibles, notamment une à l’arcade sourcilière et suspicion de fracture" - ] - }, - { - "path":"$.createCaseHealth.qualification.healthMotive.code", - "value":[ - "M03.06", - "M03.00", - "M02.07" - ] - }, - { - "path":"$.createCaseHealth.qualification.details.priority", - "value":[ - "P1", - "P2", - "P1" - ] - }, - { - "path":"$.createCaseHealth.owner", - "value":[ - "fr.health.samu780", - "fr.health.samu500", - "fr.health.samu800" - ] - }, - { - "path":"$.createCaseHealth.patient.[0].identity.strictFeatures.sex", - "value":[ - "FEM", - "FEM", - "FEM" - ] - }, - { - "path":"$.createCaseHealth.patient.[0].identity.nonstrictFeatures.complete", - "value":[ - "Ouardia Boudadi", - "Inès Girard", - "Kamélia Nguyen" - ] - }, - { - "path":"$.createCaseHealth.location.country", - "value":[ - "FR", - "FR", - "FR" - ] - }, - { - "path":"$.createCaseHealth.location.detailedAddress.complete", - "value":[ - "18 rue des Bois Rochefort", - "3 La Quibouquière", - "2 Rue de la Neuville " - ] - }, - { - "path":"$.createCaseHealth.location.city.name", - "value":[ - "Sartrouville", - "Coutances", - "Humbercourt" - ] - }, - { - "path":"$.createCaseHealth.location.freetext", - "value":[ - "Sonner chez M. Prodhomme (voisin qui a les clés)" - ] - }, - { - "path":"$.createCaseHealth.intialAlert.caller.callerContact.type", - "value":[ - "PHNADD", - "PHNADD", - "PHNADD" - ] - }, - { - "path":"$.createCaseHealth.intialAlert.caller.callerContact.detail", - "value":[ - 607080928, - "06 45 89 68 89", - "06 54 46 42 95" - ] - }, - { - "path":"$.createCaseHealth.intialAlert.caller.detailedName.complete", - "value":[ - "Magda Lena", - "Inès Diop", - "Quentin Diawara" - ] - }, - { - "path":"$.createCaseHealth.initialalert.location.country", - "value":[ - "FR", - "FR", - "FR" - ] - }, - { - "path":"$.createCaseHealth.initialalert.location.detailedAddress.complete", - "value":[ - "18 rue des Bois Rochefort", - "3 La Quibouquière", - "2 Rue de la Neuville " - ] - }, - { - "path":"$.createCaseHealth.initialalert.location.city.name", - "value":[ - "Sartrouville", - "Coutances", - "Humbercourt" - ] - }, - { - "path":"$.createCaseHealth.initialalert.location.freetext", - "value":[ - "Sonner chez M. Prodhomme (voisin qui a les clés)" - ] - }, - { - "path":"$.createCaseHealth.initialalert.qualification.whatsHappen.code", - "value":[ - "C02.05.01", - "C02.05.01", - "C02.08.02" - ] - }, - { - "path":"$.createCaseHealth.initialalert.qualification.whatsHappen.freetext", - "value":[ - "Douleurs dans la poitrine, pas de difficulté à respirer, la victime est consciente.", - "Personne âgée isolée, a perdu beaucoup de poids, est affaiblie. Sa fille souhaite qu’un médecin aille vérifier l’état de sa mère qui semble faible, et confuse au téléphone. ", - "Enfants ayant chuté d’environ 2 m dans la piscine en travaux (sans eau). Conscients, plaies visibles, notamment une à l’arcade sourcilière et suspicion de fracture" - ] - }, - { - "path":"$.createCaseHealth.initialalert.qualification.healthMotive.code", - "value":[ - "M03.06", - "M03.00", - "M02.07" - ] - }, - { - "path":"$.createCaseHealth.initialalert.qualification.details.priority", - "value":[ - "P0", - "P2", - "P1" - ] - } + ], "file":"RS-EDA\/RS-EDA-usecase-PartageDossier-1.json" } diff --git a/csv_parser/test-cases-15-15.xlsx b/csv_parser/test-cases-15-15.xlsx index e1c225943..19eedde67 100644 Binary files a/csv_parser/test-cases-15-15.xlsx and b/csv_parser/test-cases-15-15.xlsx differ diff --git a/csv_parser/test_case_generator.py b/csv_parser/test_case_generator.py index 4724d72e1..2e6bebc85 100644 --- a/csv_parser/test_case_generator.py +++ b/csv_parser/test_case_generator.py @@ -1,5 +1,6 @@ import pandas as pd import warnings +import math from json import dumps # Improving panda printing | Ref.: https://stackoverflow.com/a/11711637 @@ -47,17 +48,24 @@ def run(perimeters): break # Else if the value is nan, we check if the row represents a 'required' value by checking the V column elif pd.isna(row["Pas de test"]): - # If the value is 'X', we add the required value to the latest step in the test case - if row["V"] == "X": - values = [] - for i in range(5): - if pd.notna(row[f"JDD {i+1}"]): - values.append(row[f"JDD {i+1}"]) - required_value = { - "path": row["path JSON"], - "value": values - } - test_case["steps"][-1]["message"]["requiredValues"].append(required_value) + # If the value is not empty, we add it to the required values array of the last step, specifying + # the number in the "verificationLevel" property + if pd.notna(row["V"]): + try: + values = [] + for i in range(5): + if pd.notna(row[f"JDD {i+1}"]): + values.append(row[f"JDD {i+1}"]) + + verification_level = int(row["V"]) + required_value = { + "path": row["path JSON"], + "value": values, + "verificationLevel": int(row["V"]), + } + test_case["steps"][-1]["message"]["requiredValues"].append(required_value) + except ValueError: + print(f"Error: Invalid verification level in test case {test_case['label']}, row {index + 1}") # Else, if the value is not nan, we add a new step to the test case. If the type of the step is # "receive", we also add the property "file" containing a string with the name of the template diff --git a/csv_parser/uml_generator.py b/csv_parser/uml_generator.py index c2f165489..1e5a40c9d 100644 --- a/csv_parser/uml_generator.py +++ b/csv_parser/uml_generator.py @@ -145,7 +145,7 @@ class Color: WARNING = '\033[93m' -def run(model, root_name, version=date.today().strftime("%y.%m.%d"), filter=False): +def run(model, root_name, version=date.today().strftime("%y.%m.%d")): print(f'{Color.BOLD}{Color.UNDERLINE}{Color.PURPLE}Building UML from version {version} of {model} ...{Color.END}') # Create new vis to start from empty canvas diff --git a/csv_parser/workflow.py b/csv_parser/workflow.py index 460cadb30..1c8266c16 100644 --- a/csv_parser/workflow.py +++ b/csv_parser/workflow.py @@ -2,6 +2,7 @@ import os import shutil import yaml +import pandas as pd import csv_parser import test_case_generator @@ -18,47 +19,17 @@ print(args.stage) # ---------------------------------------- SCHEMAS CONFIGURATION -schemas = [{ - 'name': 'RC-EDA', - 'sheet': 'RC-EDA', - 'filter': True -}, { - 'name': 'RS-EDA', - 'sheet': 'RC-EDA', - 'filter': False -}, { - 'name': 'EMSI', - 'sheet': 'EMSI', - 'filter': False -}, { - 'name': 'GEO-POS', - 'sheet': 'GEO-POS', - 'filter': False -}, { - 'name': 'GEO-REQ', - 'sheet': 'GEO-REQ', - 'filter': False -}, { - 'name': 'GEO-RES', - 'sheet': 'GEO-RES', - 'filter': False -}, { - 'name': 'RC-REF', - 'sheet': 'RC-REF', - 'filter': False -}, { - 'name': 'RS-ERROR', - 'sheet': 'RS-ERROR', - 'filter': False -}, { - 'name': 'RS-INFO', - 'sheet': 'RS-INFO', - 'filter': False -}, { - 'name': 'CustomContent', - 'sheet': 'customContent', - 'filter': False -}] +sheets = [ + 'RC-EDA', + 'EMSI', + 'GEO-POS', + 'GEO-REQ', + 'GEO-RES', + 'RC-REF', + 'RS-ERROR', + 'RS-INFO', + 'customContent' +] perimeters = [{ 'name': 'Périmetre 15-15', @@ -68,26 +39,50 @@ # ---------------------------------------- STAGE FUNCTIONS def parser_and_mv(): - for schema in schemas: - # Run csv_parser - csv_parser.run(schema['sheet'], schema['name'], None, schema['filter']) - - name = schema['name'] - # Copy schema to JsonSchema2XSD project - shutil.copyfile(f"./out/{name}/{name}.schema.json", f"./json_schema2xsd/src/main/resources/{name}.schema.json") - # Move output files => should be in .gitignore - if os.path.exists(f"../generator/input/{name}.openapi.yaml"): - os.remove(f"../generator/input/{name}.openapi.yaml") - os.rename(f"./out/{name}/{name}.openapi.yaml", f"../generator/input/{name}.openapi.yaml") - if os.path.exists(f"../src/main/resources/json-schema/{name}.schema.json"): - os.remove(f"../src/main/resources/json-schema/{name}.schema.json") - os.rename(f"./out/{name}/{name}.schema.json", f"../src/main/resources/json-schema/{name}.schema.json") - - with open(f'out/hubsante.asyncapi.yaml', 'w') as file: - documents = yaml.dump(csv_parser.full_asyncapi, sort_keys=False) - documents = documents.replace('#/definitions/', "#/components/schemas/") - file.write(documents) - print('AsyncAPI schema generated.') + for sheet in sheets: + full_df = pd.read_excel('model.xlsx', sheet_name=sheet, header=None) + + # For each sheet we read the A2 cell and get the list of schemas to generate + if not pd.isna(full_df.iloc[1, 0]): + schemas_array = full_df.iloc[1, 0].split(' ') + + # Schemas are formatted in the sheet as follows: + # "schema1['name']:schema1['filter']:schema1['modelType'] schema2['name']:schema2['filter']:schema2['modelType'] ..." + try: + schemas = [{'name': schemas_array[i].split(':')[0], 'sheet': sheet, 'filter': schemas_array[i].split(':')[1], + 'model_type': schemas_array[i].split(':')[2]} + for i in range(len(schemas_array))] + except IndexError: + print(f"Error in sheet {sheet}: schema list (cell A2) is not well formatted. " + f"Should be 'name:filter:modelType' separated by a space. " + f"Ex: 'RC-EDA:15-18:createCase RS-EDA:15-15:createCaseHealth'. " + f"It was: '{full_df.iloc[1, 0]}'") + exit(1) + # If A2 is empty, we generate only one schema with the sheet name and modelType in A1 + else: + schemas = [{'name': sheet, 'sheet': sheet, 'filter': '', 'model_type': full_df.iloc[0, 0]}] + + for schema in schemas: + # Run csv_parser + csv_parser.run(schema['sheet'], schema['name'], None, schema['filter'], schema['model_type']) + + name = schema['name'] + # Copy schema to JsonSchema2XSD project + shutil.copyfile(f"./out/{name}/{name}.schema.json", + f"./json_schema2xsd/src/main/resources/{name}.schema.json") + # Move output files => should be in .gitignore + if os.path.exists(f"../generator/input/{name}.openapi.yaml"): + os.remove(f"../generator/input/{name}.openapi.yaml") + os.rename(f"./out/{name}/{name}.openapi.yaml", f"../generator/input/{name}.openapi.yaml") + if os.path.exists(f"../src/main/resources/json-schema/{name}.schema.json"): + os.remove(f"../src/main/resources/json-schema/{name}.schema.json") + os.rename(f"./out/{name}/{name}.schema.json", f"../src/main/resources/json-schema/{name}.schema.json") + + with open(f'out/hubsante.asyncapi.yaml', 'w') as file: + documents = yaml.dump(csv_parser.full_asyncapi, sort_keys=False) + documents = documents.replace('#/definitions/', "#/components/schemas/") + file.write(documents) + print('AsyncAPI schema generated.') def test_case_parser(): diff --git a/generator/README.md b/generator/README.md index aeda017c5..093c05583 100644 --- a/generator/README.md +++ b/generator/README.md @@ -29,8 +29,6 @@ Ainsi on peut ne rebuilder que le modèle concerné, sans avoir à rebuilder tou # common npx @openapitools/openapi-generator-cli generate -c ..\config\common\common.generator-config.json --skip-validate-spec -npx @openapitools/openapi-generator-cli generate -c ..\config\common\common.wrapper.generator-config.json --skip-validate-spec - npx @openapitools/openapi-generator-cli generate -c ..\config\common\common.distributionElement.generator-config.json --skip-validate-spec # createCase diff --git a/generator/config/common/common.distributionElement.generator-config.json b/generator/config/RC-DE/RC-DE.distributionElement.generator-config.json similarity index 83% rename from generator/config/common/common.distributionElement.generator-config.json rename to generator/config/RC-DE/RC-DE.distributionElement.generator-config.json index 6b8c87bca..82e9e6e64 100644 --- a/generator/config/common/common.distributionElement.generator-config.json +++ b/generator/config/RC-DE/RC-DE.distributionElement.generator-config.json @@ -1,5 +1,5 @@ { - "inputSpec": "./input/common.openapi.yaml", + "inputSpec": "./input/RC-DE.openapi.yaml", "outputDir": "classes/", "generatorName": "java", "templateDir": "templates/distribution-element/", @@ -13,7 +13,7 @@ }, "additionalProperties": { "library": "native", - "modelPackage": "com.hubsante.model.common", + "modelPackage": "com.hubsante.model.rcde", "serializationLibrary": "jackson", "openApiNullable": true, "supportUrlQuery": false, diff --git a/generator/config/common/common.generator-config.json b/generator/config/RC-DE/RC-DE.generator-config.json similarity index 82% rename from generator/config/common/common.generator-config.json rename to generator/config/RC-DE/RC-DE.generator-config.json index 37cf05d73..92c3384d8 100644 --- a/generator/config/common/common.generator-config.json +++ b/generator/config/RC-DE/RC-DE.generator-config.json @@ -1,5 +1,5 @@ { - "inputSpec": "./input/common.openapi.yaml", + "inputSpec": "./input/RC-DE.openapi.yaml", "outputDir": "classes/", "generatorName": "java", "templateDir": "templates/child-classes/", @@ -13,7 +13,7 @@ }, "additionalProperties": { "library": "native", - "modelPackage": "com.hubsante.model.common", + "modelPackage": "com.hubsante.model.rcde", "serializationLibrary": "jackson", "openApiNullable": true, "supportUrlQuery": false, diff --git a/generator/config/RC-REF/RC-REF.generator-config.json b/generator/config/RC-REF/RC-REF.generator-config.json new file mode 100644 index 000000000..4eba1fb60 --- /dev/null +++ b/generator/config/RC-REF/RC-REF.generator-config.json @@ -0,0 +1,22 @@ +{ + "inputSpec": "./input/RC-REF.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.reference", + "serializationLibrary": "jackson", + "openApiNullable": true, + "supportUrlQuery": false, + "enablePostProcessFile": true + } +} \ No newline at end of file diff --git a/generator/config/common/common.reference.generator-config.json b/generator/config/RC-REF/RC-REF.usecase.generator-config.json similarity index 82% rename from generator/config/common/common.reference.generator-config.json rename to generator/config/RC-REF/RC-REF.usecase.generator-config.json index 7bd54bca6..d24c95d9b 100644 --- a/generator/config/common/common.reference.generator-config.json +++ b/generator/config/RC-REF/RC-REF.usecase.generator-config.json @@ -1,5 +1,5 @@ { - "inputSpec": "./input/common.openapi.yaml", + "inputSpec": "./input/RC-REF.openapi.yaml", "outputDir": "classes/", "generatorName": "java", "templateDir": "templates/useCase/", @@ -13,7 +13,7 @@ }, "additionalProperties": { "library": "native", - "modelPackage": "com.hubsante.model.common", + "modelPackage": "com.hubsante.model.reference", "serializationLibrary": "jackson", "openApiNullable": true, "supportUrlQuery": false, diff --git a/generator/config/common/common.wrapper.generator-config.json b/generator/config/RC-REF/RC-REF.wrapper.generator-config.json similarity index 76% rename from generator/config/common/common.wrapper.generator-config.json rename to generator/config/RC-REF/RC-REF.wrapper.generator-config.json index f5e97787c..2d4ea05b7 100644 --- a/generator/config/common/common.wrapper.generator-config.json +++ b/generator/config/RC-REF/RC-REF.wrapper.generator-config.json @@ -1,10 +1,10 @@ { - "inputSpec": "./input/common.openapi.yaml", + "inputSpec": "./input/RC-REF.openapi.yaml", "outputDir": "classes/", "generatorName": "java", "templateDir": "templates/wrapper/", "globalProperties": { - "models": "ReferenceWrapper", + "models": "referenceWrapper", "apis": false, "apiTests": false, "apiDocs": false, @@ -13,7 +13,7 @@ }, "additionalProperties": { "library": "native", - "modelPackage": "com.hubsante.model.common", + "modelPackage": "com.hubsante.model.reference", "serializationLibrary": "jackson", "openApiNullable": true, "supportUrlQuery": false, diff --git a/generator/config/RS-ERROR/RS-ERROR.generator-config.json b/generator/config/RS-ERROR/RS-ERROR.generator-config.json new file mode 100644 index 000000000..6adcd4a55 --- /dev/null +++ b/generator/config/RS-ERROR/RS-ERROR.generator-config.json @@ -0,0 +1,22 @@ +{ + "inputSpec": "./input/RS-ERROR.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.report", + "serializationLibrary": "jackson", + "openApiNullable": true, + "supportUrlQuery": false, + "enablePostProcessFile": true + } +} \ No newline at end of file diff --git a/generator/config/RS-ERROR/RS-ERROR.usecase.generator-config.json b/generator/config/RS-ERROR/RS-ERROR.usecase.generator-config.json new file mode 100644 index 000000000..7c66c9d3d --- /dev/null +++ b/generator/config/RS-ERROR/RS-ERROR.usecase.generator-config.json @@ -0,0 +1,22 @@ +{ + "inputSpec": "./input/RS-ERROR.openapi.yaml", + "outputDir": "classes/", + "generatorName": "java", + "templateDir": "templates/useCase/", + "globalProperties": { + "models": "error", + "apis": false, + "apiTests": false, + "apiDocs": false, + "modelDocs": false, + "modelTests": false + }, + "additionalProperties": { + "library": "native", + "modelPackage": "com.hubsante.model.report", + "serializationLibrary": "jackson", + "openApiNullable": true, + "supportUrlQuery": false, + "enablePostProcessFile": true + } +} \ No newline at end of file diff --git a/generator/config/RS-ERROR/RS-ERROR.wrapper.generator-config.json b/generator/config/RS-ERROR/RS-ERROR.wrapper.generator-config.json new file mode 100644 index 000000000..0789106f8 --- /dev/null +++ b/generator/config/RS-ERROR/RS-ERROR.wrapper.generator-config.json @@ -0,0 +1,26 @@ +{ + "inputSpec": "./input/RS-ERROR.openapi.yaml", + "outputDir": "classes/", + "generatorName": "java", + "templateDir": "templates/wrapper/", + "globalProperties": { + "models": "errorWrapper", + "apis": false, + "apiTests": false, + "apiDocs": false, + "modelDocs": false, + "modelTests": false + }, + "additionalProperties": { + "library": "native", + "modelPackage": "com.hubsante.model.report", + "serializationLibrary": "jackson", + "openApiNullable": true, + "supportUrlQuery": false, + "enablePostProcessFile": true, + "customExtend": { + "package": "com.hubsante.model.edxl", + "className": "ContentMessage" + } + } +} \ No newline at end of file diff --git a/generator/input/EMSI.openapi.yaml b/generator/input/EMSI.openapi.yaml index a1cb130d6..6bfc6e00f 100644 --- a/generator/input/EMSI.openapi.yaml +++ b/generator/input/EMSI.openapi.yaml @@ -1620,9 +1620,7 @@ components: title: "Localisation de l'\xE9v\xE9nement" x-display: expansion-panels x-health-only: false - required: - - TYPE - - POSITION + required: [] properties: DATIME: type: string @@ -1814,8 +1812,7 @@ components: title: "Position de l'op\xE9ration" x-display: expansion-panels x-health-only: false - required: - - LOC_ID + required: [] properties: LOC_ID: type: string diff --git a/generator/input/GEO-RES.openapi.yaml b/generator/input/GEO-RES.openapi.yaml index 0ca860464..8dbe1fd33 100644 --- a/generator/input/GEO-RES.openapi.yaml +++ b/generator/input/GEO-RES.openapi.yaml @@ -105,7 +105,7 @@ components: - HELICOPTERE - 'SHIP ' examples: - - VEHCL + - VEHICULE capacity: type: string title: "Capacit\xE9s de la ressource" @@ -119,7 +119,7 @@ components: - PARAMEDICALE - INCONNUE examples: - - MED + - MEDICALE contacts: type: array items: diff --git a/generator/input/common.openapi.yaml b/generator/input/RC-DE.openapi.yaml similarity index 76% rename from generator/input/common.openapi.yaml rename to generator/input/RC-DE.openapi.yaml index 116753590..150f8a118 100644 --- a/generator/input/common.openapi.yaml +++ b/generator/input/RC-DE.openapi.yaml @@ -59,20 +59,4 @@ components: name: type: string URI: - type: string - ReferenceWrapper: - required: - - Reference - properties: - reference: - $ref: '#/components/schemas/reference' - reference: - properties: - distributionID: - type: string - refused: - type: boolean - infoDistributionID: - type: string - required: - - distributionID \ No newline at end of file + type: string \ No newline at end of file diff --git a/generator/input/RC-EDA.openapi.yaml b/generator/input/RC-EDA.openapi.yaml index e0186386a..2a4cea065 100644 --- a/generator/input/RC-EDA.openapi.yaml +++ b/generator/input/RC-EDA.openapi.yaml @@ -96,15 +96,20 @@ components: additionalInformation: $ref: '#/components/schemas/additionalInformation' freetext: - type: string - title: Description de l'affaire/dossier + type: array x-health-only: false - x-cols: 6 - example: example.json#/freetext - description: "Texte libre permettant de donner des informations suppl\xE9\ - mentaires concernant l'affaire" - examples: - - None + items: + type: string + title: Description de l'affaire/dossier + x-health-only: false + x-cols: 6 + example: example.json#/freetext/0 + description: "Texte libre permettant de donner des informations suppl\xE9\ + mentaires concernant l'affaire/dossier. Ces informations sont g\xE9\ + n\xE9rales, et ont vocation \xE0 \xEAtre \xE9chang\xE9es en inter-force. " + examples: + - "Le forcen\xE9 n'est pas ma\xEEtris\xE9. Voiture renvers\xE9e. Urgences\ + \ ferm\xE9es de 22h \xE0 6h00." additionalProperties: false qualification: type: object @@ -153,12 +158,12 @@ components: x-health-only: false x-cols: 6 example: example.json#/location/locLabel - description: "Permet d'indiquer des indications auto suffisantes permettant\ - \ pour un op\xE9rationnel d'acc\xE9der facilement au lieu avec des indications\ - \ minimales.\nDans les messages NexSIS, va souvent correspondre \xE0 la\ - \ concat\xE9nation suivant des r\xE8gles m\xE9tiers de diff\xE9rentes\ - \ informations, dont le \"name\" (toponyme) et l'adresse.\nComprend au\ - \ maximum 255 caract\xE8res" + description: "Donne les informations minimales d'identification du lieu\ + \ d'intervention, qui permet d'identifier rapidement le lieu pour les\ + \ \xE9quipes op\xE9rationnelles. Comprend au maximum 255 caract\xE8res.\n\ + 15-18 : Dans les messages NexSIS, va souvent correspondre \xE0 la concat\xE9\ + nation suivant des r\xE8gles m\xE9tiers de diff\xE9rentes informations,\ + \ dont le \"name\" (toponyme) et l'adresse.\n" examples: - "Lyc\xE9e Pierre de Coubertin - 12 rue de l'Amiti\xE9 77288 Melun, Mus\xE9\ e Bossuet - Acc\xE8s 2 - 77048 Saint-Albray" @@ -168,10 +173,15 @@ components: x-health-only: false x-cols: 6 example: example.json#/location/name - description: "Indique le nom de lieu : nom commercial, for\xEAt de Fontainebleau,\ - \ lac du Der (plut\xF4t \xE0 destination des syst\xE8mes)." + description: "Indique le nom de lieu : nom commercial, Etablissement, for\xEA\ + t de Fontainebleau, lac du Der (plut\xF4t \xE0 destination des syst\xE8\ + mes)." examples: - "Lyc\xE9e Pierre de Coubertin" + externalLocationId: + type: array + items: + $ref: '#/components/schemas/externalLocationId' detailedAddress: $ref: '#/components/schemas/detailedAddress' city: @@ -436,7 +446,7 @@ components: - France freetext: type: string - title: Commentaire + title: "Informations compl\xE9mentaires sur la localisation" x-health-only: false x-cols: 6 example: example.json#/location/freetext @@ -455,7 +465,6 @@ components: - reception - reporting - caller - - alertSource - location - qualification - callTaker @@ -514,20 +523,12 @@ components: - ATTENTION examples: - STANDARD - freetext: - type: string - title: "Informations compl\xE9mentaires sur l'alerte" - x-health-only: false - x-cols: 6 - example: example.json#/initialAlert/freetext - description: "Texte libre permettant de donner des informations suppl\xE9\ - mentaires concernant l'alerte." - examples: - - "D\xE9clenchement t\xE9l\xE9alarme, voisine sur les lieux" + notes: + type: array + items: + $ref: '#/components/schemas/notes' caller: $ref: '#/components/schemas/caller' - alertSource: - $ref: '#/components/schemas/contactSource' location: $ref: '#/components/schemas/location' qualification: @@ -557,9 +558,22 @@ components: description: "Identifiant technique du patient pour permettre les rapprochements\ \ d'infos. Le 1er qui cr\xE9\xE9 l'ID patient a raison." examples: - - None + - fr.health.samu044.DRFR15DDXAAJJJ00000.P00 identity: $ref: '#/components/schemas/insIdentity' + freetext: + type: array + x-health-only: false + items: + type: string + title: "Informations compl\xE9mentaires sur le patient" + x-health-only: false + x-cols: 6 + example: example.json#/patient/0/freetext/0 + description: "Correspond \xE0 la zone de commentaire renseign\xE9 par\ + \ patient cr\xE9\xE9/identifi\xE9" + examples: + - None additionalProperties: false example: example.json#/patient/0 decision: @@ -569,6 +583,7 @@ components: x-health-only: false required: - creation + - type properties: id: type: string @@ -576,8 +591,8 @@ components: x-health-only: false x-cols: 6 example: example.json#/decision/0/id - description: "ID partag\xE9 du patient concern\xE9, lorsque le patient existe\ - \ et est identifi\xE9" + description: "ID partag\xE9 du patient concern\xE9 par la d\xE9cision, lorsque\ + \ le patient existe et est identifi\xE9" examples: - None creation: @@ -599,44 +614,17 @@ components: x-cols: 6 example: example.json#/decision/0/type description: "Type de d\xE9cision prise" + enum: + - CONSEIL + - PMT + - INTER + - ORIENT + - PASPLUS examples: - "conseil m\xE9dical / d\xE9cision d\u2019intervention / d\xE9cision d\u2019\ orientation et de transport / Pas de d\xE9cision suppl\xE9mentaire" - orientation: - type: string - title: Orientation - x-health-only: false - x-cols: 6 - example: example.json#/decision/0/orientation - description: "D\xE9cision(s) d'orientation prise par le m\xE9decin r\xE9\ - gulateur" - examples: - - None - transportation: - type: array - x-health-only: false - items: - type: string - title: Type de transport - x-health-only: false - x-cols: 6 - example: example.json#/decision/0/transportation/0 - description: "Type de transport \xE0 engager pour la prise en charge du\ - \ patient" - examples: - - 'SMUR ' - teamCare: - type: string - title: Niveau de prise en charge - x-health-only: false - x-cols: 6 - example: example.json#/decision/0/teamCare - description: "Type d\u2019\xE9quipe (m\xE9dical, param\xE9dicale, non m\xE9\ - dicale, standard, incomplete, ...)" - examples: - - "M\xE9dical, param\xE9dical, secouriste" - destination: - $ref: '#/components/schemas/destination' + transportDetails: + $ref: '#/components/schemas/transportDetails' additionalProperties: false example: example.json#/decision/0 additionalInformation: @@ -683,22 +671,11 @@ components: \ fourni avec le code." examples: - "Rod\xE9o automobile" - freetext: - type: string - title: Commentaire - x-health-only: false - x-cols: 6 - example: example.json#/qualification/whatsHappen/freetext - description: "Commentaire libre permettant de passer des informations compl\xE9\ - mentaires associ\xE9es \xE0 la nomenclature" - examples: - - None additionalProperties: false example: example.json#/qualification/whatsHappen examples: - code: C07.13.02 label: "Rod\xE9o automobile" - freetext: None locationKind: type: object title: Type de lieu @@ -715,6 +692,186 @@ components: x-cols: 6 example: example.json#/qualification/locationKind/code description: "A valoriser avec un code la nomenclature associ\xE9e" + enum: + - L01.00.00 + - L01.01.00 + - L01.01.01 + - L01.01.02 + - L01.01.03 + - L01.01.04 + - L01.02.00 + - L01.02.01 + - L01.02.02 + - L01.02.03 + - L01.02.04 + - L01.02.05 + - L01.02.06 + - L01.02.07 + - L01.02.08 + - L01.02.09 + - L01.02.10 + - L01.02.11 + - L01.02.12 + - L01.03.00 + - L01.03.01 + - L01.03.02 + - L01.03.03 + - L01.04.00 + - L02.00.00 + - L02.01.00 + - L02.02.00 + - L02.02.01 + - L02.02.02 + - L02.02.03 + - L02.02.04 + - L02.02.05 + - L02.03.00 + - L02.03.01 + - L02.03.02 + - L02.03.03 + - L02.04.00 + - L02.05.00 + - L02.05.01 + - L02.05.02 + - L02.05.03 + - L02.05.04 + - L02.05.05 + - L02.05.06 + - L02.05.07 + - L02.05.08 + - L02.05.09 + - L02.05.10 + - L02.05.11 + - L02.05.12 + - L02.05.13 + - L02.05.14 + - L02.05.15 + - L02.05.16 + - L02.06.00 + - L02.06.01 + - L02.06.02 + - L02.06.03 + - L02.06.04 + - L02.06.05 + - L02.06.06 + - L02.06.07 + - L02.06.08 + - L02.07.00 + - L02.07.01 + - L02.07.02 + - L02.08.00 + - L03.00.00 + - L03.01.00 + - L03.02.00 + - L03.03.00 + - L03.04.00 + - L03.05.00 + - L04.00.00 + - L04.01.00 + - L04.02.00 + - L04.02.01 + - L04.02.02 + - L04.02.03 + - L04.03.00 + - L04.03.01 + - L04.03.02 + - L04.03.03 + - L04.04.00 + - L04.05.00 + - L04.06.00 + - L04.06.01 + - L04.06.02 + - L04.06.03 + - L04.06.04 + - L04.06.05 + - L04.07.00 + - L04.07.01 + - L04.07.02 + - L04.07.03 + - L04.08.00 + - L04.08.01 + - L04.08.02 + - L04.09.00 + - L04.09.01 + - L04.09.02 + - L04.10.00 + - L04.11.00 + - L04.11.01 + - L04.11.02 + - L04.11.03 + - L04.11.04 + - L04.12.00 + - L04.12.01 + - L04.12.02 + - L04.12.03 + - L04.12.04 + - L04.13.00 + - L04.13.01 + - L04.13.02 + - L04.13.03 + - L04.13.04 + - L04.14.00 + - L04.14.01 + - L04.14.02 + - L04.15.00 + - L04.16.00 + - L05.00.00 + - L05.01.00 + - L05.01.01 + - L05.01.02 + - L05.01.03 + - L05.01.04 + - L05.02.00 + - L05.02.01 + - L05.02.02 + - L05.02.03 + - L05.02.04 + - L05.03.00 + - L05.03.01 + - L05.03.02 + - L05.04.00 + - L05.04.01 + - L05.04.02 + - L05.04.03 + - L05.04.04 + - L05.04.05 + - L05.04.06 + - L05.05.00 + - L05.06.00 + - L05.07.00 + - L06.00.00 + - L06.01.00 + - L06.01.01 + - L06.01.02 + - L06.01.03 + - L06.01.04 + - L06.01.05 + - L06.01.06 + - L06.01.07 + - L06.01.08 + - L06.02.00 + - L06.03.00 + - L06.03.01 + - L06.03.02 + - L06.03.03 + - L06.03.04 + - L06.03.05 + - L06.04.00 + - L06.05.00 + - L06.05.01 + - L06.05.02 + - L06.06.00 + - L06.06.01 + - L06.06.02 + - L06.06.03 + - L06.06.04 + - L06.07.00 + - L06.07.01 + - L06.07.02 + - L07.00.00 + - L07.01.00 + - L07.01.01 + - L07.02.00 examples: - C07.13.02 label: @@ -729,22 +886,11 @@ components: \ fourni avec le code." examples: - "Rod\xE9o automobile" - freetext: - type: string - title: Commentaire - x-health-only: false - x-cols: 6 - example: example.json#/qualification/locationKind/freetext - description: "Commentaire libre permettant de passer des informations compl\xE9\ - mentaires associ\xE9es \xE0 la nomenclature" - examples: - - None additionalProperties: false example: example.json#/qualification/locationKind examples: - code: C07.13.02 label: "Rod\xE9o automobile" - freetext: None riskThreat: type: object title: "Risque, menace et sensibilit\xE9" @@ -761,6 +907,44 @@ components: x-cols: 6 example: example.json#/qualification/riskThreat/0/code description: "A valoriser avec un code la nomenclature associ\xE9e" + enum: + - R01 + - R02 + - R03 + - R04 + - R05 + - R06 + - R07 + - R08 + - R09 + - R10 + - R11 + - R12 + - R13 + - R14 + - R15 + - R16 + - R17 + - R18 + - R19 + - R20 + - R21 + - R22 + - R23 + - R24 + - R25 + - R26 + - R27 + - R28 + - R29 + - R30 + - R31 + - R32 + - R33 + - R34 + - R35 + - R36 + - R37 examples: - C07.13.02 label: @@ -775,22 +959,11 @@ components: \ fourni avec le code." examples: - "Rod\xE9o automobile" - freetext: - type: string - title: Commentaire - x-health-only: false - x-cols: 6 - example: example.json#/qualification/riskThreat/0/freetext - description: "Commentaire libre permettant de passer des informations compl\xE9\ - mentaires associ\xE9es \xE0 la nomenclature" - examples: - - None additionalProperties: false example: example.json#/qualification/riskThreat/0 examples: - code: C07.13.02 label: "Rod\xE9o automobile" - freetext: None healthMotive: type: object title: "Motif de recours m\xE9dico-secouriste" @@ -807,6 +980,59 @@ components: x-cols: 6 example: example.json#/qualification/healthMotive/code description: "A valoriser avec un code la nomenclature associ\xE9e" + enum: + - M01.00 + - M01.01 + - M01.02 + - M01.03 + - M02.00 + - M02.01 + - M02.02 + - M02.03 + - M02.04 + - M02.05 + - M02.06 + - M02.07 + - M02.08 + - M02.09 + - M02.10 + - M03.00 + - M03.01 + - M03.02 + - M03.03 + - M03.04 + - M03.05 + - M03.06 + - M03.07 + - M03.08 + - M03.09 + - M03.10 + - M03.11 + - M03.12 + - M03.13 + - M03.14 + - M03.15 + - M03.16 + - M03.17 + - M03.18 + - M03.19 + - M03.20 + - M03.21 + - M03.22 + - M04.00 + - M04.01 + - M04.02 + - M04.03 + - M04.04 + - M05.00 + - M05.01 + - M05.02 + - M06.00 + - M06.01 + - M06.02 + - M06.03 + - M06.04 + - M07.00 examples: - C07.13.02 label: @@ -821,22 +1047,11 @@ components: \ fourni avec le code." examples: - "Rod\xE9o automobile" - freetext: - type: string - title: Commentaire - x-health-only: false - x-cols: 6 - example: example.json#/qualification/healthMotive/freetext - description: "Commentaire libre permettant de passer des informations compl\xE9\ - mentaires associ\xE9es \xE0 la nomenclature" - examples: - - None additionalProperties: false example: example.json#/qualification/healthMotive examples: - code: C07.13.02 label: "Rod\xE9o automobile" - freetext: None victims: type: object title: Patients-Victimes @@ -892,6 +1107,45 @@ components: - count: SEVERAL mainVictim: CHILD freetext: "Jeanne Dupont, 6 ans, ne r\xE9pond plus" + externalLocationId: + type: object + title: Identifiant(s) du lieu + x-display: expansion-panels + x-health-only: false + required: + - source + - value + properties: + source: + type: string + title: Source / type d'identifiant + x-health-only: false + x-cols: 6 + example: example.json#/location/externalLocationId/0/source + description: Type de l'identifiant fourni + enum: + - FINESS administratif + - "FINESS g\xE9ographique" + - SIREN + - SIRET + - APE/NAF + examples: + - "FINESS g\xE9ographique, FINESS administratif, SIREN, SIRET, APE, NAF" + value: + type: string + title: Identifiant + x-health-only: false + x-cols: 6 + example: example.json#/location/externalLocationId/0/value + description: "L'identifiant en lui-m\xEAme" + examples: + - "920000650\_" + additionalProperties: false + example: example.json#/location/externalLocationId/0 + examples: + - source: "FINESS g\xE9ographique, FINESS administratif, SIREN, SIRET, APE,\ + \ NAF" + value: "920000650\_" detailedAddress: type: object title: "D\xE9tails de l'adresse" @@ -906,10 +1160,10 @@ components: x-health-only: false x-cols: 6 example: example.json#/location/detailedAddress/complete - description: "Num\xE9ro, type et nom de la voie. \nUtilis\xE9 pour tout\ - \ type de voie : autoroute (PK, nom et sens), voie ferr\xE9e, voie navigable\u2026\ - \nObligatoire et seule valeur des d\xE9tails de l'adresse fournie par\ - \ NexSIS." + description: "Num\xE9ro, type et nom de la voie. Utilis\xE9 pour tout type\ + \ de voie : autoroute (PK, nom et sens), voie ferr\xE9e, voie navigable\u2026\ + \n15-18 : Obligatoire et seule valeur des d\xE9tails de l'adresse fournie\ + \ par NexSIS." examples: - 9 Bd du Montparnasse number: @@ -966,7 +1220,7 @@ components: \ aidant \xE0 pr\xE9ciser l'adresse et notamment g\xE9rer les cas de communes\ \ fusionn\xE9es pour le syst\xE8me \xE9metteur\nNB : dans tous les cas,\ \ la localisation GPS de la commune doit \xEAtre fournie afin d'\xE9viter\ - \ une trop forte ambigu\xEFt\xE9" + \ une trop forte ambigu\xEFt\xE9." examples: - "Quartie Melun Nord, Lhomme, \u2026" additionalProperties: false @@ -1196,6 +1450,7 @@ components: x-health-only: false x-cols: 6 example: example.json#/location/detailedAddress/wayName/type + description: Type de la voie examples: - Boulevard name: @@ -1204,6 +1459,7 @@ components: x-health-only: false x-cols: 6 example: example.json#/location/detailedAddress/wayName/name + description: Nom de la voie examples: - du Montparnasse additionalProperties: false @@ -1322,12 +1578,45 @@ components: heading: 96 speed: 34 precision: ADDRESS + notes: + type: object + title: "Informations compl\xE9mentaires sur l'alerte (observations ARM)" + x-display: expansion-panels + x-health-only: false + required: [] + properties: + creation: + type: string + title: "Date et heure de l'information compl\xE9mentaire/l'observation ARM" + x-health-only: false + x-cols: 6 + example: example.json#/initialAlert/notes/0/creation + description: date et heure de l'observation + pattern: \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[\-+]\d{2}:\d{2} + format: date-time + examples: + - None + freetext: + type: string + title: Commentaire/Observations + x-health-only: false + x-cols: 6 + example: example.json#/initialAlert/notes/0/freetext + description: "texte libre contenant les indications renseign\xE9es par l'ARM" + examples: + - 'La personne est inconsciente (perte de connaissance). ' + additionalProperties: false + example: example.json#/initialAlert/notes/0 + examples: + - creation: None + freetext: 'La personne est inconsciente (perte de connaissance). ' caller: type: object title: "Requ\xE9rant" x-display: expansion-panels x-health-only: false - required: [] + required: + - callerContact properties: callerContact: $ref: '#/components/schemas/contact' @@ -1593,6 +1882,28 @@ components: example: example.json#/initialAlert/caller/type description: "Indique la relation du requ\xE9rant avec l'incident / le patient\ \ / la victime" + enum: + - SUJET + - FAMILLE + - TIERS + - POMPIER + - AMBULANC + - SECOUR + - MED + - MEDSOS + - MRL + - EFFML + - SANTE + - INF + - AIDESOIN + - SF + - AIDEDOM + - FDO-MILI + - ADM-TUTL + - VIP + - OBJCONNC + - AUTRE + - INCONNU examples: - "le patient lui-m\xEAme, p\xE8re, m\xE8re" communication: @@ -1603,6 +1914,16 @@ components: example: example.json#/initialAlert/caller/communication description: "Indique si le requ\xE9rant rencontre ou non des difficult\xE9\ \ de communication" + enum: + - AUCUNE + - MUET + - VISION + - LANGUE + - PANIQUE + - HOSTILE + - AGITE + - AUTRE + - IMPOSS examples: - "Malentendant, aucune difficult\xE9 de communication" freetext: @@ -1620,60 +1941,6 @@ components: $ref: '#/components/schemas/detailedName' additionalProperties: false example: example.json#/initialAlert/caller - contactSource: - type: object - title: Source de l'alerte - x-display: expansion-panels - x-health-only: false - required: - - channel - - type - - detail - properties: - channel: - type: string - title: Canal - x-health-only: false - x-cols: 6 - example: example.json#/initialAlert/alertSource/channel - description: "Permet d'indiquer l'origine du canal \xE9tablit : Personne,\ - \ application, DAU, BAU, d\xE9fibrillateur, ecall" - examples: - - Personne - type: - type: string - title: Type de contact de la source - x-health-only: false - x-cols: 6 - example: example.json#/initialAlert/alertSource/type - description: "Type de l'URI utilis\xE9e par la source, cf. nomenclature\ - \ EMSI" - enum: - - PSTADD - - EMLADD - - IPADD - - FTPADD - - WWWADD - - PHNADD - - FAXADD - - PMRADD - examples: - - PHNADD - detail: - type: string - title: URI de contact de la source - x-health-only: false - x-cols: 6 - example: example.json#/initialAlert/alertSource/detail - description: "Valeur de l'URI utilis\xE9e par la source" - examples: - - 0671830530 - additionalProperties: false - example: example.json#/initialAlert/alertSource - examples: - - channel: Personne - type: PHNADD - detail: 0671830530 callTaker: type: object title: Agent @@ -1821,9 +2088,20 @@ components: x-display: expansion-panels x-health-only: false required: + - channel - type - detail properties: + channel: + type: string + title: Canal + x-health-only: false + x-cols: 6 + example: example.json#/initialAlert/caller/callerContact/channel + description: "Permet d'indiquer l'origine du canal \xE9tablit : Personne,\ + \ application, DAU, BAU, d\xE9fibrillateur, ecall" + examples: + - Personne type: type: string title: "Type de contact du requ\xE9rant" @@ -1855,7 +2133,8 @@ components: additionalProperties: false example: example.json#/initialAlert/caller/callerContact examples: - - type: PHNADD + - channel: Personne + type: PHNADD detail: 0671830530 detailedName: type: object @@ -1941,6 +2220,11 @@ components: x-cols: 6 example: example.json#/patient/0/identity/strictFeatures/sex description: Sexe du patient + enum: + - MASC + - FEM + - AUTRE + - INCONNU examples: - F additionalProperties: false @@ -1948,85 +2232,92 @@ components: examples: - birthDate: None sex: F - destination: + transportDetails: type: object - title: Destination + title: "D\xE9cision de transport/orientation" x-display: expansion-panels x-health-only: false - required: [] + required: + - orientation + - teamCare properties: - type: - type: string - title: Type de destination - x-health-only: false - x-cols: 6 - example: example.json#/decision/0/destination/type - description: "Indique le type de destination de la ressource : service d\u2019\ - urgences d\u2019un Etablissement de sant\xE9, autres services d\u2019\ - un \xE9tablissement de sant\xE9, cabinet d\u2019un professionnel de sant\xE9\ - , domicile personnel, EPHAD ou long s\xE9jour, autre" - enum: - - "service d\u2019urgences d\u2019un Etablissement de sant\xE9" - - "autres services d\u2019un \xE9tablissement de sant\xE9" - - "cabinet d\u2019un professionnel de sant\xE9" - - domicile personnel - - "EPHAD ou long s\xE9jour" - - autre - examples: - - None - facility: + orientation: type: string - title: Etablissement + title: Type de devenir du patient x-health-only: false x-cols: 6 - example: example.json#/decision/0/destination/facility - description: "Nom de l'\xE9tablissement" + example: example.json#/decision/0/transportDetails/orientation + description: "D\xE9cision(s) d'orientation prise par le m\xE9decin r\xE9\ + gulateur : \n- A transporter\n- Laisser sur place" examples: - - None - adminFiness: + - "laiss\xE9 sur place, d\xE9c\xE9d\xE9, ou transport\xE9" + concoursRequest: type: string - title: FINESS administratif + title: ID demande de concours/de ressources x-health-only: false x-cols: 6 - example: example.json#/decision/0/destination/adminFiness - description: "N\xB0 Finess administratif de l'\xE9tablissement" + example: example.json#/decision/0/transportDetails/concoursRequest + description: 'Identifiant de la ou des demandes de concours ' examples: - None - geoFiness: + transportationID: type: string - title: "FINESS g\xE9ographique" + title: "ID vecteur partag\xE9" x-health-only: false x-cols: 6 - example: example.json#/decision/0/destination/geoFiness - description: "N\xB0 Finess g\xE9ographique de l'\xE9tablissement" + example: example.json#/decision/0/transportDetails/transportationID + description: "Identifiant du v\xE9hicule terrestre / a\xE9rien / maritime\ + \ de transport principal (= celui dans lequel se trouve le patient), permettant\ + \ d'associer la d\xE9cision \xE0 un v\xE9hicule sp\xE9cifique + au patient. " examples: - None - service: + teamCare: type: string - title: Service + title: Niveau de prise en charge x-health-only: false x-cols: 6 - example: example.json#/decision/0/destination/service - description: "Service concern\xE9 par l'admission du patient" + example: example.json#/decision/0/transportDetails/teamCare + description: "Type d\u2019\xE9quipe (m\xE9dical, param\xE9dicale, non m\xE9\ + dicale, standard, incomplete, ...)" examples: - - None - freetext: + - "M\xE9dical, param\xE9dical, secouriste" + destination: + $ref: '#/components/schemas/destination' + additionalProperties: false + example: example.json#/decision/0/transportDetails + destination: + type: object + title: Destination + x-display: expansion-panels + x-health-only: false + required: [] + properties: + type: type: string - title: Autre + title: Type de destination x-health-only: false x-cols: 6 - example: example.json#/decision/0/destination/freetext + example: example.json#/decision/0/transportDetails/destination/type + description: "Indique le type de destination de la ressource : service d\u2019\ + urgences d\u2019un Etablissement de sant\xE9, autres services d\u2019\ + un \xE9tablissement de sant\xE9, cabinet d\u2019un professionnel de sant\xE9\ + , domicile personnel, EPHAD ou long s\xE9jour, autre" + enum: + - "service d\u2019urgences d\u2019un Etablissement de sant\xE9" + - "autres services d\u2019un \xE9tablissement de sant\xE9" + - "cabinet d\u2019un professionnel de sant\xE9" + - domicile personnel + - "EPHAD ou long s\xE9jour" + - autre examples: - None + destinationLocation: + $ref: '#/components/schemas/location' additionalProperties: false - example: example.json#/decision/0/destination + example: example.json#/decision/0/transportDetails/destination examples: - type: None - facility: None - adminFiness: None - geoFiness: None - service: None - freetext: None + destinationLocation: {} customMap: type: object title: "Cl\xE9 valeur adaptable" diff --git a/generator/input/RC-REF.openapi.yaml b/generator/input/RC-REF.openapi.yaml index 8743ca234..8e451386a 100644 --- a/generator/input/RC-REF.openapi.yaml +++ b/generator/input/RC-REF.openapi.yaml @@ -35,12 +35,12 @@ components: description: "Indique si le message acquitt\xE9 a \xE9t\xE9 refus\xE9" examples: - None - infoDistributionID: + errorDistributionID: type: string title: "Identifiant du message d'erreur li\xE9" x-health-only: false x-cols: 6 - example: example.json#/infoDistributionID + example: example.json#/errorDistributionID description: "Identifiant unique du message d'erreur li\xE9" examples: - None @@ -48,4 +48,4 @@ components: examples: - distributionID: None refused: None - infoDistributionID: None + errorDistributionID: None diff --git a/generator/input/RS-EDA.openapi.yaml b/generator/input/RS-EDA.openapi.yaml index 86e1e6369..37278a580 100644 --- a/generator/input/RS-EDA.openapi.yaml +++ b/generator/input/RS-EDA.openapi.yaml @@ -76,6 +76,33 @@ components: \ partenaires." examples: - '1.2' + perimeter: + type: string + title: "Fili\xE8re" + x-health-only: true + x-cols: 6 + example: example.json#/perimeter + description: "Sert \xE0 indiquer \xE0 quelle fili\xE8re du CRRA le dossier\ + \ doit \xEAtre adress\xE9/affich\xE9" + enum: + - AMU + - SNP + - NEONAT + examples: + - AMU + interventionType: + type: string + title: Type d'intervention + x-health-only: true + x-cols: 6 + example: example.json#/interventionType + description: "Indiquer s'il s'agit d'un dossier dit primaire (premi\xE8\ + re intervention urgente) ou secondaire (par exemple TIH)" + enum: + - Primaire + - Secondaire + examples: + - Primaire qualification: $ref: '#/components/schemas/qualification' location: @@ -88,23 +115,10 @@ components: x-health-only: true x-cols: 6 example: example.json#/owner - description: "Champ servant \xE0 transf\xE9rer la responsabilit\xE9 du traitement\ - \ d'un dossier \xE0 un autre CRAA / \xE0 lui demander de prendre en charge\ - \ le traitement du dossier.\nLe SAMU demandeur entre dans ce champ l'ID\ - \ du CRAA \xE0 qui il demande de traiter l'affaire (uniquement en cas\ - \ de transfert int\xE9gral du traitement d'un dossier).\nLe SAMU qui re\xE7\ - oit la demande de transfert et l'accepte renvoie un RC-EDA de mise \xE0\ - \ jour en laissant son ID dans ce champ + en ajoutant l'ID local du dossier\ - \ chez lui dans le message.\nLe SAMU qui re\xE7oit la demande de transfert\ - \ et la refuse renvoie un RC-EDA de mise \xE0 jour en remettant l'ID du\ - \ SAMU demandeur dans ce champ + il envoie l'ID local du dossier chez\ - \ lui." + description: "Champ servant \xE0 transf\xE9rer la prise en charge d'un dossier\ + \ \xE0 un autre CRAA apr\xE8s accord verbal de ce dernier." examples: - fr.health.samu440 - operator: - type: array - items: - $ref: '#/components/schemas/operator' patient: type: array items: @@ -124,15 +138,20 @@ components: additionalInformation: $ref: '#/components/schemas/additionalInformation' freetext: - type: string - title: Description de l'affaire/dossier + type: array x-health-only: false - x-cols: 6 - example: example.json#/freetext - description: "Texte libre permettant de donner des informations suppl\xE9\ - mentaires concernant l'affaire" - examples: - - None + items: + type: string + title: Description de l'affaire/dossier + x-health-only: false + x-cols: 6 + example: example.json#/freetext/0 + description: "Texte libre permettant de donner des informations suppl\xE9\ + mentaires concernant l'affaire/dossier. Ces informations sont g\xE9\ + n\xE9rales, et ont vocation \xE0 \xEAtre \xE9chang\xE9es en inter-force. " + examples: + - "Le forcen\xE9 n'est pas ma\xEEtris\xE9. Voiture renvers\xE9e. Urgences\ + \ ferm\xE9es de 22h \xE0 6h00." additionalProperties: false qualification: type: object @@ -154,8 +173,6 @@ components: $ref: '#/components/schemas/healthMotive' details: $ref: '#/components/schemas/caseDetails' - victims: - $ref: '#/components/schemas/victims' additionalProperties: false example: example.json#/qualification location: @@ -183,12 +200,12 @@ components: x-health-only: false x-cols: 6 example: example.json#/location/locLabel - description: "Permet d'indiquer des indications auto suffisantes permettant\ - \ pour un op\xE9rationnel d'acc\xE9der facilement au lieu avec des indications\ - \ minimales.\nDans les messages NexSIS, va souvent correspondre \xE0 la\ - \ concat\xE9nation suivant des r\xE8gles m\xE9tiers de diff\xE9rentes\ - \ informations, dont le \"name\" (toponyme) et l'adresse.\nComprend au\ - \ maximum 255 caract\xE8res" + description: "Donne les informations minimales d'identification du lieu\ + \ d'intervention, qui permet d'identifier rapidement le lieu pour les\ + \ \xE9quipes op\xE9rationnelles. Comprend au maximum 255 caract\xE8res.\n\ + 15-18 : Dans les messages NexSIS, va souvent correspondre \xE0 la concat\xE9\ + nation suivant des r\xE8gles m\xE9tiers de diff\xE9rentes informations,\ + \ dont le \"name\" (toponyme) et l'adresse.\n" examples: - "Lyc\xE9e Pierre de Coubertin - 12 rue de l'Amiti\xE9 77288 Melun, Mus\xE9\ e Bossuet - Acc\xE8s 2 - 77048 Saint-Albray" @@ -198,10 +215,15 @@ components: x-health-only: false x-cols: 6 example: example.json#/location/name - description: "Indique le nom de lieu : nom commercial, for\xEAt de Fontainebleau,\ - \ lac du Der (plut\xF4t \xE0 destination des syst\xE8mes)." + description: "Indique le nom de lieu : nom commercial, Etablissement, for\xEA\ + t de Fontainebleau, lac du Der (plut\xF4t \xE0 destination des syst\xE8\ + mes)." examples: - "Lyc\xE9e Pierre de Coubertin" + externalLocationId: + type: array + items: + $ref: '#/components/schemas/externalLocationId' detailedAddress: $ref: '#/components/schemas/detailedAddress' city: @@ -466,7 +488,7 @@ components: - France freetext: type: string - title: Commentaire + title: "Informations compl\xE9mentaires sur la localisation" x-health-only: false x-cols: 6 example: example.json#/location/freetext @@ -485,9 +507,6 @@ components: - reception - reporting - caller - - alertSource - - location - - qualification - callTaker properties: id: @@ -544,24 +563,12 @@ components: - ATTENTION examples: - STANDARD - freetext: - type: string - title: "Informations compl\xE9mentaires sur l'alerte" - x-health-only: false - x-cols: 6 - example: example.json#/initialAlert/freetext - description: "Texte libre permettant de donner des informations suppl\xE9\ - mentaires concernant l'alerte." - examples: - - "D\xE9clenchement t\xE9l\xE9alarme, voisine sur les lieux" + notes: + type: array + items: + $ref: '#/components/schemas/notes' caller: $ref: '#/components/schemas/caller' - alertSource: - $ref: '#/components/schemas/contactSource' - location: - $ref: '#/components/schemas/location' - qualification: - $ref: '#/components/schemas/qualification' callTaker: $ref: '#/components/schemas/callTaker' attachment: @@ -570,41 +577,6 @@ components: $ref: '#/components/schemas/attachment' additionalProperties: false example: example.json#/initialAlert - operator: - type: object - title: "Op\xE9rateurs impliqu\xE9s" - x-display: expansion-panels - x-health-only: true - required: - - role - properties: - detailedName: - $ref: '#/components/schemas/detailedName' - id: - type: string - title: ID - x-health-only: true - x-cols: 6 - example: example.json#/operator/0/id - description: "Identifiant professionnel de l'op\xE9rateur si existant" - examples: - - None - role: - type: string - title: "R\xF4le" - x-health-only: true - x-cols: 6 - example: example.json#/operator/0/role - description: "R\xF4le de l'op\xE9rateur au sein de l'entit\xE9 \xE9mettrice\ - \ du message" - examples: - - "ARM, Medecin r\xE9gulateur\u2026" - additionalProperties: false - example: example.json#/operator/0 - examples: - - detailedName: {} - id: None - role: "ARM, Medecin r\xE9gulateur\u2026" patient: type: object title: Patient / victime @@ -622,7 +594,7 @@ components: description: "Identifiant technique du patient pour permettre les rapprochements\ \ d'infos. Le 1er qui cr\xE9\xE9 l'ID patient a raison." examples: - - None + - fr.health.samu044.DRFR15DDXAAJJJ00000.P00 administrativeFile: $ref: '#/components/schemas/administrativeFile' identity: @@ -633,8 +605,19 @@ components: $ref: '#/components/schemas/patientDetail' hypothesis: $ref: '#/components/schemas/hypothesis' - resourceDiagnosis: - $ref: '#/components/schemas/resourceDiagnosis' + freetext: + type: array + x-health-only: false + items: + type: string + title: "Informations compl\xE9mentaires sur le patient" + x-health-only: false + x-cols: 6 + example: example.json#/patient/0/freetext/0 + description: "Correspond \xE0 la zone de commentaire renseign\xE9 par\ + \ patient cr\xE9\xE9/identifi\xE9" + examples: + - None additionalProperties: false example: example.json#/patient/0 medicalNote: @@ -711,14 +694,6 @@ components: - None additionalProperties: false example: example.json#/medicalNote/0 - examples: - - id: None - operator: {} - creation: '2022-09-27T08:23:34+02:00' - freetext: None - medicalHistory: None - treatments: None - allergies: None decision: type: object title: "D\xE9cisions" @@ -726,6 +701,7 @@ components: x-health-only: false required: - creation + - type properties: id: type: string @@ -733,8 +709,8 @@ components: x-health-only: false x-cols: 6 example: example.json#/decision/0/id - description: "ID partag\xE9 du patient concern\xE9, lorsque le patient existe\ - \ et est identifi\xE9" + description: "ID partag\xE9 du patient concern\xE9 par la d\xE9cision, lorsque\ + \ le patient existe et est identifi\xE9" examples: - None creation: @@ -756,44 +732,19 @@ components: x-cols: 6 example: example.json#/decision/0/type description: "Type de d\xE9cision prise" + enum: + - CONSEIL + - PMT + - INTER + - ORIENT + - PASPLUS examples: - "conseil m\xE9dical / d\xE9cision d\u2019intervention / d\xE9cision d\u2019\ orientation et de transport / Pas de d\xE9cision suppl\xE9mentaire" - orientation: - type: string - title: Orientation - x-health-only: false - x-cols: 6 - example: example.json#/decision/0/orientation - description: "D\xE9cision(s) d'orientation prise par le m\xE9decin r\xE9\ - gulateur" - examples: - - None - transportation: - type: array - x-health-only: false - items: - type: string - title: Type de transport - x-health-only: false - x-cols: 6 - example: example.json#/decision/0/transportation/0 - description: "Type de transport \xE0 engager pour la prise en charge du\ - \ patient" - examples: - - 'SMUR ' - teamCare: - type: string - title: Niveau de prise en charge - x-health-only: false - x-cols: 6 - example: example.json#/decision/0/teamCare - description: "Type d\u2019\xE9quipe (m\xE9dical, param\xE9dicale, non m\xE9\ - dicale, standard, incomplete, ...)" - examples: - - "M\xE9dical, param\xE9dical, secouriste" - destination: - $ref: '#/components/schemas/destination' + engagementDetails: + $ref: '#/components/schemas/engagementDetails' + transportDetails: + $ref: '#/components/schemas/transportDetails' additionalProperties: false example: example.json#/decision/0 additionalInformation: @@ -840,22 +791,11 @@ components: \ fourni avec le code." examples: - "Rod\xE9o automobile" - freetext: - type: string - title: Commentaire - x-health-only: false - x-cols: 6 - example: example.json#/qualification/whatsHappen/freetext - description: "Commentaire libre permettant de passer des informations compl\xE9\ - mentaires associ\xE9es \xE0 la nomenclature" - examples: - - None additionalProperties: false example: example.json#/qualification/whatsHappen examples: - code: C07.13.02 label: "Rod\xE9o automobile" - freetext: None locationKind: type: object title: Type de lieu @@ -872,6 +812,186 @@ components: x-cols: 6 example: example.json#/qualification/locationKind/code description: "A valoriser avec un code la nomenclature associ\xE9e" + enum: + - L01.00.00 + - L01.01.00 + - L01.01.01 + - L01.01.02 + - L01.01.03 + - L01.01.04 + - L01.02.00 + - L01.02.01 + - L01.02.02 + - L01.02.03 + - L01.02.04 + - L01.02.05 + - L01.02.06 + - L01.02.07 + - L01.02.08 + - L01.02.09 + - L01.02.10 + - L01.02.11 + - L01.02.12 + - L01.03.00 + - L01.03.01 + - L01.03.02 + - L01.03.03 + - L01.04.00 + - L02.00.00 + - L02.01.00 + - L02.02.00 + - L02.02.01 + - L02.02.02 + - L02.02.03 + - L02.02.04 + - L02.02.05 + - L02.03.00 + - L02.03.01 + - L02.03.02 + - L02.03.03 + - L02.04.00 + - L02.05.00 + - L02.05.01 + - L02.05.02 + - L02.05.03 + - L02.05.04 + - L02.05.05 + - L02.05.06 + - L02.05.07 + - L02.05.08 + - L02.05.09 + - L02.05.10 + - L02.05.11 + - L02.05.12 + - L02.05.13 + - L02.05.14 + - L02.05.15 + - L02.05.16 + - L02.06.00 + - L02.06.01 + - L02.06.02 + - L02.06.03 + - L02.06.04 + - L02.06.05 + - L02.06.06 + - L02.06.07 + - L02.06.08 + - L02.07.00 + - L02.07.01 + - L02.07.02 + - L02.08.00 + - L03.00.00 + - L03.01.00 + - L03.02.00 + - L03.03.00 + - L03.04.00 + - L03.05.00 + - L04.00.00 + - L04.01.00 + - L04.02.00 + - L04.02.01 + - L04.02.02 + - L04.02.03 + - L04.03.00 + - L04.03.01 + - L04.03.02 + - L04.03.03 + - L04.04.00 + - L04.05.00 + - L04.06.00 + - L04.06.01 + - L04.06.02 + - L04.06.03 + - L04.06.04 + - L04.06.05 + - L04.07.00 + - L04.07.01 + - L04.07.02 + - L04.07.03 + - L04.08.00 + - L04.08.01 + - L04.08.02 + - L04.09.00 + - L04.09.01 + - L04.09.02 + - L04.10.00 + - L04.11.00 + - L04.11.01 + - L04.11.02 + - L04.11.03 + - L04.11.04 + - L04.12.00 + - L04.12.01 + - L04.12.02 + - L04.12.03 + - L04.12.04 + - L04.13.00 + - L04.13.01 + - L04.13.02 + - L04.13.03 + - L04.13.04 + - L04.14.00 + - L04.14.01 + - L04.14.02 + - L04.15.00 + - L04.16.00 + - L05.00.00 + - L05.01.00 + - L05.01.01 + - L05.01.02 + - L05.01.03 + - L05.01.04 + - L05.02.00 + - L05.02.01 + - L05.02.02 + - L05.02.03 + - L05.02.04 + - L05.03.00 + - L05.03.01 + - L05.03.02 + - L05.04.00 + - L05.04.01 + - L05.04.02 + - L05.04.03 + - L05.04.04 + - L05.04.05 + - L05.04.06 + - L05.05.00 + - L05.06.00 + - L05.07.00 + - L06.00.00 + - L06.01.00 + - L06.01.01 + - L06.01.02 + - L06.01.03 + - L06.01.04 + - L06.01.05 + - L06.01.06 + - L06.01.07 + - L06.01.08 + - L06.02.00 + - L06.03.00 + - L06.03.01 + - L06.03.02 + - L06.03.03 + - L06.03.04 + - L06.03.05 + - L06.04.00 + - L06.05.00 + - L06.05.01 + - L06.05.02 + - L06.06.00 + - L06.06.01 + - L06.06.02 + - L06.06.03 + - L06.06.04 + - L06.07.00 + - L06.07.01 + - L06.07.02 + - L07.00.00 + - L07.01.00 + - L07.01.01 + - L07.02.00 examples: - C07.13.02 label: @@ -886,22 +1006,11 @@ components: \ fourni avec le code." examples: - "Rod\xE9o automobile" - freetext: - type: string - title: Commentaire - x-health-only: false - x-cols: 6 - example: example.json#/qualification/locationKind/freetext - description: "Commentaire libre permettant de passer des informations compl\xE9\ - mentaires associ\xE9es \xE0 la nomenclature" - examples: - - None additionalProperties: false example: example.json#/qualification/locationKind examples: - code: C07.13.02 label: "Rod\xE9o automobile" - freetext: None riskThreat: type: object title: "Risque, menace et sensibilit\xE9" @@ -918,6 +1027,44 @@ components: x-cols: 6 example: example.json#/qualification/riskThreat/0/code description: "A valoriser avec un code la nomenclature associ\xE9e" + enum: + - R01 + - R02 + - R03 + - R04 + - R05 + - R06 + - R07 + - R08 + - R09 + - R10 + - R11 + - R12 + - R13 + - R14 + - R15 + - R16 + - R17 + - R18 + - R19 + - R20 + - R21 + - R22 + - R23 + - R24 + - R25 + - R26 + - R27 + - R28 + - R29 + - R30 + - R31 + - R32 + - R33 + - R34 + - R35 + - R36 + - R37 examples: - C07.13.02 label: @@ -932,22 +1079,11 @@ components: \ fourni avec le code." examples: - "Rod\xE9o automobile" - freetext: - type: string - title: Commentaire - x-health-only: false - x-cols: 6 - example: example.json#/qualification/riskThreat/0/freetext - description: "Commentaire libre permettant de passer des informations compl\xE9\ - mentaires associ\xE9es \xE0 la nomenclature" - examples: - - None additionalProperties: false example: example.json#/qualification/riskThreat/0 examples: - code: C07.13.02 label: "Rod\xE9o automobile" - freetext: None healthMotive: type: object title: "Motif de recours m\xE9dico-secouriste" @@ -966,6 +1102,59 @@ components: x-cols: 6 example: example.json#/qualification/healthMotive/code description: "A valoriser avec un code la nomenclature associ\xE9e" + enum: + - M01.00 + - M01.01 + - M01.02 + - M01.03 + - M02.00 + - M02.01 + - M02.02 + - M02.03 + - M02.04 + - M02.05 + - M02.06 + - M02.07 + - M02.08 + - M02.09 + - M02.10 + - M03.00 + - M03.01 + - M03.02 + - M03.03 + - M03.04 + - M03.05 + - M03.06 + - M03.07 + - M03.08 + - M03.09 + - M03.10 + - M03.11 + - M03.12 + - M03.13 + - M03.14 + - M03.15 + - M03.16 + - M03.17 + - M03.18 + - M03.19 + - M03.20 + - M03.21 + - M03.22 + - M04.00 + - M04.01 + - M04.02 + - M04.03 + - M04.04 + - M05.00 + - M05.01 + - M05.02 + - M06.00 + - M06.01 + - M06.02 + - M06.03 + - M06.04 + - M07.00 examples: - C07.13.02 label: @@ -980,22 +1169,11 @@ components: \ fourni avec le code." examples: - "Rod\xE9o automobile" - freetext: - type: string - title: Commentaire - x-health-only: false - x-cols: 6 - example: example.json#/qualification/healthMotive/freetext - description: "Commentaire libre permettant de passer des informations compl\xE9\ - mentaires associ\xE9es \xE0 la nomenclature" - examples: - - None additionalProperties: false example: example.json#/qualification/healthMotive examples: - code: C07.13.02 label: "Rod\xE9o automobile" - freetext: None caseDetails: type: object title: "D\xE9tails du dossier " @@ -1033,7 +1211,7 @@ components: enum: - D - DR - - "DRM \nNOMENC_TYPEDOS" + - DRM examples: - DR attribution: @@ -1045,6 +1223,43 @@ components: description: "D\xE9crit le type de professionnel m\xE9dical \xE0 qui le\ \ dossier est attribu\xE9 : M\xE9decin g\xE9n\xE9raliste, m\xE9decin urgentiste\ \ etc." + enum: + - DRM + - DRMMRU + - MU + - DENT + - GERIA + - PEDIA + - PSY + - TOXICOL + - INDISPMU + - SSE + - PLANBLAN + - PCSAMU + - DRMMRL + - MG + - INDISPMG + - ABSML + - DR + - DREG + - DRARM + - DRMED + - DRPHARMA + - DRDENT + - DRINFO + - DOS-SIS + - DOS-FDO + - D + - D-MALV + - ERR + - NRP + - MALV + - FAX + - ITERATIF + - D-IDENT + - ADMIN + - PERSO + - AUTRE examples: - MU priority: @@ -1055,6 +1270,12 @@ components: example: example.json#/qualification/details/priority description: "D\xE9crit la priorit\xE9 de r\xE9gulation m\xE9dicale du dossier\ \ : P0, P1, P2, P3" + enum: + - P0 + - P1 + - P2 + - P3 + - NR examples: - P1 additionalProperties: false @@ -1064,61 +1285,45 @@ components: type: DR attribution: MU priority: P1 - victims: + externalLocationId: type: object - title: Patients-Victimes + title: Identifiant(s) du lieu x-display: expansion-panels x-health-only: false - required: [] + required: + - source + - value properties: - count: - type: string - title: Nombre de patients-victimes - x-health-only: false - x-cols: 6 - example: example.json#/qualification/victims/count - description: "Indique le nombre de victimes selon la nomenclature du r\xE9\ - f\xE9rentiel CISU" - enum: - - '0' - - '1' - - SEVERAL - - MANY - - UNKNOWN - examples: - - SEVERAL - mainVictim: + source: type: string - title: Type du patient-victime principal + title: Source / type d'identifiant x-health-only: false x-cols: 6 - example: example.json#/qualification/victims/mainVictim - description: "Identifie le type de la principale victime (celle dont l'\xE9\ - tat de sant\xE9 provoque le d\xE9clenchement de l'envoi des secours).\ - \ Prend les valeurs du r\xE9f\xE9rentiel CISU. Entre dans la d\xE9termination\ - \ des partenaires impliqu\xE9s par NexSIS." + example: example.json#/location/externalLocationId/0/source + description: Type de l'identifiant fourni enum: - - INFANT - - CHILD - - ADULT - - SENIOR + - FINESS administratif + - "FINESS g\xE9ographique" + - SIREN + - SIRET + - APE/NAF examples: - - CHILD - freetext: + - "FINESS g\xE9ographique, FINESS administratif, SIREN, SIRET, APE, NAF" + value: type: string - title: "Informations compl\xE9mentaires sur les patients-victimes" + title: Identifiant x-health-only: false x-cols: 6 - example: example.json#/qualification/victims/freetext - description: "Permet de compl\xE9menter en commentaire libre la(les) victime(s)" + example: example.json#/location/externalLocationId/0/value + description: "L'identifiant en lui-m\xEAme" examples: - - "Jeanne Dupont, 6 ans, ne r\xE9pond plus" + - "920000650\_" additionalProperties: false - example: example.json#/qualification/victims + example: example.json#/location/externalLocationId/0 examples: - - count: SEVERAL - mainVictim: CHILD - freetext: "Jeanne Dupont, 6 ans, ne r\xE9pond plus" + - source: "FINESS g\xE9ographique, FINESS administratif, SIREN, SIRET, APE,\ + \ NAF" + value: "920000650\_" detailedAddress: type: object title: "D\xE9tails de l'adresse" @@ -1133,10 +1338,10 @@ components: x-health-only: false x-cols: 6 example: example.json#/location/detailedAddress/complete - description: "Num\xE9ro, type et nom de la voie. \nUtilis\xE9 pour tout\ - \ type de voie : autoroute (PK, nom et sens), voie ferr\xE9e, voie navigable\u2026\ - \nObligatoire et seule valeur des d\xE9tails de l'adresse fournie par\ - \ NexSIS." + description: "Num\xE9ro, type et nom de la voie. Utilis\xE9 pour tout type\ + \ de voie : autoroute (PK, nom et sens), voie ferr\xE9e, voie navigable\u2026\ + \n15-18 : Obligatoire et seule valeur des d\xE9tails de l'adresse fournie\ + \ par NexSIS." examples: - 9 Bd du Montparnasse number: @@ -1193,7 +1398,7 @@ components: \ aidant \xE0 pr\xE9ciser l'adresse et notamment g\xE9rer les cas de communes\ \ fusionn\xE9es pour le syst\xE8me \xE9metteur\nNB : dans tous les cas,\ \ la localisation GPS de la commune doit \xEAtre fournie afin d'\xE9viter\ - \ une trop forte ambigu\xEFt\xE9" + \ une trop forte ambigu\xEFt\xE9." examples: - "Quartie Melun Nord, Lhomme, \u2026" additionalProperties: false @@ -1423,6 +1628,7 @@ components: x-health-only: false x-cols: 6 example: example.json#/location/detailedAddress/wayName/type + description: Type de la voie examples: - Boulevard name: @@ -1431,6 +1637,7 @@ components: x-health-only: false x-cols: 6 example: example.json#/location/detailedAddress/wayName/name + description: Nom de la voie examples: - du Montparnasse additionalProperties: false @@ -1549,12 +1756,45 @@ components: heading: 96 speed: 34 precision: ADDRESS + notes: + type: object + title: "Informations compl\xE9mentaires sur l'alerte (observations ARM)" + x-display: expansion-panels + x-health-only: false + required: [] + properties: + creation: + type: string + title: "Date et heure de l'information compl\xE9mentaire/l'observation ARM" + x-health-only: false + x-cols: 6 + example: example.json#/initialAlert/notes/0/creation + description: date et heure de l'observation + pattern: \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[\-+]\d{2}:\d{2} + format: date-time + examples: + - None + freetext: + type: string + title: Commentaire/Observations + x-health-only: false + x-cols: 6 + example: example.json#/initialAlert/notes/0/freetext + description: "texte libre contenant les indications renseign\xE9es par l'ARM" + examples: + - 'La personne est inconsciente (perte de connaissance). ' + additionalProperties: false + example: example.json#/initialAlert/notes/0 + examples: + - creation: None + freetext: 'La personne est inconsciente (perte de connaissance). ' caller: type: object title: "Requ\xE9rant" x-display: expansion-panels x-health-only: false - required: [] + required: + - callerContact properties: callerContact: $ref: '#/components/schemas/contact' @@ -1820,6 +2060,28 @@ components: example: example.json#/initialAlert/caller/type description: "Indique la relation du requ\xE9rant avec l'incident / le patient\ \ / la victime" + enum: + - SUJET + - FAMILLE + - TIERS + - POMPIER + - AMBULANC + - SECOUR + - MED + - MEDSOS + - MRL + - EFFML + - SANTE + - INF + - AIDESOIN + - SF + - AIDEDOM + - FDO-MILI + - ADM-TUTL + - VIP + - OBJCONNC + - AUTRE + - INCONNU examples: - "le patient lui-m\xEAme, p\xE8re, m\xE8re" communication: @@ -1830,6 +2092,16 @@ components: example: example.json#/initialAlert/caller/communication description: "Indique si le requ\xE9rant rencontre ou non des difficult\xE9\ \ de communication" + enum: + - AUCUNE + - MUET + - VISION + - LANGUE + - PANIQUE + - HOSTILE + - AGITE + - AUTRE + - IMPOSS examples: - "Malentendant, aucune difficult\xE9 de communication" freetext: @@ -1847,60 +2119,6 @@ components: $ref: '#/components/schemas/detailedName' additionalProperties: false example: example.json#/initialAlert/caller - contactSource: - type: object - title: Source de l'alerte - x-display: expansion-panels - x-health-only: false - required: - - channel - - type - - detail - properties: - channel: - type: string - title: Canal - x-health-only: false - x-cols: 6 - example: example.json#/initialAlert/alertSource/channel - description: "Permet d'indiquer l'origine du canal \xE9tablit : Personne,\ - \ application, DAU, BAU, d\xE9fibrillateur, ecall" - examples: - - Personne - type: - type: string - title: Type de contact de la source - x-health-only: false - x-cols: 6 - example: example.json#/initialAlert/alertSource/type - description: "Type de l'URI utilis\xE9e par la source, cf. nomenclature\ - \ EMSI" - enum: - - PSTADD - - EMLADD - - IPADD - - FTPADD - - WWWADD - - PHNADD - - FAXADD - - PMRADD - examples: - - PHNADD - detail: - type: string - title: URI de contact de la source - x-health-only: false - x-cols: 6 - example: example.json#/initialAlert/alertSource/detail - description: "Valeur de l'URI utilis\xE9e par la source" - examples: - - 0671830530 - additionalProperties: false - example: example.json#/initialAlert/alertSource - examples: - - channel: Personne - type: PHNADD - detail: 0671830530 callTaker: type: object title: Agent @@ -2048,9 +2266,20 @@ components: x-display: expansion-panels x-health-only: false required: + - channel - type - detail properties: + channel: + type: string + title: Canal + x-health-only: false + x-cols: 6 + example: example.json#/initialAlert/caller/callerContact/channel + description: "Permet d'indiquer l'origine du canal \xE9tablit : Personne,\ + \ application, DAU, BAU, d\xE9fibrillateur, ecall" + examples: + - Personne type: type: string title: "Type de contact du requ\xE9rant" @@ -2082,7 +2311,8 @@ components: additionalProperties: false example: example.json#/initialAlert/caller/callerContact examples: - - type: PHNADD + - channel: Personne + type: PHNADD detail: 0671830530 detailedName: type: object @@ -2212,6 +2442,11 @@ components: x-health-only: true x-cols: 6 example: example.json#/patient/0/detail/careLevel + enum: + - R1 + - R2 + - R3 + - R4 examples: - R1 additionalProperties: false @@ -2236,52 +2471,6 @@ components: $ref: '#/components/schemas/otherDiagnosis' additionalProperties: false example: example.json#/patient/0/hypothesis - resourceDiagnosis: - type: object - title: Diagnostic de l'effecteur - x-display: expansion-panels - x-health-only: true - required: - - code - - label - properties: - code: - type: string - title: Code - x-health-only: false - x-cols: 6 - example: example.json#/patient/0/resourceDiagnosis/code - description: "A valoriser avec un code la nomenclature associ\xE9e" - examples: - - C07.13.02 - label: - type: string - title: "Libell\xE9" - x-health-only: false - x-cols: 6 - example: example.json#/patient/0/resourceDiagnosis/label - description: "A valoriser avec le libell\xE9 de la nomenclature associ\xE9\ - e.\nDans le cas o\xF9 un syst\xE8me n'est pas en mesure de reconna\xEE\ - tre un code, il peut directement afficher le libell\xE9 qui est obligatoirement\ - \ fourni avec le code." - examples: - - "Rod\xE9o automobile" - freetext: - type: string - title: Commentaire - x-health-only: false - x-cols: 6 - example: example.json#/patient/0/resourceDiagnosis/freetext - description: "Commentaire libre permettant de passer des informations compl\xE9\ - mentaires associ\xE9es \xE0 la nomenclature" - examples: - - None - additionalProperties: false - example: example.json#/patient/0/resourceDiagnosis - examples: - - code: C07.13.02 - label: "Rod\xE9o automobile" - freetext: None externalId: type: object title: Identifiant(s) patient(s) @@ -2348,7 +2537,7 @@ components: $ref: '#/components/schemas/detailedName' id: type: string - title: Identifiant + title: Identifiant RPPS x-health-only: true x-cols: 6 example: example.json#/patient/0/administrativeFile/generalPractitioner/id @@ -2508,6 +2697,11 @@ components: x-cols: 6 example: example.json#/patient/0/identity/strictFeatures/sex description: Sexe du patient + enum: + - MASC + - FEM + - AUTRE + - INCONNU examples: - F birthPlaceCode: @@ -2562,22 +2756,11 @@ components: \ fourni avec le code." examples: - "Rod\xE9o automobile" - freetext: - type: string - title: Commentaire - x-health-only: false - x-cols: 6 - example: example.json#/patient/0/hypothesis/mainDiagnosis/freetext - description: "Commentaire libre permettant de passer des informations compl\xE9\ - mentaires associ\xE9es \xE0 la nomenclature" - examples: - - None additionalProperties: false example: example.json#/patient/0/hypothesis/mainDiagnosis examples: - code: C07.13.02 label: "Rod\xE9o automobile" - freetext: None otherDiagnosis: type: object title: "Hypoth\xE8ses de r\xE9gulation m\xE9dicale secondaires" @@ -2608,101 +2791,184 @@ components: \ fourni avec le code." examples: - "Rod\xE9o automobile" - freetext: + additionalProperties: false + example: example.json#/patient/0/hypothesis/otherDiagnosis/0 + examples: + - code: C07.13.02 + label: "Rod\xE9o automobile" + operator: + type: object + title: "Professionnel de sant\xE9 qui r\xE9alise l'interrogatoire" + x-display: expansion-panels + x-health-only: true + required: + - role + properties: + detailedName: + $ref: '#/components/schemas/detailedName' + id: type: string - title: Commentaire - x-health-only: false + title: ID + x-health-only: true x-cols: 6 - example: example.json#/patient/0/hypothesis/otherDiagnosis/0/freetext - description: "Commentaire libre permettant de passer des informations compl\xE9\ - mentaires associ\xE9es \xE0 la nomenclature" + example: example.json#/medicalNote/0/operator/id + description: "Identifiant professionnel de l'op\xE9rateur si existant" examples: - None + role: + type: string + title: "R\xF4le" + x-health-only: true + x-cols: 6 + example: example.json#/medicalNote/0/operator/role + description: "R\xF4le de l'op\xE9rateur au sein de l'entit\xE9 \xE9mettrice\ + \ du message" + examples: + - "ARM, Medecin r\xE9gulateur\u2026" additionalProperties: false - example: example.json#/patient/0/hypothesis/otherDiagnosis/0 + example: example.json#/medicalNote/0/operator examples: - - code: C07.13.02 - label: "Rod\xE9o automobile" - freetext: None - destination: + - detailedName: {} + id: None + role: "ARM, Medecin r\xE9gulateur\u2026" + engagementDetails: type: object - title: Destination + title: "D\xE9cision d'engagement" x-display: expansion-panels - x-health-only: false - required: [] + x-health-only: true + required: + - categoryType + - teamCareInitial properties: - type: + categoryType: type: string - title: Type de destination - x-health-only: false + title: Type de moyen + x-health-only: true x-cols: 6 - example: example.json#/decision/0/destination/type - description: "Indique le type de destination de la ressource : service d\u2019\ - urgences d\u2019un Etablissement de sant\xE9, autres services d\u2019\ - un \xE9tablissement de sant\xE9, cabinet d\u2019un professionnel de sant\xE9\ - , domicile personnel, EPHAD ou long s\xE9jour, autre" - enum: - - "service d\u2019urgences d\u2019un Etablissement de sant\xE9" - - "autres services d\u2019un \xE9tablissement de sant\xE9" - - "cabinet d\u2019un professionnel de sant\xE9" - - domicile personnel - - "EPHAD ou long s\xE9jour" - - autre + example: example.json#/decision/0/engagementDetails/categoryType + description: "d\xE9taille le moyen \xE0 engager" + examples: + - SMUR, Pompiers + resourceType: + type: string + title: Type de vecteur + x-health-only: true + x-cols: 6 + example: example.json#/decision/0/engagementDetails/resourceType + description: "d\xE9taille le type de vecteur \xE0 engager" + examples: + - AR, VLM, VSAV + resourceId: + type: string + title: 'ID vecteur ' + x-health-only: true + x-cols: 6 + example: example.json#/decision/0/engagementDetails/resourceId examples: - None - facility: + teamCareInitial: type: string - title: Etablissement + title: Niveau de prise en charge + x-health-only: true + x-cols: 6 + example: example.json#/decision/0/engagementDetails/teamCareInitial + description: "Type d\u2019\xE9quipe (m\xE9dical, param\xE9dicale, non m\xE9\ + dicale, standard, incomplete, ...)" + examples: + - "M\xE9dical, param\xE9dical, secouriste" + additionalProperties: false + example: example.json#/decision/0/engagementDetails + examples: + - categoryType: SMUR, Pompiers + resourceType: AR, VLM, VSAV + resourceId: None + teamCareInitial: "M\xE9dical, param\xE9dical, secouriste" + transportDetails: + type: object + title: "D\xE9cision de transport/orientation" + x-display: expansion-panels + x-health-only: false + required: + - orientation + - teamCare + properties: + orientation: + type: string + title: Type de devenir du patient x-health-only: false x-cols: 6 - example: example.json#/decision/0/destination/facility - description: "Nom de l'\xE9tablissement" + example: example.json#/decision/0/transportDetails/orientation + description: "D\xE9cision(s) d'orientation prise par le m\xE9decin r\xE9\ + gulateur : \n- A transporter\n- Laisser sur place" examples: - - None - adminFiness: + - "laiss\xE9 sur place, d\xE9c\xE9d\xE9, ou transport\xE9" + concoursRequest: type: string - title: FINESS administratif + title: ID demande de concours/de ressources x-health-only: false x-cols: 6 - example: example.json#/decision/0/destination/adminFiness - description: "N\xB0 Finess administratif de l'\xE9tablissement" + example: example.json#/decision/0/transportDetails/concoursRequest + description: 'Identifiant de la ou des demandes de concours ' examples: - None - geoFiness: + transportationID: type: string - title: "FINESS g\xE9ographique" + title: "ID vecteur partag\xE9" x-health-only: false x-cols: 6 - example: example.json#/decision/0/destination/geoFiness - description: "N\xB0 Finess g\xE9ographique de l'\xE9tablissement" + example: example.json#/decision/0/transportDetails/transportationID + description: "Identifiant du v\xE9hicule terrestre / a\xE9rien / maritime\ + \ de transport principal (= celui dans lequel se trouve le patient), permettant\ + \ d'associer la d\xE9cision \xE0 un v\xE9hicule sp\xE9cifique + au patient. " examples: - None - service: + teamCare: type: string - title: Service + title: Niveau de prise en charge x-health-only: false x-cols: 6 - example: example.json#/decision/0/destination/service - description: "Service concern\xE9 par l'admission du patient" + example: example.json#/decision/0/transportDetails/teamCare + description: "Type d\u2019\xE9quipe (m\xE9dical, param\xE9dicale, non m\xE9\ + dicale, standard, incomplete, ...)" examples: - - None - freetext: + - "M\xE9dical, param\xE9dical, secouriste" + destination: + $ref: '#/components/schemas/destination' + additionalProperties: false + example: example.json#/decision/0/transportDetails + destination: + type: object + title: Destination + x-display: expansion-panels + x-health-only: false + required: [] + properties: + type: type: string - title: Autre + title: Type de destination x-health-only: false x-cols: 6 - example: example.json#/decision/0/destination/freetext + example: example.json#/decision/0/transportDetails/destination/type + description: "Indique le type de destination de la ressource : service d\u2019\ + urgences d\u2019un Etablissement de sant\xE9, autres services d\u2019\ + un \xE9tablissement de sant\xE9, cabinet d\u2019un professionnel de sant\xE9\ + , domicile personnel, EPHAD ou long s\xE9jour, autre" + enum: + - "service d\u2019urgences d\u2019un Etablissement de sant\xE9" + - "autres services d\u2019un \xE9tablissement de sant\xE9" + - "cabinet d\u2019un professionnel de sant\xE9" + - domicile personnel + - "EPHAD ou long s\xE9jour" + - autre examples: - None + destinationLocation: + $ref: '#/components/schemas/location' additionalProperties: false - example: example.json#/decision/0/destination + example: example.json#/decision/0/transportDetails/destination examples: - type: None - facility: None - adminFiness: None - geoFiness: None - service: None - freetext: None + destinationLocation: {} customMap: type: object title: "Cl\xE9 valeur adaptable" diff --git a/generator/input/CustomContent.openapi.yaml b/generator/input/customContent.openapi.yaml similarity index 92% rename from generator/input/CustomContent.openapi.yaml rename to generator/input/customContent.openapi.yaml index 01565ed68..31f2aede5 100644 --- a/generator/input/CustomContent.openapi.yaml +++ b/generator/input/customContent.openapi.yaml @@ -10,7 +10,7 @@ components: $ref: '#/components/schemas/customContent' customContent: $id: classpath:/json-schema/schema# - x-id: CustomContent.schema.json# + x-id: customContent.schema.json# example: example.json# type: object title: customContent diff --git a/generator/templates/wrapper/README.md b/generator/templates/wrapper/README.md index 4761a9127..129cfd0a1 100644 --- a/generator/templates/wrapper/README.md +++ b/generator/templates/wrapper/README.md @@ -1,7 +1,7 @@ this templates are used to generate the model class of the **Wrapper** classes. It contains the same annotations as in the child classes, plus: -- the import of com.hubsante.model.common.DistributionElement and the *extends* mention on the class declaration. +- the import of com.hubsante.model.rcde.DistributionElement and the *extends* mention on the class declaration. - the import of jackson xml annotations - Jackson xml additional annotations to handle root element and namespace diff --git a/generator/templates/wrapper/model.mustache b/generator/templates/wrapper/model.mustache index b6433f7c3..fa0328957 100644 --- a/generator/templates/wrapper/model.mustache +++ b/generator/templates/wrapper/model.mustache @@ -11,7 +11,12 @@ import java.util.Arrays; {{#imports}} import {{import}}; {{/imports}} -import com.hubsante.model.common.DistributionElement; +{{#customExtend}} + import {{customExtend.package}}.{{customExtend.className}}; +{{/customExtend}} +{{^customExtend}} +import com.hubsante.model.rcde.DistributionElement; +{{/customExtend}} import com.fasterxml.jackson.dataformat.xml.annotation.*; {{#serializableModel}} import java.io.Serializable; diff --git a/generator/templates/wrapper/pojo.mustache b/generator/templates/wrapper/pojo.mustache index 302fef1a2..44f0f3415 100644 --- a/generator/templates/wrapper/pojo.mustache +++ b/generator/templates/wrapper/pojo.mustache @@ -5,12 +5,14 @@ @Deprecated{{/isDeprecated}} {{#jackson}} @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, + {{^customExtend}} + 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, + {{/customExtend}} {{#vars}} {{classname}}.JSON_PROPERTY_{{nameInSnakeCase}}{{^-last}},{{/-last}} {{/vars}} @@ -26,7 +28,7 @@ {{#vendorExtensions.x-class-extra-annotation}} {{{vendorExtensions.x-class-extra-annotation}}} {{/vendorExtensions.x-class-extra-annotation}} -public class {{classname}}{{#vendorExtensions.x-implements}}{{#-first}}implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{#-last}} {{/-last}}{{/vendorExtensions.x-implements}} extends DistributionElement { +public class {{classname}}{{#vendorExtensions.x-implements}}{{#-first}}implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{#-last}} {{/-last}}{{/vendorExtensions.x-implements}} extends {{#customExtend}}{{customExtend.className}}{{/customExtend}}{{^customExtend}}DistributionElement{{/customExtend}} { {{#serializableModel}} private static final long serialVersionUID = 1L; diff --git a/nomenclature_parser/hubsante/loader.py b/nomenclature_parser/hubsante/loader.py index 77853d138..28de9569e 100644 --- a/nomenclature_parser/hubsante/loader.py +++ b/nomenclature_parser/hubsante/loader.py @@ -257,6 +257,9 @@ def parse_excel(filename_in, df_sommaire_in, version, folder_output): sheet_names = pd.ExcelFile(filename_in).sheet_names # iterate over sheets for sheet_i in sheet_names: + if sheet_i.startswith("#"): + print("Skipping " + filename_in + " : sheet " + sheet_i + " ...") + continue # we end this loop and go to the next sheet print("Processing " + filename_in + " : sheet " + sheet_i + " ...") params_i, df_nomenclature_i = parse_sheet(filename_in, sheet_i) nom_fichier_i = params_i["nomenclature_ref"] + "-" + params_i["nomenclature_name"] + "-" + version diff --git a/nomenclature_parser/in/Nomenclatures EDA.xlsx b/nomenclature_parser/in/Nomenclatures EDA.xlsx old mode 100755 new mode 100644 index 41593c206..3d9908b8e Binary files a/nomenclature_parser/in/Nomenclatures EDA.xlsx and b/nomenclature_parser/in/Nomenclatures EDA.xlsx differ diff --git a/nomenclature_parser/in/Nomenclatures EMSI MISSION.xlsx b/nomenclature_parser/in/Nomenclatures EMSI MISSION.xlsx old mode 100755 new mode 100644 diff --git a/nomenclature_parser/in/Nomenclatures ESMI CONTEXT.xlsx b/nomenclature_parser/in/Nomenclatures ESMI CONTEXT.xlsx deleted file mode 100755 index ad70624d1..000000000 Binary files a/nomenclature_parser/in/Nomenclatures ESMI CONTEXT.xlsx and /dev/null differ diff --git a/nomenclature_parser/in/Nomenclatures RC-EDA.xlsx b/nomenclature_parser/in/Nomenclatures RC-EDA.xlsx deleted file mode 100755 index 95fee5505..000000000 Binary files a/nomenclature_parser/in/Nomenclatures RC-EDA.xlsx and /dev/null differ diff --git a/nomenclature_parser/out/latest/word/CISU-CodeLien_patients-victimes-v24.03.11.docx b/nomenclature_parser/out/latest/Sommaire Nomenclature Hub-v24.05.27.docx similarity index 90% rename from nomenclature_parser/out/latest/word/CISU-CodeLien_patients-victimes-v24.03.11.docx rename to nomenclature_parser/out/latest/Sommaire Nomenclature Hub-v24.05.27.docx index c916b9dfa..6c4c59010 100644 Binary files a/nomenclature_parser/out/latest/word/CISU-CodeLien_patients-victimes-v24.03.11.docx and b/nomenclature_parser/out/latest/Sommaire Nomenclature Hub-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/csv/CISU-Code-Statut appelant-v24.03.11.csv b/nomenclature_parser/out/latest/csv/CISU-Code-Statut appelant-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/CISU-Code-Statut appelant-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/CISU-Code-Statut appelant-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/CISU-CodeEffet_a_obtenir-v24.03.11.csv b/nomenclature_parser/out/latest/csv/CISU-CodeEffet_a_obtenir-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/CISU-CodeEffet_a_obtenir-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/CISU-CodeEffet_a_obtenir-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/CISU-CodeLien_patients-victimes-v24.03.11.csv b/nomenclature_parser/out/latest/csv/CISU-CodeLien_patients-victimes-v24.03.11.csv deleted file mode 100644 index 9222a430e..000000000 --- a/nomenclature_parser/out/latest/csv/CISU-CodeLien_patients-victimes-v24.03.11.csv +++ /dev/null @@ -1,22 +0,0 @@ -,code,label_n1,description,commentaire -0,AUTRE,Autre,, -1,BEAUF  ,Beau fils,, -2,BEAU  ,Beau père,, -3,BELLE  ,Belle mère,, -4,DIVERS  ,Divers,, -5,EPOUSE  ,Epouse,, -6,EPOUX  ,Epoux,, -7,FILLE ,Fille,, -8,FILS  ,Fils,, -9,FRERE  ,Frère,, -10,ONCLE  ,Oncle,, -11,PETIT,Petit-fils,, -12,PETITE  ,Petite-fille,, -13,PERE  ,Père,, -14,MERE  ,Mère,, -15,SOEUR  ,Soeur,, -16,TANTE  ,Tante,, -17,VOISIN  ,Voisin,, -18,GRANDM  ,Grand-mère,, -19,GRANDP  ,Grand-père,, -20,SELF  ,L'appelant est le patient,, diff --git a/nomenclature_parser/out/latest/csv/CISU-CodeNombre_de_patients-victimes-v24.03.11.csv b/nomenclature_parser/out/latest/csv/CISU-CodeNombre_de_patients-victimes-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/CISU-CodeNombre_de_patients-victimes-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/CISU-CodeNombre_de_patients-victimes-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/CISU-Code_Motif_patient-victime-v24.03.11.csv b/nomenclature_parser/out/latest/csv/CISU-Code_Motif_patient-victime-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/CISU-Code_Motif_patient-victime-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/CISU-Code_Motif_patient-victime-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/CISU-Code_Nature_de_fait-v24.03.11.csv b/nomenclature_parser/out/latest/csv/CISU-Code_Nature_de_fait-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/CISU-Code_Nature_de_fait-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/CISU-Code_Nature_de_fait-v24.05.27.csv diff --git "a/nomenclature_parser/out/latest/csv/CISU-Code_Risque-Menace-Sensibilit\303\251-v24.03.11.csv" "b/nomenclature_parser/out/latest/csv/CISU-Code_Risque-Menace-Sensibilit\303\251-v24.05.27.csv" similarity index 100% rename from "nomenclature_parser/out/latest/csv/CISU-Code_Risque-Menace-Sensibilit\303\251-v24.03.11.csv" rename to "nomenclature_parser/out/latest/csv/CISU-Code_Risque-Menace-Sensibilit\303\251-v24.05.27.csv" diff --git a/nomenclature_parser/out/latest/csv/CISU-Code_Type_de_lieu-v24.03.11.csv b/nomenclature_parser/out/latest/csv/CISU-Code_Type_de_lieu-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/CISU-Code_Type_de_lieu-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/CISU-Code_Type_de_lieu-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-CONTEXT.LEVEL-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-CONTEXT.LEVEL-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-CONTEXT.LEVEL-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-CONTEXT.LEVEL-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-CONTEXT.LINK_ROLE-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-CONTEXT.LINK_ROLE-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-CONTEXT.LINK_ROLE-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-CONTEXT.LINK_ROLE-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-CONTEXT.MODE-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-CONTEXT.MODE-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-CONTEXT.MODE-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-CONTEXT.MODE-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-CONTEXT.MSGTYPE-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-CONTEXT.MSGTYPE-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-CONTEXT.MSGTYPE-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-CONTEXT.MSGTYPE-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-CONTEXT.SECLASS-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-CONTEXT.SECLASS-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-CONTEXT.SECLASS-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-CONTEXT.SECLASS-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-EVENT.CAUSE-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-EVENT.CAUSE-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-EVENT.CAUSE-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-EVENT.CAUSE-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-EVENT.EGEO.TYPE-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-EVENT.EGEO.TYPE-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-EVENT.EGEO.TYPE-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-EVENT.EGEO.TYPE-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-EVENT.EGEO.WEATHER-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-EVENT.EGEO.WEATHER-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-EVENT.EGEO.WEATHER-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-EVENT.EGEO.WEATHER-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-EVENT.ETYPE.ACTOR-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-EVENT.ETYPE.ACTOR-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-EVENT.ETYPE.ACTOR-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-EVENT.ETYPE.ACTOR-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-EVENT.ETYPE.CATEGORY-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-EVENT.ETYPE.CATEGORY-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-EVENT.ETYPE.CATEGORY-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-EVENT.ETYPE.CATEGORY-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-EVENT.ETYPE.ENV-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-EVENT.ETYPE.ENV-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-EVENT.ETYPE.ENV-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-EVENT.ETYPE.ENV-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-EVENT.ETYPE.LOCTYPE-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-EVENT.ETYPE.LOCTYPE-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-EVENT.ETYPE.LOCTYPE-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-EVENT.ETYPE.LOCTYPE-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-EVENT.POSITION.TYPE-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-EVENT.POSITION.TYPE-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-EVENT.POSITION.TYPE-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-EVENT.POSITION.TYPE-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-EVENT.RISK_ASSESSMNT-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-EVENT.RISK_ASSESSMNT-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-EVENT.RISK_ASSESSMNT-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-EVENT.RISK_ASSESSMNT-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-EVENT.SCALE-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-EVENT.SCALE-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-EVENT.SCALE-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-EVENT.SCALE-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-EVENT.SOURCE-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-EVENT.SOURCE-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-EVENT.SOURCE-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-EVENT.SOURCE-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-EVENT.STATUS-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-EVENT.STATUS-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-EVENT.STATUS-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-EVENT.STATUS-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-MISSION.TYPE-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-MISSION.TYPE-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-MISSION.TYPE-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-MISSION.TYPE-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-RESOURCE.RTYPE.CAPABILITY-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-RESOURCE.RTYPE.CAPABILITY-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-RESOURCE.RTYPE.CAPABILITY-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-RESOURCE.RTYPE.CAPABILITY-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-RESOURCE.RTYPE.CLASS-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-RESOURCE.RTYPE.CLASS-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-RESOURCE.RTYPE.CLASS-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-RESOURCE.RTYPE.CLASS-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-RESOURCE.UM-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-RESOURCE.UM-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-RESOURCE.UM-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-RESOURCE.UM-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/EMSI-RGEO.POSITION.TYPE-v24.03.11.csv b/nomenclature_parser/out/latest/csv/EMSI-RGEO.POSITION.TYPE-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/EMSI-RGEO.POSITION.TYPE-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/EMSI-RGEO.POSITION.TYPE-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/ISO 3166-ISO3166-2-v24.03.11.csv b/nomenclature_parser/out/latest/csv/ISO 3166-ISO3166-2-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/ISO 3166-ISO3166-2-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/ISO 3166-ISO3166-2-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/SI SAMU-NOMENC_DEVENIR_PAT-v24.05.27.csv b/nomenclature_parser/out/latest/csv/SI SAMU-NOMENC_DEVENIR_PAT-v24.05.27.csv new file mode 100644 index 000000000..236ac3ed2 --- /dev/null +++ b/nomenclature_parser/out/latest/csv/SI SAMU-NOMENC_DEVENIR_PAT-v24.05.27.csv @@ -0,0 +1,20 @@ +,code,label_n1,Libellé niveau 2,Libellé niveau 3,description,commentaire +0,OK,Accord du service d'orientation,,,Devenir issu de la décision d'orientation + modalité d'exécution, +1,TEMP,Accord sous condition (en attente d'avis ou d'examen complémentaire ou d'affectation vers le service adapté),,,Devenir issu de la décision d'orientation + modalité d'exécution, +2,SEUL,Laissé seul,,,Devenir issu de la décision d'orientation + Type de laissé sur place, +3,AFAMILLE,Laissé à la famille ou entourage,,,Devenir issu de la décision d'orientation + Type de laissé sur place, +4,AMED,Confié à un médecin,,,Devenir issu de la décision d'orientation + Type de laissé sur place, +5,AFDO,Confié aux Forces de l'ordre,,,Devenir issu de la décision d'orientation + Type de laissé sur place, +6,ATIERS,Confié à autre personne ,,,Devenir issu de la décision d'orientation + Type de laissé sur place, +7,MOYPERSO,Retour à domicile - Transporté par ses propres moyens,,,Devenir issu de la décision d'orientation + mode de transport, +8,Code vecteur choisi,Retour à domicile - Transporté par le vecteur d'intervention ou de transport envoyé par le CRRA,,,Devenir issu de la décision d'orientation + mode de transport, +9,REFPAT,"Retour à domicile - Refus du patient, patient laissé sur place",,,Devenir issu de la décision d'orientation + motif de refus, +10,REFFAM,"Retour à domicile - Refus de l'entourage, patient laissé sur place",,,Devenir issu de la décision d'orientation + motif de refus, +11,PASREAKO,DCD sans réanimation - non examiné par médecin,,,Devenir issu de l'information relative au décès du patient, +12,PASREAOK,DCD sans réanimation - examiné par médecin,,,Devenir issu de l'information relative au décès du patient, +13,REA,DCD après réanimation ,,,Devenir issu de l'information relative au décès du patient, +14,TRANSPOR,DCD pendant le transport,,,Devenir issu de l'information relative au décès du patient, +15,ADM,DCD à son admission,,,Devenir issu de l'information relative au décès du patient, +16,FUGUE,"Fugue, le patient n'est plus sur les lieux",,,Devenir issu de la décision d'orientation + motif de refus, +17,REFAUTRE,Autres refus orientation,,,Devenir issu de la décision d'orientation + motif de refus, +18,RAS,Pas de prise en charge nécessaire,,,Devenir issu de la décision d'orientation + Type de laissé sur place, diff --git a/nomenclature_parser/out/latest/csv/SI SAMU-TYPE_MOYEN-v24.05.27.csv b/nomenclature_parser/out/latest/csv/SI SAMU-TYPE_MOYEN-v24.05.27.csv new file mode 100644 index 000000000..7fd327eb9 --- /dev/null +++ b/nomenclature_parser/out/latest/csv/SI SAMU-TYPE_MOYEN-v24.05.27.csv @@ -0,0 +1,11 @@ +,code,label_n1,Libellé niveau 2,Libellé niveau 3,description,commentaire +0,SMUR,Smur,,,"Ensemble des ressources fixes et mobiles relevant de la responsabilité des Smur (UMH, HéliSmur…)", +1,HOSPIT,Hospitaliers (hors Smur),,,"Ensemble des ressources fixes ou mobiles relevant du secteur hospitalier, public ou privé (établissement de soins, vecteurs sanitaires hospitaliers hors Smur…)", +2,LIB,Professionnels Libéraux,,,"Ensemble des ressources fixes ou mobiles relevant de la prise en charge libérale (médecins libéraux, paramédicaux libéraux, pharmacies, MMG, SOS Médecin…)", +3,TSU ,Ambulanciers privés (Transporteurs Sanitaires Urgent),,,"Ensemble des ressources fixes et mobiles relevant des ambulances privées (ASSU, Ambulanciers…)", +4,SIS,Pompiers,,,"Ensemble des ressources fixes ou mobiles relevant des forces d’intervention Pompiers (VSAV, ISP, VLI, médecin SP…)", +5,AASC,"Sécurité civile, secouriste",,,Ensemble des ressources fixes ou mobiles relevant des organisations de secourisme, +6,FDO,Force de l'Ordre et douanes,,,"Ensemble des ressources fixes ou mobiles relevant des forces de l’ordre (police nationale, municipale, gendarmerie nationaux et douanes)", +7,ADM,Institutions administratives et sociales,,,"Ensemble des ressources fixes ou mobiles relevant des administrations ou services sociaux (ARS, Institut National de Veille Sanitaire…)", +8,DAE,Défibrillateurs Automatisés Externes,,,Ensemble des défibrillateurs automatisés externes présents sur le territoire, +9,AUTRE,Autres ressources,,,Ensemble des ressources fixes ou mobiles ne relevant d’aucune catégorie précédemment définie, diff --git a/nomenclature_parser/out/latest/csv/SI-SAMU-DEVENIRD-v24.03.11.csv b/nomenclature_parser/out/latest/csv/SI-SAMU-DEVENIRD-v24.05.27.csv similarity index 97% rename from nomenclature_parser/out/latest/csv/SI-SAMU-DEVENIRD-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/SI-SAMU-DEVENIRD-v24.05.27.csv index a41922c00..a514435a1 100644 --- a/nomenclature_parser/out/latest/csv/SI-SAMU-DEVENIRD-v24.03.11.csv +++ b/nomenclature_parser/out/latest/csv/SI-SAMU-DEVENIRD-v24.05.27.csv @@ -1,7 +1,7 @@ ,code,label_n1,label_n2,label_n3,description,commentaire 0,DRM,DRM,,,Dossier de régulation médicale, 1,DRMMRU,,DRM MRU,,Dossier de type médecine d’urgence, -2,MU,,,Régulation MU,Dossier de type médecine d’urgence régulé par un médecin urgentiste. Le dossier devient de type DRM, +2,MU, ,,Régulation MU,Dossier de type médecine d’urgence régulé par un médecin urgentiste. Le dossier devient de type DRM, 3,DENT,,,Régulation dentaire,Dossier régulé par un chirurgien dentiste au sein du CRRA. Le dossier devient de type DRM, 4,GERIA,,,Régulation gériatrique,Dossier régulé par un gériatre au sein du CRRA. Le dossier devient de type DRM, 5,PEDIA,,,Régulation pédiatrie,Dossier régulé par un pédiatre au sein du CRRA. Le dossier devient de type DRM, diff --git a/nomenclature_parser/out/latest/csv/SI-SAMU-GRAVITE-v24.03.11.csv b/nomenclature_parser/out/latest/csv/SI-SAMU-GRAVITE-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/SI-SAMU-GRAVITE-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/SI-SAMU-GRAVITE-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/SI-SAMU-NIVSOIN-v24.03.11.csv b/nomenclature_parser/out/latest/csv/SI-SAMU-NIVSOIN-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/SI-SAMU-NIVSOIN-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/SI-SAMU-NIVSOIN-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/SI-SAMU-NOMENC_SEXE-v24.03.11.csv b/nomenclature_parser/out/latest/csv/SI-SAMU-NOMENC_SEXE-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/SI-SAMU-NOMENC_SEXE-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/SI-SAMU-NOMENC_SEXE-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/SI-SAMU-PBAPL-v24.03.11.csv b/nomenclature_parser/out/latest/csv/SI-SAMU-PBAPL-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/SI-SAMU-PBAPL-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/SI-SAMU-PBAPL-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/SI-SAMU-PRIORITE-v24.03.11.csv b/nomenclature_parser/out/latest/csv/SI-SAMU-PRIORITE-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/SI-SAMU-PRIORITE-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/SI-SAMU-PRIORITE-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/SI-SAMU-TYPAPPLT-v24.03.11.csv b/nomenclature_parser/out/latest/csv/SI-SAMU-TYPAPPLT-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/SI-SAMU-TYPAPPLT-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/SI-SAMU-TYPAPPLT-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/csv/SI-SAMU-TYPEDEC-v24.03.11.csv b/nomenclature_parser/out/latest/csv/SI-SAMU-TYPEDEC-v24.05.27.csv similarity index 100% rename from nomenclature_parser/out/latest/csv/SI-SAMU-TYPEDEC-v24.03.11.csv rename to nomenclature_parser/out/latest/csv/SI-SAMU-TYPEDEC-v24.05.27.csv diff --git a/nomenclature_parser/out/latest/pdf/CISU-Code-Statut appelant-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/CISU-Code-Statut appelant-v24.05.27.pdf similarity index 92% rename from nomenclature_parser/out/latest/pdf/CISU-Code-Statut appelant-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/CISU-Code-Statut appelant-v24.05.27.pdf index c9054a098..990369240 100644 Binary files a/nomenclature_parser/out/latest/pdf/CISU-Code-Statut appelant-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/CISU-Code-Statut appelant-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/CISU-CodeEffet_a_obtenir-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/CISU-CodeEffet_a_obtenir-v24.05.27.pdf similarity index 97% rename from nomenclature_parser/out/latest/pdf/CISU-CodeEffet_a_obtenir-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/CISU-CodeEffet_a_obtenir-v24.05.27.pdf index 1e2e322db..7ef2fed8d 100644 Binary files a/nomenclature_parser/out/latest/pdf/CISU-CodeEffet_a_obtenir-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/CISU-CodeEffet_a_obtenir-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/CISU-CodeLien_patients-victimes-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/CISU-CodeLien_patients-victimes-v24.03.11.pdf deleted file mode 100644 index c5d04775a..000000000 Binary files a/nomenclature_parser/out/latest/pdf/CISU-CodeLien_patients-victimes-v24.03.11.pdf and /dev/null differ diff --git a/nomenclature_parser/out/latest/pdf/CISU-CodeNombre_de_patients-victimes-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/CISU-CodeNombre_de_patients-victimes-v24.05.27.pdf similarity index 92% rename from nomenclature_parser/out/latest/pdf/CISU-CodeNombre_de_patients-victimes-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/CISU-CodeNombre_de_patients-victimes-v24.05.27.pdf index b31e4465b..773860244 100644 Binary files a/nomenclature_parser/out/latest/pdf/CISU-CodeNombre_de_patients-victimes-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/CISU-CodeNombre_de_patients-victimes-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/CISU-Code_Motif_patient-victime-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/CISU-Code_Motif_patient-victime-v24.05.27.pdf similarity index 98% rename from nomenclature_parser/out/latest/pdf/CISU-Code_Motif_patient-victime-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/CISU-Code_Motif_patient-victime-v24.05.27.pdf index 1f850736f..5b5a6f004 100644 Binary files a/nomenclature_parser/out/latest/pdf/CISU-Code_Motif_patient-victime-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/CISU-Code_Motif_patient-victime-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/CISU-Code_Nature_de_fait-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/CISU-Code_Nature_de_fait-v24.05.27.pdf similarity index 99% rename from nomenclature_parser/out/latest/pdf/CISU-Code_Nature_de_fait-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/CISU-Code_Nature_de_fait-v24.05.27.pdf index 24cc73ce1..6d4cd72cf 100644 Binary files a/nomenclature_parser/out/latest/pdf/CISU-Code_Nature_de_fait-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/CISU-Code_Nature_de_fait-v24.05.27.pdf differ diff --git "a/nomenclature_parser/out/latest/pdf/CISU-Code_Risque-Menace-Sensibilit\303\251-v24.03.11.pdf" "b/nomenclature_parser/out/latest/pdf/CISU-Code_Risque-Menace-Sensibilit\303\251-v24.05.27.pdf" similarity index 97% rename from "nomenclature_parser/out/latest/pdf/CISU-Code_Risque-Menace-Sensibilit\303\251-v24.03.11.pdf" rename to "nomenclature_parser/out/latest/pdf/CISU-Code_Risque-Menace-Sensibilit\303\251-v24.05.27.pdf" index 11e4d7289..a996f8d3d 100644 Binary files "a/nomenclature_parser/out/latest/pdf/CISU-Code_Risque-Menace-Sensibilit\303\251-v24.03.11.pdf" and "b/nomenclature_parser/out/latest/pdf/CISU-Code_Risque-Menace-Sensibilit\303\251-v24.05.27.pdf" differ diff --git a/nomenclature_parser/out/latest/pdf/CISU-Code_Type_de_lieu-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/CISU-Code_Type_de_lieu-v24.05.27.pdf similarity index 99% rename from nomenclature_parser/out/latest/pdf/CISU-Code_Type_de_lieu-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/CISU-Code_Type_de_lieu-v24.05.27.pdf index 636642abd..4ab6688c7 100644 Binary files a/nomenclature_parser/out/latest/pdf/CISU-Code_Type_de_lieu-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/CISU-Code_Type_de_lieu-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.LEVEL-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.LEVEL-v24.05.27.pdf similarity index 91% rename from nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.LEVEL-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.LEVEL-v24.05.27.pdf index 767c692a9..71d228d62 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.LEVEL-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.LEVEL-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.LINK_ROLE-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.LINK_ROLE-v24.05.27.pdf similarity index 91% rename from nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.LINK_ROLE-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.LINK_ROLE-v24.05.27.pdf index c694913e3..0566abb10 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.LINK_ROLE-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.LINK_ROLE-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.MODE-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.MODE-v24.05.27.pdf similarity index 91% rename from nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.MODE-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.MODE-v24.05.27.pdf index dc1461de4..9bd1a41f1 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.MODE-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.MODE-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.MSGTYPE-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.MSGTYPE-v24.05.27.pdf similarity index 92% rename from nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.MSGTYPE-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.MSGTYPE-v24.05.27.pdf index 0c0a7d58d..ebb609616 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.MSGTYPE-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.MSGTYPE-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.SECLASS-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.SECLASS-v24.05.27.pdf similarity index 92% rename from nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.SECLASS-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.SECLASS-v24.05.27.pdf index b08049576..7ae91401b 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.SECLASS-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-CONTEXT.SECLASS-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.CAUSE-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.CAUSE-v24.05.27.pdf similarity index 91% rename from nomenclature_parser/out/latest/pdf/EMSI-EVENT.CAUSE-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-EVENT.CAUSE-v24.05.27.pdf index d14c31edc..71d2ae8eb 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.CAUSE-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.CAUSE-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.EGEO.TYPE-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.EGEO.TYPE-v24.05.27.pdf similarity index 99% rename from nomenclature_parser/out/latest/pdf/EMSI-EVENT.EGEO.TYPE-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-EVENT.EGEO.TYPE-v24.05.27.pdf index 52b40534b..0007aa2c0 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.EGEO.TYPE-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.EGEO.TYPE-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.EGEO.WEATHER-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.EGEO.WEATHER-v24.05.27.pdf similarity index 99% rename from nomenclature_parser/out/latest/pdf/EMSI-EVENT.EGEO.WEATHER-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-EVENT.EGEO.WEATHER-v24.05.27.pdf index 436ed4e4c..0567e1442 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.EGEO.WEATHER-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.EGEO.WEATHER-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.ACTOR-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.ACTOR-v24.05.27.pdf similarity index 99% rename from nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.ACTOR-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.ACTOR-v24.05.27.pdf index 876076db1..8ab107a80 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.ACTOR-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.ACTOR-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.CATEGORY-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.CATEGORY-v24.05.27.pdf similarity index 98% rename from nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.CATEGORY-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.CATEGORY-v24.05.27.pdf index ecfd74372..a2b1bbd47 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.CATEGORY-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.CATEGORY-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.ENV-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.ENV-v24.05.27.pdf similarity index 97% rename from nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.ENV-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.ENV-v24.05.27.pdf index 4fa4b05b8..60c1ba1dc 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.ENV-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.ENV-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.LOCTYPE-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.LOCTYPE-v24.05.27.pdf similarity index 98% rename from nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.LOCTYPE-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.LOCTYPE-v24.05.27.pdf index 49a6038e5..79de0ef14 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.LOCTYPE-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.ETYPE.LOCTYPE-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.POSITION.TYPE-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.POSITION.TYPE-v24.05.27.pdf similarity index 93% rename from nomenclature_parser/out/latest/pdf/EMSI-EVENT.POSITION.TYPE-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-EVENT.POSITION.TYPE-v24.05.27.pdf index 825be458d..636d20d3c 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.POSITION.TYPE-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.POSITION.TYPE-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.RISK_ASSESSMNT-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.RISK_ASSESSMNT-v24.05.27.pdf similarity index 91% rename from nomenclature_parser/out/latest/pdf/EMSI-EVENT.RISK_ASSESSMNT-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-EVENT.RISK_ASSESSMNT-v24.05.27.pdf index c461af105..522fa7c4e 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.RISK_ASSESSMNT-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.RISK_ASSESSMNT-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.SCALE-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.SCALE-v24.05.27.pdf similarity index 93% rename from nomenclature_parser/out/latest/pdf/EMSI-EVENT.SCALE-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-EVENT.SCALE-v24.05.27.pdf index ba344a837..06d48de18 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.SCALE-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.SCALE-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.SOURCE-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.SOURCE-v24.05.27.pdf similarity index 92% rename from nomenclature_parser/out/latest/pdf/EMSI-EVENT.SOURCE-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-EVENT.SOURCE-v24.05.27.pdf index 0cef2c581..da870a918 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.SOURCE-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.SOURCE-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.STATUS-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.STATUS-v24.05.27.pdf similarity index 93% rename from nomenclature_parser/out/latest/pdf/EMSI-EVENT.STATUS-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-EVENT.STATUS-v24.05.27.pdf index aa6705544..d604345b7 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-EVENT.STATUS-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-EVENT.STATUS-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-MISSION.TYPE-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-MISSION.TYPE-v24.05.27.pdf similarity index 99% rename from nomenclature_parser/out/latest/pdf/EMSI-MISSION.TYPE-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-MISSION.TYPE-v24.05.27.pdf index fcadfedec..3ed965dee 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-MISSION.TYPE-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-MISSION.TYPE-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-RESOURCE.RTYPE.CAPABILITY-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-RESOURCE.RTYPE.CAPABILITY-v24.05.27.pdf similarity index 96% rename from nomenclature_parser/out/latest/pdf/EMSI-RESOURCE.RTYPE.CAPABILITY-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-RESOURCE.RTYPE.CAPABILITY-v24.05.27.pdf index 2ad3aeeb7..4b0782627 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-RESOURCE.RTYPE.CAPABILITY-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-RESOURCE.RTYPE.CAPABILITY-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-RESOURCE.RTYPE.CLASS-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-RESOURCE.RTYPE.CLASS-v24.05.27.pdf similarity index 99% rename from nomenclature_parser/out/latest/pdf/EMSI-RESOURCE.RTYPE.CLASS-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-RESOURCE.RTYPE.CLASS-v24.05.27.pdf index 22938279a..19f94a09a 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-RESOURCE.RTYPE.CLASS-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-RESOURCE.RTYPE.CLASS-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-RESOURCE.UM-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-RESOURCE.UM-v24.05.27.pdf similarity index 98% rename from nomenclature_parser/out/latest/pdf/EMSI-RESOURCE.UM-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-RESOURCE.UM-v24.05.27.pdf index 1de70dc81..73b522d53 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-RESOURCE.UM-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-RESOURCE.UM-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/EMSI-RGEO.POSITION.TYPE-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/EMSI-RGEO.POSITION.TYPE-v24.05.27.pdf similarity index 93% rename from nomenclature_parser/out/latest/pdf/EMSI-RGEO.POSITION.TYPE-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/EMSI-RGEO.POSITION.TYPE-v24.05.27.pdf index 5eb7346cc..c7d89bcce 100644 Binary files a/nomenclature_parser/out/latest/pdf/EMSI-RGEO.POSITION.TYPE-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/EMSI-RGEO.POSITION.TYPE-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/ISO 3166-ISO3166-2-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/ISO 3166-ISO3166-2-v24.05.27.pdf similarity index 99% rename from nomenclature_parser/out/latest/pdf/ISO 3166-ISO3166-2-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/ISO 3166-ISO3166-2-v24.05.27.pdf index 213b013d0..a6fed1922 100644 Binary files a/nomenclature_parser/out/latest/pdf/ISO 3166-ISO3166-2-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/ISO 3166-ISO3166-2-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/SI SAMU-NOMENC_DEVENIR_PAT-v24.05.27.pdf b/nomenclature_parser/out/latest/pdf/SI SAMU-NOMENC_DEVENIR_PAT-v24.05.27.pdf new file mode 100644 index 000000000..60d4874ea Binary files /dev/null and b/nomenclature_parser/out/latest/pdf/SI SAMU-NOMENC_DEVENIR_PAT-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/SI SAMU-TYPE_MOYEN-v24.05.27.pdf b/nomenclature_parser/out/latest/pdf/SI SAMU-TYPE_MOYEN-v24.05.27.pdf new file mode 100644 index 000000000..ba8981226 Binary files /dev/null and b/nomenclature_parser/out/latest/pdf/SI SAMU-TYPE_MOYEN-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/SI-SAMU-DEVENIRD-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/SI-SAMU-DEVENIRD-v24.05.27.pdf similarity index 98% rename from nomenclature_parser/out/latest/pdf/SI-SAMU-DEVENIRD-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/SI-SAMU-DEVENIRD-v24.05.27.pdf index 5b2a90e18..7a744ff37 100644 Binary files a/nomenclature_parser/out/latest/pdf/SI-SAMU-DEVENIRD-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/SI-SAMU-DEVENIRD-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/SI-SAMU-GRAVITE-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/SI-SAMU-GRAVITE-v24.05.27.pdf similarity index 93% rename from nomenclature_parser/out/latest/pdf/SI-SAMU-GRAVITE-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/SI-SAMU-GRAVITE-v24.05.27.pdf index 8587b4b81..fc0b3e9d8 100644 Binary files a/nomenclature_parser/out/latest/pdf/SI-SAMU-GRAVITE-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/SI-SAMU-GRAVITE-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/SI-SAMU-NIVSOIN-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/SI-SAMU-NIVSOIN-v24.05.27.pdf similarity index 92% rename from nomenclature_parser/out/latest/pdf/SI-SAMU-NIVSOIN-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/SI-SAMU-NIVSOIN-v24.05.27.pdf index 261ab1e17..ee53ab6f3 100644 Binary files a/nomenclature_parser/out/latest/pdf/SI-SAMU-NIVSOIN-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/SI-SAMU-NIVSOIN-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/SI-SAMU-NOMENC_SEXE-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/SI-SAMU-NOMENC_SEXE-v24.05.27.pdf similarity index 93% rename from nomenclature_parser/out/latest/pdf/SI-SAMU-NOMENC_SEXE-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/SI-SAMU-NOMENC_SEXE-v24.05.27.pdf index e88ea75d0..610a35b82 100644 Binary files a/nomenclature_parser/out/latest/pdf/SI-SAMU-NOMENC_SEXE-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/SI-SAMU-NOMENC_SEXE-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/SI-SAMU-PBAPL-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/SI-SAMU-PBAPL-v24.05.27.pdf similarity index 96% rename from nomenclature_parser/out/latest/pdf/SI-SAMU-PBAPL-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/SI-SAMU-PBAPL-v24.05.27.pdf index 9d1eac647..74b84f39e 100644 Binary files a/nomenclature_parser/out/latest/pdf/SI-SAMU-PBAPL-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/SI-SAMU-PBAPL-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/SI-SAMU-PRIORITE-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/SI-SAMU-PRIORITE-v24.05.27.pdf similarity index 93% rename from nomenclature_parser/out/latest/pdf/SI-SAMU-PRIORITE-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/SI-SAMU-PRIORITE-v24.05.27.pdf index e28f289d4..85013a844 100644 Binary files a/nomenclature_parser/out/latest/pdf/SI-SAMU-PRIORITE-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/SI-SAMU-PRIORITE-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/SI-SAMU-TYPAPPLT-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/SI-SAMU-TYPAPPLT-v24.05.27.pdf similarity index 97% rename from nomenclature_parser/out/latest/pdf/SI-SAMU-TYPAPPLT-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/SI-SAMU-TYPAPPLT-v24.05.27.pdf index adb43ff6f..466d1afe9 100644 Binary files a/nomenclature_parser/out/latest/pdf/SI-SAMU-TYPAPPLT-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/SI-SAMU-TYPAPPLT-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/pdf/SI-SAMU-TYPEDEC-v24.03.11.pdf b/nomenclature_parser/out/latest/pdf/SI-SAMU-TYPEDEC-v24.05.27.pdf similarity index 94% rename from nomenclature_parser/out/latest/pdf/SI-SAMU-TYPEDEC-v24.03.11.pdf rename to nomenclature_parser/out/latest/pdf/SI-SAMU-TYPEDEC-v24.05.27.pdf index e477de0fe..ef4cd0b1f 100644 Binary files a/nomenclature_parser/out/latest/pdf/SI-SAMU-TYPEDEC-v24.03.11.pdf and b/nomenclature_parser/out/latest/pdf/SI-SAMU-TYPEDEC-v24.05.27.pdf differ diff --git a/nomenclature_parser/out/latest/word/CISU-Code-Statut appelant-v24.03.11.docx b/nomenclature_parser/out/latest/word/CISU-Code-Statut appelant-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/CISU-Code-Statut appelant-v24.03.11.docx rename to nomenclature_parser/out/latest/word/CISU-Code-Statut appelant-v24.05.27.docx index 27856323b..b177c1032 100644 Binary files a/nomenclature_parser/out/latest/word/CISU-Code-Statut appelant-v24.03.11.docx and b/nomenclature_parser/out/latest/word/CISU-Code-Statut appelant-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/CISU-CodeEffet_a_obtenir-v24.03.11.docx b/nomenclature_parser/out/latest/word/CISU-CodeEffet_a_obtenir-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/CISU-CodeEffet_a_obtenir-v24.03.11.docx rename to nomenclature_parser/out/latest/word/CISU-CodeEffet_a_obtenir-v24.05.27.docx index b74e0edd0..15a2cd97a 100644 Binary files a/nomenclature_parser/out/latest/word/CISU-CodeEffet_a_obtenir-v24.03.11.docx and b/nomenclature_parser/out/latest/word/CISU-CodeEffet_a_obtenir-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/CISU-CodeNombre_de_patients-victimes-v24.03.11.docx b/nomenclature_parser/out/latest/word/CISU-CodeNombre_de_patients-victimes-v24.05.27.docx similarity index 93% rename from nomenclature_parser/out/latest/word/CISU-CodeNombre_de_patients-victimes-v24.03.11.docx rename to nomenclature_parser/out/latest/word/CISU-CodeNombre_de_patients-victimes-v24.05.27.docx index b1509a44e..ec42ad987 100644 Binary files a/nomenclature_parser/out/latest/word/CISU-CodeNombre_de_patients-victimes-v24.03.11.docx and b/nomenclature_parser/out/latest/word/CISU-CodeNombre_de_patients-victimes-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/CISU-Code_Motif_patient-victime-v24.03.11.docx b/nomenclature_parser/out/latest/word/CISU-Code_Motif_patient-victime-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/CISU-Code_Motif_patient-victime-v24.03.11.docx rename to nomenclature_parser/out/latest/word/CISU-Code_Motif_patient-victime-v24.05.27.docx index 46678073a..3daa33bdf 100644 Binary files a/nomenclature_parser/out/latest/word/CISU-Code_Motif_patient-victime-v24.03.11.docx and b/nomenclature_parser/out/latest/word/CISU-Code_Motif_patient-victime-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/CISU-Code_Nature_de_fait-v24.03.11.docx b/nomenclature_parser/out/latest/word/CISU-Code_Nature_de_fait-v24.05.27.docx similarity index 95% rename from nomenclature_parser/out/latest/word/CISU-Code_Nature_de_fait-v24.03.11.docx rename to nomenclature_parser/out/latest/word/CISU-Code_Nature_de_fait-v24.05.27.docx index 2ef8375fa..0324302d1 100644 Binary files a/nomenclature_parser/out/latest/word/CISU-Code_Nature_de_fait-v24.03.11.docx and b/nomenclature_parser/out/latest/word/CISU-Code_Nature_de_fait-v24.05.27.docx differ diff --git "a/nomenclature_parser/out/latest/word/CISU-Code_Risque-Menace-Sensibilit\303\251-v24.03.11.docx" "b/nomenclature_parser/out/latest/word/CISU-Code_Risque-Menace-Sensibilit\303\251-v24.05.27.docx" similarity index 86% rename from "nomenclature_parser/out/latest/word/CISU-Code_Risque-Menace-Sensibilit\303\251-v24.03.11.docx" rename to "nomenclature_parser/out/latest/word/CISU-Code_Risque-Menace-Sensibilit\303\251-v24.05.27.docx" index 8b34c9e54..f7d5d8ca0 100644 Binary files "a/nomenclature_parser/out/latest/word/CISU-Code_Risque-Menace-Sensibilit\303\251-v24.03.11.docx" and "b/nomenclature_parser/out/latest/word/CISU-Code_Risque-Menace-Sensibilit\303\251-v24.05.27.docx" differ diff --git a/nomenclature_parser/out/latest/word/CISU-Code_Type_de_lieu-v24.03.11.docx b/nomenclature_parser/out/latest/word/CISU-Code_Type_de_lieu-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/CISU-Code_Type_de_lieu-v24.03.11.docx rename to nomenclature_parser/out/latest/word/CISU-Code_Type_de_lieu-v24.05.27.docx index a84f0c71b..cef5c33c1 100644 Binary files a/nomenclature_parser/out/latest/word/CISU-Code_Type_de_lieu-v24.03.11.docx and b/nomenclature_parser/out/latest/word/CISU-Code_Type_de_lieu-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-CONTEXT.LEVEL-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-CONTEXT.LEVEL-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/EMSI-CONTEXT.LEVEL-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-CONTEXT.LEVEL-v24.05.27.docx index 8332495bd..8782d4b84 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-CONTEXT.LEVEL-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-CONTEXT.LEVEL-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-CONTEXT.LINK_ROLE-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-CONTEXT.LINK_ROLE-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/EMSI-CONTEXT.LINK_ROLE-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-CONTEXT.LINK_ROLE-v24.05.27.docx index 41a33269d..6a55e89a8 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-CONTEXT.LINK_ROLE-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-CONTEXT.LINK_ROLE-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-CONTEXT.MODE-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-CONTEXT.MODE-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/EMSI-CONTEXT.MODE-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-CONTEXT.MODE-v24.05.27.docx index 7cbfc602c..06ed8ead8 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-CONTEXT.MODE-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-CONTEXT.MODE-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-CONTEXT.MSGTYPE-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-CONTEXT.MSGTYPE-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/EMSI-CONTEXT.MSGTYPE-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-CONTEXT.MSGTYPE-v24.05.27.docx index ba5f80109..c72cd2bf2 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-CONTEXT.MSGTYPE-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-CONTEXT.MSGTYPE-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-CONTEXT.SECLASS-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-CONTEXT.SECLASS-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/EMSI-CONTEXT.SECLASS-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-CONTEXT.SECLASS-v24.05.27.docx index 6980bd954..a60b61a95 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-CONTEXT.SECLASS-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-CONTEXT.SECLASS-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-EVENT.CAUSE-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-EVENT.CAUSE-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/EMSI-EVENT.CAUSE-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-EVENT.CAUSE-v24.05.27.docx index 17522f798..11fba3a83 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-EVENT.CAUSE-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-EVENT.CAUSE-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-EVENT.EGEO.TYPE-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-EVENT.EGEO.TYPE-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/EMSI-EVENT.EGEO.TYPE-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-EVENT.EGEO.TYPE-v24.05.27.docx index e0bdc3d41..4faec9cc0 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-EVENT.EGEO.TYPE-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-EVENT.EGEO.TYPE-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-EVENT.EGEO.WEATHER-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-EVENT.EGEO.WEATHER-v24.05.27.docx similarity index 95% rename from nomenclature_parser/out/latest/word/EMSI-EVENT.EGEO.WEATHER-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-EVENT.EGEO.WEATHER-v24.05.27.docx index 76b556394..396486147 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-EVENT.EGEO.WEATHER-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-EVENT.EGEO.WEATHER-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.ACTOR-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.ACTOR-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.ACTOR-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.ACTOR-v24.05.27.docx index 768cc6393..687ec8257 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.ACTOR-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.ACTOR-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.CATEGORY-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.CATEGORY-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.CATEGORY-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.CATEGORY-v24.05.27.docx index 241b002c6..8c0aeb430 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.CATEGORY-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.CATEGORY-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.ENV-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.ENV-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.ENV-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.ENV-v24.05.27.docx index d1cba5991..878072040 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.ENV-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.ENV-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.LOCTYPE-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.LOCTYPE-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.LOCTYPE-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.LOCTYPE-v24.05.27.docx index 5fd8c6e1f..c80c1b8bc 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.LOCTYPE-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-EVENT.ETYPE.LOCTYPE-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-EVENT.POSITION.TYPE-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-EVENT.POSITION.TYPE-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/EMSI-EVENT.POSITION.TYPE-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-EVENT.POSITION.TYPE-v24.05.27.docx index fd2bee1e9..2ee9ea0ad 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-EVENT.POSITION.TYPE-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-EVENT.POSITION.TYPE-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-EVENT.RISK_ASSESSMNT-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-EVENT.RISK_ASSESSMNT-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/EMSI-EVENT.RISK_ASSESSMNT-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-EVENT.RISK_ASSESSMNT-v24.05.27.docx index 4fea5d129..7b6f777e5 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-EVENT.RISK_ASSESSMNT-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-EVENT.RISK_ASSESSMNT-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-EVENT.SCALE-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-EVENT.SCALE-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/EMSI-EVENT.SCALE-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-EVENT.SCALE-v24.05.27.docx index 8705536dd..f9e9d361f 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-EVENT.SCALE-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-EVENT.SCALE-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-EVENT.SOURCE-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-EVENT.SOURCE-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/EMSI-EVENT.SOURCE-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-EVENT.SOURCE-v24.05.27.docx index 541fb7f5a..a32e5091f 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-EVENT.SOURCE-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-EVENT.SOURCE-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-EVENT.STATUS-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-EVENT.STATUS-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/EMSI-EVENT.STATUS-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-EVENT.STATUS-v24.05.27.docx index 3f23d9cdc..8642f966a 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-EVENT.STATUS-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-EVENT.STATUS-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-MISSION.TYPE-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-MISSION.TYPE-v24.05.27.docx similarity index 95% rename from nomenclature_parser/out/latest/word/EMSI-MISSION.TYPE-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-MISSION.TYPE-v24.05.27.docx index cf48662d1..18ab68bf4 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-MISSION.TYPE-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-MISSION.TYPE-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-RESOURCE.RTYPE.CAPABILITY-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-RESOURCE.RTYPE.CAPABILITY-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/EMSI-RESOURCE.RTYPE.CAPABILITY-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-RESOURCE.RTYPE.CAPABILITY-v24.05.27.docx index d25e34583..90a7c28bb 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-RESOURCE.RTYPE.CAPABILITY-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-RESOURCE.RTYPE.CAPABILITY-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-RESOURCE.RTYPE.CLASS-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-RESOURCE.RTYPE.CLASS-v24.05.27.docx similarity index 96% rename from nomenclature_parser/out/latest/word/EMSI-RESOURCE.RTYPE.CLASS-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-RESOURCE.RTYPE.CLASS-v24.05.27.docx index a3c328d31..fd2f2fdd3 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-RESOURCE.RTYPE.CLASS-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-RESOURCE.RTYPE.CLASS-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-RESOURCE.UM-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-RESOURCE.UM-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/EMSI-RESOURCE.UM-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-RESOURCE.UM-v24.05.27.docx index 54edc9ac5..74c644a3f 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-RESOURCE.UM-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-RESOURCE.UM-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/EMSI-RGEO.POSITION.TYPE-v24.03.11.docx b/nomenclature_parser/out/latest/word/EMSI-RGEO.POSITION.TYPE-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/EMSI-RGEO.POSITION.TYPE-v24.03.11.docx rename to nomenclature_parser/out/latest/word/EMSI-RGEO.POSITION.TYPE-v24.05.27.docx index 5fec243bd..d2c487ff9 100644 Binary files a/nomenclature_parser/out/latest/word/EMSI-RGEO.POSITION.TYPE-v24.03.11.docx and b/nomenclature_parser/out/latest/word/EMSI-RGEO.POSITION.TYPE-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/ISO 3166-ISO3166-2-v24.03.11.docx b/nomenclature_parser/out/latest/word/ISO 3166-ISO3166-2-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/ISO 3166-ISO3166-2-v24.03.11.docx rename to nomenclature_parser/out/latest/word/ISO 3166-ISO3166-2-v24.05.27.docx index ac01f5219..9dd17ce86 100644 Binary files a/nomenclature_parser/out/latest/word/ISO 3166-ISO3166-2-v24.03.11.docx and b/nomenclature_parser/out/latest/word/ISO 3166-ISO3166-2-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/Sommaire Nomenclature Hub-v24.03.11.docx b/nomenclature_parser/out/latest/word/SI SAMU-NOMENC_DEVENIR_PAT-v24.05.27.docx similarity index 89% rename from nomenclature_parser/out/latest/Sommaire Nomenclature Hub-v24.03.11.docx rename to nomenclature_parser/out/latest/word/SI SAMU-NOMENC_DEVENIR_PAT-v24.05.27.docx index 0d668b444..fb27ee7ed 100644 Binary files a/nomenclature_parser/out/latest/Sommaire Nomenclature Hub-v24.03.11.docx and b/nomenclature_parser/out/latest/word/SI SAMU-NOMENC_DEVENIR_PAT-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/SI SAMU-TYPE_MOYEN-v24.05.27.docx b/nomenclature_parser/out/latest/word/SI SAMU-TYPE_MOYEN-v24.05.27.docx new file mode 100644 index 000000000..54fdb6e5c Binary files /dev/null and b/nomenclature_parser/out/latest/word/SI SAMU-TYPE_MOYEN-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/SI-SAMU-DEVENIRD-v24.03.11.docx b/nomenclature_parser/out/latest/word/SI-SAMU-DEVENIRD-v24.03.11.docx deleted file mode 100644 index ff5a6960f..000000000 Binary files a/nomenclature_parser/out/latest/word/SI-SAMU-DEVENIRD-v24.03.11.docx and /dev/null differ diff --git a/nomenclature_parser/out/latest/word/SI-SAMU-DEVENIRD-v24.05.27.docx b/nomenclature_parser/out/latest/word/SI-SAMU-DEVENIRD-v24.05.27.docx new file mode 100644 index 000000000..edbbe46e9 Binary files /dev/null and b/nomenclature_parser/out/latest/word/SI-SAMU-DEVENIRD-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/SI-SAMU-GRAVITE-v24.03.11.docx b/nomenclature_parser/out/latest/word/SI-SAMU-GRAVITE-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/SI-SAMU-GRAVITE-v24.03.11.docx rename to nomenclature_parser/out/latest/word/SI-SAMU-GRAVITE-v24.05.27.docx index a81901484..dea9c069f 100644 Binary files a/nomenclature_parser/out/latest/word/SI-SAMU-GRAVITE-v24.03.11.docx and b/nomenclature_parser/out/latest/word/SI-SAMU-GRAVITE-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/SI-SAMU-NIVSOIN-v24.03.11.docx b/nomenclature_parser/out/latest/word/SI-SAMU-NIVSOIN-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/SI-SAMU-NIVSOIN-v24.03.11.docx rename to nomenclature_parser/out/latest/word/SI-SAMU-NIVSOIN-v24.05.27.docx index 75b49ec56..517083fab 100644 Binary files a/nomenclature_parser/out/latest/word/SI-SAMU-NIVSOIN-v24.03.11.docx and b/nomenclature_parser/out/latest/word/SI-SAMU-NIVSOIN-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/SI-SAMU-NOMENC_SEXE-v24.03.11.docx b/nomenclature_parser/out/latest/word/SI-SAMU-NOMENC_SEXE-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/SI-SAMU-NOMENC_SEXE-v24.03.11.docx rename to nomenclature_parser/out/latest/word/SI-SAMU-NOMENC_SEXE-v24.05.27.docx index 1ede88683..4fcab24a5 100644 Binary files a/nomenclature_parser/out/latest/word/SI-SAMU-NOMENC_SEXE-v24.03.11.docx and b/nomenclature_parser/out/latest/word/SI-SAMU-NOMENC_SEXE-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/SI-SAMU-PBAPL-v24.03.11.docx b/nomenclature_parser/out/latest/word/SI-SAMU-PBAPL-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/SI-SAMU-PBAPL-v24.03.11.docx rename to nomenclature_parser/out/latest/word/SI-SAMU-PBAPL-v24.05.27.docx index a22827b14..1adbb340a 100644 Binary files a/nomenclature_parser/out/latest/word/SI-SAMU-PBAPL-v24.03.11.docx and b/nomenclature_parser/out/latest/word/SI-SAMU-PBAPL-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/SI-SAMU-PRIORITE-v24.03.11.docx b/nomenclature_parser/out/latest/word/SI-SAMU-PRIORITE-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/SI-SAMU-PRIORITE-v24.03.11.docx rename to nomenclature_parser/out/latest/word/SI-SAMU-PRIORITE-v24.05.27.docx index 6abb2fa49..6aa480fcb 100644 Binary files a/nomenclature_parser/out/latest/word/SI-SAMU-PRIORITE-v24.03.11.docx and b/nomenclature_parser/out/latest/word/SI-SAMU-PRIORITE-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/SI-SAMU-TYPAPPLT-v24.03.11.docx b/nomenclature_parser/out/latest/word/SI-SAMU-TYPAPPLT-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/SI-SAMU-TYPAPPLT-v24.03.11.docx rename to nomenclature_parser/out/latest/word/SI-SAMU-TYPAPPLT-v24.05.27.docx index d5d399897..dd85b626f 100644 Binary files a/nomenclature_parser/out/latest/word/SI-SAMU-TYPAPPLT-v24.03.11.docx and b/nomenclature_parser/out/latest/word/SI-SAMU-TYPAPPLT-v24.05.27.docx differ diff --git a/nomenclature_parser/out/latest/word/SI-SAMU-TYPEDEC-v24.03.11.docx b/nomenclature_parser/out/latest/word/SI-SAMU-TYPEDEC-v24.05.27.docx similarity index 94% rename from nomenclature_parser/out/latest/word/SI-SAMU-TYPEDEC-v24.03.11.docx rename to nomenclature_parser/out/latest/word/SI-SAMU-TYPEDEC-v24.05.27.docx index 11e8e3ea1..8869e802a 100644 Binary files a/nomenclature_parser/out/latest/word/SI-SAMU-TYPEDEC-v24.03.11.docx and b/nomenclature_parser/out/latest/word/SI-SAMU-TYPEDEC-v24.05.27.docx differ diff --git a/src/main/java/com/hubsante/model/Validator.java b/src/main/java/com/hubsante/model/Validator.java index bfd46aee9..13ace77d3 100644 --- a/src/main/java/com/hubsante/model/Validator.java +++ b/src/main/java/com/hubsante/model/Validator.java @@ -22,16 +22,13 @@ import com.fasterxml.jackson.dataformat.xml.XmlMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.hubsante.model.builders.ValidationMessageWrapperBuilder; -import com.hubsante.model.common.DistributionElement; -import com.hubsante.model.ValidationMessageWrapper; +import com.hubsante.model.rcde.DistributionElement; import com.hubsante.model.exception.ValidationException; import com.networknt.schema.JsonSchema; import com.networknt.schema.JsonSchemaFactory; import com.networknt.schema.SpecVersion; import com.networknt.schema.ValidationMessage; import lombok.extern.slf4j.Slf4j; -import lombok.val; -import org.xml.sax.ErrorHandler; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; @@ -40,13 +37,11 @@ import javax.xml.transform.stream.StreamSource; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; -import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import java.util.*; import java.lang.reflect.Field; -import java.util.*; import static com.hubsante.model.config.Constants.FULL_XSD; import static com.hubsante.model.config.Constants.FULL_XSD_NO_HEADER; diff --git a/src/main/java/com/hubsante/model/builders/CreateCaseWrapperBuilder.java b/src/main/java/com/hubsante/model/builders/CreateCaseWrapperBuilder.java index 7dcab7f3f..c9ee6719d 100644 --- a/src/main/java/com/hubsante/model/builders/CreateCaseWrapperBuilder.java +++ b/src/main/java/com/hubsante/model/builders/CreateCaseWrapperBuilder.java @@ -17,7 +17,7 @@ import com.hubsante.model.cisu.CreateCase; import com.hubsante.model.cisu.CreateCaseWrapper; -import com.hubsante.model.common.DistributionElement; +import com.hubsante.model.rcde.DistributionElement; public class CreateCaseWrapperBuilder { diff --git a/src/main/java/com/hubsante/model/builders/DistributionElementBuilder.java b/src/main/java/com/hubsante/model/builders/DistributionElementBuilder.java index e2a7ba3ad..a607e0e16 100644 --- a/src/main/java/com/hubsante/model/builders/DistributionElementBuilder.java +++ b/src/main/java/com/hubsante/model/builders/DistributionElementBuilder.java @@ -16,9 +16,9 @@ package com.hubsante.model.builders; -import com.hubsante.model.common.DistributionElement; -import com.hubsante.model.common.Recipient; -import com.hubsante.model.common.Sender; +import com.hubsante.model.rcde.DistributionElement; +import com.hubsante.model.rcde.Recipient; +import com.hubsante.model.rcde.Sender; import javax.validation.constraints.NotNull; import java.time.OffsetDateTime; diff --git a/src/main/java/com/hubsante/model/builders/EmsiWrapperBuilder.java b/src/main/java/com/hubsante/model/builders/EmsiWrapperBuilder.java index 96c89d505..7c7ad9a36 100644 --- a/src/main/java/com/hubsante/model/builders/EmsiWrapperBuilder.java +++ b/src/main/java/com/hubsante/model/builders/EmsiWrapperBuilder.java @@ -15,7 +15,7 @@ */ package com.hubsante.model.builders; -import com.hubsante.model.common.DistributionElement; +import com.hubsante.model.rcde.DistributionElement; import com.hubsante.model.emsi.Emsi; import com.hubsante.model.emsi.EmsiWrapper; diff --git a/src/main/java/com/hubsante/model/builders/ErrorWrapperBuilder.java b/src/main/java/com/hubsante/model/builders/ErrorWrapperBuilder.java index b124ca603..3b654dd1a 100644 --- a/src/main/java/com/hubsante/model/builders/ErrorWrapperBuilder.java +++ b/src/main/java/com/hubsante/model/builders/ErrorWrapperBuilder.java @@ -15,13 +15,13 @@ */ package com.hubsante.model.builders; -import com.hubsante.model.report.ErrorReport; +import com.hubsante.model.report.Error; import com.hubsante.model.report.ErrorWrapper; public class ErrorWrapperBuilder { - private ErrorReport error; + private Error error; - public ErrorWrapperBuilder(ErrorReport error) { + public ErrorWrapperBuilder(Error error) { this.error = error; } diff --git a/src/main/java/com/hubsante/model/builders/ReferenceWrapperBuilder.java b/src/main/java/com/hubsante/model/builders/ReferenceWrapperBuilder.java index eedf97ea8..6de9d1692 100644 --- a/src/main/java/com/hubsante/model/builders/ReferenceWrapperBuilder.java +++ b/src/main/java/com/hubsante/model/builders/ReferenceWrapperBuilder.java @@ -16,9 +16,9 @@ package com.hubsante.model.builders; -import com.hubsante.model.common.DistributionElement; -import com.hubsante.model.common.Reference; -import com.hubsante.model.common.ReferenceWrapper; +import com.hubsante.model.rcde.DistributionElement; +import com.hubsante.model.reference.Reference; +import com.hubsante.model.reference.ReferenceWrapper; public class ReferenceWrapperBuilder { private DistributionElement distributionElement; @@ -35,7 +35,7 @@ public ReferenceWrapperBuilder refused(boolean refused) { } public ReferenceWrapperBuilder infoDistributionID(String infoDistributionID) { - this.reference.setInfoDistributionID(infoDistributionID); + this.reference.setErrorDistributionID(infoDistributionID); return this; } @@ -52,7 +52,7 @@ public ReferenceWrapper build() { referenceMessage.setRecipient(distributionElement.getRecipient()); // Check if reference.refused is not null and set to true, if it is check if reference.infoDistributionID // is set, otherwise throw an IllegalArgumentException - if (this.reference.getRefused() != null && this.reference.getRefused() && this.reference.getInfoDistributionID() == null) { + if (this.reference.getRefused() != null && this.reference.getRefused() && this.reference.getErrorDistributionID() == null) { throw new IllegalArgumentException("ReferenceWrapper must have infoDistributionID set when refused is true"); } diff --git a/src/main/java/com/hubsante/model/builders/ValidationMessageWrapperBuilder.java b/src/main/java/com/hubsante/model/builders/ValidationMessageWrapperBuilder.java index 5d99376e7..dfea5cab4 100644 --- a/src/main/java/com/hubsante/model/builders/ValidationMessageWrapperBuilder.java +++ b/src/main/java/com/hubsante/model/builders/ValidationMessageWrapperBuilder.java @@ -15,7 +15,7 @@ */ package com.hubsante.model.builders; -import com.hubsante.model.common.DistributionElement; +import com.hubsante.model.rcde.DistributionElement; import com.hubsante.model.ValidationMessageWrapper; import com.networknt.schema.ValidationMessage; diff --git a/src/main/java/com/hubsante/model/cisu/Alert.java b/src/main/java/com/hubsante/model/cisu/Alert.java index 577b790fe..0cd840fff 100644 --- a/src/main/java/com/hubsante/model/cisu/Alert.java +++ b/src/main/java/com/hubsante/model/cisu/Alert.java @@ -37,8 +37,8 @@ import com.hubsante.model.cisu.Attachment; import com.hubsante.model.cisu.CallTaker; import com.hubsante.model.cisu.Caller; -import com.hubsante.model.cisu.ContactSource; import com.hubsante.model.cisu.Location; +import com.hubsante.model.cisu.Notes; import com.hubsante.model.cisu.Qualification; import java.time.OffsetDateTime; import java.util.ArrayList; @@ -50,12 +50,12 @@ /** * Alert */ -@JsonPropertyOrder( - {Alert.JSON_PROPERTY_ID, Alert.JSON_PROPERTY_RECEPTION, - Alert.JSON_PROPERTY_REPORTING, Alert.JSON_PROPERTY_FREETEXT, - Alert.JSON_PROPERTY_CALLER, Alert.JSON_PROPERTY_ALERT_SOURCE, - Alert.JSON_PROPERTY_LOCATION, Alert.JSON_PROPERTY_QUALIFICATION, - Alert.JSON_PROPERTY_CALL_TAKER, Alert.JSON_PROPERTY_ATTACHMENT}) +@JsonPropertyOrder({Alert.JSON_PROPERTY_ID, Alert.JSON_PROPERTY_RECEPTION, + Alert.JSON_PROPERTY_REPORTING, Alert.JSON_PROPERTY_NOTES, + Alert.JSON_PROPERTY_CALLER, Alert.JSON_PROPERTY_LOCATION, + Alert.JSON_PROPERTY_QUALIFICATION, + Alert.JSON_PROPERTY_CALL_TAKER, + Alert.JSON_PROPERTY_ATTACHMENT}) @JsonTypeName("alert") @JsonInclude(JsonInclude.Include.NON_EMPTY) @@ -107,15 +107,12 @@ public static ReportingEnum fromValue(String value) { public static final String JSON_PROPERTY_REPORTING = "reporting"; private ReportingEnum reporting; - public static final String JSON_PROPERTY_FREETEXT = "freetext"; - private String freetext; + public static final String JSON_PROPERTY_NOTES = "notes"; + private List notes; public static final String JSON_PROPERTY_CALLER = "caller"; private Caller caller; - public static final String JSON_PROPERTY_ALERT_SOURCE = "alertSource"; - private ContactSource alertSource; - public static final String JSON_PROPERTY_LOCATION = "location"; private Location location; @@ -218,28 +215,43 @@ public void setReporting(ReportingEnum reporting) { this.reporting = reporting; } - public Alert freetext(String freetext) { + public Alert notes(List notes) { + + this.notes = notes; + return this; + } - this.freetext = freetext; + public Alert addNotesItem(Notes notesItem) { + if (this.notes == null) { + this.notes = new ArrayList<>(); + } + this.notes.add(notesItem); return this; } /** - * Texte libre permettant de donner des informations supplémentaires - *concernant l'alerte. - * @return freetext + * Get notes + * @return notes **/ - @JsonProperty(JSON_PROPERTY_FREETEXT) + @JsonProperty(JSON_PROPERTY_NOTES) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getFreetext() { - return freetext; + public List getNotes() { + return notes; } - @JsonProperty(JSON_PROPERTY_FREETEXT) + @JacksonXmlElementWrapper(useWrapping = false) + + @JsonProperty(JSON_PROPERTY_NOTES) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFreetext(String freetext) { - this.freetext = freetext; + public void setNotes(List notes) { + if (notes == null) { + return; + } + if (this.notes == null) { + this.notes = new ArrayList<>(); + } + this.notes.addAll(notes); } public Alert caller(Caller caller) { @@ -265,29 +277,6 @@ public void setCaller(Caller caller) { this.caller = caller; } - public Alert alertSource(ContactSource alertSource) { - - this.alertSource = alertSource; - return this; - } - - /** - * Get alertSource - * @return alertSource - **/ - @JsonProperty(JSON_PROPERTY_ALERT_SOURCE) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public ContactSource getAlertSource() { - return alertSource; - } - - @JsonProperty(JSON_PROPERTY_ALERT_SOURCE) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setAlertSource(ContactSource alertSource) { - this.alertSource = alertSource; - } - public Alert location(Location location) { this.location = location; @@ -408,9 +397,8 @@ public boolean equals(Object o) { return Objects.equals(this.id, alert.id) && Objects.equals(this.reception, alert.reception) && Objects.equals(this.reporting, alert.reporting) && - Objects.equals(this.freetext, alert.freetext) && + Objects.equals(this.notes, alert.notes) && Objects.equals(this.caller, alert.caller) && - Objects.equals(this.alertSource, alert.alertSource) && Objects.equals(this.location, alert.location) && Objects.equals(this.qualification, alert.qualification) && Objects.equals(this.callTaker, alert.callTaker) && @@ -419,8 +407,8 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(id, reception, reporting, freetext, caller, alertSource, - location, qualification, callTaker, attachment); + return Objects.hash(id, reception, reporting, notes, caller, location, + qualification, callTaker, attachment); } @Override @@ -434,11 +422,8 @@ public String toString() { sb.append(" reporting: ") .append(toIndentedString(reporting)) .append("\n"); - sb.append(" freetext: ").append(toIndentedString(freetext)).append("\n"); + sb.append(" notes: ").append(toIndentedString(notes)).append("\n"); sb.append(" caller: ").append(toIndentedString(caller)).append("\n"); - sb.append(" alertSource: ") - .append(toIndentedString(alertSource)) - .append("\n"); sb.append(" location: ").append(toIndentedString(location)).append("\n"); sb.append(" qualification: ") .append(toIndentedString(qualification)) diff --git a/src/main/java/com/hubsante/model/cisu/Caller.java b/src/main/java/com/hubsante/model/cisu/Caller.java index b60982541..0ba60585a 100644 --- a/src/main/java/com/hubsante/model/cisu/Caller.java +++ b/src/main/java/com/hubsante/model/cisu/Caller.java @@ -573,11 +573,130 @@ public static LanguageEnum fromValue(String value) { public static final String JSON_PROPERTY_LANGUAGE = "language"; private LanguageEnum language; + /** + * Indique la relation du requérant avec l'incident / le patient / la + * victime + */ + public enum TypeEnum { + SUJET("SUJET"), + + FAMILLE("FAMILLE"), + + TIERS("TIERS"), + + POMPIER("POMPIER"), + + AMBULANC("AMBULANC"), + + SECOUR("SECOUR"), + + MED("MED"), + + MEDSOS("MEDSOS"), + + MRL("MRL"), + + EFFML("EFFML"), + + SANTE("SANTE"), + + INF("INF"), + + AIDESOIN("AIDESOIN"), + + SF("SF"), + + AIDEDOM("AIDEDOM"), + + FDO_MILI("FDO-MILI"), + + ADM_TUTL("ADM-TUTL"), + + VIP("VIP"), + + OBJCONNC("OBJCONNC"), + + AUTRE("AUTRE"), + + INCONNU("INCONNU"); + + 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 String type; + private TypeEnum type; + + /** + * Indique si le requérant rencontre ou non des difficulté de communication + */ + public enum CommunicationEnum { + AUCUNE("AUCUNE"), + + MUET("MUET"), + + VISION("VISION"), + + LANGUE("LANGUE"), + + PANIQUE("PANIQUE"), + + HOSTILE("HOSTILE"), + + AGITE("AGITE"), + + AUTRE("AUTRE"), + + IMPOSS("IMPOSS"); + + private String value; + + CommunicationEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static CommunicationEnum fromValue(String value) { + for (CommunicationEnum b : CommunicationEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } public static final String JSON_PROPERTY_COMMUNICATION = "communication"; - private String communication; + private CommunicationEnum communication; public static final String JSON_PROPERTY_FREETEXT = "freetext"; private String freetext; @@ -598,14 +717,14 @@ public Caller callerContact(Contact callerContact) { * @return callerContact **/ @JsonProperty(JSON_PROPERTY_CALLER_CONTACT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Contact getCallerContact() { return callerContact; } @JsonProperty(JSON_PROPERTY_CALLER_CONTACT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setCallerContact(Contact callerContact) { this.callerContact = callerContact; } @@ -657,7 +776,7 @@ public void setLanguage(LanguageEnum language) { this.language = language; } - public Caller type(String type) { + public Caller type(TypeEnum type) { this.type = type; return this; @@ -671,17 +790,17 @@ public Caller type(String type) { @JsonProperty(JSON_PROPERTY_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getType() { + public TypeEnum getType() { return type; } @JsonProperty(JSON_PROPERTY_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setType(String type) { + public void setType(TypeEnum type) { this.type = type; } - public Caller communication(String communication) { + public Caller communication(CommunicationEnum communication) { this.communication = communication; return this; @@ -694,13 +813,13 @@ public Caller communication(String communication) { @JsonProperty(JSON_PROPERTY_COMMUNICATION) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getCommunication() { + public CommunicationEnum getCommunication() { return communication; } @JsonProperty(JSON_PROPERTY_COMMUNICATION) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setCommunication(String communication) { + public void setCommunication(CommunicationEnum communication) { this.communication = communication; } diff --git a/src/main/java/com/hubsante/model/cisu/City.java b/src/main/java/com/hubsante/model/cisu/City.java index b872b76a4..65507e6dd 100644 --- a/src/main/java/com/hubsante/model/cisu/City.java +++ b/src/main/java/com/hubsante/model/cisu/City.java @@ -116,7 +116,7 @@ public City detail(String detail) { *ancienne commune, … ou autre information aidant à préciser l'adresse et *notamment gérer les cas de communes fusionnées pour le système émetteur NB : *dans tous les cas, la localisation GPS de la commune doit être fournie afin - *d'éviter une trop forte ambiguïté + *d'éviter une trop forte ambiguïté. * @return detail **/ @JsonProperty(JSON_PROPERTY_DETAIL) diff --git a/src/main/java/com/hubsante/model/cisu/Contact.java b/src/main/java/com/hubsante/model/cisu/Contact.java index fc495c406..24361907b 100644 --- a/src/main/java/com/hubsante/model/cisu/Contact.java +++ b/src/main/java/com/hubsante/model/cisu/Contact.java @@ -41,11 +41,14 @@ /** * Contact */ -@JsonPropertyOrder({Contact.JSON_PROPERTY_TYPE, Contact.JSON_PROPERTY_DETAIL}) +@JsonPropertyOrder({Contact.JSON_PROPERTY_CHANNEL, Contact.JSON_PROPERTY_TYPE, + Contact.JSON_PROPERTY_DETAIL}) @JsonTypeName("contact") @JsonInclude(JsonInclude.Include.NON_EMPTY) public class Contact { + public static final String JSON_PROPERTY_CHANNEL = "channel"; + private String channel; /** * Type de l'URI utilisée par le requérant, cf. nomenclature EMSI @@ -100,6 +103,30 @@ public static TypeEnum fromValue(String value) { public Contact() {} + public Contact channel(String channel) { + + this.channel = channel; + return this; + } + + /** + * Permet d'indiquer l'origine du canal établit : Personne, + *application, DAU, BAU, défibrillateur, ecall + * @return channel + **/ + @JsonProperty(JSON_PROPERTY_CHANNEL) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public String getChannel() { + return channel; + } + + @JsonProperty(JSON_PROPERTY_CHANNEL) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setChannel(String channel) { + this.channel = channel; + } + public Contact type(TypeEnum type) { this.type = type; @@ -155,19 +182,21 @@ public boolean equals(Object o) { return false; } Contact contact = (Contact)o; - return Objects.equals(this.type, contact.type) && + return Objects.equals(this.channel, contact.channel) && + Objects.equals(this.type, contact.type) && Objects.equals(this.detail, contact.detail); } @Override public int hashCode() { - return Objects.hash(type, detail); + return Objects.hash(channel, type, detail); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Contact {\n"); + sb.append(" channel: ").append(toIndentedString(channel)).append("\n"); sb.append(" type: ").append(toIndentedString(type)).append("\n"); sb.append(" detail: ").append(toIndentedString(detail)).append("\n"); sb.append("}"); diff --git a/src/main/java/com/hubsante/model/cisu/ContactSource.java b/src/main/java/com/hubsante/model/cisu/ContactSource.java deleted file mode 100644 index cfea6e4ce..000000000 --- a/src/main/java/com/hubsante/model/cisu/ContactSource.java +++ /dev/null @@ -1,217 +0,0 @@ -/** - * Copyright © 2023-2024 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; - -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; - -/** - * ContactSource - */ -@JsonPropertyOrder({ContactSource.JSON_PROPERTY_CHANNEL, - ContactSource.JSON_PROPERTY_TYPE, - ContactSource.JSON_PROPERTY_DETAIL}) -@JsonTypeName("contactSource") -@JsonInclude(JsonInclude.Include.NON_EMPTY) - -public class ContactSource { - public static final String JSON_PROPERTY_CHANNEL = "channel"; - private String channel; - - /** - * Type de l'URI utilisée par la source, cf. nomenclature EMSI - */ - public enum TypeEnum { - PSTADD("PSTADD"), - - EMLADD("EMLADD"), - - IPADD("IPADD"), - - FTPADD("FTPADD"), - - WWWADD("WWWADD"), - - PHNADD("PHNADD"), - - FAXADD("FAXADD"), - - PMRADD("PMRADD"); - - 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_DETAIL = "detail"; - private String detail; - - public ContactSource() {} - - public ContactSource channel(String channel) { - - this.channel = channel; - return this; - } - - /** - * Permet d'indiquer l'origine du canal établit : Personne, - *application, DAU, BAU, défibrillateur, ecall - * @return channel - **/ - @JsonProperty(JSON_PROPERTY_CHANNEL) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getChannel() { - return channel; - } - - @JsonProperty(JSON_PROPERTY_CHANNEL) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setChannel(String channel) { - this.channel = channel; - } - - public ContactSource type(TypeEnum type) { - - this.type = type; - return this; - } - - /** - * Type de l'URI utilisée par la source, cf. nomenclature EMSI - * @return type - **/ - @JsonProperty(JSON_PROPERTY_TYPE) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public TypeEnum getType() { - return type; - } - - @JsonProperty(JSON_PROPERTY_TYPE) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setType(TypeEnum type) { - this.type = type; - } - - public ContactSource detail(String detail) { - - this.detail = detail; - return this; - } - - /** - * Valeur de l'URI utilisée par la source - * @return detail - **/ - @JsonProperty(JSON_PROPERTY_DETAIL) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getDetail() { - return detail; - } - - @JsonProperty(JSON_PROPERTY_DETAIL) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setDetail(String detail) { - this.detail = detail; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - ContactSource contactSource = (ContactSource)o; - return Objects.equals(this.channel, contactSource.channel) && - Objects.equals(this.type, contactSource.type) && - Objects.equals(this.detail, contactSource.detail); - } - - @Override - public int hashCode() { - return Objects.hash(channel, type, detail); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class ContactSource {\n"); - sb.append(" channel: ").append(toIndentedString(channel)).append("\n"); - sb.append(" type: ").append(toIndentedString(type)).append("\n"); - sb.append(" detail: ").append(toIndentedString(detail)).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/CreateCase.java b/src/main/java/com/hubsante/model/cisu/CreateCase.java index 8fd1f589e..89173cd8d 100644 --- a/src/main/java/com/hubsante/model/cisu/CreateCase.java +++ b/src/main/java/com/hubsante/model/cisu/CreateCase.java @@ -101,7 +101,7 @@ public class CreateCase { private AdditionalInformation additionalInformation; public static final String JSON_PROPERTY_FREETEXT = "freetext"; - private String freetext; + private List freetext; public CreateCase() {} @@ -421,28 +421,43 @@ public AdditionalInformation getAdditionalInformation() { this.additionalInformation = additionalInformation; } - public CreateCase freetext(String freetext) { + public CreateCase freetext(List freetext) { this.freetext = freetext; return this; } + public CreateCase addFreetextItem(String freetextItem) { + if (this.freetext == null) { + this.freetext = new ArrayList<>(); + } + this.freetext.add(freetextItem); + return this; + } + /** - * Texte libre permettant de donner des informations supplémentaires - *concernant l'affaire + * Get freetext * @return freetext **/ @JsonProperty(JSON_PROPERTY_FREETEXT) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getFreetext() { + public List getFreetext() { return freetext; } + @JacksonXmlElementWrapper(useWrapping = false) + @JsonProperty(JSON_PROPERTY_FREETEXT) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFreetext(String freetext) { - this.freetext = freetext; + public void setFreetext(List freetext) { + if (freetext == null) { + return; + } + if (this.freetext == null) { + this.freetext = new ArrayList<>(); + } + this.freetext.addAll(freetext); } @Override diff --git a/src/main/java/com/hubsante/model/cisu/CreateCaseWrapper.java b/src/main/java/com/hubsante/model/cisu/CreateCaseWrapper.java index ed6216772..a8c75af13 100644 --- a/src/main/java/com/hubsante/model/cisu/CreateCaseWrapper.java +++ b/src/main/java/com/hubsante/model/cisu/CreateCaseWrapper.java @@ -35,7 +35,7 @@ import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.dataformat.xml.annotation.*; import com.hubsante.model.cisu.CreateCase; -import com.hubsante.model.common.DistributionElement; +import com.hubsante.model.rcde.DistributionElement; import java.util.Arrays; import java.util.Arrays; import java.util.Objects; diff --git a/src/main/java/com/hubsante/model/cisu/Decision.java b/src/main/java/com/hubsante/model/cisu/Decision.java index bcc689d57..73a20b0de 100644 --- a/src/main/java/com/hubsante/model/cisu/Decision.java +++ b/src/main/java/com/hubsante/model/cisu/Decision.java @@ -34,22 +34,18 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.dataformat.xml.annotation.*; -import com.hubsante.model.cisu.Destination; +import com.hubsante.model.cisu.TransportDetails; import java.time.OffsetDateTime; -import java.util.ArrayList; import java.util.Arrays; import java.util.Arrays; -import java.util.List; import java.util.Objects; /** * Decision */ -@JsonPropertyOrder( - {Decision.JSON_PROPERTY_ID, Decision.JSON_PROPERTY_CREATION, - Decision.JSON_PROPERTY_TYPE, Decision.JSON_PROPERTY_ORIENTATION, - Decision.JSON_PROPERTY_TRANSPORTATION, Decision.JSON_PROPERTY_TEAM_CARE, - Decision.JSON_PROPERTY_DESTINATION}) +@JsonPropertyOrder({Decision.JSON_PROPERTY_ID, Decision.JSON_PROPERTY_CREATION, + Decision.JSON_PROPERTY_TYPE, + Decision.JSON_PROPERTY_TRANSPORT_DETAILS}) @JsonTypeName("decision") @JsonInclude(JsonInclude.Include.NON_EMPTY) @@ -60,20 +56,51 @@ public class Decision { public static final String JSON_PROPERTY_CREATION = "creation"; private OffsetDateTime creation; - public static final String JSON_PROPERTY_TYPE = "type"; - private String type; + /** + * Type de décision prise + */ + public enum TypeEnum { + CONSEIL("CONSEIL"), + + PMT("PMT"), - public static final String JSON_PROPERTY_ORIENTATION = "orientation"; - private String orientation; + INTER("INTER"), - public static final String JSON_PROPERTY_TRANSPORTATION = "transportation"; - private List transportation; + ORIENT("ORIENT"), - public static final String JSON_PROPERTY_TEAM_CARE = "teamCare"; - private String teamCare; + PASPLUS("PASPLUS"); - public static final String JSON_PROPERTY_DESTINATION = "destination"; - private Destination destination; + 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_TRANSPORT_DETAILS = + "transportDetails"; + private TransportDetails transportDetails; public Decision() {} @@ -84,7 +111,8 @@ public Decision id(String id) { } /** - * ID partagé du patient concerné, lorsque le patient existe et est identifié + * ID partagé du patient concerné par la décision, lorsque le patient existe + *et est identifié * @return id **/ @JsonProperty(JSON_PROPERTY_ID) @@ -124,7 +152,7 @@ public void setCreation(OffsetDateTime creation) { this.creation = creation; } - public Decision type(String type) { + public Decision type(TypeEnum type) { this.type = type; return this; @@ -135,125 +163,39 @@ public Decision type(String type) { * @return type **/ @JsonProperty(JSON_PROPERTY_TYPE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) - public String getType() { + public TypeEnum getType() { return type; } @JsonProperty(JSON_PROPERTY_TYPE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setType(String type) { + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setType(TypeEnum type) { this.type = type; } - public Decision orientation(String orientation) { - - this.orientation = orientation; - return this; - } - - /** - * Décision(s) d'orientation prise par le médecin régulateur - * @return orientation - **/ - @JsonProperty(JSON_PROPERTY_ORIENTATION) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getOrientation() { - return orientation; - } - - @JsonProperty(JSON_PROPERTY_ORIENTATION) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setOrientation(String orientation) { - this.orientation = orientation; - } - - public Decision transportation(List transportation) { - - this.transportation = transportation; - return this; - } - - public Decision addTransportationItem(String transportationItem) { - if (this.transportation == null) { - this.transportation = new ArrayList<>(); - } - this.transportation.add(transportationItem); - return this; - } - - /** - * Get transportation - * @return transportation - **/ - @JsonProperty(JSON_PROPERTY_TRANSPORTATION) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public List getTransportation() { - return transportation; - } - - @JacksonXmlElementWrapper(useWrapping = false) - - @JsonProperty(JSON_PROPERTY_TRANSPORTATION) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setTransportation(List transportation) { - if (transportation == null) { - return; - } - if (this.transportation == null) { - this.transportation = new ArrayList<>(); - } - this.transportation.addAll(transportation); - } - - public Decision teamCare(String teamCare) { + public Decision transportDetails(TransportDetails transportDetails) { - this.teamCare = teamCare; + this.transportDetails = transportDetails; return this; } /** - * Type d’équipe (médical, paramédicale, non médicale, standard, incomplete, - *...) - * @return teamCare + * Get transportDetails + * @return transportDetails **/ - @JsonProperty(JSON_PROPERTY_TEAM_CARE) + @JsonProperty(JSON_PROPERTY_TRANSPORT_DETAILS) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getTeamCare() { - return teamCare; + public TransportDetails getTransportDetails() { + return transportDetails; } - @JsonProperty(JSON_PROPERTY_TEAM_CARE) + @JsonProperty(JSON_PROPERTY_TRANSPORT_DETAILS) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setTeamCare(String teamCare) { - this.teamCare = teamCare; - } - - public Decision destination(Destination destination) { - - this.destination = destination; - return this; - } - - /** - * Get destination - * @return destination - **/ - @JsonProperty(JSON_PROPERTY_DESTINATION) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public Destination getDestination() { - return destination; - } - - @JsonProperty(JSON_PROPERTY_DESTINATION) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setDestination(Destination destination) { - this.destination = destination; + public void setTransportDetails(TransportDetails transportDetails) { + this.transportDetails = transportDetails; } @Override @@ -268,16 +210,12 @@ public boolean equals(Object o) { return Objects.equals(this.id, decision.id) && Objects.equals(this.creation, decision.creation) && Objects.equals(this.type, decision.type) && - Objects.equals(this.orientation, decision.orientation) && - Objects.equals(this.transportation, decision.transportation) && - Objects.equals(this.teamCare, decision.teamCare) && - Objects.equals(this.destination, decision.destination); + Objects.equals(this.transportDetails, decision.transportDetails); } @Override public int hashCode() { - return Objects.hash(id, creation, type, orientation, transportation, - teamCare, destination); + return Objects.hash(id, creation, type, transportDetails); } @Override @@ -287,15 +225,8 @@ public String toString() { sb.append(" id: ").append(toIndentedString(id)).append("\n"); sb.append(" creation: ").append(toIndentedString(creation)).append("\n"); sb.append(" type: ").append(toIndentedString(type)).append("\n"); - sb.append(" orientation: ") - .append(toIndentedString(orientation)) - .append("\n"); - sb.append(" transportation: ") - .append(toIndentedString(transportation)) - .append("\n"); - sb.append(" teamCare: ").append(toIndentedString(teamCare)).append("\n"); - sb.append(" destination: ") - .append(toIndentedString(destination)) + sb.append(" transportDetails: ") + .append(toIndentedString(transportDetails)) .append("\n"); sb.append("}"); return sb.toString(); diff --git a/src/main/java/com/hubsante/model/cisu/Destination.java b/src/main/java/com/hubsante/model/cisu/Destination.java index fc0c4c261..d2d1a71a5 100644 --- a/src/main/java/com/hubsante/model/cisu/Destination.java +++ b/src/main/java/com/hubsante/model/cisu/Destination.java @@ -34,6 +34,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.dataformat.xml.annotation.*; +import com.hubsante.model.cisu.Location; import java.util.Arrays; import java.util.Arrays; import java.util.Objects; @@ -41,11 +42,8 @@ /** * Destination */ -@JsonPropertyOrder( - {Destination.JSON_PROPERTY_TYPE, Destination.JSON_PROPERTY_FACILITY, - Destination.JSON_PROPERTY_ADMIN_FINESS, - Destination.JSON_PROPERTY_GEO_FINESS, Destination.JSON_PROPERTY_SERVICE, - Destination.JSON_PROPERTY_FREETEXT}) +@JsonPropertyOrder({Destination.JSON_PROPERTY_TYPE, + Destination.JSON_PROPERTY_DESTINATION_LOCATION}) @JsonTypeName("destination") @JsonInclude(JsonInclude.Include.NON_EMPTY) @@ -100,20 +98,9 @@ public static TypeEnum fromValue(String value) { public static final String JSON_PROPERTY_TYPE = "type"; private TypeEnum type; - public static final String JSON_PROPERTY_FACILITY = "facility"; - private String facility; - - public static final String JSON_PROPERTY_ADMIN_FINESS = "adminFiness"; - private String adminFiness; - - public static final String JSON_PROPERTY_GEO_FINESS = "geoFiness"; - private String geoFiness; - - public static final String JSON_PROPERTY_SERVICE = "service"; - private String service; - - public static final String JSON_PROPERTY_FREETEXT = "freetext"; - private String freetext; + public static final String JSON_PROPERTY_DESTINATION_LOCATION = + "destinationLocation"; + private Location destinationLocation; public Destination() {} @@ -142,119 +129,27 @@ public void setType(TypeEnum type) { this.type = type; } - public Destination facility(String facility) { + public Destination destinationLocation(Location destinationLocation) { - this.facility = facility; + this.destinationLocation = destinationLocation; return this; } /** - * Nom de l'établissement - * @return facility + * Get destinationLocation + * @return destinationLocation **/ - @JsonProperty(JSON_PROPERTY_FACILITY) + @JsonProperty(JSON_PROPERTY_DESTINATION_LOCATION) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getFacility() { - return facility; + public Location getDestinationLocation() { + return destinationLocation; } - @JsonProperty(JSON_PROPERTY_FACILITY) + @JsonProperty(JSON_PROPERTY_DESTINATION_LOCATION) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFacility(String facility) { - this.facility = facility; - } - - public Destination adminFiness(String adminFiness) { - - this.adminFiness = adminFiness; - return this; - } - - /** - * N° Finess administratif de l'établissement - * @return adminFiness - **/ - @JsonProperty(JSON_PROPERTY_ADMIN_FINESS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getAdminFiness() { - return adminFiness; - } - - @JsonProperty(JSON_PROPERTY_ADMIN_FINESS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setAdminFiness(String adminFiness) { - this.adminFiness = adminFiness; - } - - public Destination geoFiness(String geoFiness) { - - this.geoFiness = geoFiness; - return this; - } - - /** - * N° Finess géographique de l'établissement - * @return geoFiness - **/ - @JsonProperty(JSON_PROPERTY_GEO_FINESS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getGeoFiness() { - return geoFiness; - } - - @JsonProperty(JSON_PROPERTY_GEO_FINESS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setGeoFiness(String geoFiness) { - this.geoFiness = geoFiness; - } - - public Destination service(String service) { - - this.service = service; - return this; - } - - /** - * Service concerné par l'admission du patient - * @return service - **/ - @JsonProperty(JSON_PROPERTY_SERVICE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getService() { - return service; - } - - @JsonProperty(JSON_PROPERTY_SERVICE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setService(String service) { - this.service = service; - } - - public Destination freetext(String freetext) { - - this.freetext = freetext; - return this; - } - - /** - * Get freetext - * @return freetext - **/ - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getFreetext() { - return freetext; - } - - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFreetext(String freetext) { - this.freetext = freetext; + public void setDestinationLocation(Location destinationLocation) { + this.destinationLocation = destinationLocation; } @Override @@ -267,17 +162,13 @@ public boolean equals(Object o) { } Destination destination = (Destination)o; return Objects.equals(this.type, destination.type) && - Objects.equals(this.facility, destination.facility) && - Objects.equals(this.adminFiness, destination.adminFiness) && - Objects.equals(this.geoFiness, destination.geoFiness) && - Objects.equals(this.service, destination.service) && - Objects.equals(this.freetext, destination.freetext); + Objects.equals(this.destinationLocation, + destination.destinationLocation); } @Override public int hashCode() { - return Objects.hash(type, facility, adminFiness, geoFiness, service, - freetext); + return Objects.hash(type, destinationLocation); } @Override @@ -285,15 +176,9 @@ public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Destination {\n"); sb.append(" type: ").append(toIndentedString(type)).append("\n"); - sb.append(" facility: ").append(toIndentedString(facility)).append("\n"); - sb.append(" adminFiness: ") - .append(toIndentedString(adminFiness)) - .append("\n"); - sb.append(" geoFiness: ") - .append(toIndentedString(geoFiness)) + sb.append(" destinationLocation: ") + .append(toIndentedString(destinationLocation)) .append("\n"); - sb.append(" service: ").append(toIndentedString(service)).append("\n"); - sb.append(" freetext: ").append(toIndentedString(freetext)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/src/main/java/com/hubsante/model/cisu/DetailedAddress.java b/src/main/java/com/hubsante/model/cisu/DetailedAddress.java index 18ae6f9ab..16bdcef1e 100644 --- a/src/main/java/com/hubsante/model/cisu/DetailedAddress.java +++ b/src/main/java/com/hubsante/model/cisu/DetailedAddress.java @@ -67,9 +67,9 @@ public DetailedAddress complete(String complete) { } /** - * Numéro, type et nom de la voie. Utilisé pour tout type de voie : autoroute - *(PK, nom et sens), voie ferrée, voie navigable… Obligatoire et seule valeur - *des détails de l'adresse fournie par NexSIS. + * Numéro, type et nom de la voie. Utilisé pour tout type de voie : autoroute + *(PK, nom et sens), voie ferrée, voie navigable… 15-18 : Obligatoire et seule + *valeur des détails de l'adresse fournie par NexSIS. * @return complete **/ @JsonProperty(JSON_PROPERTY_COMPLETE) diff --git a/src/main/java/com/hubsante/model/cisu/ExternalLocationId.java b/src/main/java/com/hubsante/model/cisu/ExternalLocationId.java new file mode 100644 index 000000000..f9f93df24 --- /dev/null +++ b/src/main/java/com/hubsante/model/cisu/ExternalLocationId.java @@ -0,0 +1,182 @@ +/** + * Copyright © 2023-2024 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; + +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; + +/** + * ExternalLocationId + */ +@JsonPropertyOrder({ExternalLocationId.JSON_PROPERTY_SOURCE, + ExternalLocationId.JSON_PROPERTY_VALUE}) +@JsonTypeName("externalLocationId") +@JsonInclude(JsonInclude.Include.NON_EMPTY) + +public class ExternalLocationId { + + /** + * Type de l'identifiant fourni + */ + public enum SourceEnum { + FINESS_ADMINISTRATIF("FINESS administratif"), + + FINESS_G_OGRAPHIQUE("FINESS géographique"), + + SIREN("SIREN"), + + SIRET("SIRET"), + + APE_NAF("APE/NAF"); + + private String value; + + SourceEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static SourceEnum fromValue(String value) { + for (SourceEnum b : SourceEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + + public static final String JSON_PROPERTY_SOURCE = "source"; + private SourceEnum source; + + public static final String JSON_PROPERTY_VALUE = "value"; + private String value; + + public ExternalLocationId() {} + + public ExternalLocationId source(SourceEnum source) { + + this.source = source; + return this; + } + + /** + * Type de l'identifiant fourni + * @return source + **/ + @JsonProperty(JSON_PROPERTY_SOURCE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public SourceEnum getSource() { + return source; + } + + @JsonProperty(JSON_PROPERTY_SOURCE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setSource(SourceEnum source) { + this.source = source; + } + + public ExternalLocationId value(String value) { + + this.value = value; + return this; + } + + /** + * L'identifiant en lui-même + * @return value + **/ + @JsonProperty(JSON_PROPERTY_VALUE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public String getValue() { + return value; + } + + @JsonProperty(JSON_PROPERTY_VALUE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setValue(String value) { + this.value = value; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ExternalLocationId externalLocationId = (ExternalLocationId)o; + return Objects.equals(this.source, externalLocationId.source) && + Objects.equals(this.value, externalLocationId.value); + } + + @Override + public int hashCode() { + return Objects.hash(source, value); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ExternalLocationId {\n"); + sb.append(" source: ").append(toIndentedString(source)).append("\n"); + sb.append(" value: ").append(toIndentedString(value)).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/HealthMotive.java b/src/main/java/com/hubsante/model/cisu/HealthMotive.java index c2990b347..18bf54281 100644 --- a/src/main/java/com/hubsante/model/cisu/HealthMotive.java +++ b/src/main/java/com/hubsante/model/cisu/HealthMotive.java @@ -41,25 +41,155 @@ /** * HealthMotive */ -@JsonPropertyOrder({HealthMotive.JSON_PROPERTY_CODE, - HealthMotive.JSON_PROPERTY_LABEL, - HealthMotive.JSON_PROPERTY_FREETEXT}) +@JsonPropertyOrder( + {HealthMotive.JSON_PROPERTY_CODE, HealthMotive.JSON_PROPERTY_LABEL}) @JsonTypeName("healthMotive") @JsonInclude(JsonInclude.Include.NON_EMPTY) public class HealthMotive { + + /** + * A valoriser avec un code la nomenclature associée + */ + public enum CodeEnum { + M01_00("M01.00"), + + M01_01("M01.01"), + + M01_02("M01.02"), + + M01_03("M01.03"), + + M02_00("M02.00"), + + M02_01("M02.01"), + + M02_02("M02.02"), + + M02_03("M02.03"), + + M02_04("M02.04"), + + M02_05("M02.05"), + + M02_06("M02.06"), + + M02_07("M02.07"), + + M02_08("M02.08"), + + M02_09("M02.09"), + + M02_10("M02.10"), + + M03_00("M03.00"), + + M03_01("M03.01"), + + M03_02("M03.02"), + + M03_03("M03.03"), + + M03_04("M03.04"), + + M03_05("M03.05"), + + M03_06("M03.06"), + + M03_07("M03.07"), + + M03_08("M03.08"), + + M03_09("M03.09"), + + M03_10("M03.10"), + + M03_11("M03.11"), + + M03_12("M03.12"), + + M03_13("M03.13"), + + M03_14("M03.14"), + + M03_15("M03.15"), + + M03_16("M03.16"), + + M03_17("M03.17"), + + M03_18("M03.18"), + + M03_19("M03.19"), + + M03_20("M03.20"), + + M03_21("M03.21"), + + M03_22("M03.22"), + + M04_00("M04.00"), + + M04_01("M04.01"), + + M04_02("M04.02"), + + M04_03("M04.03"), + + M04_04("M04.04"), + + M05_00("M05.00"), + + M05_01("M05.01"), + + M05_02("M05.02"), + + M06_00("M06.00"), + + M06_01("M06.01"), + + M06_02("M06.02"), + + M06_03("M06.03"), + + M06_04("M06.04"), + + M07_00("M07.00"); + + private String value; + + CodeEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static CodeEnum fromValue(String value) { + for (CodeEnum b : CodeEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + public static final String JSON_PROPERTY_CODE = "code"; - private String code; + private CodeEnum code; public static final String JSON_PROPERTY_LABEL = "label"; private String label; - public static final String JSON_PROPERTY_FREETEXT = "freetext"; - private String freetext; - public HealthMotive() {} - public HealthMotive code(String code) { + public HealthMotive code(CodeEnum code) { this.code = code; return this; @@ -72,13 +202,13 @@ public HealthMotive code(String code) { @JsonProperty(JSON_PROPERTY_CODE) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public String getCode() { + public CodeEnum getCode() { return code; } @JsonProperty(JSON_PROPERTY_CODE) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setCode(String code) { + public void setCode(CodeEnum code) { this.code = code; } @@ -107,30 +237,6 @@ public void setLabel(String label) { this.label = label; } - public HealthMotive freetext(String freetext) { - - this.freetext = freetext; - return this; - } - - /** - * Commentaire libre permettant de passer des informations complémentaires - *associées à la nomenclature - * @return freetext - **/ - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getFreetext() { - return freetext; - } - - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFreetext(String freetext) { - this.freetext = freetext; - } - @Override public boolean equals(Object o) { if (this == o) { @@ -141,13 +247,12 @@ public boolean equals(Object o) { } HealthMotive healthMotive = (HealthMotive)o; return Objects.equals(this.code, healthMotive.code) && - Objects.equals(this.label, healthMotive.label) && - Objects.equals(this.freetext, healthMotive.freetext); + Objects.equals(this.label, healthMotive.label); } @Override public int hashCode() { - return Objects.hash(code, label, freetext); + return Objects.hash(code, label); } @Override @@ -156,7 +261,6 @@ public String toString() { sb.append("class HealthMotive {\n"); sb.append(" code: ").append(toIndentedString(code)).append("\n"); sb.append(" label: ").append(toIndentedString(label)).append("\n"); - sb.append(" freetext: ").append(toIndentedString(freetext)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/src/main/java/com/hubsante/model/cisu/InsStrictFeatures.java b/src/main/java/com/hubsante/model/cisu/InsStrictFeatures.java index 94ebdf027..02312af65 100644 --- a/src/main/java/com/hubsante/model/cisu/InsStrictFeatures.java +++ b/src/main/java/com/hubsante/model/cisu/InsStrictFeatures.java @@ -50,8 +50,45 @@ public class InsStrictFeatures { public static final String JSON_PROPERTY_BIRTH_DATE = "birthDate"; private String birthDate; + /** + * Sexe du patient + */ + public enum SexEnum { + MASC("MASC"), + + FEM("FEM"), + + AUTRE("AUTRE"), + + INCONNU("INCONNU"); + + private String value; + + SexEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static SexEnum fromValue(String value) { + for (SexEnum b : SexEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + public static final String JSON_PROPERTY_SEX = "sex"; - private String sex; + private SexEnum sex; public InsStrictFeatures() {} @@ -78,7 +115,7 @@ public void setBirthDate(String birthDate) { this.birthDate = birthDate; } - public InsStrictFeatures sex(String sex) { + public InsStrictFeatures sex(SexEnum sex) { this.sex = sex; return this; @@ -91,13 +128,13 @@ public InsStrictFeatures sex(String sex) { @JsonProperty(JSON_PROPERTY_SEX) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getSex() { + public SexEnum getSex() { return sex; } @JsonProperty(JSON_PROPERTY_SEX) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setSex(String sex) { + public void setSex(SexEnum sex) { this.sex = sex; } diff --git a/src/main/java/com/hubsante/model/cisu/Location.java b/src/main/java/com/hubsante/model/cisu/Location.java index db7e05759..61e6979cf 100644 --- a/src/main/java/com/hubsante/model/cisu/Location.java +++ b/src/main/java/com/hubsante/model/cisu/Location.java @@ -38,6 +38,7 @@ import com.hubsante.model.cisu.City; import com.hubsante.model.cisu.DetailedAddress; import com.hubsante.model.cisu.ExternalInfo; +import com.hubsante.model.cisu.ExternalLocationId; import com.hubsante.model.cisu.Geometry; import java.util.ArrayList; import java.util.Arrays; @@ -50,10 +51,11 @@ */ @JsonPropertyOrder( {Location.JSON_PROPERTY_LOC_I_D, Location.JSON_PROPERTY_LOC_LABEL, - Location.JSON_PROPERTY_NAME, Location.JSON_PROPERTY_DETAILED_ADDRESS, - Location.JSON_PROPERTY_CITY, Location.JSON_PROPERTY_ACCESS, - Location.JSON_PROPERTY_GEOMETRY, Location.JSON_PROPERTY_EXTERNAL_INFO, - Location.JSON_PROPERTY_COUNTRY, Location.JSON_PROPERTY_FREETEXT}) + Location.JSON_PROPERTY_NAME, Location.JSON_PROPERTY_EXTERNAL_LOCATION_ID, + Location.JSON_PROPERTY_DETAILED_ADDRESS, Location.JSON_PROPERTY_CITY, + Location.JSON_PROPERTY_ACCESS, Location.JSON_PROPERTY_GEOMETRY, + Location.JSON_PROPERTY_EXTERNAL_INFO, Location.JSON_PROPERTY_COUNTRY, + Location.JSON_PROPERTY_FREETEXT}) @JsonTypeName("location") @JsonInclude(JsonInclude.Include.NON_EMPTY) @@ -67,6 +69,10 @@ public class Location { public static final String JSON_PROPERTY_NAME = "name"; private String name; + public static final String JSON_PROPERTY_EXTERNAL_LOCATION_ID = + "externalLocationId"; + private List externalLocationId; + public static final String JSON_PROPERTY_DETAILED_ADDRESS = "detailedAddress"; private DetailedAddress detailedAddress; @@ -632,12 +638,12 @@ public Location locLabel(String locLabel) { } /** - * Permet d'indiquer des indications auto suffisantes permettant pour un - *opérationnel d'accéder facilement au lieu avec des indications - *minimales. Dans les messages NexSIS, va souvent correspondre à la - *concaténation suivant des règles métiers de différentes informations, dont - *le \"name\" (toponyme) et l'adresse. Comprend au maximum 255 - *caractères + * Donne les informations minimales d'identification du lieu + *d'intervention, qui permet d'identifier rapidement le lieu pour les + *équipes opérationnelles. Comprend au maximum 255 caractères. 15-18 : Dans + *les messages NexSIS, va souvent correspondre à la concaténation suivant des + *règles métiers de différentes informations, dont le \"name\" + *(toponyme) et l'adresse. * @return locLabel **/ @JsonProperty(JSON_PROPERTY_LOC_LABEL) @@ -660,8 +666,8 @@ public Location name(String name) { } /** - * Indique le nom de lieu : nom commercial, forêt de Fontainebleau, lac du Der - *(plutôt à destination des systèmes). + * Indique le nom de lieu : nom commercial, Etablissement, forêt de + *Fontainebleau, lac du Der (plutôt à destination des systèmes). * @return name **/ @JsonProperty(JSON_PROPERTY_NAME) @@ -677,6 +683,48 @@ public void setName(String name) { this.name = name; } + public Location + externalLocationId(List externalLocationId) { + + this.externalLocationId = externalLocationId; + return this; + } + + public Location + addExternalLocationIdItem(ExternalLocationId externalLocationIdItem) { + if (this.externalLocationId == null) { + this.externalLocationId = new ArrayList<>(); + } + this.externalLocationId.add(externalLocationIdItem); + return this; + } + + /** + * Get externalLocationId + * @return externalLocationId + **/ + @JsonProperty(JSON_PROPERTY_EXTERNAL_LOCATION_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public List getExternalLocationId() { + return externalLocationId; + } + + @JacksonXmlElementWrapper(useWrapping = false) + + @JsonProperty(JSON_PROPERTY_EXTERNAL_LOCATION_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void + setExternalLocationId(List externalLocationId) { + if (externalLocationId == null) { + return; + } + if (this.externalLocationId == null) { + this.externalLocationId = new ArrayList<>(); + } + this.externalLocationId.addAll(externalLocationId); + } + public Location detailedAddress(DetailedAddress detailedAddress) { this.detailedAddress = detailedAddress; @@ -866,6 +914,7 @@ public boolean equals(Object o) { return Objects.equals(this.locID, location.locID) && Objects.equals(this.locLabel, location.locLabel) && Objects.equals(this.name, location.name) && + Objects.equals(this.externalLocationId, location.externalLocationId) && Objects.equals(this.detailedAddress, location.detailedAddress) && Objects.equals(this.city, location.city) && Objects.equals(this.access, location.access) && @@ -877,8 +926,9 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(locID, locLabel, name, detailedAddress, city, access, - geometry, externalInfo, country, freetext); + return Objects.hash(locID, locLabel, name, externalLocationId, + detailedAddress, city, access, geometry, externalInfo, + country, freetext); } @Override @@ -888,6 +938,9 @@ public String toString() { sb.append(" locID: ").append(toIndentedString(locID)).append("\n"); sb.append(" locLabel: ").append(toIndentedString(locLabel)).append("\n"); sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" externalLocationId: ") + .append(toIndentedString(externalLocationId)) + .append("\n"); sb.append(" detailedAddress: ") .append(toIndentedString(detailedAddress)) .append("\n"); diff --git a/src/main/java/com/hubsante/model/cisu/LocationKind.java b/src/main/java/com/hubsante/model/cisu/LocationKind.java index 1ee907348..dacac6fdf 100644 --- a/src/main/java/com/hubsante/model/cisu/LocationKind.java +++ b/src/main/java/com/hubsante/model/cisu/LocationKind.java @@ -41,25 +41,409 @@ /** * LocationKind */ -@JsonPropertyOrder({LocationKind.JSON_PROPERTY_CODE, - LocationKind.JSON_PROPERTY_LABEL, - LocationKind.JSON_PROPERTY_FREETEXT}) +@JsonPropertyOrder( + {LocationKind.JSON_PROPERTY_CODE, LocationKind.JSON_PROPERTY_LABEL}) @JsonTypeName("locationKind") @JsonInclude(JsonInclude.Include.NON_EMPTY) public class LocationKind { + + /** + * A valoriser avec un code la nomenclature associée + */ + public enum CodeEnum { + L01_00_00("L01.00.00"), + + L01_01_00("L01.01.00"), + + L01_01_01("L01.01.01"), + + L01_01_02("L01.01.02"), + + L01_01_03("L01.01.03"), + + L01_01_04("L01.01.04"), + + L01_02_00("L01.02.00"), + + L01_02_01("L01.02.01"), + + L01_02_02("L01.02.02"), + + L01_02_03("L01.02.03"), + + L01_02_04("L01.02.04"), + + L01_02_05("L01.02.05"), + + L01_02_06("L01.02.06"), + + L01_02_07("L01.02.07"), + + L01_02_08("L01.02.08"), + + L01_02_09("L01.02.09"), + + L01_02_10("L01.02.10"), + + L01_02_11("L01.02.11"), + + L01_02_12("L01.02.12"), + + L01_03_00("L01.03.00"), + + L01_03_01("L01.03.01"), + + L01_03_02("L01.03.02"), + + L01_03_03("L01.03.03"), + + L01_04_00("L01.04.00"), + + L02_00_00("L02.00.00"), + + L02_01_00("L02.01.00"), + + L02_02_00("L02.02.00"), + + L02_02_01("L02.02.01"), + + L02_02_02("L02.02.02"), + + L02_02_03("L02.02.03"), + + L02_02_04("L02.02.04"), + + L02_02_05("L02.02.05"), + + L02_03_00("L02.03.00"), + + L02_03_01("L02.03.01"), + + L02_03_02("L02.03.02"), + + L02_03_03("L02.03.03"), + + L02_04_00("L02.04.00"), + + L02_05_00("L02.05.00"), + + L02_05_01("L02.05.01"), + + L02_05_02("L02.05.02"), + + L02_05_03("L02.05.03"), + + L02_05_04("L02.05.04"), + + L02_05_05("L02.05.05"), + + L02_05_06("L02.05.06"), + + L02_05_07("L02.05.07"), + + L02_05_08("L02.05.08"), + + L02_05_09("L02.05.09"), + + L02_05_10("L02.05.10"), + + L02_05_11("L02.05.11"), + + L02_05_12("L02.05.12"), + + L02_05_13("L02.05.13"), + + L02_05_14("L02.05.14"), + + L02_05_15("L02.05.15"), + + L02_05_16("L02.05.16"), + + L02_06_00("L02.06.00"), + + L02_06_01("L02.06.01"), + + L02_06_02("L02.06.02"), + + L02_06_03("L02.06.03"), + + L02_06_04("L02.06.04"), + + L02_06_05("L02.06.05"), + + L02_06_06("L02.06.06"), + + L02_06_07("L02.06.07"), + + L02_06_08("L02.06.08"), + + L02_07_00("L02.07.00"), + + L02_07_01("L02.07.01"), + + L02_07_02("L02.07.02"), + + L02_08_00("L02.08.00"), + + L03_00_00("L03.00.00"), + + L03_01_00("L03.01.00"), + + L03_02_00("L03.02.00"), + + L03_03_00("L03.03.00"), + + L03_04_00("L03.04.00"), + + L03_05_00("L03.05.00"), + + L04_00_00("L04.00.00"), + + L04_01_00("L04.01.00"), + + L04_02_00("L04.02.00"), + + L04_02_01("L04.02.01"), + + L04_02_02("L04.02.02"), + + L04_02_03("L04.02.03"), + + L04_03_00("L04.03.00"), + + L04_03_01("L04.03.01"), + + L04_03_02("L04.03.02"), + + L04_03_03("L04.03.03"), + + L04_04_00("L04.04.00"), + + L04_05_00("L04.05.00"), + + L04_06_00("L04.06.00"), + + L04_06_01("L04.06.01"), + + L04_06_02("L04.06.02"), + + L04_06_03("L04.06.03"), + + L04_06_04("L04.06.04"), + + L04_06_05("L04.06.05"), + + L04_07_00("L04.07.00"), + + L04_07_01("L04.07.01"), + + L04_07_02("L04.07.02"), + + L04_07_03("L04.07.03"), + + L04_08_00("L04.08.00"), + + L04_08_01("L04.08.01"), + + L04_08_02("L04.08.02"), + + L04_09_00("L04.09.00"), + + L04_09_01("L04.09.01"), + + L04_09_02("L04.09.02"), + + L04_10_00("L04.10.00"), + + L04_11_00("L04.11.00"), + + L04_11_01("L04.11.01"), + + L04_11_02("L04.11.02"), + + L04_11_03("L04.11.03"), + + L04_11_04("L04.11.04"), + + L04_12_00("L04.12.00"), + + L04_12_01("L04.12.01"), + + L04_12_02("L04.12.02"), + + L04_12_03("L04.12.03"), + + L04_12_04("L04.12.04"), + + L04_13_00("L04.13.00"), + + L04_13_01("L04.13.01"), + + L04_13_02("L04.13.02"), + + L04_13_03("L04.13.03"), + + L04_13_04("L04.13.04"), + + L04_14_00("L04.14.00"), + + L04_14_01("L04.14.01"), + + L04_14_02("L04.14.02"), + + L04_15_00("L04.15.00"), + + L04_16_00("L04.16.00"), + + L05_00_00("L05.00.00"), + + L05_01_00("L05.01.00"), + + L05_01_01("L05.01.01"), + + L05_01_02("L05.01.02"), + + L05_01_03("L05.01.03"), + + L05_01_04("L05.01.04"), + + L05_02_00("L05.02.00"), + + L05_02_01("L05.02.01"), + + L05_02_02("L05.02.02"), + + L05_02_03("L05.02.03"), + + L05_02_04("L05.02.04"), + + L05_03_00("L05.03.00"), + + L05_03_01("L05.03.01"), + + L05_03_02("L05.03.02"), + + L05_04_00("L05.04.00"), + + L05_04_01("L05.04.01"), + + L05_04_02("L05.04.02"), + + L05_04_03("L05.04.03"), + + L05_04_04("L05.04.04"), + + L05_04_05("L05.04.05"), + + L05_04_06("L05.04.06"), + + L05_05_00("L05.05.00"), + + L05_06_00("L05.06.00"), + + L05_07_00("L05.07.00"), + + L06_00_00("L06.00.00"), + + L06_01_00("L06.01.00"), + + L06_01_01("L06.01.01"), + + L06_01_02("L06.01.02"), + + L06_01_03("L06.01.03"), + + L06_01_04("L06.01.04"), + + L06_01_05("L06.01.05"), + + L06_01_06("L06.01.06"), + + L06_01_07("L06.01.07"), + + L06_01_08("L06.01.08"), + + L06_02_00("L06.02.00"), + + L06_03_00("L06.03.00"), + + L06_03_01("L06.03.01"), + + L06_03_02("L06.03.02"), + + L06_03_03("L06.03.03"), + + L06_03_04("L06.03.04"), + + L06_03_05("L06.03.05"), + + L06_04_00("L06.04.00"), + + L06_05_00("L06.05.00"), + + L06_05_01("L06.05.01"), + + L06_05_02("L06.05.02"), + + L06_06_00("L06.06.00"), + + L06_06_01("L06.06.01"), + + L06_06_02("L06.06.02"), + + L06_06_03("L06.06.03"), + + L06_06_04("L06.06.04"), + + L06_07_00("L06.07.00"), + + L06_07_01("L06.07.01"), + + L06_07_02("L06.07.02"), + + L07_00_00("L07.00.00"), + + L07_01_00("L07.01.00"), + + L07_01_01("L07.01.01"), + + L07_02_00("L07.02.00"); + + private String value; + + CodeEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static CodeEnum fromValue(String value) { + for (CodeEnum b : CodeEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + public static final String JSON_PROPERTY_CODE = "code"; - private String code; + private CodeEnum code; public static final String JSON_PROPERTY_LABEL = "label"; private String label; - public static final String JSON_PROPERTY_FREETEXT = "freetext"; - private String freetext; - public LocationKind() {} - public LocationKind code(String code) { + public LocationKind code(CodeEnum code) { this.code = code; return this; @@ -72,13 +456,13 @@ public LocationKind code(String code) { @JsonProperty(JSON_PROPERTY_CODE) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public String getCode() { + public CodeEnum getCode() { return code; } @JsonProperty(JSON_PROPERTY_CODE) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setCode(String code) { + public void setCode(CodeEnum code) { this.code = code; } @@ -107,30 +491,6 @@ public void setLabel(String label) { this.label = label; } - public LocationKind freetext(String freetext) { - - this.freetext = freetext; - return this; - } - - /** - * Commentaire libre permettant de passer des informations complémentaires - *associées à la nomenclature - * @return freetext - **/ - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getFreetext() { - return freetext; - } - - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFreetext(String freetext) { - this.freetext = freetext; - } - @Override public boolean equals(Object o) { if (this == o) { @@ -141,13 +501,12 @@ public boolean equals(Object o) { } LocationKind locationKind = (LocationKind)o; return Objects.equals(this.code, locationKind.code) && - Objects.equals(this.label, locationKind.label) && - Objects.equals(this.freetext, locationKind.freetext); + Objects.equals(this.label, locationKind.label); } @Override public int hashCode() { - return Objects.hash(code, label, freetext); + return Objects.hash(code, label); } @Override @@ -156,7 +515,6 @@ public String toString() { sb.append("class LocationKind {\n"); sb.append(" code: ").append(toIndentedString(code)).append("\n"); sb.append(" label: ").append(toIndentedString(label)).append("\n"); - sb.append(" freetext: ").append(toIndentedString(freetext)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/src/main/java/com/hubsante/model/cisu/Notes.java b/src/main/java/com/hubsante/model/cisu/Notes.java new file mode 100644 index 000000000..4f967f8c2 --- /dev/null +++ b/src/main/java/com/hubsante/model/cisu/Notes.java @@ -0,0 +1,142 @@ +/** + * Copyright © 2023-2024 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; + +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; + +/** + * Notes + */ +@JsonPropertyOrder({Notes.JSON_PROPERTY_CREATION, Notes.JSON_PROPERTY_FREETEXT}) +@JsonTypeName("notes") +@JsonInclude(JsonInclude.Include.NON_EMPTY) + +public class Notes { + public static final String JSON_PROPERTY_CREATION = "creation"; + private OffsetDateTime creation; + + public static final String JSON_PROPERTY_FREETEXT = "freetext"; + private String freetext; + + public Notes() {} + + public Notes creation(OffsetDateTime creation) { + + this.creation = creation; + return this; + } + + /** + * date et heure de l'observation + * @return creation + **/ + @JsonProperty(JSON_PROPERTY_CREATION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public OffsetDateTime getCreation() { + return creation; + } + + @JsonProperty(JSON_PROPERTY_CREATION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setCreation(OffsetDateTime creation) { + this.creation = creation; + } + + public Notes freetext(String freetext) { + + this.freetext = freetext; + return this; + } + + /** + * texte libre contenant les indications renseignées par l'ARM + * @return freetext + **/ + @JsonProperty(JSON_PROPERTY_FREETEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getFreetext() { + return freetext; + } + + @JsonProperty(JSON_PROPERTY_FREETEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setFreetext(String freetext) { + this.freetext = freetext; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Notes notes = (Notes)o; + return Objects.equals(this.creation, notes.creation) && + Objects.equals(this.freetext, notes.freetext); + } + + @Override + public int hashCode() { + return Objects.hash(creation, freetext); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Notes {\n"); + sb.append(" creation: ").append(toIndentedString(creation)).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/Patient.java b/src/main/java/com/hubsante/model/cisu/Patient.java index 78419f977..8d0d959f8 100644 --- a/src/main/java/com/hubsante/model/cisu/Patient.java +++ b/src/main/java/com/hubsante/model/cisu/Patient.java @@ -35,14 +35,17 @@ import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.dataformat.xml.annotation.*; import com.hubsante.model.cisu.InsIdentity; +import java.util.ArrayList; import java.util.Arrays; import java.util.Arrays; +import java.util.List; import java.util.Objects; /** * Patient */ -@JsonPropertyOrder({Patient.JSON_PROPERTY_ID, Patient.JSON_PROPERTY_IDENTITY}) +@JsonPropertyOrder({Patient.JSON_PROPERTY_ID, Patient.JSON_PROPERTY_IDENTITY, + Patient.JSON_PROPERTY_FREETEXT}) @JsonTypeName("patient") @JsonInclude(JsonInclude.Include.NON_EMPTY) @@ -53,6 +56,9 @@ public class Patient { public static final String JSON_PROPERTY_IDENTITY = "identity"; private InsIdentity identity; + public static final String JSON_PROPERTY_FREETEXT = "freetext"; + private List freetext; + public Patient() {} public Patient id(String id) { @@ -102,6 +108,45 @@ public void setIdentity(InsIdentity identity) { this.identity = identity; } + public Patient freetext(List freetext) { + + this.freetext = freetext; + return this; + } + + public Patient 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) { @@ -112,12 +157,13 @@ public boolean equals(Object o) { } Patient patient = (Patient)o; return Objects.equals(this.id, patient.id) && - Objects.equals(this.identity, patient.identity); + Objects.equals(this.identity, patient.identity) && + Objects.equals(this.freetext, patient.freetext); } @Override public int hashCode() { - return Objects.hash(id, identity); + return Objects.hash(id, identity, freetext); } @Override @@ -126,6 +172,7 @@ public String toString() { sb.append("class Patient {\n"); sb.append(" id: ").append(toIndentedString(id)).append("\n"); sb.append(" identity: ").append(toIndentedString(identity)).append("\n"); + sb.append(" freetext: ").append(toIndentedString(freetext)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/src/main/java/com/hubsante/model/cisu/RiskThreat.java b/src/main/java/com/hubsante/model/cisu/RiskThreat.java index 5b3f905a0..5214fc114 100644 --- a/src/main/java/com/hubsante/model/cisu/RiskThreat.java +++ b/src/main/java/com/hubsante/model/cisu/RiskThreat.java @@ -41,25 +41,125 @@ /** * RiskThreat */ -@JsonPropertyOrder({RiskThreat.JSON_PROPERTY_CODE, - RiskThreat.JSON_PROPERTY_LABEL, - RiskThreat.JSON_PROPERTY_FREETEXT}) +@JsonPropertyOrder( + {RiskThreat.JSON_PROPERTY_CODE, RiskThreat.JSON_PROPERTY_LABEL}) @JsonTypeName("riskThreat") @JsonInclude(JsonInclude.Include.NON_EMPTY) public class RiskThreat { + + /** + * A valoriser avec un code la nomenclature associée + */ + public enum CodeEnum { + R01("R01"), + + R02("R02"), + + R03("R03"), + + R04("R04"), + + R05("R05"), + + R06("R06"), + + R07("R07"), + + R08("R08"), + + R09("R09"), + + R10("R10"), + + R11("R11"), + + R12("R12"), + + R13("R13"), + + R14("R14"), + + R15("R15"), + + R16("R16"), + + R17("R17"), + + R18("R18"), + + R19("R19"), + + R20("R20"), + + R21("R21"), + + R22("R22"), + + R23("R23"), + + R24("R24"), + + R25("R25"), + + R26("R26"), + + R27("R27"), + + R28("R28"), + + R29("R29"), + + R30("R30"), + + R31("R31"), + + R32("R32"), + + R33("R33"), + + R34("R34"), + + R35("R35"), + + R36("R36"), + + R37("R37"); + + private String value; + + CodeEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static CodeEnum fromValue(String value) { + for (CodeEnum b : CodeEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + public static final String JSON_PROPERTY_CODE = "code"; - private String code; + private CodeEnum code; public static final String JSON_PROPERTY_LABEL = "label"; private String label; - public static final String JSON_PROPERTY_FREETEXT = "freetext"; - private String freetext; - public RiskThreat() {} - public RiskThreat code(String code) { + public RiskThreat code(CodeEnum code) { this.code = code; return this; @@ -72,13 +172,13 @@ public RiskThreat code(String code) { @JsonProperty(JSON_PROPERTY_CODE) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public String getCode() { + public CodeEnum getCode() { return code; } @JsonProperty(JSON_PROPERTY_CODE) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setCode(String code) { + public void setCode(CodeEnum code) { this.code = code; } @@ -107,30 +207,6 @@ public void setLabel(String label) { this.label = label; } - public RiskThreat freetext(String freetext) { - - this.freetext = freetext; - return this; - } - - /** - * Commentaire libre permettant de passer des informations complémentaires - *associées à la nomenclature - * @return freetext - **/ - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getFreetext() { - return freetext; - } - - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFreetext(String freetext) { - this.freetext = freetext; - } - @Override public boolean equals(Object o) { if (this == o) { @@ -141,13 +217,12 @@ public boolean equals(Object o) { } RiskThreat riskThreat = (RiskThreat)o; return Objects.equals(this.code, riskThreat.code) && - Objects.equals(this.label, riskThreat.label) && - Objects.equals(this.freetext, riskThreat.freetext); + Objects.equals(this.label, riskThreat.label); } @Override public int hashCode() { - return Objects.hash(code, label, freetext); + return Objects.hash(code, label); } @Override @@ -156,7 +231,6 @@ public String toString() { sb.append("class RiskThreat {\n"); sb.append(" code: ").append(toIndentedString(code)).append("\n"); sb.append(" label: ").append(toIndentedString(label)).append("\n"); - sb.append(" freetext: ").append(toIndentedString(freetext)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/src/main/java/com/hubsante/model/cisu/TransportDetails.java b/src/main/java/com/hubsante/model/cisu/TransportDetails.java new file mode 100644 index 000000000..5e005592c --- /dev/null +++ b/src/main/java/com/hubsante/model/cisu/TransportDetails.java @@ -0,0 +1,246 @@ +/** + * Copyright © 2023-2024 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; + +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.Destination; +import java.util.Arrays; +import java.util.Arrays; +import java.util.Objects; + +/** + * TransportDetails + */ +@JsonPropertyOrder({TransportDetails.JSON_PROPERTY_ORIENTATION, + TransportDetails.JSON_PROPERTY_CONCOURS_REQUEST, + TransportDetails.JSON_PROPERTY_TRANSPORTATION_I_D, + TransportDetails.JSON_PROPERTY_TEAM_CARE, + TransportDetails.JSON_PROPERTY_DESTINATION}) +@JsonTypeName("transportDetails") +@JsonInclude(JsonInclude.Include.NON_EMPTY) + +public class TransportDetails { + public static final String JSON_PROPERTY_ORIENTATION = "orientation"; + private String orientation; + + public static final String JSON_PROPERTY_CONCOURS_REQUEST = "concoursRequest"; + private String concoursRequest; + + public static final String JSON_PROPERTY_TRANSPORTATION_I_D = + "transportationID"; + private String transportationID; + + public static final String JSON_PROPERTY_TEAM_CARE = "teamCare"; + private String teamCare; + + public static final String JSON_PROPERTY_DESTINATION = "destination"; + private Destination destination; + + public TransportDetails() {} + + public TransportDetails orientation(String orientation) { + + this.orientation = orientation; + return this; + } + + /** + * Décision(s) d'orientation prise par le médecin régulateur : - A + *transporter - Laisser sur place + * @return orientation + **/ + @JsonProperty(JSON_PROPERTY_ORIENTATION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public String getOrientation() { + return orientation; + } + + @JsonProperty(JSON_PROPERTY_ORIENTATION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setOrientation(String orientation) { + this.orientation = orientation; + } + + public TransportDetails concoursRequest(String concoursRequest) { + + this.concoursRequest = concoursRequest; + return this; + } + + /** + * Identifiant de la ou des demandes de concours + * @return concoursRequest + **/ + @JsonProperty(JSON_PROPERTY_CONCOURS_REQUEST) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getConcoursRequest() { + return concoursRequest; + } + + @JsonProperty(JSON_PROPERTY_CONCOURS_REQUEST) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setConcoursRequest(String concoursRequest) { + this.concoursRequest = concoursRequest; + } + + public TransportDetails transportationID(String transportationID) { + + this.transportationID = transportationID; + return this; + } + + /** + * Identifiant du véhicule terrestre / aérien / maritime de transport + *principal (= celui dans lequel se trouve le patient), permettant + *d'associer la décision à un véhicule spécifique + au patient. + * @return transportationID + **/ + @JsonProperty(JSON_PROPERTY_TRANSPORTATION_I_D) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getTransportationID() { + return transportationID; + } + + @JsonProperty(JSON_PROPERTY_TRANSPORTATION_I_D) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setTransportationID(String transportationID) { + this.transportationID = transportationID; + } + + public TransportDetails teamCare(String teamCare) { + + this.teamCare = teamCare; + return this; + } + + /** + * Type d’équipe (médical, paramédicale, non médicale, standard, incomplete, + *...) + * @return teamCare + **/ + @JsonProperty(JSON_PROPERTY_TEAM_CARE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public String getTeamCare() { + return teamCare; + } + + @JsonProperty(JSON_PROPERTY_TEAM_CARE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setTeamCare(String teamCare) { + this.teamCare = teamCare; + } + + public TransportDetails destination(Destination destination) { + + this.destination = destination; + return this; + } + + /** + * Get destination + * @return destination + **/ + @JsonProperty(JSON_PROPERTY_DESTINATION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public Destination getDestination() { + return destination; + } + + @JsonProperty(JSON_PROPERTY_DESTINATION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setDestination(Destination destination) { + this.destination = destination; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TransportDetails transportDetails = (TransportDetails)o; + return Objects.equals(this.orientation, transportDetails.orientation) && + Objects.equals(this.concoursRequest, + transportDetails.concoursRequest) && + Objects.equals(this.transportationID, + transportDetails.transportationID) && + Objects.equals(this.teamCare, transportDetails.teamCare) && + Objects.equals(this.destination, transportDetails.destination); + } + + @Override + public int hashCode() { + return Objects.hash(orientation, concoursRequest, transportationID, + teamCare, destination); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TransportDetails {\n"); + sb.append(" orientation: ") + .append(toIndentedString(orientation)) + .append("\n"); + sb.append(" concoursRequest: ") + .append(toIndentedString(concoursRequest)) + .append("\n"); + sb.append(" transportationID: ") + .append(toIndentedString(transportationID)) + .append("\n"); + sb.append(" teamCare: ").append(toIndentedString(teamCare)).append("\n"); + sb.append(" destination: ") + .append(toIndentedString(destination)) + .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/WayName.java b/src/main/java/com/hubsante/model/cisu/WayName.java index 11143f8ba..b0469198a 100644 --- a/src/main/java/com/hubsante/model/cisu/WayName.java +++ b/src/main/java/com/hubsante/model/cisu/WayName.java @@ -90,7 +90,7 @@ public WayName type(String type) { } /** - * Get type + * Type de la voie * @return type **/ @JsonProperty(JSON_PROPERTY_TYPE) @@ -113,7 +113,7 @@ public WayName name(String name) { } /** - * Get name + * Nom de la voie * @return name **/ @JsonProperty(JSON_PROPERTY_NAME) diff --git a/src/main/java/com/hubsante/model/cisu/WhatsHappen.java b/src/main/java/com/hubsante/model/cisu/WhatsHappen.java index 175a3aceb..4f3189a83 100644 --- a/src/main/java/com/hubsante/model/cisu/WhatsHappen.java +++ b/src/main/java/com/hubsante/model/cisu/WhatsHappen.java @@ -41,9 +41,8 @@ /** * WhatsHappen */ -@JsonPropertyOrder({WhatsHappen.JSON_PROPERTY_CODE, - WhatsHappen.JSON_PROPERTY_LABEL, - WhatsHappen.JSON_PROPERTY_FREETEXT}) +@JsonPropertyOrder( + {WhatsHappen.JSON_PROPERTY_CODE, WhatsHappen.JSON_PROPERTY_LABEL}) @JsonTypeName("whatsHappen") @JsonInclude(JsonInclude.Include.NON_EMPTY) @@ -54,9 +53,6 @@ public class WhatsHappen { public static final String JSON_PROPERTY_LABEL = "label"; private String label; - public static final String JSON_PROPERTY_FREETEXT = "freetext"; - private String freetext; - public WhatsHappen() {} public WhatsHappen code(String code) { @@ -107,30 +103,6 @@ public void setLabel(String label) { this.label = label; } - public WhatsHappen freetext(String freetext) { - - this.freetext = freetext; - return this; - } - - /** - * Commentaire libre permettant de passer des informations complémentaires - *associées à la nomenclature - * @return freetext - **/ - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getFreetext() { - return freetext; - } - - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFreetext(String freetext) { - this.freetext = freetext; - } - @Override public boolean equals(Object o) { if (this == o) { @@ -141,13 +113,12 @@ public boolean equals(Object o) { } WhatsHappen whatsHappen = (WhatsHappen)o; return Objects.equals(this.code, whatsHappen.code) && - Objects.equals(this.label, whatsHappen.label) && - Objects.equals(this.freetext, whatsHappen.freetext); + Objects.equals(this.label, whatsHappen.label); } @Override public int hashCode() { - return Objects.hash(code, label, freetext); + return Objects.hash(code, label); } @Override @@ -156,7 +127,6 @@ public String toString() { sb.append("class WhatsHappen {\n"); sb.append(" code: ").append(toIndentedString(code)).append("\n"); sb.append(" label: ").append(toIndentedString(label)).append("\n"); - sb.append(" freetext: ").append(toIndentedString(freetext)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/src/main/java/com/hubsante/model/edxl/ContentMessage.java b/src/main/java/com/hubsante/model/edxl/ContentMessage.java index 487829108..8ade46036 100644 --- a/src/main/java/com/hubsante/model/edxl/ContentMessage.java +++ b/src/main/java/com/hubsante/model/edxl/ContentMessage.java @@ -17,7 +17,7 @@ import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.hubsante.model.common.ReferenceWrapper; +import com.hubsante.model.reference.ReferenceWrapper; import com.hubsante.model.custom.CustomMessage; import com.hubsante.model.cisu.*; import com.hubsante.model.emsi.EmsiWrapper; @@ -40,4 +40,20 @@ @JsonSubTypes.Type(GeoResourceDetailsWrapper.class) }) public class ContentMessage { + + /** This equals override is used to avoid breaking the equals override in the messages without RC-DE headers + * (in particular ErrorWrapper), as without the override the equality check would only pass when comparing + * an object to itself, and we care about the actual values. + **/ + @Override + public boolean equals(Object o) { + if (this == o) return true; + return o != null && getClass() == o.getClass(); + } + + // As this class has no fields, the hashcode is always 0 + @Override + public int hashCode() { + return 0; + } } diff --git a/src/main/java/com/hubsante/model/emsi/Egeo.java b/src/main/java/com/hubsante/model/emsi/Egeo.java index c91a3196b..3e88bd5cb 100644 --- a/src/main/java/com/hubsante/model/emsi/Egeo.java +++ b/src/main/java/com/hubsante/model/emsi/Egeo.java @@ -430,14 +430,14 @@ public Egeo TYPE(TYPEEnum TYPE) { * @return TYPE **/ @JsonProperty(JSON_PROPERTY_T_Y_P_E) - @JsonInclude(value = JsonInclude.Include.ALWAYS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) public TYPEEnum getTYPE() { return TYPE; } @JsonProperty(JSON_PROPERTY_T_Y_P_E) - @JsonInclude(value = JsonInclude.Include.ALWAYS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) public void setTYPE(TYPEEnum TYPE) { this.TYPE = TYPE; } @@ -517,14 +517,14 @@ public Egeo POSITION(Position POSITION) { * @return POSITION **/ @JsonProperty(JSON_PROPERTY_P_O_S_I_T_I_O_N) - @JsonInclude(value = JsonInclude.Include.ALWAYS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) public Position getPOSITION() { return POSITION; } @JsonProperty(JSON_PROPERTY_P_O_S_I_T_I_O_N) - @JsonInclude(value = JsonInclude.Include.ALWAYS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) public void setPOSITION(Position POSITION) { this.POSITION = POSITION; } diff --git a/src/main/java/com/hubsante/model/emsi/EmsiWrapper.java b/src/main/java/com/hubsante/model/emsi/EmsiWrapper.java index 5ff51b1e4..daf6e8546 100644 --- a/src/main/java/com/hubsante/model/emsi/EmsiWrapper.java +++ b/src/main/java/com/hubsante/model/emsi/EmsiWrapper.java @@ -34,8 +34,8 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.dataformat.xml.annotation.*; -import com.hubsante.model.common.DistributionElement; import com.hubsante.model.emsi.Emsi; +import com.hubsante.model.rcde.DistributionElement; import java.util.Arrays; import java.util.Arrays; import java.util.Objects; diff --git a/src/main/java/com/hubsante/model/emsi/Position.java b/src/main/java/com/hubsante/model/emsi/Position.java index 388e99df9..8ace34025 100644 --- a/src/main/java/com/hubsante/model/emsi/Position.java +++ b/src/main/java/com/hubsante/model/emsi/Position.java @@ -93,14 +93,14 @@ public Position LOC_ID(String LOC_ID) { * @return LOC_ID **/ @JsonProperty(JSON_PROPERTY_L_O_C_I_D) - @JsonInclude(value = JsonInclude.Include.ALWAYS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) public String getLOCID() { return LOC_ID; } @JsonProperty(JSON_PROPERTY_L_O_C_I_D) - @JsonInclude(value = JsonInclude.Include.ALWAYS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) public void setLOCID(String LOC_ID) { this.LOC_ID = LOC_ID; } diff --git a/src/main/java/com/hubsante/model/geolocation/GeoPositionUpdateWrapper.java b/src/main/java/com/hubsante/model/geolocation/GeoPositionUpdateWrapper.java index 293017568..9339d8062 100644 --- a/src/main/java/com/hubsante/model/geolocation/GeoPositionUpdateWrapper.java +++ b/src/main/java/com/hubsante/model/geolocation/GeoPositionUpdateWrapper.java @@ -34,8 +34,8 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.dataformat.xml.annotation.*; -import com.hubsante.model.common.DistributionElement; import com.hubsante.model.geolocation.GeoPositionUpdate; +import com.hubsante.model.rcde.DistributionElement; import java.util.Arrays; import java.util.Arrays; import java.util.Objects; diff --git a/src/main/java/com/hubsante/model/geolocation/GeoResourceDetailsWrapper.java b/src/main/java/com/hubsante/model/geolocation/GeoResourceDetailsWrapper.java index 7f99eff70..8b8a483ca 100644 --- a/src/main/java/com/hubsante/model/geolocation/GeoResourceDetailsWrapper.java +++ b/src/main/java/com/hubsante/model/geolocation/GeoResourceDetailsWrapper.java @@ -34,8 +34,8 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.dataformat.xml.annotation.*; -import com.hubsante.model.common.DistributionElement; import com.hubsante.model.geolocation.GeoResourceDetails; +import com.hubsante.model.rcde.DistributionElement; import java.util.Arrays; import java.util.Arrays; import java.util.Objects; diff --git a/src/main/java/com/hubsante/model/geolocation/GeoResourceRequestWrapper.java b/src/main/java/com/hubsante/model/geolocation/GeoResourceRequestWrapper.java index 9d88409ec..1aceeac1b 100644 --- a/src/main/java/com/hubsante/model/geolocation/GeoResourceRequestWrapper.java +++ b/src/main/java/com/hubsante/model/geolocation/GeoResourceRequestWrapper.java @@ -34,8 +34,8 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.dataformat.xml.annotation.*; -import com.hubsante.model.common.DistributionElement; import com.hubsante.model.geolocation.GeoResourceRequest; +import com.hubsante.model.rcde.DistributionElement; import java.util.Arrays; import java.util.Arrays; import java.util.Objects; diff --git a/src/main/java/com/hubsante/model/health/Alert.java b/src/main/java/com/hubsante/model/health/Alert.java index c0c378026..103fb5a68 100644 --- a/src/main/java/com/hubsante/model/health/Alert.java +++ b/src/main/java/com/hubsante/model/health/Alert.java @@ -37,9 +37,7 @@ import com.hubsante.model.health.Attachment; import com.hubsante.model.health.CallTaker; import com.hubsante.model.health.Caller; -import com.hubsante.model.health.ContactSource; -import com.hubsante.model.health.Location; -import com.hubsante.model.health.Qualification; +import com.hubsante.model.health.Notes; import java.time.OffsetDateTime; import java.util.ArrayList; import java.util.Arrays; @@ -50,12 +48,10 @@ /** * Alert */ -@JsonPropertyOrder( - {Alert.JSON_PROPERTY_ID, Alert.JSON_PROPERTY_RECEPTION, - Alert.JSON_PROPERTY_REPORTING, Alert.JSON_PROPERTY_FREETEXT, - Alert.JSON_PROPERTY_CALLER, Alert.JSON_PROPERTY_ALERT_SOURCE, - Alert.JSON_PROPERTY_LOCATION, Alert.JSON_PROPERTY_QUALIFICATION, - Alert.JSON_PROPERTY_CALL_TAKER, Alert.JSON_PROPERTY_ATTACHMENT}) +@JsonPropertyOrder({Alert.JSON_PROPERTY_ID, Alert.JSON_PROPERTY_RECEPTION, + Alert.JSON_PROPERTY_REPORTING, Alert.JSON_PROPERTY_NOTES, + Alert.JSON_PROPERTY_CALLER, Alert.JSON_PROPERTY_CALL_TAKER, + Alert.JSON_PROPERTY_ATTACHMENT}) @JsonTypeName("alert") @JsonInclude(JsonInclude.Include.NON_EMPTY) @@ -107,21 +103,12 @@ public static ReportingEnum fromValue(String value) { public static final String JSON_PROPERTY_REPORTING = "reporting"; private ReportingEnum reporting; - public static final String JSON_PROPERTY_FREETEXT = "freetext"; - private String freetext; + public static final String JSON_PROPERTY_NOTES = "notes"; + private List notes; public static final String JSON_PROPERTY_CALLER = "caller"; private Caller caller; - public static final String JSON_PROPERTY_ALERT_SOURCE = "alertSource"; - private ContactSource alertSource; - - public static final String JSON_PROPERTY_LOCATION = "location"; - private Location location; - - public static final String JSON_PROPERTY_QUALIFICATION = "qualification"; - private Qualification qualification; - public static final String JSON_PROPERTY_CALL_TAKER = "callTaker"; private CallTaker callTaker; @@ -218,28 +205,43 @@ public void setReporting(ReportingEnum reporting) { this.reporting = reporting; } - public Alert freetext(String freetext) { + public Alert notes(List notes) { - this.freetext = freetext; + this.notes = notes; + return this; + } + + public Alert addNotesItem(Notes notesItem) { + if (this.notes == null) { + this.notes = new ArrayList<>(); + } + this.notes.add(notesItem); return this; } /** - * Texte libre permettant de donner des informations supplémentaires - *concernant l'alerte. - * @return freetext + * Get notes + * @return notes **/ - @JsonProperty(JSON_PROPERTY_FREETEXT) + @JsonProperty(JSON_PROPERTY_NOTES) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getFreetext() { - return freetext; + public List getNotes() { + return notes; } - @JsonProperty(JSON_PROPERTY_FREETEXT) + @JacksonXmlElementWrapper(useWrapping = false) + + @JsonProperty(JSON_PROPERTY_NOTES) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFreetext(String freetext) { - this.freetext = freetext; + public void setNotes(List notes) { + if (notes == null) { + return; + } + if (this.notes == null) { + this.notes = new ArrayList<>(); + } + this.notes.addAll(notes); } public Alert caller(Caller caller) { @@ -265,75 +267,6 @@ public void setCaller(Caller caller) { this.caller = caller; } - public Alert alertSource(ContactSource alertSource) { - - this.alertSource = alertSource; - return this; - } - - /** - * Get alertSource - * @return alertSource - **/ - @JsonProperty(JSON_PROPERTY_ALERT_SOURCE) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public ContactSource getAlertSource() { - return alertSource; - } - - @JsonProperty(JSON_PROPERTY_ALERT_SOURCE) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setAlertSource(ContactSource alertSource) { - this.alertSource = alertSource; - } - - public Alert location(Location location) { - - this.location = location; - return this; - } - - /** - * Get location - * @return location - **/ - @JsonProperty(JSON_PROPERTY_LOCATION) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public Location getLocation() { - return location; - } - - @JsonProperty(JSON_PROPERTY_LOCATION) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setLocation(Location location) { - this.location = location; - } - - public Alert qualification(Qualification qualification) { - - this.qualification = qualification; - return this; - } - - /** - * Get qualification - * @return qualification - **/ - @JsonProperty(JSON_PROPERTY_QUALIFICATION) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public Qualification getQualification() { - return qualification; - } - - @JsonProperty(JSON_PROPERTY_QUALIFICATION) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setQualification(Qualification qualification) { - this.qualification = qualification; - } - public Alert callTaker(CallTaker callTaker) { this.callTaker = callTaker; @@ -408,19 +341,16 @@ public boolean equals(Object o) { return Objects.equals(this.id, alert.id) && Objects.equals(this.reception, alert.reception) && Objects.equals(this.reporting, alert.reporting) && - Objects.equals(this.freetext, alert.freetext) && + Objects.equals(this.notes, alert.notes) && Objects.equals(this.caller, alert.caller) && - Objects.equals(this.alertSource, alert.alertSource) && - Objects.equals(this.location, alert.location) && - Objects.equals(this.qualification, alert.qualification) && Objects.equals(this.callTaker, alert.callTaker) && Objects.equals(this.attachment, alert.attachment); } @Override public int hashCode() { - return Objects.hash(id, reception, reporting, freetext, caller, alertSource, - location, qualification, callTaker, attachment); + return Objects.hash(id, reception, reporting, notes, caller, callTaker, + attachment); } @Override @@ -434,15 +364,8 @@ public String toString() { sb.append(" reporting: ") .append(toIndentedString(reporting)) .append("\n"); - sb.append(" freetext: ").append(toIndentedString(freetext)).append("\n"); + sb.append(" notes: ").append(toIndentedString(notes)).append("\n"); sb.append(" caller: ").append(toIndentedString(caller)).append("\n"); - sb.append(" alertSource: ") - .append(toIndentedString(alertSource)) - .append("\n"); - sb.append(" location: ").append(toIndentedString(location)).append("\n"); - sb.append(" qualification: ") - .append(toIndentedString(qualification)) - .append("\n"); sb.append(" callTaker: ") .append(toIndentedString(callTaker)) .append("\n"); diff --git a/src/main/java/com/hubsante/model/health/Caller.java b/src/main/java/com/hubsante/model/health/Caller.java index 9dfc1c32e..20475750b 100644 --- a/src/main/java/com/hubsante/model/health/Caller.java +++ b/src/main/java/com/hubsante/model/health/Caller.java @@ -573,11 +573,130 @@ public static LanguageEnum fromValue(String value) { public static final String JSON_PROPERTY_LANGUAGE = "language"; private LanguageEnum language; + /** + * Indique la relation du requérant avec l'incident / le patient / la + * victime + */ + public enum TypeEnum { + SUJET("SUJET"), + + FAMILLE("FAMILLE"), + + TIERS("TIERS"), + + POMPIER("POMPIER"), + + AMBULANC("AMBULANC"), + + SECOUR("SECOUR"), + + MED("MED"), + + MEDSOS("MEDSOS"), + + MRL("MRL"), + + EFFML("EFFML"), + + SANTE("SANTE"), + + INF("INF"), + + AIDESOIN("AIDESOIN"), + + SF("SF"), + + AIDEDOM("AIDEDOM"), + + FDO_MILI("FDO-MILI"), + + ADM_TUTL("ADM-TUTL"), + + VIP("VIP"), + + OBJCONNC("OBJCONNC"), + + AUTRE("AUTRE"), + + INCONNU("INCONNU"); + + 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 String type; + private TypeEnum type; + + /** + * Indique si le requérant rencontre ou non des difficulté de communication + */ + public enum CommunicationEnum { + AUCUNE("AUCUNE"), + + MUET("MUET"), + + VISION("VISION"), + + LANGUE("LANGUE"), + + PANIQUE("PANIQUE"), + + HOSTILE("HOSTILE"), + + AGITE("AGITE"), + + AUTRE("AUTRE"), + + IMPOSS("IMPOSS"); + + private String value; + + CommunicationEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static CommunicationEnum fromValue(String value) { + for (CommunicationEnum b : CommunicationEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } public static final String JSON_PROPERTY_COMMUNICATION = "communication"; - private String communication; + private CommunicationEnum communication; public static final String JSON_PROPERTY_FREETEXT = "freetext"; private String freetext; @@ -598,14 +717,14 @@ public Caller callerContact(Contact callerContact) { * @return callerContact **/ @JsonProperty(JSON_PROPERTY_CALLER_CONTACT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Contact getCallerContact() { return callerContact; } @JsonProperty(JSON_PROPERTY_CALLER_CONTACT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setCallerContact(Contact callerContact) { this.callerContact = callerContact; } @@ -657,7 +776,7 @@ public void setLanguage(LanguageEnum language) { this.language = language; } - public Caller type(String type) { + public Caller type(TypeEnum type) { this.type = type; return this; @@ -671,17 +790,17 @@ public Caller type(String type) { @JsonProperty(JSON_PROPERTY_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getType() { + public TypeEnum getType() { return type; } @JsonProperty(JSON_PROPERTY_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setType(String type) { + public void setType(TypeEnum type) { this.type = type; } - public Caller communication(String communication) { + public Caller communication(CommunicationEnum communication) { this.communication = communication; return this; @@ -694,13 +813,13 @@ public Caller communication(String communication) { @JsonProperty(JSON_PROPERTY_COMMUNICATION) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getCommunication() { + public CommunicationEnum getCommunication() { return communication; } @JsonProperty(JSON_PROPERTY_COMMUNICATION) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setCommunication(String communication) { + public void setCommunication(CommunicationEnum communication) { this.communication = communication; } diff --git a/src/main/java/com/hubsante/model/health/CaseDetails.java b/src/main/java/com/hubsante/model/health/CaseDetails.java index b0455574f..90c726ad7 100644 --- a/src/main/java/com/hubsante/model/health/CaseDetails.java +++ b/src/main/java/com/hubsante/model/health/CaseDetails.java @@ -105,7 +105,7 @@ public enum TypeEnum { DR("DR"), - DRM_NOMENC_TYPEDOS("DRM NOMENC_TYPEDOS"); + DRM("DRM"); private String value; @@ -135,11 +135,152 @@ public static TypeEnum fromValue(String value) { public static final String JSON_PROPERTY_TYPE = "type"; private TypeEnum type; + /** + * Décrit le type de professionnel médical à qui le dossier est attribué : + * Médecin généraliste, médecin urgentiste etc. + */ + public enum AttributionEnum { + DRM("DRM"), + + DRMMRU("DRMMRU"), + + MU("MU"), + + DENT("DENT"), + + GERIA("GERIA"), + + PEDIA("PEDIA"), + + PSY("PSY"), + + TOXICOL("TOXICOL"), + + INDISPMU("INDISPMU"), + + SSE("SSE"), + + PLANBLAN("PLANBLAN"), + + PCSAMU("PCSAMU"), + + DRMMRL("DRMMRL"), + + MG("MG"), + + INDISPMG("INDISPMG"), + + ABSML("ABSML"), + + DR("DR"), + + DREG("DREG"), + + DRARM("DRARM"), + + DRMED("DRMED"), + + DRPHARMA("DRPHARMA"), + + DRDENT("DRDENT"), + + DRINFO("DRINFO"), + + DOS_SIS("DOS-SIS"), + + DOS_FDO("DOS-FDO"), + + D("D"), + + D_MALV("D-MALV"), + + ERR("ERR"), + + NRP("NRP"), + + MALV("MALV"), + + FAX("FAX"), + + ITERATIF("ITERATIF"), + + D_IDENT("D-IDENT"), + + ADMIN("ADMIN"), + + PERSO("PERSO"), + + AUTRE("AUTRE"); + + private String value; + + AttributionEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static AttributionEnum fromValue(String value) { + for (AttributionEnum b : AttributionEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + public static final String JSON_PROPERTY_ATTRIBUTION = "attribution"; - private String attribution; + private AttributionEnum attribution; + + /** + * Décrit la priorité de régulation médicale du dossier : P0, P1, P2, P3 + */ + public enum PriorityEnum { + P0("P0"), + + P1("P1"), + + P2("P2"), + + P3("P3"), + + NR("NR"); + + private String value; + + PriorityEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static PriorityEnum fromValue(String value) { + for (PriorityEnum b : PriorityEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } public static final String JSON_PROPERTY_PRIORITY = "priority"; - private String priority; + private PriorityEnum priority; public CaseDetails() {} @@ -191,7 +332,7 @@ public void setType(TypeEnum type) { this.type = type; } - public CaseDetails attribution(String attribution) { + public CaseDetails attribution(AttributionEnum attribution) { this.attribution = attribution; return this; @@ -205,17 +346,17 @@ public CaseDetails attribution(String attribution) { @JsonProperty(JSON_PROPERTY_ATTRIBUTION) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getAttribution() { + public AttributionEnum getAttribution() { return attribution; } @JsonProperty(JSON_PROPERTY_ATTRIBUTION) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setAttribution(String attribution) { + public void setAttribution(AttributionEnum attribution) { this.attribution = attribution; } - public CaseDetails priority(String priority) { + public CaseDetails priority(PriorityEnum priority) { this.priority = priority; return this; @@ -228,13 +369,13 @@ public CaseDetails priority(String priority) { @JsonProperty(JSON_PROPERTY_PRIORITY) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getPriority() { + public PriorityEnum getPriority() { return priority; } @JsonProperty(JSON_PROPERTY_PRIORITY) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setPriority(String priority) { + public void setPriority(PriorityEnum priority) { this.priority = priority; } diff --git a/src/main/java/com/hubsante/model/health/City.java b/src/main/java/com/hubsante/model/health/City.java index 2a1c9f856..4d5cfbfac 100644 --- a/src/main/java/com/hubsante/model/health/City.java +++ b/src/main/java/com/hubsante/model/health/City.java @@ -116,7 +116,7 @@ public City detail(String detail) { *ancienne commune, … ou autre information aidant à préciser l'adresse et *notamment gérer les cas de communes fusionnées pour le système émetteur NB : *dans tous les cas, la localisation GPS de la commune doit être fournie afin - *d'éviter une trop forte ambiguïté + *d'éviter une trop forte ambiguïté. * @return detail **/ @JsonProperty(JSON_PROPERTY_DETAIL) diff --git a/src/main/java/com/hubsante/model/health/Contact.java b/src/main/java/com/hubsante/model/health/Contact.java index 27eef0273..1080ab531 100644 --- a/src/main/java/com/hubsante/model/health/Contact.java +++ b/src/main/java/com/hubsante/model/health/Contact.java @@ -41,11 +41,14 @@ /** * Contact */ -@JsonPropertyOrder({Contact.JSON_PROPERTY_TYPE, Contact.JSON_PROPERTY_DETAIL}) +@JsonPropertyOrder({Contact.JSON_PROPERTY_CHANNEL, Contact.JSON_PROPERTY_TYPE, + Contact.JSON_PROPERTY_DETAIL}) @JsonTypeName("contact") @JsonInclude(JsonInclude.Include.NON_EMPTY) public class Contact { + public static final String JSON_PROPERTY_CHANNEL = "channel"; + private String channel; /** * Type de l'URI utilisée par le requérant, cf. nomenclature EMSI @@ -100,6 +103,30 @@ public static TypeEnum fromValue(String value) { public Contact() {} + public Contact channel(String channel) { + + this.channel = channel; + return this; + } + + /** + * Permet d'indiquer l'origine du canal établit : Personne, + *application, DAU, BAU, défibrillateur, ecall + * @return channel + **/ + @JsonProperty(JSON_PROPERTY_CHANNEL) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public String getChannel() { + return channel; + } + + @JsonProperty(JSON_PROPERTY_CHANNEL) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setChannel(String channel) { + this.channel = channel; + } + public Contact type(TypeEnum type) { this.type = type; @@ -155,19 +182,21 @@ public boolean equals(Object o) { return false; } Contact contact = (Contact)o; - return Objects.equals(this.type, contact.type) && + return Objects.equals(this.channel, contact.channel) && + Objects.equals(this.type, contact.type) && Objects.equals(this.detail, contact.detail); } @Override public int hashCode() { - return Objects.hash(type, detail); + return Objects.hash(channel, type, detail); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Contact {\n"); + sb.append(" channel: ").append(toIndentedString(channel)).append("\n"); sb.append(" type: ").append(toIndentedString(type)).append("\n"); sb.append(" detail: ").append(toIndentedString(detail)).append("\n"); sb.append("}"); diff --git a/src/main/java/com/hubsante/model/health/ContactSource.java b/src/main/java/com/hubsante/model/health/ContactSource.java deleted file mode 100644 index d8e1202f8..000000000 --- a/src/main/java/com/hubsante/model/health/ContactSource.java +++ /dev/null @@ -1,217 +0,0 @@ -/** - * Copyright © 2023-2024 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.health; - -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; - -/** - * ContactSource - */ -@JsonPropertyOrder({ContactSource.JSON_PROPERTY_CHANNEL, - ContactSource.JSON_PROPERTY_TYPE, - ContactSource.JSON_PROPERTY_DETAIL}) -@JsonTypeName("contactSource") -@JsonInclude(JsonInclude.Include.NON_EMPTY) - -public class ContactSource { - public static final String JSON_PROPERTY_CHANNEL = "channel"; - private String channel; - - /** - * Type de l'URI utilisée par la source, cf. nomenclature EMSI - */ - public enum TypeEnum { - PSTADD("PSTADD"), - - EMLADD("EMLADD"), - - IPADD("IPADD"), - - FTPADD("FTPADD"), - - WWWADD("WWWADD"), - - PHNADD("PHNADD"), - - FAXADD("FAXADD"), - - PMRADD("PMRADD"); - - 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_DETAIL = "detail"; - private String detail; - - public ContactSource() {} - - public ContactSource channel(String channel) { - - this.channel = channel; - return this; - } - - /** - * Permet d'indiquer l'origine du canal établit : Personne, - *application, DAU, BAU, défibrillateur, ecall - * @return channel - **/ - @JsonProperty(JSON_PROPERTY_CHANNEL) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getChannel() { - return channel; - } - - @JsonProperty(JSON_PROPERTY_CHANNEL) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setChannel(String channel) { - this.channel = channel; - } - - public ContactSource type(TypeEnum type) { - - this.type = type; - return this; - } - - /** - * Type de l'URI utilisée par la source, cf. nomenclature EMSI - * @return type - **/ - @JsonProperty(JSON_PROPERTY_TYPE) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public TypeEnum getType() { - return type; - } - - @JsonProperty(JSON_PROPERTY_TYPE) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setType(TypeEnum type) { - this.type = type; - } - - public ContactSource detail(String detail) { - - this.detail = detail; - return this; - } - - /** - * Valeur de l'URI utilisée par la source - * @return detail - **/ - @JsonProperty(JSON_PROPERTY_DETAIL) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getDetail() { - return detail; - } - - @JsonProperty(JSON_PROPERTY_DETAIL) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setDetail(String detail) { - this.detail = detail; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - ContactSource contactSource = (ContactSource)o; - return Objects.equals(this.channel, contactSource.channel) && - Objects.equals(this.type, contactSource.type) && - Objects.equals(this.detail, contactSource.detail); - } - - @Override - public int hashCode() { - return Objects.hash(channel, type, detail); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class ContactSource {\n"); - sb.append(" channel: ").append(toIndentedString(channel)).append("\n"); - sb.append(" type: ").append(toIndentedString(type)).append("\n"); - sb.append(" detail: ").append(toIndentedString(detail)).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/health/CreateCaseHealth.java b/src/main/java/com/hubsante/model/health/CreateCaseHealth.java index a5aff9475..c79c789d9 100644 --- a/src/main/java/com/hubsante/model/health/CreateCaseHealth.java +++ b/src/main/java/com/hubsante/model/health/CreateCaseHealth.java @@ -39,7 +39,6 @@ import com.hubsante.model.health.Decision; import com.hubsante.model.health.Location; import com.hubsante.model.health.MedicalNote; -import com.hubsante.model.health.Operator; import com.hubsante.model.health.Patient; import com.hubsante.model.health.Qualification; import java.time.OffsetDateTime; @@ -56,11 +55,12 @@ CreateCaseHealth.JSON_PROPERTY_SENDER_CASE_ID, CreateCaseHealth.JSON_PROPERTY_CREATION, CreateCaseHealth.JSON_PROPERTY_REFERENCE_VERSION, + CreateCaseHealth.JSON_PROPERTY_PERIMETER, + CreateCaseHealth.JSON_PROPERTY_INTERVENTION_TYPE, CreateCaseHealth.JSON_PROPERTY_QUALIFICATION, CreateCaseHealth.JSON_PROPERTY_LOCATION, CreateCaseHealth.JSON_PROPERTY_INITIAL_ALERT, CreateCaseHealth.JSON_PROPERTY_OWNER, - CreateCaseHealth.JSON_PROPERTY_OPERATOR, CreateCaseHealth.JSON_PROPERTY_PATIENT, CreateCaseHealth.JSON_PROPERTY_MEDICAL_NOTE, CreateCaseHealth.JSON_PROPERTY_DECISION, @@ -86,6 +86,83 @@ public class CreateCaseHealth { "referenceVersion"; private String referenceVersion; + /** + * Sert à indiquer à quelle filière du CRRA le dossier doit être + * adressé/affiché + */ + public enum PerimeterEnum { + AMU("AMU"), + + SNP("SNP"), + + NEONAT("NEONAT"); + + private String value; + + PerimeterEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static PerimeterEnum fromValue(String value) { + for (PerimeterEnum b : PerimeterEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + + public static final String JSON_PROPERTY_PERIMETER = "perimeter"; + private PerimeterEnum perimeter; + + /** + * Indiquer s'il s'agit d'un dossier dit primaire (première + * intervention urgente) ou secondaire (par exemple TIH) + */ + public enum InterventionTypeEnum { + PRIMAIRE("Primaire"), + + SECONDAIRE("Secondaire"); + + private String value; + + InterventionTypeEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static InterventionTypeEnum fromValue(String value) { + for (InterventionTypeEnum b : InterventionTypeEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + + public static final String JSON_PROPERTY_INTERVENTION_TYPE = + "interventionType"; + private InterventionTypeEnum interventionType; + public static final String JSON_PROPERTY_QUALIFICATION = "qualification"; private Qualification qualification; @@ -98,9 +175,6 @@ public class CreateCaseHealth { public static final String JSON_PROPERTY_OWNER = "owner"; private String owner; - public static final String JSON_PROPERTY_OPERATOR = "operator"; - private List operator; - public static final String JSON_PROPERTY_PATIENT = "patient"; private List patient; @@ -118,7 +192,7 @@ public class CreateCaseHealth { private AdditionalInformation additionalInformation; public static final String JSON_PROPERTY_FREETEXT = "freetext"; - private String freetext; + private List freetext; public CreateCaseHealth() {} @@ -227,6 +301,55 @@ public void setReferenceVersion(String referenceVersion) { this.referenceVersion = referenceVersion; } + public CreateCaseHealth perimeter(PerimeterEnum perimeter) { + + this.perimeter = perimeter; + return this; + } + + /** + * Sert à indiquer à quelle filière du CRRA le dossier doit être + *adressé/affiché + * @return perimeter + **/ + @JsonProperty(JSON_PROPERTY_PERIMETER) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public PerimeterEnum getPerimeter() { + return perimeter; + } + + @JsonProperty(JSON_PROPERTY_PERIMETER) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setPerimeter(PerimeterEnum perimeter) { + this.perimeter = perimeter; + } + + public CreateCaseHealth + interventionType(InterventionTypeEnum interventionType) { + + this.interventionType = interventionType; + return this; + } + + /** + * Indiquer s'il s'agit d'un dossier dit primaire (première + *intervention urgente) ou secondaire (par exemple TIH) + * @return interventionType + **/ + @JsonProperty(JSON_PROPERTY_INTERVENTION_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public InterventionTypeEnum getInterventionType() { + return interventionType; + } + + @JsonProperty(JSON_PROPERTY_INTERVENTION_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setInterventionType(InterventionTypeEnum interventionType) { + this.interventionType = interventionType; + } + public CreateCaseHealth qualification(Qualification qualification) { this.qualification = qualification; @@ -303,16 +426,8 @@ public CreateCaseHealth owner(String owner) { } /** - * Champ servant à transférer la responsabilité du traitement d'un dossier - *à un autre CRAA / à lui demander de prendre en charge le traitement du - *dossier. Le SAMU demandeur entre dans ce champ l'ID du CRAA à qui il - *demande de traiter l'affaire (uniquement en cas de transfert intégral du - *traitement d'un dossier). Le SAMU qui reçoit la demande de transfert et - *l'accepte renvoie un RC-EDA de mise à jour en laissant son ID dans ce - *champ + en ajoutant l'ID local du dossier chez lui dans le message. Le - *SAMU qui reçoit la demande de transfert et la refuse renvoie un RC-EDA de - *mise à jour en remettant l'ID du SAMU demandeur dans ce champ + il - *envoie l'ID local du dossier chez lui. + * Champ servant à transférer la prise en charge d'un dossier à un autre + *CRAA après accord verbal de ce dernier. * @return owner **/ @JsonProperty(JSON_PROPERTY_OWNER) @@ -328,45 +443,6 @@ public void setOwner(String owner) { this.owner = owner; } - public CreateCaseHealth operator(List operator) { - - this.operator = operator; - return this; - } - - public CreateCaseHealth addOperatorItem(Operator operatorItem) { - if (this.operator == null) { - this.operator = new ArrayList<>(); - } - this.operator.add(operatorItem); - return this; - } - - /** - * Get operator - * @return operator - **/ - @JsonProperty(JSON_PROPERTY_OPERATOR) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public List getOperator() { - return operator; - } - - @JacksonXmlElementWrapper(useWrapping = false) - - @JsonProperty(JSON_PROPERTY_OPERATOR) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setOperator(List operator) { - if (operator == null) { - return; - } - if (this.operator == null) { - this.operator = new ArrayList<>(); - } - this.operator.addAll(operator); - } - public CreateCaseHealth patient(List patient) { this.patient = patient; @@ -548,28 +624,43 @@ public AdditionalInformation getAdditionalInformation() { this.additionalInformation = additionalInformation; } - public CreateCaseHealth freetext(String freetext) { + public CreateCaseHealth freetext(List freetext) { this.freetext = freetext; return this; } + public CreateCaseHealth addFreetextItem(String freetextItem) { + if (this.freetext == null) { + this.freetext = new ArrayList<>(); + } + this.freetext.add(freetextItem); + return this; + } + /** - * Texte libre permettant de donner des informations supplémentaires - *concernant l'affaire + * Get freetext * @return freetext **/ @JsonProperty(JSON_PROPERTY_FREETEXT) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getFreetext() { + public List getFreetext() { return freetext; } + @JacksonXmlElementWrapper(useWrapping = false) + @JsonProperty(JSON_PROPERTY_FREETEXT) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFreetext(String freetext) { - this.freetext = freetext; + public void setFreetext(List freetext) { + if (freetext == null) { + return; + } + if (this.freetext == null) { + this.freetext = new ArrayList<>(); + } + this.freetext.addAll(freetext); } @Override @@ -586,11 +677,13 @@ public boolean equals(Object o) { Objects.equals(this.creation, createCaseHealth.creation) && Objects.equals(this.referenceVersion, createCaseHealth.referenceVersion) && + Objects.equals(this.perimeter, createCaseHealth.perimeter) && + Objects.equals(this.interventionType, + createCaseHealth.interventionType) && Objects.equals(this.qualification, createCaseHealth.qualification) && Objects.equals(this.location, createCaseHealth.location) && Objects.equals(this.initialAlert, createCaseHealth.initialAlert) && Objects.equals(this.owner, createCaseHealth.owner) && - Objects.equals(this.operator, createCaseHealth.operator) && Objects.equals(this.patient, createCaseHealth.patient) && Objects.equals(this.medicalNote, createCaseHealth.medicalNote) && Objects.equals(this.decision, createCaseHealth.decision) && @@ -603,9 +696,9 @@ public boolean equals(Object o) { @Override public int hashCode() { return Objects.hash(caseId, senderCaseId, creation, referenceVersion, - qualification, location, initialAlert, owner, operator, - patient, medicalNote, decision, newAlert, - additionalInformation, freetext); + perimeter, interventionType, qualification, location, + initialAlert, owner, patient, medicalNote, decision, + newAlert, additionalInformation, freetext); } @Override @@ -620,6 +713,12 @@ public String toString() { sb.append(" referenceVersion: ") .append(toIndentedString(referenceVersion)) .append("\n"); + sb.append(" perimeter: ") + .append(toIndentedString(perimeter)) + .append("\n"); + sb.append(" interventionType: ") + .append(toIndentedString(interventionType)) + .append("\n"); sb.append(" qualification: ") .append(toIndentedString(qualification)) .append("\n"); @@ -628,7 +727,6 @@ public String toString() { .append(toIndentedString(initialAlert)) .append("\n"); sb.append(" owner: ").append(toIndentedString(owner)).append("\n"); - sb.append(" operator: ").append(toIndentedString(operator)).append("\n"); sb.append(" patient: ").append(toIndentedString(patient)).append("\n"); sb.append(" medicalNote: ") .append(toIndentedString(medicalNote)) diff --git a/src/main/java/com/hubsante/model/health/CreateCaseHealthWrapper.java b/src/main/java/com/hubsante/model/health/CreateCaseHealthWrapper.java index 41c6cde83..2f7a2147b 100644 --- a/src/main/java/com/hubsante/model/health/CreateCaseHealthWrapper.java +++ b/src/main/java/com/hubsante/model/health/CreateCaseHealthWrapper.java @@ -34,8 +34,8 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.dataformat.xml.annotation.*; -import com.hubsante.model.common.DistributionElement; import com.hubsante.model.health.CreateCaseHealth; +import com.hubsante.model.rcde.DistributionElement; import java.util.Arrays; import java.util.Arrays; import java.util.Objects; diff --git a/src/main/java/com/hubsante/model/health/Decision.java b/src/main/java/com/hubsante/model/health/Decision.java index 0cc5afc70..34c3dd529 100644 --- a/src/main/java/com/hubsante/model/health/Decision.java +++ b/src/main/java/com/hubsante/model/health/Decision.java @@ -34,22 +34,20 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.dataformat.xml.annotation.*; -import com.hubsante.model.health.Destination; +import com.hubsante.model.health.EngagementDetails; +import com.hubsante.model.health.TransportDetails; import java.time.OffsetDateTime; -import java.util.ArrayList; import java.util.Arrays; import java.util.Arrays; -import java.util.List; import java.util.Objects; /** * Decision */ -@JsonPropertyOrder( - {Decision.JSON_PROPERTY_ID, Decision.JSON_PROPERTY_CREATION, - Decision.JSON_PROPERTY_TYPE, Decision.JSON_PROPERTY_ORIENTATION, - Decision.JSON_PROPERTY_TRANSPORTATION, Decision.JSON_PROPERTY_TEAM_CARE, - Decision.JSON_PROPERTY_DESTINATION}) +@JsonPropertyOrder({Decision.JSON_PROPERTY_ID, Decision.JSON_PROPERTY_CREATION, + Decision.JSON_PROPERTY_TYPE, + Decision.JSON_PROPERTY_ENGAGEMENT_DETAILS, + Decision.JSON_PROPERTY_TRANSPORT_DETAILS}) @JsonTypeName("decision") @JsonInclude(JsonInclude.Include.NON_EMPTY) @@ -60,20 +58,55 @@ public class Decision { public static final String JSON_PROPERTY_CREATION = "creation"; private OffsetDateTime creation; - public static final String JSON_PROPERTY_TYPE = "type"; - private String type; + /** + * Type de décision prise + */ + public enum TypeEnum { + CONSEIL("CONSEIL"), + + PMT("PMT"), + + INTER("INTER"), + + ORIENT("ORIENT"), + + PASPLUS("PASPLUS"); + + private String value; + + TypeEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } - public static final String JSON_PROPERTY_ORIENTATION = "orientation"; - private String orientation; + @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_TRANSPORTATION = "transportation"; - private List transportation; + public static final String JSON_PROPERTY_TYPE = "type"; + private TypeEnum type; - public static final String JSON_PROPERTY_TEAM_CARE = "teamCare"; - private String teamCare; + public static final String JSON_PROPERTY_ENGAGEMENT_DETAILS = + "engagementDetails"; + private EngagementDetails engagementDetails; - public static final String JSON_PROPERTY_DESTINATION = "destination"; - private Destination destination; + public static final String JSON_PROPERTY_TRANSPORT_DETAILS = + "transportDetails"; + private TransportDetails transportDetails; public Decision() {} @@ -84,7 +117,8 @@ public Decision id(String id) { } /** - * ID partagé du patient concerné, lorsque le patient existe et est identifié + * ID partagé du patient concerné par la décision, lorsque le patient existe + *et est identifié * @return id **/ @JsonProperty(JSON_PROPERTY_ID) @@ -124,7 +158,7 @@ public void setCreation(OffsetDateTime creation) { this.creation = creation; } - public Decision type(String type) { + public Decision type(TypeEnum type) { this.type = type; return this; @@ -135,125 +169,62 @@ public Decision type(String type) { * @return type **/ @JsonProperty(JSON_PROPERTY_TYPE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) - public String getType() { + public TypeEnum getType() { return type; } @JsonProperty(JSON_PROPERTY_TYPE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setType(String type) { + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setType(TypeEnum type) { this.type = type; } - public Decision orientation(String orientation) { + public Decision engagementDetails(EngagementDetails engagementDetails) { - this.orientation = orientation; + this.engagementDetails = engagementDetails; return this; } /** - * Décision(s) d'orientation prise par le médecin régulateur - * @return orientation + * Get engagementDetails + * @return engagementDetails **/ - @JsonProperty(JSON_PROPERTY_ORIENTATION) + @JsonProperty(JSON_PROPERTY_ENGAGEMENT_DETAILS) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getOrientation() { - return orientation; + public EngagementDetails getEngagementDetails() { + return engagementDetails; } - @JsonProperty(JSON_PROPERTY_ORIENTATION) + @JsonProperty(JSON_PROPERTY_ENGAGEMENT_DETAILS) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setOrientation(String orientation) { - this.orientation = orientation; + public void setEngagementDetails(EngagementDetails engagementDetails) { + this.engagementDetails = engagementDetails; } - public Decision transportation(List transportation) { + public Decision transportDetails(TransportDetails transportDetails) { - this.transportation = transportation; - return this; - } - - public Decision addTransportationItem(String transportationItem) { - if (this.transportation == null) { - this.transportation = new ArrayList<>(); - } - this.transportation.add(transportationItem); + this.transportDetails = transportDetails; return this; } /** - * Get transportation - * @return transportation + * Get transportDetails + * @return transportDetails **/ - @JsonProperty(JSON_PROPERTY_TRANSPORTATION) + @JsonProperty(JSON_PROPERTY_TRANSPORT_DETAILS) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public List getTransportation() { - return transportation; + public TransportDetails getTransportDetails() { + return transportDetails; } - @JacksonXmlElementWrapper(useWrapping = false) - - @JsonProperty(JSON_PROPERTY_TRANSPORTATION) + @JsonProperty(JSON_PROPERTY_TRANSPORT_DETAILS) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setTransportation(List transportation) { - if (transportation == null) { - return; - } - if (this.transportation == null) { - this.transportation = new ArrayList<>(); - } - this.transportation.addAll(transportation); - } - - public Decision teamCare(String teamCare) { - - this.teamCare = teamCare; - return this; - } - - /** - * Type d’équipe (médical, paramédicale, non médicale, standard, incomplete, - *...) - * @return teamCare - **/ - @JsonProperty(JSON_PROPERTY_TEAM_CARE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getTeamCare() { - return teamCare; - } - - @JsonProperty(JSON_PROPERTY_TEAM_CARE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setTeamCare(String teamCare) { - this.teamCare = teamCare; - } - - public Decision destination(Destination destination) { - - this.destination = destination; - return this; - } - - /** - * Get destination - * @return destination - **/ - @JsonProperty(JSON_PROPERTY_DESTINATION) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public Destination getDestination() { - return destination; - } - - @JsonProperty(JSON_PROPERTY_DESTINATION) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setDestination(Destination destination) { - this.destination = destination; + public void setTransportDetails(TransportDetails transportDetails) { + this.transportDetails = transportDetails; } @Override @@ -268,16 +239,14 @@ public boolean equals(Object o) { return Objects.equals(this.id, decision.id) && Objects.equals(this.creation, decision.creation) && Objects.equals(this.type, decision.type) && - Objects.equals(this.orientation, decision.orientation) && - Objects.equals(this.transportation, decision.transportation) && - Objects.equals(this.teamCare, decision.teamCare) && - Objects.equals(this.destination, decision.destination); + Objects.equals(this.engagementDetails, decision.engagementDetails) && + Objects.equals(this.transportDetails, decision.transportDetails); } @Override public int hashCode() { - return Objects.hash(id, creation, type, orientation, transportation, - teamCare, destination); + return Objects.hash(id, creation, type, engagementDetails, + transportDetails); } @Override @@ -287,15 +256,11 @@ public String toString() { sb.append(" id: ").append(toIndentedString(id)).append("\n"); sb.append(" creation: ").append(toIndentedString(creation)).append("\n"); sb.append(" type: ").append(toIndentedString(type)).append("\n"); - sb.append(" orientation: ") - .append(toIndentedString(orientation)) - .append("\n"); - sb.append(" transportation: ") - .append(toIndentedString(transportation)) + sb.append(" engagementDetails: ") + .append(toIndentedString(engagementDetails)) .append("\n"); - sb.append(" teamCare: ").append(toIndentedString(teamCare)).append("\n"); - sb.append(" destination: ") - .append(toIndentedString(destination)) + sb.append(" transportDetails: ") + .append(toIndentedString(transportDetails)) .append("\n"); sb.append("}"); return sb.toString(); diff --git a/src/main/java/com/hubsante/model/health/Destination.java b/src/main/java/com/hubsante/model/health/Destination.java index 2554510fe..d5dbceca5 100644 --- a/src/main/java/com/hubsante/model/health/Destination.java +++ b/src/main/java/com/hubsante/model/health/Destination.java @@ -34,6 +34,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.dataformat.xml.annotation.*; +import com.hubsante.model.health.Location; import java.util.Arrays; import java.util.Arrays; import java.util.Objects; @@ -41,11 +42,8 @@ /** * Destination */ -@JsonPropertyOrder( - {Destination.JSON_PROPERTY_TYPE, Destination.JSON_PROPERTY_FACILITY, - Destination.JSON_PROPERTY_ADMIN_FINESS, - Destination.JSON_PROPERTY_GEO_FINESS, Destination.JSON_PROPERTY_SERVICE, - Destination.JSON_PROPERTY_FREETEXT}) +@JsonPropertyOrder({Destination.JSON_PROPERTY_TYPE, + Destination.JSON_PROPERTY_DESTINATION_LOCATION}) @JsonTypeName("destination") @JsonInclude(JsonInclude.Include.NON_EMPTY) @@ -100,20 +98,9 @@ public static TypeEnum fromValue(String value) { public static final String JSON_PROPERTY_TYPE = "type"; private TypeEnum type; - public static final String JSON_PROPERTY_FACILITY = "facility"; - private String facility; - - public static final String JSON_PROPERTY_ADMIN_FINESS = "adminFiness"; - private String adminFiness; - - public static final String JSON_PROPERTY_GEO_FINESS = "geoFiness"; - private String geoFiness; - - public static final String JSON_PROPERTY_SERVICE = "service"; - private String service; - - public static final String JSON_PROPERTY_FREETEXT = "freetext"; - private String freetext; + public static final String JSON_PROPERTY_DESTINATION_LOCATION = + "destinationLocation"; + private Location destinationLocation; public Destination() {} @@ -142,119 +129,27 @@ public void setType(TypeEnum type) { this.type = type; } - public Destination facility(String facility) { + public Destination destinationLocation(Location destinationLocation) { - this.facility = facility; + this.destinationLocation = destinationLocation; return this; } /** - * Nom de l'établissement - * @return facility + * Get destinationLocation + * @return destinationLocation **/ - @JsonProperty(JSON_PROPERTY_FACILITY) + @JsonProperty(JSON_PROPERTY_DESTINATION_LOCATION) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getFacility() { - return facility; + public Location getDestinationLocation() { + return destinationLocation; } - @JsonProperty(JSON_PROPERTY_FACILITY) + @JsonProperty(JSON_PROPERTY_DESTINATION_LOCATION) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFacility(String facility) { - this.facility = facility; - } - - public Destination adminFiness(String adminFiness) { - - this.adminFiness = adminFiness; - return this; - } - - /** - * N° Finess administratif de l'établissement - * @return adminFiness - **/ - @JsonProperty(JSON_PROPERTY_ADMIN_FINESS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getAdminFiness() { - return adminFiness; - } - - @JsonProperty(JSON_PROPERTY_ADMIN_FINESS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setAdminFiness(String adminFiness) { - this.adminFiness = adminFiness; - } - - public Destination geoFiness(String geoFiness) { - - this.geoFiness = geoFiness; - return this; - } - - /** - * N° Finess géographique de l'établissement - * @return geoFiness - **/ - @JsonProperty(JSON_PROPERTY_GEO_FINESS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getGeoFiness() { - return geoFiness; - } - - @JsonProperty(JSON_PROPERTY_GEO_FINESS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setGeoFiness(String geoFiness) { - this.geoFiness = geoFiness; - } - - public Destination service(String service) { - - this.service = service; - return this; - } - - /** - * Service concerné par l'admission du patient - * @return service - **/ - @JsonProperty(JSON_PROPERTY_SERVICE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getService() { - return service; - } - - @JsonProperty(JSON_PROPERTY_SERVICE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setService(String service) { - this.service = service; - } - - public Destination freetext(String freetext) { - - this.freetext = freetext; - return this; - } - - /** - * Get freetext - * @return freetext - **/ - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getFreetext() { - return freetext; - } - - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFreetext(String freetext) { - this.freetext = freetext; + public void setDestinationLocation(Location destinationLocation) { + this.destinationLocation = destinationLocation; } @Override @@ -267,17 +162,13 @@ public boolean equals(Object o) { } Destination destination = (Destination)o; return Objects.equals(this.type, destination.type) && - Objects.equals(this.facility, destination.facility) && - Objects.equals(this.adminFiness, destination.adminFiness) && - Objects.equals(this.geoFiness, destination.geoFiness) && - Objects.equals(this.service, destination.service) && - Objects.equals(this.freetext, destination.freetext); + Objects.equals(this.destinationLocation, + destination.destinationLocation); } @Override public int hashCode() { - return Objects.hash(type, facility, adminFiness, geoFiness, service, - freetext); + return Objects.hash(type, destinationLocation); } @Override @@ -285,15 +176,9 @@ public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Destination {\n"); sb.append(" type: ").append(toIndentedString(type)).append("\n"); - sb.append(" facility: ").append(toIndentedString(facility)).append("\n"); - sb.append(" adminFiness: ") - .append(toIndentedString(adminFiness)) - .append("\n"); - sb.append(" geoFiness: ") - .append(toIndentedString(geoFiness)) + sb.append(" destinationLocation: ") + .append(toIndentedString(destinationLocation)) .append("\n"); - sb.append(" service: ").append(toIndentedString(service)).append("\n"); - sb.append(" freetext: ").append(toIndentedString(freetext)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/src/main/java/com/hubsante/model/health/DetailedAddress.java b/src/main/java/com/hubsante/model/health/DetailedAddress.java index 28389a4cf..97b07a855 100644 --- a/src/main/java/com/hubsante/model/health/DetailedAddress.java +++ b/src/main/java/com/hubsante/model/health/DetailedAddress.java @@ -67,9 +67,9 @@ public DetailedAddress complete(String complete) { } /** - * Numéro, type et nom de la voie. Utilisé pour tout type de voie : autoroute - *(PK, nom et sens), voie ferrée, voie navigable… Obligatoire et seule valeur - *des détails de l'adresse fournie par NexSIS. + * Numéro, type et nom de la voie. Utilisé pour tout type de voie : autoroute + *(PK, nom et sens), voie ferrée, voie navigable… 15-18 : Obligatoire et seule + *valeur des détails de l'adresse fournie par NexSIS. * @return complete **/ @JsonProperty(JSON_PROPERTY_COMPLETE) diff --git a/src/main/java/com/hubsante/model/health/EngagementDetails.java b/src/main/java/com/hubsante/model/health/EngagementDetails.java new file mode 100644 index 000000000..6bd0b218e --- /dev/null +++ b/src/main/java/com/hubsante/model/health/EngagementDetails.java @@ -0,0 +1,211 @@ +/** + * Copyright © 2023-2024 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.health; + +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; + +/** + * EngagementDetails + */ +@JsonPropertyOrder({EngagementDetails.JSON_PROPERTY_CATEGORY_TYPE, + EngagementDetails.JSON_PROPERTY_RESOURCE_TYPE, + EngagementDetails.JSON_PROPERTY_RESOURCE_ID, + EngagementDetails.JSON_PROPERTY_TEAM_CARE_INITIAL}) +@JsonTypeName("engagementDetails") +@JsonInclude(JsonInclude.Include.NON_EMPTY) + +public class EngagementDetails { + public static final String JSON_PROPERTY_CATEGORY_TYPE = "categoryType"; + private String categoryType; + + public static final String JSON_PROPERTY_RESOURCE_TYPE = "resourceType"; + private String resourceType; + + public static final String JSON_PROPERTY_RESOURCE_ID = "resourceId"; + private String resourceId; + + public static final String JSON_PROPERTY_TEAM_CARE_INITIAL = + "teamCareInitial"; + private String teamCareInitial; + + public EngagementDetails() {} + + public EngagementDetails categoryType(String categoryType) { + + this.categoryType = categoryType; + return this; + } + + /** + * détaille le moyen à engager + * @return categoryType + **/ + @JsonProperty(JSON_PROPERTY_CATEGORY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public String getCategoryType() { + return categoryType; + } + + @JsonProperty(JSON_PROPERTY_CATEGORY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setCategoryType(String categoryType) { + this.categoryType = categoryType; + } + + public EngagementDetails resourceType(String resourceType) { + + this.resourceType = resourceType; + return this; + } + + /** + * détaille le type de vecteur à engager + * @return resourceType + **/ + @JsonProperty(JSON_PROPERTY_RESOURCE_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getResourceType() { + return resourceType; + } + + @JsonProperty(JSON_PROPERTY_RESOURCE_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setResourceType(String resourceType) { + this.resourceType = resourceType; + } + + public EngagementDetails resourceId(String resourceId) { + + this.resourceId = resourceId; + return this; + } + + /** + * Get resourceId + * @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 EngagementDetails teamCareInitial(String teamCareInitial) { + + this.teamCareInitial = teamCareInitial; + return this; + } + + /** + * Type d’équipe (médical, paramédicale, non médicale, standard, incomplete, + *...) + * @return teamCareInitial + **/ + @JsonProperty(JSON_PROPERTY_TEAM_CARE_INITIAL) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public String getTeamCareInitial() { + return teamCareInitial; + } + + @JsonProperty(JSON_PROPERTY_TEAM_CARE_INITIAL) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setTeamCareInitial(String teamCareInitial) { + this.teamCareInitial = teamCareInitial; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + EngagementDetails engagementDetails = (EngagementDetails)o; + return Objects.equals(this.categoryType, engagementDetails.categoryType) && + Objects.equals(this.resourceType, engagementDetails.resourceType) && + Objects.equals(this.resourceId, engagementDetails.resourceId) && + Objects.equals(this.teamCareInitial, engagementDetails.teamCareInitial); + } + + @Override + public int hashCode() { + return Objects.hash(categoryType, resourceType, resourceId, + teamCareInitial); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class EngagementDetails {\n"); + sb.append(" categoryType: ") + .append(toIndentedString(categoryType)) + .append("\n"); + sb.append(" resourceType: ") + .append(toIndentedString(resourceType)) + .append("\n"); + sb.append(" resourceId: ") + .append(toIndentedString(resourceId)) + .append("\n"); + sb.append(" teamCareInitial: ") + .append(toIndentedString(teamCareInitial)) + .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/health/ExternalLocationId.java b/src/main/java/com/hubsante/model/health/ExternalLocationId.java new file mode 100644 index 000000000..b256de145 --- /dev/null +++ b/src/main/java/com/hubsante/model/health/ExternalLocationId.java @@ -0,0 +1,182 @@ +/** + * Copyright © 2023-2024 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.health; + +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; + +/** + * ExternalLocationId + */ +@JsonPropertyOrder({ExternalLocationId.JSON_PROPERTY_SOURCE, + ExternalLocationId.JSON_PROPERTY_VALUE}) +@JsonTypeName("externalLocationId") +@JsonInclude(JsonInclude.Include.NON_EMPTY) + +public class ExternalLocationId { + + /** + * Type de l'identifiant fourni + */ + public enum SourceEnum { + FINESS_ADMINISTRATIF("FINESS administratif"), + + FINESS_G_OGRAPHIQUE("FINESS géographique"), + + SIREN("SIREN"), + + SIRET("SIRET"), + + APE_NAF("APE/NAF"); + + private String value; + + SourceEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static SourceEnum fromValue(String value) { + for (SourceEnum b : SourceEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + + public static final String JSON_PROPERTY_SOURCE = "source"; + private SourceEnum source; + + public static final String JSON_PROPERTY_VALUE = "value"; + private String value; + + public ExternalLocationId() {} + + public ExternalLocationId source(SourceEnum source) { + + this.source = source; + return this; + } + + /** + * Type de l'identifiant fourni + * @return source + **/ + @JsonProperty(JSON_PROPERTY_SOURCE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public SourceEnum getSource() { + return source; + } + + @JsonProperty(JSON_PROPERTY_SOURCE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setSource(SourceEnum source) { + this.source = source; + } + + public ExternalLocationId value(String value) { + + this.value = value; + return this; + } + + /** + * L'identifiant en lui-même + * @return value + **/ + @JsonProperty(JSON_PROPERTY_VALUE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public String getValue() { + return value; + } + + @JsonProperty(JSON_PROPERTY_VALUE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setValue(String value) { + this.value = value; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ExternalLocationId externalLocationId = (ExternalLocationId)o; + return Objects.equals(this.source, externalLocationId.source) && + Objects.equals(this.value, externalLocationId.value); + } + + @Override + public int hashCode() { + return Objects.hash(source, value); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ExternalLocationId {\n"); + sb.append(" source: ").append(toIndentedString(source)).append("\n"); + sb.append(" value: ").append(toIndentedString(value)).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/health/HealthMotive.java b/src/main/java/com/hubsante/model/health/HealthMotive.java index bbc1784a6..3ae4dfdc4 100644 --- a/src/main/java/com/hubsante/model/health/HealthMotive.java +++ b/src/main/java/com/hubsante/model/health/HealthMotive.java @@ -41,25 +41,155 @@ /** * HealthMotive */ -@JsonPropertyOrder({HealthMotive.JSON_PROPERTY_CODE, - HealthMotive.JSON_PROPERTY_LABEL, - HealthMotive.JSON_PROPERTY_FREETEXT}) +@JsonPropertyOrder( + {HealthMotive.JSON_PROPERTY_CODE, HealthMotive.JSON_PROPERTY_LABEL}) @JsonTypeName("healthMotive") @JsonInclude(JsonInclude.Include.NON_EMPTY) public class HealthMotive { + + /** + * A valoriser avec un code la nomenclature associée + */ + public enum CodeEnum { + M01_00("M01.00"), + + M01_01("M01.01"), + + M01_02("M01.02"), + + M01_03("M01.03"), + + M02_00("M02.00"), + + M02_01("M02.01"), + + M02_02("M02.02"), + + M02_03("M02.03"), + + M02_04("M02.04"), + + M02_05("M02.05"), + + M02_06("M02.06"), + + M02_07("M02.07"), + + M02_08("M02.08"), + + M02_09("M02.09"), + + M02_10("M02.10"), + + M03_00("M03.00"), + + M03_01("M03.01"), + + M03_02("M03.02"), + + M03_03("M03.03"), + + M03_04("M03.04"), + + M03_05("M03.05"), + + M03_06("M03.06"), + + M03_07("M03.07"), + + M03_08("M03.08"), + + M03_09("M03.09"), + + M03_10("M03.10"), + + M03_11("M03.11"), + + M03_12("M03.12"), + + M03_13("M03.13"), + + M03_14("M03.14"), + + M03_15("M03.15"), + + M03_16("M03.16"), + + M03_17("M03.17"), + + M03_18("M03.18"), + + M03_19("M03.19"), + + M03_20("M03.20"), + + M03_21("M03.21"), + + M03_22("M03.22"), + + M04_00("M04.00"), + + M04_01("M04.01"), + + M04_02("M04.02"), + + M04_03("M04.03"), + + M04_04("M04.04"), + + M05_00("M05.00"), + + M05_01("M05.01"), + + M05_02("M05.02"), + + M06_00("M06.00"), + + M06_01("M06.01"), + + M06_02("M06.02"), + + M06_03("M06.03"), + + M06_04("M06.04"), + + M07_00("M07.00"); + + private String value; + + CodeEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static CodeEnum fromValue(String value) { + for (CodeEnum b : CodeEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + public static final String JSON_PROPERTY_CODE = "code"; - private String code; + private CodeEnum code; public static final String JSON_PROPERTY_LABEL = "label"; private String label; - public static final String JSON_PROPERTY_FREETEXT = "freetext"; - private String freetext; - public HealthMotive() {} - public HealthMotive code(String code) { + public HealthMotive code(CodeEnum code) { this.code = code; return this; @@ -72,13 +202,13 @@ public HealthMotive code(String code) { @JsonProperty(JSON_PROPERTY_CODE) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public String getCode() { + public CodeEnum getCode() { return code; } @JsonProperty(JSON_PROPERTY_CODE) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setCode(String code) { + public void setCode(CodeEnum code) { this.code = code; } @@ -107,30 +237,6 @@ public void setLabel(String label) { this.label = label; } - public HealthMotive freetext(String freetext) { - - this.freetext = freetext; - return this; - } - - /** - * Commentaire libre permettant de passer des informations complémentaires - *associées à la nomenclature - * @return freetext - **/ - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getFreetext() { - return freetext; - } - - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFreetext(String freetext) { - this.freetext = freetext; - } - @Override public boolean equals(Object o) { if (this == o) { @@ -141,13 +247,12 @@ public boolean equals(Object o) { } HealthMotive healthMotive = (HealthMotive)o; return Objects.equals(this.code, healthMotive.code) && - Objects.equals(this.label, healthMotive.label) && - Objects.equals(this.freetext, healthMotive.freetext); + Objects.equals(this.label, healthMotive.label); } @Override public int hashCode() { - return Objects.hash(code, label, freetext); + return Objects.hash(code, label); } @Override @@ -156,7 +261,6 @@ public String toString() { sb.append("class HealthMotive {\n"); sb.append(" code: ").append(toIndentedString(code)).append("\n"); sb.append(" label: ").append(toIndentedString(label)).append("\n"); - sb.append(" freetext: ").append(toIndentedString(freetext)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/src/main/java/com/hubsante/model/health/InsStrictFeatures.java b/src/main/java/com/hubsante/model/health/InsStrictFeatures.java index 0ea74ff65..9487edf63 100644 --- a/src/main/java/com/hubsante/model/health/InsStrictFeatures.java +++ b/src/main/java/com/hubsante/model/health/InsStrictFeatures.java @@ -65,8 +65,45 @@ public class InsStrictFeatures { public static final String JSON_PROPERTY_BIRTH_DATE = "birthDate"; private String birthDate; + /** + * Sexe du patient + */ + public enum SexEnum { + MASC("MASC"), + + FEM("FEM"), + + AUTRE("AUTRE"), + + INCONNU("INCONNU"); + + private String value; + + SexEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static SexEnum fromValue(String value) { + for (SexEnum b : SexEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + public static final String JSON_PROPERTY_SEX = "sex"; - private String sex; + private SexEnum sex; public static final String JSON_PROPERTY_BIRTH_PLACE_CODE = "birthPlaceCode"; private BigDecimal birthPlaceCode; @@ -168,7 +205,7 @@ public void setBirthDate(String birthDate) { this.birthDate = birthDate; } - public InsStrictFeatures sex(String sex) { + public InsStrictFeatures sex(SexEnum sex) { this.sex = sex; return this; @@ -181,13 +218,13 @@ public InsStrictFeatures sex(String sex) { @JsonProperty(JSON_PROPERTY_SEX) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getSex() { + public SexEnum getSex() { return sex; } @JsonProperty(JSON_PROPERTY_SEX) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setSex(String sex) { + public void setSex(SexEnum sex) { this.sex = sex; } diff --git a/src/main/java/com/hubsante/model/health/Location.java b/src/main/java/com/hubsante/model/health/Location.java index 195593915..8d281a5a1 100644 --- a/src/main/java/com/hubsante/model/health/Location.java +++ b/src/main/java/com/hubsante/model/health/Location.java @@ -38,6 +38,7 @@ import com.hubsante.model.health.City; import com.hubsante.model.health.DetailedAddress; import com.hubsante.model.health.ExternalInfo; +import com.hubsante.model.health.ExternalLocationId; import com.hubsante.model.health.Geometry; import java.util.ArrayList; import java.util.Arrays; @@ -50,10 +51,11 @@ */ @JsonPropertyOrder( {Location.JSON_PROPERTY_LOC_I_D, Location.JSON_PROPERTY_LOC_LABEL, - Location.JSON_PROPERTY_NAME, Location.JSON_PROPERTY_DETAILED_ADDRESS, - Location.JSON_PROPERTY_CITY, Location.JSON_PROPERTY_ACCESS, - Location.JSON_PROPERTY_GEOMETRY, Location.JSON_PROPERTY_EXTERNAL_INFO, - Location.JSON_PROPERTY_COUNTRY, Location.JSON_PROPERTY_FREETEXT}) + Location.JSON_PROPERTY_NAME, Location.JSON_PROPERTY_EXTERNAL_LOCATION_ID, + Location.JSON_PROPERTY_DETAILED_ADDRESS, Location.JSON_PROPERTY_CITY, + Location.JSON_PROPERTY_ACCESS, Location.JSON_PROPERTY_GEOMETRY, + Location.JSON_PROPERTY_EXTERNAL_INFO, Location.JSON_PROPERTY_COUNTRY, + Location.JSON_PROPERTY_FREETEXT}) @JsonTypeName("location") @JsonInclude(JsonInclude.Include.NON_EMPTY) @@ -67,6 +69,10 @@ public class Location { public static final String JSON_PROPERTY_NAME = "name"; private String name; + public static final String JSON_PROPERTY_EXTERNAL_LOCATION_ID = + "externalLocationId"; + private List externalLocationId; + public static final String JSON_PROPERTY_DETAILED_ADDRESS = "detailedAddress"; private DetailedAddress detailedAddress; @@ -632,12 +638,12 @@ public Location locLabel(String locLabel) { } /** - * Permet d'indiquer des indications auto suffisantes permettant pour un - *opérationnel d'accéder facilement au lieu avec des indications - *minimales. Dans les messages NexSIS, va souvent correspondre à la - *concaténation suivant des règles métiers de différentes informations, dont - *le \"name\" (toponyme) et l'adresse. Comprend au maximum 255 - *caractères + * Donne les informations minimales d'identification du lieu + *d'intervention, qui permet d'identifier rapidement le lieu pour les + *équipes opérationnelles. Comprend au maximum 255 caractères. 15-18 : Dans + *les messages NexSIS, va souvent correspondre à la concaténation suivant des + *règles métiers de différentes informations, dont le \"name\" + *(toponyme) et l'adresse. * @return locLabel **/ @JsonProperty(JSON_PROPERTY_LOC_LABEL) @@ -660,8 +666,8 @@ public Location name(String name) { } /** - * Indique le nom de lieu : nom commercial, forêt de Fontainebleau, lac du Der - *(plutôt à destination des systèmes). + * Indique le nom de lieu : nom commercial, Etablissement, forêt de + *Fontainebleau, lac du Der (plutôt à destination des systèmes). * @return name **/ @JsonProperty(JSON_PROPERTY_NAME) @@ -677,6 +683,48 @@ public void setName(String name) { this.name = name; } + public Location + externalLocationId(List externalLocationId) { + + this.externalLocationId = externalLocationId; + return this; + } + + public Location + addExternalLocationIdItem(ExternalLocationId externalLocationIdItem) { + if (this.externalLocationId == null) { + this.externalLocationId = new ArrayList<>(); + } + this.externalLocationId.add(externalLocationIdItem); + return this; + } + + /** + * Get externalLocationId + * @return externalLocationId + **/ + @JsonProperty(JSON_PROPERTY_EXTERNAL_LOCATION_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public List getExternalLocationId() { + return externalLocationId; + } + + @JacksonXmlElementWrapper(useWrapping = false) + + @JsonProperty(JSON_PROPERTY_EXTERNAL_LOCATION_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void + setExternalLocationId(List externalLocationId) { + if (externalLocationId == null) { + return; + } + if (this.externalLocationId == null) { + this.externalLocationId = new ArrayList<>(); + } + this.externalLocationId.addAll(externalLocationId); + } + public Location detailedAddress(DetailedAddress detailedAddress) { this.detailedAddress = detailedAddress; @@ -866,6 +914,7 @@ public boolean equals(Object o) { return Objects.equals(this.locID, location.locID) && Objects.equals(this.locLabel, location.locLabel) && Objects.equals(this.name, location.name) && + Objects.equals(this.externalLocationId, location.externalLocationId) && Objects.equals(this.detailedAddress, location.detailedAddress) && Objects.equals(this.city, location.city) && Objects.equals(this.access, location.access) && @@ -877,8 +926,9 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(locID, locLabel, name, detailedAddress, city, access, - geometry, externalInfo, country, freetext); + return Objects.hash(locID, locLabel, name, externalLocationId, + detailedAddress, city, access, geometry, externalInfo, + country, freetext); } @Override @@ -888,6 +938,9 @@ public String toString() { sb.append(" locID: ").append(toIndentedString(locID)).append("\n"); sb.append(" locLabel: ").append(toIndentedString(locLabel)).append("\n"); sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" externalLocationId: ") + .append(toIndentedString(externalLocationId)) + .append("\n"); sb.append(" detailedAddress: ") .append(toIndentedString(detailedAddress)) .append("\n"); diff --git a/src/main/java/com/hubsante/model/health/LocationKind.java b/src/main/java/com/hubsante/model/health/LocationKind.java index 7693f95aa..4795c1012 100644 --- a/src/main/java/com/hubsante/model/health/LocationKind.java +++ b/src/main/java/com/hubsante/model/health/LocationKind.java @@ -41,25 +41,409 @@ /** * LocationKind */ -@JsonPropertyOrder({LocationKind.JSON_PROPERTY_CODE, - LocationKind.JSON_PROPERTY_LABEL, - LocationKind.JSON_PROPERTY_FREETEXT}) +@JsonPropertyOrder( + {LocationKind.JSON_PROPERTY_CODE, LocationKind.JSON_PROPERTY_LABEL}) @JsonTypeName("locationKind") @JsonInclude(JsonInclude.Include.NON_EMPTY) public class LocationKind { + + /** + * A valoriser avec un code la nomenclature associée + */ + public enum CodeEnum { + L01_00_00("L01.00.00"), + + L01_01_00("L01.01.00"), + + L01_01_01("L01.01.01"), + + L01_01_02("L01.01.02"), + + L01_01_03("L01.01.03"), + + L01_01_04("L01.01.04"), + + L01_02_00("L01.02.00"), + + L01_02_01("L01.02.01"), + + L01_02_02("L01.02.02"), + + L01_02_03("L01.02.03"), + + L01_02_04("L01.02.04"), + + L01_02_05("L01.02.05"), + + L01_02_06("L01.02.06"), + + L01_02_07("L01.02.07"), + + L01_02_08("L01.02.08"), + + L01_02_09("L01.02.09"), + + L01_02_10("L01.02.10"), + + L01_02_11("L01.02.11"), + + L01_02_12("L01.02.12"), + + L01_03_00("L01.03.00"), + + L01_03_01("L01.03.01"), + + L01_03_02("L01.03.02"), + + L01_03_03("L01.03.03"), + + L01_04_00("L01.04.00"), + + L02_00_00("L02.00.00"), + + L02_01_00("L02.01.00"), + + L02_02_00("L02.02.00"), + + L02_02_01("L02.02.01"), + + L02_02_02("L02.02.02"), + + L02_02_03("L02.02.03"), + + L02_02_04("L02.02.04"), + + L02_02_05("L02.02.05"), + + L02_03_00("L02.03.00"), + + L02_03_01("L02.03.01"), + + L02_03_02("L02.03.02"), + + L02_03_03("L02.03.03"), + + L02_04_00("L02.04.00"), + + L02_05_00("L02.05.00"), + + L02_05_01("L02.05.01"), + + L02_05_02("L02.05.02"), + + L02_05_03("L02.05.03"), + + L02_05_04("L02.05.04"), + + L02_05_05("L02.05.05"), + + L02_05_06("L02.05.06"), + + L02_05_07("L02.05.07"), + + L02_05_08("L02.05.08"), + + L02_05_09("L02.05.09"), + + L02_05_10("L02.05.10"), + + L02_05_11("L02.05.11"), + + L02_05_12("L02.05.12"), + + L02_05_13("L02.05.13"), + + L02_05_14("L02.05.14"), + + L02_05_15("L02.05.15"), + + L02_05_16("L02.05.16"), + + L02_06_00("L02.06.00"), + + L02_06_01("L02.06.01"), + + L02_06_02("L02.06.02"), + + L02_06_03("L02.06.03"), + + L02_06_04("L02.06.04"), + + L02_06_05("L02.06.05"), + + L02_06_06("L02.06.06"), + + L02_06_07("L02.06.07"), + + L02_06_08("L02.06.08"), + + L02_07_00("L02.07.00"), + + L02_07_01("L02.07.01"), + + L02_07_02("L02.07.02"), + + L02_08_00("L02.08.00"), + + L03_00_00("L03.00.00"), + + L03_01_00("L03.01.00"), + + L03_02_00("L03.02.00"), + + L03_03_00("L03.03.00"), + + L03_04_00("L03.04.00"), + + L03_05_00("L03.05.00"), + + L04_00_00("L04.00.00"), + + L04_01_00("L04.01.00"), + + L04_02_00("L04.02.00"), + + L04_02_01("L04.02.01"), + + L04_02_02("L04.02.02"), + + L04_02_03("L04.02.03"), + + L04_03_00("L04.03.00"), + + L04_03_01("L04.03.01"), + + L04_03_02("L04.03.02"), + + L04_03_03("L04.03.03"), + + L04_04_00("L04.04.00"), + + L04_05_00("L04.05.00"), + + L04_06_00("L04.06.00"), + + L04_06_01("L04.06.01"), + + L04_06_02("L04.06.02"), + + L04_06_03("L04.06.03"), + + L04_06_04("L04.06.04"), + + L04_06_05("L04.06.05"), + + L04_07_00("L04.07.00"), + + L04_07_01("L04.07.01"), + + L04_07_02("L04.07.02"), + + L04_07_03("L04.07.03"), + + L04_08_00("L04.08.00"), + + L04_08_01("L04.08.01"), + + L04_08_02("L04.08.02"), + + L04_09_00("L04.09.00"), + + L04_09_01("L04.09.01"), + + L04_09_02("L04.09.02"), + + L04_10_00("L04.10.00"), + + L04_11_00("L04.11.00"), + + L04_11_01("L04.11.01"), + + L04_11_02("L04.11.02"), + + L04_11_03("L04.11.03"), + + L04_11_04("L04.11.04"), + + L04_12_00("L04.12.00"), + + L04_12_01("L04.12.01"), + + L04_12_02("L04.12.02"), + + L04_12_03("L04.12.03"), + + L04_12_04("L04.12.04"), + + L04_13_00("L04.13.00"), + + L04_13_01("L04.13.01"), + + L04_13_02("L04.13.02"), + + L04_13_03("L04.13.03"), + + L04_13_04("L04.13.04"), + + L04_14_00("L04.14.00"), + + L04_14_01("L04.14.01"), + + L04_14_02("L04.14.02"), + + L04_15_00("L04.15.00"), + + L04_16_00("L04.16.00"), + + L05_00_00("L05.00.00"), + + L05_01_00("L05.01.00"), + + L05_01_01("L05.01.01"), + + L05_01_02("L05.01.02"), + + L05_01_03("L05.01.03"), + + L05_01_04("L05.01.04"), + + L05_02_00("L05.02.00"), + + L05_02_01("L05.02.01"), + + L05_02_02("L05.02.02"), + + L05_02_03("L05.02.03"), + + L05_02_04("L05.02.04"), + + L05_03_00("L05.03.00"), + + L05_03_01("L05.03.01"), + + L05_03_02("L05.03.02"), + + L05_04_00("L05.04.00"), + + L05_04_01("L05.04.01"), + + L05_04_02("L05.04.02"), + + L05_04_03("L05.04.03"), + + L05_04_04("L05.04.04"), + + L05_04_05("L05.04.05"), + + L05_04_06("L05.04.06"), + + L05_05_00("L05.05.00"), + + L05_06_00("L05.06.00"), + + L05_07_00("L05.07.00"), + + L06_00_00("L06.00.00"), + + L06_01_00("L06.01.00"), + + L06_01_01("L06.01.01"), + + L06_01_02("L06.01.02"), + + L06_01_03("L06.01.03"), + + L06_01_04("L06.01.04"), + + L06_01_05("L06.01.05"), + + L06_01_06("L06.01.06"), + + L06_01_07("L06.01.07"), + + L06_01_08("L06.01.08"), + + L06_02_00("L06.02.00"), + + L06_03_00("L06.03.00"), + + L06_03_01("L06.03.01"), + + L06_03_02("L06.03.02"), + + L06_03_03("L06.03.03"), + + L06_03_04("L06.03.04"), + + L06_03_05("L06.03.05"), + + L06_04_00("L06.04.00"), + + L06_05_00("L06.05.00"), + + L06_05_01("L06.05.01"), + + L06_05_02("L06.05.02"), + + L06_06_00("L06.06.00"), + + L06_06_01("L06.06.01"), + + L06_06_02("L06.06.02"), + + L06_06_03("L06.06.03"), + + L06_06_04("L06.06.04"), + + L06_07_00("L06.07.00"), + + L06_07_01("L06.07.01"), + + L06_07_02("L06.07.02"), + + L07_00_00("L07.00.00"), + + L07_01_00("L07.01.00"), + + L07_01_01("L07.01.01"), + + L07_02_00("L07.02.00"); + + private String value; + + CodeEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static CodeEnum fromValue(String value) { + for (CodeEnum b : CodeEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + public static final String JSON_PROPERTY_CODE = "code"; - private String code; + private CodeEnum code; public static final String JSON_PROPERTY_LABEL = "label"; private String label; - public static final String JSON_PROPERTY_FREETEXT = "freetext"; - private String freetext; - public LocationKind() {} - public LocationKind code(String code) { + public LocationKind code(CodeEnum code) { this.code = code; return this; @@ -72,13 +456,13 @@ public LocationKind code(String code) { @JsonProperty(JSON_PROPERTY_CODE) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public String getCode() { + public CodeEnum getCode() { return code; } @JsonProperty(JSON_PROPERTY_CODE) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setCode(String code) { + public void setCode(CodeEnum code) { this.code = code; } @@ -107,30 +491,6 @@ public void setLabel(String label) { this.label = label; } - public LocationKind freetext(String freetext) { - - this.freetext = freetext; - return this; - } - - /** - * Commentaire libre permettant de passer des informations complémentaires - *associées à la nomenclature - * @return freetext - **/ - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getFreetext() { - return freetext; - } - - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFreetext(String freetext) { - this.freetext = freetext; - } - @Override public boolean equals(Object o) { if (this == o) { @@ -141,13 +501,12 @@ public boolean equals(Object o) { } LocationKind locationKind = (LocationKind)o; return Objects.equals(this.code, locationKind.code) && - Objects.equals(this.label, locationKind.label) && - Objects.equals(this.freetext, locationKind.freetext); + Objects.equals(this.label, locationKind.label); } @Override public int hashCode() { - return Objects.hash(code, label, freetext); + return Objects.hash(code, label); } @Override @@ -156,7 +515,6 @@ public String toString() { sb.append("class LocationKind {\n"); sb.append(" code: ").append(toIndentedString(code)).append("\n"); sb.append(" label: ").append(toIndentedString(label)).append("\n"); - sb.append(" freetext: ").append(toIndentedString(freetext)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/src/main/java/com/hubsante/model/health/MainDiagnosis.java b/src/main/java/com/hubsante/model/health/MainDiagnosis.java index 6fff1f51b..c2fed94a6 100644 --- a/src/main/java/com/hubsante/model/health/MainDiagnosis.java +++ b/src/main/java/com/hubsante/model/health/MainDiagnosis.java @@ -41,9 +41,8 @@ /** * MainDiagnosis */ -@JsonPropertyOrder({MainDiagnosis.JSON_PROPERTY_CODE, - MainDiagnosis.JSON_PROPERTY_LABEL, - MainDiagnosis.JSON_PROPERTY_FREETEXT}) +@JsonPropertyOrder( + {MainDiagnosis.JSON_PROPERTY_CODE, MainDiagnosis.JSON_PROPERTY_LABEL}) @JsonTypeName("mainDiagnosis") @JsonInclude(JsonInclude.Include.NON_EMPTY) @@ -54,9 +53,6 @@ public class MainDiagnosis { public static final String JSON_PROPERTY_LABEL = "label"; private String label; - public static final String JSON_PROPERTY_FREETEXT = "freetext"; - private String freetext; - public MainDiagnosis() {} public MainDiagnosis code(String code) { @@ -107,30 +103,6 @@ public void setLabel(String label) { this.label = label; } - public MainDiagnosis freetext(String freetext) { - - this.freetext = freetext; - return this; - } - - /** - * Commentaire libre permettant de passer des informations complémentaires - *associées à la nomenclature - * @return freetext - **/ - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getFreetext() { - return freetext; - } - - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFreetext(String freetext) { - this.freetext = freetext; - } - @Override public boolean equals(Object o) { if (this == o) { @@ -141,13 +113,12 @@ public boolean equals(Object o) { } MainDiagnosis mainDiagnosis = (MainDiagnosis)o; return Objects.equals(this.code, mainDiagnosis.code) && - Objects.equals(this.label, mainDiagnosis.label) && - Objects.equals(this.freetext, mainDiagnosis.freetext); + Objects.equals(this.label, mainDiagnosis.label); } @Override public int hashCode() { - return Objects.hash(code, label, freetext); + return Objects.hash(code, label); } @Override @@ -156,7 +127,6 @@ public String toString() { sb.append("class MainDiagnosis {\n"); sb.append(" code: ").append(toIndentedString(code)).append("\n"); sb.append(" label: ").append(toIndentedString(label)).append("\n"); - sb.append(" freetext: ").append(toIndentedString(freetext)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/src/main/java/com/hubsante/model/health/ResourceDiagnosis.java b/src/main/java/com/hubsante/model/health/Notes.java similarity index 54% rename from src/main/java/com/hubsante/model/health/ResourceDiagnosis.java rename to src/main/java/com/hubsante/model/health/Notes.java index 7d7b1bec2..86128d7bd 100644 --- a/src/main/java/com/hubsante/model/health/ResourceDiagnosis.java +++ b/src/main/java/com/hubsante/model/health/Notes.java @@ -34,88 +34,58 @@ 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; /** - * ResourceDiagnosis + * Notes */ -@JsonPropertyOrder({ResourceDiagnosis.JSON_PROPERTY_CODE, - ResourceDiagnosis.JSON_PROPERTY_LABEL, - ResourceDiagnosis.JSON_PROPERTY_FREETEXT}) -@JsonTypeName("resourceDiagnosis") +@JsonPropertyOrder({Notes.JSON_PROPERTY_CREATION, Notes.JSON_PROPERTY_FREETEXT}) +@JsonTypeName("notes") @JsonInclude(JsonInclude.Include.NON_EMPTY) -public class ResourceDiagnosis { - public static final String JSON_PROPERTY_CODE = "code"; - private String code; - - public static final String JSON_PROPERTY_LABEL = "label"; - private String label; +public class Notes { + public static final String JSON_PROPERTY_CREATION = "creation"; + private OffsetDateTime creation; public static final String JSON_PROPERTY_FREETEXT = "freetext"; private String freetext; - public ResourceDiagnosis() {} - - public ResourceDiagnosis code(String code) { - - this.code = code; - return this; - } - - /** - * A valoriser avec un code la nomenclature associée - * @return code - **/ - @JsonProperty(JSON_PROPERTY_CODE) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getCode() { - return code; - } + public Notes() {} - @JsonProperty(JSON_PROPERTY_CODE) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setCode(String code) { - this.code = code; - } + public Notes creation(OffsetDateTime creation) { - public ResourceDiagnosis label(String label) { - - this.label = label; + this.creation = creation; return this; } /** - * A valoriser avec le libellé de la nomenclature associée. Dans le cas où un - *système n'est pas en mesure de reconnaître un code, il peut directement - *afficher le libellé qui est obligatoirement fourni avec le code. - * @return label + * date et heure de l'observation + * @return creation **/ - @JsonProperty(JSON_PROPERTY_LABEL) - @JsonInclude(value = JsonInclude.Include.ALWAYS) + @JsonProperty(JSON_PROPERTY_CREATION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getLabel() { - return label; + public OffsetDateTime getCreation() { + return creation; } - @JsonProperty(JSON_PROPERTY_LABEL) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setLabel(String label) { - this.label = label; + @JsonProperty(JSON_PROPERTY_CREATION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setCreation(OffsetDateTime creation) { + this.creation = creation; } - public ResourceDiagnosis freetext(String freetext) { + public Notes freetext(String freetext) { this.freetext = freetext; return this; } /** - * Commentaire libre permettant de passer des informations complémentaires - *associées à la nomenclature + * texte libre contenant les indications renseignées par l'ARM * @return freetext **/ @JsonProperty(JSON_PROPERTY_FREETEXT) @@ -139,23 +109,21 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) { return false; } - ResourceDiagnosis resourceDiagnosis = (ResourceDiagnosis)o; - return Objects.equals(this.code, resourceDiagnosis.code) && - Objects.equals(this.label, resourceDiagnosis.label) && - Objects.equals(this.freetext, resourceDiagnosis.freetext); + Notes notes = (Notes)o; + return Objects.equals(this.creation, notes.creation) && + Objects.equals(this.freetext, notes.freetext); } @Override public int hashCode() { - return Objects.hash(code, label, freetext); + return Objects.hash(creation, freetext); } @Override public String toString() { StringBuilder sb = new StringBuilder(); - sb.append("class ResourceDiagnosis {\n"); - sb.append(" code: ").append(toIndentedString(code)).append("\n"); - sb.append(" label: ").append(toIndentedString(label)).append("\n"); + sb.append("class Notes {\n"); + sb.append(" creation: ").append(toIndentedString(creation)).append("\n"); sb.append(" freetext: ").append(toIndentedString(freetext)).append("\n"); sb.append("}"); return sb.toString(); diff --git a/src/main/java/com/hubsante/model/health/OtherDiagnosis.java b/src/main/java/com/hubsante/model/health/OtherDiagnosis.java index 5b024d8f3..c55f5993b 100644 --- a/src/main/java/com/hubsante/model/health/OtherDiagnosis.java +++ b/src/main/java/com/hubsante/model/health/OtherDiagnosis.java @@ -41,9 +41,8 @@ /** * OtherDiagnosis */ -@JsonPropertyOrder({OtherDiagnosis.JSON_PROPERTY_CODE, - OtherDiagnosis.JSON_PROPERTY_LABEL, - OtherDiagnosis.JSON_PROPERTY_FREETEXT}) +@JsonPropertyOrder( + {OtherDiagnosis.JSON_PROPERTY_CODE, OtherDiagnosis.JSON_PROPERTY_LABEL}) @JsonTypeName("otherDiagnosis") @JsonInclude(JsonInclude.Include.NON_EMPTY) @@ -54,9 +53,6 @@ public class OtherDiagnosis { public static final String JSON_PROPERTY_LABEL = "label"; private String label; - public static final String JSON_PROPERTY_FREETEXT = "freetext"; - private String freetext; - public OtherDiagnosis() {} public OtherDiagnosis code(String code) { @@ -107,30 +103,6 @@ public void setLabel(String label) { this.label = label; } - public OtherDiagnosis freetext(String freetext) { - - this.freetext = freetext; - return this; - } - - /** - * Commentaire libre permettant de passer des informations complémentaires - *associées à la nomenclature - * @return freetext - **/ - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getFreetext() { - return freetext; - } - - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFreetext(String freetext) { - this.freetext = freetext; - } - @Override public boolean equals(Object o) { if (this == o) { @@ -141,13 +113,12 @@ public boolean equals(Object o) { } OtherDiagnosis otherDiagnosis = (OtherDiagnosis)o; return Objects.equals(this.code, otherDiagnosis.code) && - Objects.equals(this.label, otherDiagnosis.label) && - Objects.equals(this.freetext, otherDiagnosis.freetext); + Objects.equals(this.label, otherDiagnosis.label); } @Override public int hashCode() { - return Objects.hash(code, label, freetext); + return Objects.hash(code, label); } @Override @@ -156,7 +127,6 @@ public String toString() { sb.append("class OtherDiagnosis {\n"); sb.append(" code: ").append(toIndentedString(code)).append("\n"); sb.append(" label: ").append(toIndentedString(label)).append("\n"); - sb.append(" freetext: ").append(toIndentedString(freetext)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/src/main/java/com/hubsante/model/health/Patient.java b/src/main/java/com/hubsante/model/health/Patient.java index 394fa73fe..f82fd2d66 100644 --- a/src/main/java/com/hubsante/model/health/Patient.java +++ b/src/main/java/com/hubsante/model/health/Patient.java @@ -39,9 +39,10 @@ import com.hubsante.model.health.Hypothesis; import com.hubsante.model.health.InsIdentity; import com.hubsante.model.health.PatientDetail; -import com.hubsante.model.health.ResourceDiagnosis; +import java.util.ArrayList; import java.util.Arrays; import java.util.Arrays; +import java.util.List; import java.util.Objects; /** @@ -51,7 +52,7 @@ {Patient.JSON_PROPERTY_ID, Patient.JSON_PROPERTY_ADMINISTRATIVE_FILE, Patient.JSON_PROPERTY_IDENTITY, Patient.JSON_PROPERTY_HEALTH_MOTIVE, Patient.JSON_PROPERTY_DETAIL, Patient.JSON_PROPERTY_HYPOTHESIS, - Patient.JSON_PROPERTY_RESOURCE_DIAGNOSIS}) + Patient.JSON_PROPERTY_FREETEXT}) @JsonTypeName("patient") @JsonInclude(JsonInclude.Include.NON_EMPTY) @@ -75,9 +76,8 @@ public class Patient { public static final String JSON_PROPERTY_HYPOTHESIS = "hypothesis"; private Hypothesis hypothesis; - public static final String JSON_PROPERTY_RESOURCE_DIAGNOSIS = - "resourceDiagnosis"; - private ResourceDiagnosis resourceDiagnosis; + public static final String JSON_PROPERTY_FREETEXT = "freetext"; + private List freetext; public Patient() {} @@ -220,27 +220,43 @@ public void setHypothesis(Hypothesis hypothesis) { this.hypothesis = hypothesis; } - public Patient resourceDiagnosis(ResourceDiagnosis resourceDiagnosis) { + public Patient freetext(List freetext) { - this.resourceDiagnosis = resourceDiagnosis; + this.freetext = freetext; + return this; + } + + public Patient addFreetextItem(String freetextItem) { + if (this.freetext == null) { + this.freetext = new ArrayList<>(); + } + this.freetext.add(freetextItem); return this; } /** - * Get resourceDiagnosis - * @return resourceDiagnosis + * Get freetext + * @return freetext **/ - @JsonProperty(JSON_PROPERTY_RESOURCE_DIAGNOSIS) + @JsonProperty(JSON_PROPERTY_FREETEXT) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public ResourceDiagnosis getResourceDiagnosis() { - return resourceDiagnosis; + public List getFreetext() { + return freetext; } - @JsonProperty(JSON_PROPERTY_RESOURCE_DIAGNOSIS) + @JacksonXmlElementWrapper(useWrapping = false) + + @JsonProperty(JSON_PROPERTY_FREETEXT) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setResourceDiagnosis(ResourceDiagnosis resourceDiagnosis) { - this.resourceDiagnosis = resourceDiagnosis; + public void setFreetext(List freetext) { + if (freetext == null) { + return; + } + if (this.freetext == null) { + this.freetext = new ArrayList<>(); + } + this.freetext.addAll(freetext); } @Override @@ -258,13 +274,13 @@ public boolean equals(Object o) { Objects.equals(this.healthMotive, patient.healthMotive) && Objects.equals(this.detail, patient.detail) && Objects.equals(this.hypothesis, patient.hypothesis) && - Objects.equals(this.resourceDiagnosis, patient.resourceDiagnosis); + Objects.equals(this.freetext, patient.freetext); } @Override public int hashCode() { return Objects.hash(id, administrativeFile, identity, healthMotive, detail, - hypothesis, resourceDiagnosis); + hypothesis, freetext); } @Override @@ -283,9 +299,7 @@ public String toString() { sb.append(" hypothesis: ") .append(toIndentedString(hypothesis)) .append("\n"); - sb.append(" resourceDiagnosis: ") - .append(toIndentedString(resourceDiagnosis)) - .append("\n"); + sb.append(" freetext: ").append(toIndentedString(freetext)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/src/main/java/com/hubsante/model/health/PatientDetail.java b/src/main/java/com/hubsante/model/health/PatientDetail.java index 7437cb9b5..807de076b 100644 --- a/src/main/java/com/hubsante/model/health/PatientDetail.java +++ b/src/main/java/com/hubsante/model/health/PatientDetail.java @@ -57,8 +57,45 @@ public class PatientDetail { public static final String JSON_PROPERTY_AGE = "age"; private String age; + /** + * Gets or Sets careLevel + */ + public enum CareLevelEnum { + R1("R1"), + + R2("R2"), + + R3("R3"), + + R4("R4"); + + private String value; + + CareLevelEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static CareLevelEnum fromValue(String value) { + for (CareLevelEnum b : CareLevelEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + public static final String JSON_PROPERTY_CARE_LEVEL = "careLevel"; - private String careLevel; + private CareLevelEnum careLevel; public PatientDetail() {} @@ -133,7 +170,7 @@ public void setAge(String age) { this.age = age; } - public PatientDetail careLevel(String careLevel) { + public PatientDetail careLevel(CareLevelEnum careLevel) { this.careLevel = careLevel; return this; @@ -146,13 +183,13 @@ public PatientDetail careLevel(String careLevel) { @JsonProperty(JSON_PROPERTY_CARE_LEVEL) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getCareLevel() { + public CareLevelEnum getCareLevel() { return careLevel; } @JsonProperty(JSON_PROPERTY_CARE_LEVEL) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setCareLevel(String careLevel) { + public void setCareLevel(CareLevelEnum careLevel) { this.careLevel = careLevel; } diff --git a/src/main/java/com/hubsante/model/health/Qualification.java b/src/main/java/com/hubsante/model/health/Qualification.java index 5f67ca676..ba3d63a89 100644 --- a/src/main/java/com/hubsante/model/health/Qualification.java +++ b/src/main/java/com/hubsante/model/health/Qualification.java @@ -38,7 +38,6 @@ import com.hubsante.model.health.HealthMotive; import com.hubsante.model.health.LocationKind; import com.hubsante.model.health.RiskThreat; -import com.hubsante.model.health.Victims; import com.hubsante.model.health.WhatsHappen; import java.util.ArrayList; import java.util.Arrays; @@ -53,8 +52,7 @@ Qualification.JSON_PROPERTY_LOCATION_KIND, Qualification.JSON_PROPERTY_RISK_THREAT, Qualification.JSON_PROPERTY_HEALTH_MOTIVE, - Qualification.JSON_PROPERTY_DETAILS, - Qualification.JSON_PROPERTY_VICTIMS}) + Qualification.JSON_PROPERTY_DETAILS}) @JsonTypeName("qualification") @JsonInclude(JsonInclude.Include.NON_EMPTY) @@ -74,9 +72,6 @@ public class Qualification { public static final String JSON_PROPERTY_DETAILS = "details"; private CaseDetails details; - public static final String JSON_PROPERTY_VICTIMS = "victims"; - private Victims victims; - public Qualification() {} public Qualification whatsHappen(WhatsHappen whatsHappen) { @@ -210,29 +205,6 @@ public void setDetails(CaseDetails details) { this.details = details; } - public Qualification victims(Victims victims) { - - this.victims = victims; - return this; - } - - /** - * Get victims - * @return victims - **/ - @JsonProperty(JSON_PROPERTY_VICTIMS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public Victims getVictims() { - return victims; - } - - @JsonProperty(JSON_PROPERTY_VICTIMS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setVictims(Victims victims) { - this.victims = victims; - } - @Override public boolean equals(Object o) { if (this == o) { @@ -246,14 +218,13 @@ public boolean equals(Object o) { Objects.equals(this.locationKind, qualification.locationKind) && Objects.equals(this.riskThreat, qualification.riskThreat) && Objects.equals(this.healthMotive, qualification.healthMotive) && - Objects.equals(this.details, qualification.details) && - Objects.equals(this.victims, qualification.victims); + Objects.equals(this.details, qualification.details); } @Override public int hashCode() { return Objects.hash(whatsHappen, locationKind, riskThreat, healthMotive, - details, victims); + details); } @Override @@ -273,7 +244,6 @@ public String toString() { .append(toIndentedString(healthMotive)) .append("\n"); sb.append(" details: ").append(toIndentedString(details)).append("\n"); - sb.append(" victims: ").append(toIndentedString(victims)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/src/main/java/com/hubsante/model/health/RiskThreat.java b/src/main/java/com/hubsante/model/health/RiskThreat.java index 18bc84c4d..4085baaf6 100644 --- a/src/main/java/com/hubsante/model/health/RiskThreat.java +++ b/src/main/java/com/hubsante/model/health/RiskThreat.java @@ -41,25 +41,125 @@ /** * RiskThreat */ -@JsonPropertyOrder({RiskThreat.JSON_PROPERTY_CODE, - RiskThreat.JSON_PROPERTY_LABEL, - RiskThreat.JSON_PROPERTY_FREETEXT}) +@JsonPropertyOrder( + {RiskThreat.JSON_PROPERTY_CODE, RiskThreat.JSON_PROPERTY_LABEL}) @JsonTypeName("riskThreat") @JsonInclude(JsonInclude.Include.NON_EMPTY) public class RiskThreat { + + /** + * A valoriser avec un code la nomenclature associée + */ + public enum CodeEnum { + R01("R01"), + + R02("R02"), + + R03("R03"), + + R04("R04"), + + R05("R05"), + + R06("R06"), + + R07("R07"), + + R08("R08"), + + R09("R09"), + + R10("R10"), + + R11("R11"), + + R12("R12"), + + R13("R13"), + + R14("R14"), + + R15("R15"), + + R16("R16"), + + R17("R17"), + + R18("R18"), + + R19("R19"), + + R20("R20"), + + R21("R21"), + + R22("R22"), + + R23("R23"), + + R24("R24"), + + R25("R25"), + + R26("R26"), + + R27("R27"), + + R28("R28"), + + R29("R29"), + + R30("R30"), + + R31("R31"), + + R32("R32"), + + R33("R33"), + + R34("R34"), + + R35("R35"), + + R36("R36"), + + R37("R37"); + + private String value; + + CodeEnum(String value) { this.value = value; } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static CodeEnum fromValue(String value) { + for (CodeEnum b : CodeEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + public static final String JSON_PROPERTY_CODE = "code"; - private String code; + private CodeEnum code; public static final String JSON_PROPERTY_LABEL = "label"; private String label; - public static final String JSON_PROPERTY_FREETEXT = "freetext"; - private String freetext; - public RiskThreat() {} - public RiskThreat code(String code) { + public RiskThreat code(CodeEnum code) { this.code = code; return this; @@ -72,13 +172,13 @@ public RiskThreat code(String code) { @JsonProperty(JSON_PROPERTY_CODE) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public String getCode() { + public CodeEnum getCode() { return code; } @JsonProperty(JSON_PROPERTY_CODE) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setCode(String code) { + public void setCode(CodeEnum code) { this.code = code; } @@ -107,30 +207,6 @@ public void setLabel(String label) { this.label = label; } - public RiskThreat freetext(String freetext) { - - this.freetext = freetext; - return this; - } - - /** - * Commentaire libre permettant de passer des informations complémentaires - *associées à la nomenclature - * @return freetext - **/ - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getFreetext() { - return freetext; - } - - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFreetext(String freetext) { - this.freetext = freetext; - } - @Override public boolean equals(Object o) { if (this == o) { @@ -141,13 +217,12 @@ public boolean equals(Object o) { } RiskThreat riskThreat = (RiskThreat)o; return Objects.equals(this.code, riskThreat.code) && - Objects.equals(this.label, riskThreat.label) && - Objects.equals(this.freetext, riskThreat.freetext); + Objects.equals(this.label, riskThreat.label); } @Override public int hashCode() { - return Objects.hash(code, label, freetext); + return Objects.hash(code, label); } @Override @@ -156,7 +231,6 @@ public String toString() { sb.append("class RiskThreat {\n"); sb.append(" code: ").append(toIndentedString(code)).append("\n"); sb.append(" label: ").append(toIndentedString(label)).append("\n"); - sb.append(" freetext: ").append(toIndentedString(freetext)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/src/main/java/com/hubsante/model/health/TransportDetails.java b/src/main/java/com/hubsante/model/health/TransportDetails.java new file mode 100644 index 000000000..e88dd235c --- /dev/null +++ b/src/main/java/com/hubsante/model/health/TransportDetails.java @@ -0,0 +1,246 @@ +/** + * Copyright © 2023-2024 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.health; + +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.health.Destination; +import java.util.Arrays; +import java.util.Arrays; +import java.util.Objects; + +/** + * TransportDetails + */ +@JsonPropertyOrder({TransportDetails.JSON_PROPERTY_ORIENTATION, + TransportDetails.JSON_PROPERTY_CONCOURS_REQUEST, + TransportDetails.JSON_PROPERTY_TRANSPORTATION_I_D, + TransportDetails.JSON_PROPERTY_TEAM_CARE, + TransportDetails.JSON_PROPERTY_DESTINATION}) +@JsonTypeName("transportDetails") +@JsonInclude(JsonInclude.Include.NON_EMPTY) + +public class TransportDetails { + public static final String JSON_PROPERTY_ORIENTATION = "orientation"; + private String orientation; + + public static final String JSON_PROPERTY_CONCOURS_REQUEST = "concoursRequest"; + private String concoursRequest; + + public static final String JSON_PROPERTY_TRANSPORTATION_I_D = + "transportationID"; + private String transportationID; + + public static final String JSON_PROPERTY_TEAM_CARE = "teamCare"; + private String teamCare; + + public static final String JSON_PROPERTY_DESTINATION = "destination"; + private Destination destination; + + public TransportDetails() {} + + public TransportDetails orientation(String orientation) { + + this.orientation = orientation; + return this; + } + + /** + * Décision(s) d'orientation prise par le médecin régulateur : - A + *transporter - Laisser sur place + * @return orientation + **/ + @JsonProperty(JSON_PROPERTY_ORIENTATION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public String getOrientation() { + return orientation; + } + + @JsonProperty(JSON_PROPERTY_ORIENTATION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setOrientation(String orientation) { + this.orientation = orientation; + } + + public TransportDetails concoursRequest(String concoursRequest) { + + this.concoursRequest = concoursRequest; + return this; + } + + /** + * Identifiant de la ou des demandes de concours + * @return concoursRequest + **/ + @JsonProperty(JSON_PROPERTY_CONCOURS_REQUEST) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getConcoursRequest() { + return concoursRequest; + } + + @JsonProperty(JSON_PROPERTY_CONCOURS_REQUEST) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setConcoursRequest(String concoursRequest) { + this.concoursRequest = concoursRequest; + } + + public TransportDetails transportationID(String transportationID) { + + this.transportationID = transportationID; + return this; + } + + /** + * Identifiant du véhicule terrestre / aérien / maritime de transport + *principal (= celui dans lequel se trouve le patient), permettant + *d'associer la décision à un véhicule spécifique + au patient. + * @return transportationID + **/ + @JsonProperty(JSON_PROPERTY_TRANSPORTATION_I_D) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getTransportationID() { + return transportationID; + } + + @JsonProperty(JSON_PROPERTY_TRANSPORTATION_I_D) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setTransportationID(String transportationID) { + this.transportationID = transportationID; + } + + public TransportDetails teamCare(String teamCare) { + + this.teamCare = teamCare; + return this; + } + + /** + * Type d’équipe (médical, paramédicale, non médicale, standard, incomplete, + *...) + * @return teamCare + **/ + @JsonProperty(JSON_PROPERTY_TEAM_CARE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public String getTeamCare() { + return teamCare; + } + + @JsonProperty(JSON_PROPERTY_TEAM_CARE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setTeamCare(String teamCare) { + this.teamCare = teamCare; + } + + public TransportDetails destination(Destination destination) { + + this.destination = destination; + return this; + } + + /** + * Get destination + * @return destination + **/ + @JsonProperty(JSON_PROPERTY_DESTINATION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public Destination getDestination() { + return destination; + } + + @JsonProperty(JSON_PROPERTY_DESTINATION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setDestination(Destination destination) { + this.destination = destination; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TransportDetails transportDetails = (TransportDetails)o; + return Objects.equals(this.orientation, transportDetails.orientation) && + Objects.equals(this.concoursRequest, + transportDetails.concoursRequest) && + Objects.equals(this.transportationID, + transportDetails.transportationID) && + Objects.equals(this.teamCare, transportDetails.teamCare) && + Objects.equals(this.destination, transportDetails.destination); + } + + @Override + public int hashCode() { + return Objects.hash(orientation, concoursRequest, transportationID, + teamCare, destination); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TransportDetails {\n"); + sb.append(" orientation: ") + .append(toIndentedString(orientation)) + .append("\n"); + sb.append(" concoursRequest: ") + .append(toIndentedString(concoursRequest)) + .append("\n"); + sb.append(" transportationID: ") + .append(toIndentedString(transportationID)) + .append("\n"); + sb.append(" teamCare: ").append(toIndentedString(teamCare)).append("\n"); + sb.append(" destination: ") + .append(toIndentedString(destination)) + .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/health/Victims.java b/src/main/java/com/hubsante/model/health/Victims.java deleted file mode 100644 index bccfeb25b..000000000 --- a/src/main/java/com/hubsante/model/health/Victims.java +++ /dev/null @@ -1,256 +0,0 @@ -/** - * Copyright © 2023-2024 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.health; - -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; - -/** - * Victims - */ -@JsonPropertyOrder({Victims.JSON_PROPERTY_COUNT, - Victims.JSON_PROPERTY_MAIN_VICTIM, - Victims.JSON_PROPERTY_FREETEXT}) -@JsonTypeName("victims") -@JsonInclude(JsonInclude.Include.NON_EMPTY) - -public class Victims { - - /** - * Indique le nombre de victimes selon la nomenclature du référentiel CISU - */ - public enum CountEnum { - _0("0"), - - _1("1"), - - SEVERAL("SEVERAL"), - - MANY("MANY"), - - UNKNOWN("UNKNOWN"); - - private String value; - - CountEnum(String value) { this.value = value; } - - @JsonValue - public String getValue() { - return value; - } - - @Override - public String toString() { - return String.valueOf(value); - } - - @JsonCreator - public static CountEnum fromValue(String value) { - for (CountEnum b : CountEnum.values()) { - if (b.value.equals(value)) { - return b; - } - } - throw new IllegalArgumentException("Unexpected value '" + value + "'"); - } - } - - public static final String JSON_PROPERTY_COUNT = "count"; - private CountEnum count; - - /** - * Identifie le type de la principale victime (celle dont l'état de santé - * provoque le déclenchement de l'envoi des secours). Prend les valeurs du - * référentiel CISU. Entre dans la détermination des partenaires impliqués par - * NexSIS. - */ - public enum MainVictimEnum { - INFANT("INFANT"), - - CHILD("CHILD"), - - ADULT("ADULT"), - - SENIOR("SENIOR"); - - private String value; - - MainVictimEnum(String value) { this.value = value; } - - @JsonValue - public String getValue() { - return value; - } - - @Override - public String toString() { - return String.valueOf(value); - } - - @JsonCreator - public static MainVictimEnum fromValue(String value) { - for (MainVictimEnum b : MainVictimEnum.values()) { - if (b.value.equals(value)) { - return b; - } - } - throw new IllegalArgumentException("Unexpected value '" + value + "'"); - } - } - - public static final String JSON_PROPERTY_MAIN_VICTIM = "mainVictim"; - private MainVictimEnum mainVictim; - - public static final String JSON_PROPERTY_FREETEXT = "freetext"; - private String freetext; - - public Victims() {} - - public Victims count(CountEnum count) { - - this.count = count; - return this; - } - - /** - * Indique le nombre de victimes selon la nomenclature du référentiel CISU - * @return count - **/ - @JsonProperty(JSON_PROPERTY_COUNT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public CountEnum getCount() { - return count; - } - - @JsonProperty(JSON_PROPERTY_COUNT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setCount(CountEnum count) { - this.count = count; - } - - public Victims mainVictim(MainVictimEnum mainVictim) { - - this.mainVictim = mainVictim; - return this; - } - - /** - * Identifie le type de la principale victime (celle dont l'état de santé - *provoque le déclenchement de l'envoi des secours). Prend les valeurs du - *référentiel CISU. Entre dans la détermination des partenaires impliqués par - *NexSIS. - * @return mainVictim - **/ - @JsonProperty(JSON_PROPERTY_MAIN_VICTIM) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public MainVictimEnum getMainVictim() { - return mainVictim; - } - - @JsonProperty(JSON_PROPERTY_MAIN_VICTIM) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setMainVictim(MainVictimEnum mainVictim) { - this.mainVictim = mainVictim; - } - - public Victims freetext(String freetext) { - - this.freetext = freetext; - return this; - } - - /** - * Permet de complémenter en commentaire libre la(les) victime(s) - * @return freetext - **/ - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getFreetext() { - return freetext; - } - - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFreetext(String freetext) { - this.freetext = freetext; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - Victims victims = (Victims)o; - return Objects.equals(this.count, victims.count) && - Objects.equals(this.mainVictim, victims.mainVictim) && - Objects.equals(this.freetext, victims.freetext); - } - - @Override - public int hashCode() { - return Objects.hash(count, mainVictim, freetext); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class Victims {\n"); - sb.append(" count: ").append(toIndentedString(count)).append("\n"); - sb.append(" mainVictim: ") - .append(toIndentedString(mainVictim)) - .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/health/WayName.java b/src/main/java/com/hubsante/model/health/WayName.java index fe9a9746b..08c61bfed 100644 --- a/src/main/java/com/hubsante/model/health/WayName.java +++ b/src/main/java/com/hubsante/model/health/WayName.java @@ -90,7 +90,7 @@ public WayName type(String type) { } /** - * Get type + * Type de la voie * @return type **/ @JsonProperty(JSON_PROPERTY_TYPE) @@ -113,7 +113,7 @@ public WayName name(String name) { } /** - * Get name + * Nom de la voie * @return name **/ @JsonProperty(JSON_PROPERTY_NAME) diff --git a/src/main/java/com/hubsante/model/health/WhatsHappen.java b/src/main/java/com/hubsante/model/health/WhatsHappen.java index 9c6b70f02..792e0b947 100644 --- a/src/main/java/com/hubsante/model/health/WhatsHappen.java +++ b/src/main/java/com/hubsante/model/health/WhatsHappen.java @@ -41,9 +41,8 @@ /** * WhatsHappen */ -@JsonPropertyOrder({WhatsHappen.JSON_PROPERTY_CODE, - WhatsHappen.JSON_PROPERTY_LABEL, - WhatsHappen.JSON_PROPERTY_FREETEXT}) +@JsonPropertyOrder( + {WhatsHappen.JSON_PROPERTY_CODE, WhatsHappen.JSON_PROPERTY_LABEL}) @JsonTypeName("whatsHappen") @JsonInclude(JsonInclude.Include.NON_EMPTY) @@ -54,9 +53,6 @@ public class WhatsHappen { public static final String JSON_PROPERTY_LABEL = "label"; private String label; - public static final String JSON_PROPERTY_FREETEXT = "freetext"; - private String freetext; - public WhatsHappen() {} public WhatsHappen code(String code) { @@ -107,30 +103,6 @@ public void setLabel(String label) { this.label = label; } - public WhatsHappen freetext(String freetext) { - - this.freetext = freetext; - return this; - } - - /** - * Commentaire libre permettant de passer des informations complémentaires - *associées à la nomenclature - * @return freetext - **/ - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public String getFreetext() { - return freetext; - } - - @JsonProperty(JSON_PROPERTY_FREETEXT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFreetext(String freetext) { - this.freetext = freetext; - } - @Override public boolean equals(Object o) { if (this == o) { @@ -141,13 +113,12 @@ public boolean equals(Object o) { } WhatsHappen whatsHappen = (WhatsHappen)o; return Objects.equals(this.code, whatsHappen.code) && - Objects.equals(this.label, whatsHappen.label) && - Objects.equals(this.freetext, whatsHappen.freetext); + Objects.equals(this.label, whatsHappen.label); } @Override public int hashCode() { - return Objects.hash(code, label, freetext); + return Objects.hash(code, label); } @Override @@ -156,7 +127,6 @@ public String toString() { sb.append("class WhatsHappen {\n"); sb.append(" code: ").append(toIndentedString(code)).append("\n"); sb.append(" label: ").append(toIndentedString(label)).append("\n"); - sb.append(" freetext: ").append(toIndentedString(freetext)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/src/main/java/com/hubsante/model/common/DistributionElement.java b/src/main/java/com/hubsante/model/rcde/DistributionElement.java similarity index 98% rename from src/main/java/com/hubsante/model/common/DistributionElement.java rename to src/main/java/com/hubsante/model/rcde/DistributionElement.java index 8f00e9500..ed1e4da5e 100644 --- a/src/main/java/com/hubsante/model/common/DistributionElement.java +++ b/src/main/java/com/hubsante/model/rcde/DistributionElement.java @@ -25,7 +25,7 @@ * the class manually. */ -package com.hubsante.model.common; +package com.hubsante.model.rcde; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; @@ -34,9 +34,9 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.dataformat.xml.annotation.*; -import com.hubsante.model.common.Recipient; -import com.hubsante.model.common.Sender; import com.hubsante.model.edxl.ContentMessage; +import com.hubsante.model.rcde.Recipient; +import com.hubsante.model.rcde.Sender; import java.time.OffsetDateTime; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/main/java/com/hubsante/model/common/Recipient.java b/src/main/java/com/hubsante/model/rcde/Recipient.java similarity index 99% rename from src/main/java/com/hubsante/model/common/Recipient.java rename to src/main/java/com/hubsante/model/rcde/Recipient.java index e9865b776..dc291b6d8 100644 --- a/src/main/java/com/hubsante/model/common/Recipient.java +++ b/src/main/java/com/hubsante/model/rcde/Recipient.java @@ -25,7 +25,7 @@ * the class manually. */ -package com.hubsante.model.common; +package com.hubsante.model.rcde; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/src/main/java/com/hubsante/model/common/Sender.java b/src/main/java/com/hubsante/model/rcde/Sender.java similarity index 98% rename from src/main/java/com/hubsante/model/common/Sender.java rename to src/main/java/com/hubsante/model/rcde/Sender.java index febd42246..121d11d05 100644 --- a/src/main/java/com/hubsante/model/common/Sender.java +++ b/src/main/java/com/hubsante/model/rcde/Sender.java @@ -25,7 +25,7 @@ * the class manually. */ -package com.hubsante.model.common; +package com.hubsante.model.rcde; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/src/main/java/com/hubsante/model/common/Reference.java b/src/main/java/com/hubsante/model/reference/Reference.java similarity index 78% rename from src/main/java/com/hubsante/model/common/Reference.java rename to src/main/java/com/hubsante/model/reference/Reference.java index 557274a07..755d66e6d 100644 --- a/src/main/java/com/hubsante/model/common/Reference.java +++ b/src/main/java/com/hubsante/model/reference/Reference.java @@ -25,7 +25,7 @@ * the class manually. */ -package com.hubsante.model.common; +package com.hubsante.model.reference; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; @@ -43,7 +43,7 @@ */ @JsonPropertyOrder({Reference.JSON_PROPERTY_DISTRIBUTION_I_D, Reference.JSON_PROPERTY_REFUSED, - Reference.JSON_PROPERTY_INFO_DISTRIBUTION_I_D}) + Reference.JSON_PROPERTY_ERROR_DISTRIBUTION_I_D}) @JsonTypeName("reference") @JsonInclude(JsonInclude.Include.NON_EMPTY) @@ -56,9 +56,9 @@ public class Reference { public static final String JSON_PROPERTY_REFUSED = "refused"; private Boolean refused; - public static final String JSON_PROPERTY_INFO_DISTRIBUTION_I_D = - "infoDistributionID"; - private String infoDistributionID; + public static final String JSON_PROPERTY_ERROR_DISTRIBUTION_I_D = + "errorDistributionID"; + private String errorDistributionID; public Reference() {} @@ -69,7 +69,7 @@ public Reference distributionID(String distributionID) { } /** - * Get distributionID + * Identifiant unique du message référencé * @return distributionID **/ @JsonProperty(JSON_PROPERTY_DISTRIBUTION_I_D) @@ -92,7 +92,7 @@ public Reference refused(Boolean refused) { } /** - * Get refused + * Indique si le message acquitté a été refusé * @return refused **/ @JsonProperty(JSON_PROPERTY_REFUSED) @@ -108,27 +108,27 @@ public void setRefused(Boolean refused) { this.refused = refused; } - public Reference infoDistributionID(String infoDistributionID) { + public Reference errorDistributionID(String errorDistributionID) { - this.infoDistributionID = infoDistributionID; + this.errorDistributionID = errorDistributionID; return this; } /** - * Get infoDistributionID - * @return infoDistributionID + * Identifiant unique du message d'erreur lié + * @return errorDistributionID **/ - @JsonProperty(JSON_PROPERTY_INFO_DISTRIBUTION_I_D) + @JsonProperty(JSON_PROPERTY_ERROR_DISTRIBUTION_I_D) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getInfoDistributionID() { - return infoDistributionID; + public String getErrorDistributionID() { + return errorDistributionID; } - @JsonProperty(JSON_PROPERTY_INFO_DISTRIBUTION_I_D) + @JsonProperty(JSON_PROPERTY_ERROR_DISTRIBUTION_I_D) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setInfoDistributionID(String infoDistributionID) { - this.infoDistributionID = infoDistributionID; + public void setErrorDistributionID(String errorDistributionID) { + this.errorDistributionID = errorDistributionID; } @Override @@ -142,12 +142,12 @@ public boolean equals(Object o) { Reference reference = (Reference)o; return Objects.equals(this.distributionID, reference.distributionID) && Objects.equals(this.refused, reference.refused) && - Objects.equals(this.infoDistributionID, reference.infoDistributionID); + Objects.equals(this.errorDistributionID, reference.errorDistributionID); } @Override public int hashCode() { - return Objects.hash(distributionID, refused, infoDistributionID); + return Objects.hash(distributionID, refused, errorDistributionID); } @Override @@ -158,8 +158,8 @@ public String toString() { .append(toIndentedString(distributionID)) .append("\n"); sb.append(" refused: ").append(toIndentedString(refused)).append("\n"); - sb.append(" infoDistributionID: ") - .append(toIndentedString(infoDistributionID)) + sb.append(" errorDistributionID: ") + .append(toIndentedString(errorDistributionID)) .append("\n"); sb.append("}"); return sb.toString(); diff --git a/src/main/java/com/hubsante/model/common/ReferenceWrapper.java b/src/main/java/com/hubsante/model/reference/ReferenceWrapper.java similarity index 92% rename from src/main/java/com/hubsante/model/common/ReferenceWrapper.java rename to src/main/java/com/hubsante/model/reference/ReferenceWrapper.java index bae592adf..a9752f47f 100644 --- a/src/main/java/com/hubsante/model/common/ReferenceWrapper.java +++ b/src/main/java/com/hubsante/model/reference/ReferenceWrapper.java @@ -25,7 +25,7 @@ * the class manually. */ -package com.hubsante.model.common; +package com.hubsante.model.reference; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; @@ -34,8 +34,8 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.dataformat.xml.annotation.*; -import com.hubsante.model.common.DistributionElement; -import com.hubsante.model.common.Reference; +import com.hubsante.model.rcde.DistributionElement; +import com.hubsante.model.reference.Reference; import java.util.Arrays; import java.util.Arrays; import java.util.Objects; @@ -50,6 +50,7 @@ DistributionElement.JSON_PROPERTY_STATUS, DistributionElement.JSON_PROPERTY_RECIPIENT, ReferenceWrapper.JSON_PROPERTY_REFERENCE}) +@JsonTypeName("referenceWrapper") @JsonInclude(JsonInclude.Include.NON_EMPTY) public class ReferenceWrapper extends DistributionElement { @@ -71,14 +72,14 @@ public ReferenceWrapper reference(Reference reference) { * @return reference **/ @JsonProperty(JSON_PROPERTY_REFERENCE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Reference getReference() { return reference; } @JsonProperty(JSON_PROPERTY_REFERENCE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setReference(Reference reference) { this.reference = reference; } diff --git a/src/main/java/com/hubsante/model/report/Error.java b/src/main/java/com/hubsante/model/report/Error.java new file mode 100644 index 000000000..4e9f91389 --- /dev/null +++ b/src/main/java/com/hubsante/model/report/Error.java @@ -0,0 +1,228 @@ +/** + * Copyright © 2023-2024 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.report; + +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.report.ErrorCode; +import java.util.Arrays; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** + * Error + */ +@JsonPropertyOrder({Error.JSON_PROPERTY_ERROR_CODE, + Error.JSON_PROPERTY_ERROR_CAUSE, + Error.JSON_PROPERTY_SOURCE_MESSAGE, + Error.JSON_PROPERTY_REFERENCED_DISTRIBUTION_I_D}) +@JsonTypeName("error") +@JsonInclude(JsonInclude.Include.NON_EMPTY) + +public class Error { + @JacksonXmlProperty(isAttribute = true) + String xmlns = "urn:emergency:cisu:2.0:error"; + public static final String JSON_PROPERTY_ERROR_CODE = "errorCode"; + private ErrorCode errorCode; + + public static final String JSON_PROPERTY_ERROR_CAUSE = "errorCause"; + private String errorCause; + + public static final String JSON_PROPERTY_SOURCE_MESSAGE = "sourceMessage"; + private Map sourceMessage = new HashMap<>(); + + public static final String JSON_PROPERTY_REFERENCED_DISTRIBUTION_I_D = + "referencedDistributionID"; + private String referencedDistributionID; + + public Error() {} + + public Error errorCode(ErrorCode errorCode) { + + this.errorCode = errorCode; + return this; + } + + /** + * Get errorCode + * @return errorCode + **/ + @JsonProperty(JSON_PROPERTY_ERROR_CODE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public ErrorCode getErrorCode() { + return errorCode; + } + + @JsonProperty(JSON_PROPERTY_ERROR_CODE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setErrorCode(ErrorCode errorCode) { + this.errorCode = errorCode; + } + + public Error errorCause(String errorCause) { + + this.errorCause = errorCause; + return this; + } + + /** + * La ou les causes d'erreur dans le message source + * @return errorCause + **/ + @JsonProperty(JSON_PROPERTY_ERROR_CAUSE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public String getErrorCause() { + return errorCause; + } + + @JsonProperty(JSON_PROPERTY_ERROR_CAUSE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setErrorCause(String errorCause) { + this.errorCause = errorCause; + } + + public Error sourceMessage(Map sourceMessage) { + + this.sourceMessage = sourceMessage; + return this; + } + + public Error putSourceMessageItem(String key, Object sourceMessageItem) { + if (this.sourceMessage == null) { + this.sourceMessage = new HashMap<>(); + } + this.sourceMessage.put(key, sourceMessageItem); + return this; + } + + /** + * Get sourceMessage + * @return sourceMessage + **/ + @JsonProperty(JSON_PROPERTY_SOURCE_MESSAGE) + @JsonInclude(content = JsonInclude.Include.ALWAYS, + value = JsonInclude.Include.USE_DEFAULTS) + + public Map + getSourceMessage() { + return sourceMessage; + } + + @JsonProperty(JSON_PROPERTY_SOURCE_MESSAGE) + @JsonInclude(content = JsonInclude.Include.ALWAYS, + value = JsonInclude.Include.USE_DEFAULTS) + public void + setSourceMessage(Map sourceMessage) { + this.sourceMessage = sourceMessage; + } + + public Error referencedDistributionID(String referencedDistributionID) { + + this.referencedDistributionID = referencedDistributionID; + return this; + } + + /** + * DistributionID du message source + * @return referencedDistributionID + **/ + @JsonProperty(JSON_PROPERTY_REFERENCED_DISTRIBUTION_I_D) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public String getReferencedDistributionID() { + return referencedDistributionID; + } + + @JsonProperty(JSON_PROPERTY_REFERENCED_DISTRIBUTION_I_D) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setReferencedDistributionID(String referencedDistributionID) { + this.referencedDistributionID = referencedDistributionID; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Error error = (Error)o; + return Objects.equals(this.errorCode, error.errorCode) && + Objects.equals(this.errorCause, error.errorCause) && + Objects.equals(this.sourceMessage, error.sourceMessage) && + Objects.equals(this.referencedDistributionID, + error.referencedDistributionID); + } + + @Override + public int hashCode() { + return Objects.hash(errorCode, errorCause, sourceMessage, + referencedDistributionID); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Error {\n"); + sb.append(" errorCode: ") + .append(toIndentedString(errorCode)) + .append("\n"); + sb.append(" errorCause: ") + .append(toIndentedString(errorCause)) + .append("\n"); + sb.append(" sourceMessage: ") + .append(toIndentedString(sourceMessage)) + .append("\n"); + sb.append(" referencedDistributionID: ") + .append(toIndentedString(referencedDistributionID)) + .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/report/ErrorCode.java b/src/main/java/com/hubsante/model/report/ErrorCode.java index b736b2df1..a78af6448 100644 --- a/src/main/java/com/hubsante/model/report/ErrorCode.java +++ b/src/main/java/com/hubsante/model/report/ErrorCode.java @@ -19,67 +19,67 @@ @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum ErrorCode { - DELIVERY_MODE_INCONSISTENCY(100, "DELIVERY_MODE_INCONSISTENCY"), - NOT_ALLOWED_CONTENT_TYPE(101, "NOT_ALLOWED_CONTENT_TYPE"), - UNRECOGNIZED_MESSAGE_FORMAT(102, "UNRECOGNIZED_MESSAGE_FORMAT"), - SENDER_INCONSISTENCY(200, "SENDER_INCONSISTENCY"), - INVALID_MESSAGE(300, "INVALID_MESSAGE"), - SCHEMA_NOT_FOUND(301, "SCHEMA_NOT_FOUND"), - EXPIRED_MESSAGE_BEFORE_ROUTING(400, "EXPIRED_MESSAGE_BEFORE_ROUTING"), - DEAD_LETTER_QUEUED(500, "DEAD_LETTER_QUEUED"), - UNROUTABLE_MESSAGE(501, "UNROUTABLE_MESSAGE"); + DELIVERY_MODE_INCONSISTENCY(100, "DELIVERY_MODE_INCONSISTENCY"), + NOT_ALLOWED_CONTENT_TYPE(101, "NOT_ALLOWED_CONTENT_TYPE"), + UNRECOGNIZED_MESSAGE_FORMAT(102, "UNRECOGNIZED_MESSAGE_FORMAT"), + SENDER_INCONSISTENCY(200, "SENDER_INCONSISTENCY"), + INVALID_MESSAGE(300, "INVALID_MESSAGE"), + SCHEMA_NOT_FOUND(301, "SCHEMA_NOT_FOUND"), + EXPIRED_MESSAGE_BEFORE_ROUTING(400, "EXPIRED_MESSAGE_BEFORE_ROUTING"), + DEAD_LETTER_QUEUED(500, "DEAD_LETTER_QUEUED"), + UNROUTABLE_MESSAGE(501, "UNROUTABLE_MESSAGE"); - private final String JSON_PROPERTY_STATUS_CODE = "statusCode"; - private final int statusCode; - private final String JSON_PROPERTY_STATUS_STRING = "statusString"; - private final String statusString; + private final String JSON_PROPERTY_STATUS_CODE = "statusCode"; + private final int statusCode; + private final String JSON_PROPERTY_STATUS_STRING = "statusString"; + private final String statusString; - ErrorCode(int statusCode, String statusString) { - this.statusCode = statusCode; - this.statusString = statusString; - } + ErrorCode(int statusCode, String statusString) { + this.statusCode = statusCode; + this.statusString = statusString; + } - @JsonCreator - public static ErrorCode forValues(@JsonProperty("statusCode") int statusCode, @JsonProperty("statusString") String statusString) { - for (ErrorCode errorCode : ErrorCode.values()) { - if (errorCode.statusCode == statusCode && errorCode.statusString.equals(statusString)) { - return errorCode; - } - } - return null; - } - @JsonProperty(JSON_PROPERTY_STATUS_CODE) - public int getStatusCode() { - return this.statusCode; + @JsonCreator + public static ErrorCode forValues(@JsonProperty("statusCode") int statusCode, @JsonProperty("statusString") String statusString) { + for (ErrorCode errorCode : ErrorCode.values()) { + if (errorCode.statusCode == statusCode && errorCode.statusString.equals(statusString)) { + return errorCode; + } } + throw new IllegalArgumentException("Inconsistent ErrorCode values"); + } + @JsonProperty(JSON_PROPERTY_STATUS_CODE) + public int getStatusCode() { + return this.statusCode; + } - @JsonProperty(JSON_PROPERTY_STATUS_STRING) - public String getStatusString() { - return this.statusString; - } + @JsonProperty(JSON_PROPERTY_STATUS_STRING) + public String getStatusString() { + return this.statusString; + } - @JsonIgnore - public boolean isSetupError() { - return this.statusCode < 200; - } + @JsonIgnore + public boolean isSetupError() { + return this.statusCode < 200; + } - @JsonIgnore - public boolean isUnauthorizedError() { - return this.statusCode >= 200 && this.statusCode < 300; - } + @JsonIgnore + public boolean isUnauthorizedError() { + return this.statusCode >= 200 && this.statusCode < 300; + } - @JsonIgnore - public boolean isParsingError() { - return this.statusCode >= 300 && this.statusCode < 400; - } + @JsonIgnore + public boolean isParsingError() { + return this.statusCode >= 300 && this.statusCode < 400; + } - @JsonIgnore - public boolean isExpired() { - return this.statusCode >= 400 && this.statusCode < 500; - } + @JsonIgnore + public boolean isExpired() { + return this.statusCode >= 400 && this.statusCode < 500; + } - @JsonIgnore - public boolean isUndelivered() { - return this.statusCode >= 500; - } -} + @JsonIgnore + public boolean isUndelivered() { + return this.statusCode >= 500; + } +} \ No newline at end of file diff --git a/src/main/java/com/hubsante/model/report/ErrorReport.java b/src/main/java/com/hubsante/model/report/ErrorReport.java deleted file mode 100644 index ea10eb99e..000000000 --- a/src/main/java/com/hubsante/model/report/ErrorReport.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * Copyright © 2023-2024 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. - */ -package com.hubsante.model.report; - -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; -import com.hubsante.model.edxl.ContentMessage; - -import java.util.Objects; - -@JsonPropertyOrder({"errorCode", "errorCause", "referencedDistributionID", "sourceMessage"}) -@JsonInclude(JsonInclude.Include.NON_EMPTY) -public class ErrorReport { - @JacksonXmlProperty(isAttribute = true) - String xmlns = "urn:emergency:cisu:2.0:error"; - private final String JSON_PROPERTY_ERROR_CODE = "errorCode"; - private ErrorCode errorCode; - private final String JSON_PROPERTY_ERROR_CAUSE = "errorCause"; - private String errorCause; - private final String JSON_PROPERTY_REFERENCED_DISTRIBUTION_ID = "referencedDistributionID"; - private String referencedDistributionID; - private final String JSON_PROPERTY_SOURCE_MESSAGE = "sourceMessage"; - private Object sourceMessage; - - public ErrorReport() { - } - - public ErrorReport(ErrorCode errorCode, String errorCause, Object sourceMessage, String referencedDistributionID) { - this.errorCode = errorCode; - this.errorCause = errorCause; - this.sourceMessage = sourceMessage; - this.referencedDistributionID = referencedDistributionID; - } - - @JsonProperty(JSON_PROPERTY_ERROR_CODE) - @JsonInclude(JsonInclude.Include.USE_DEFAULTS) - public ErrorCode getErrorCode() { - return errorCode; - } - - @JsonProperty(JSON_PROPERTY_ERROR_CODE) - @JsonInclude(JsonInclude.Include.USE_DEFAULTS) - public void setErrorCode(ErrorCode errorCode) { - this.errorCode = errorCode; - } - - @JsonProperty(JSON_PROPERTY_ERROR_CAUSE) - @JsonInclude(JsonInclude.Include.USE_DEFAULTS) - public String getErrorCause() { - return errorCause; - } - - @JsonProperty(JSON_PROPERTY_ERROR_CAUSE) - @JsonInclude(JsonInclude.Include.USE_DEFAULTS) - public void setErrorCause(String errorCause) { - this.errorCause = errorCause; - } - - @JsonProperty(JSON_PROPERTY_SOURCE_MESSAGE) - @JsonInclude(JsonInclude.Include.USE_DEFAULTS) - public Object getSourceMessage() { - return sourceMessage; - } - - @JsonProperty(JSON_PROPERTY_SOURCE_MESSAGE) - @JsonInclude(JsonInclude.Include.USE_DEFAULTS) - public void setSourceMessage(Object sourceMessage) { - this.sourceMessage = sourceMessage; - } - - @JsonProperty(JSON_PROPERTY_REFERENCED_DISTRIBUTION_ID) - @JsonInclude(JsonInclude.Include.NON_EMPTY) - public String getReferencedDistributionID() { - return referencedDistributionID; - } - - @JsonProperty(JSON_PROPERTY_REFERENCED_DISTRIBUTION_ID) - @JsonInclude(JsonInclude.Include.NON_EMPTY) - public void setReferencedDistributionID(String referencedDistributionID) { - this.referencedDistributionID = referencedDistributionID; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - ErrorReport that = (ErrorReport) o; - return errorCode == that.errorCode && - Objects.equals(errorCause, that.errorCause) && - Objects.equals(sourceMessage, that.sourceMessage) && - Objects.equals(referencedDistributionID, that.referencedDistributionID); - } - - @Override - public int hashCode() { - return Objects.hash(errorCode, errorCause, sourceMessage, referencedDistributionID); - } -} diff --git a/src/main/java/com/hubsante/model/report/ErrorWrapper.java b/src/main/java/com/hubsante/model/report/ErrorWrapper.java index f90864fcb..9e91c2c57 100644 --- a/src/main/java/com/hubsante/model/report/ErrorWrapper.java +++ b/src/main/java/com/hubsante/model/report/ErrorWrapper.java @@ -27,89 +27,92 @@ package com.hubsante.model.report; +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.dataformat.xml.annotation.JacksonXmlProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.dataformat.xml.annotation.*; import com.hubsante.model.edxl.ContentMessage; - +import com.hubsante.model.report.Error; +import java.util.Arrays; +import java.util.Arrays; import java.util.Objects; /** * ErrorWrapper */ @JsonPropertyOrder({ErrorWrapper.JSON_PROPERTY_ERROR}) +@JsonTypeName("errorWrapper") @JsonInclude(JsonInclude.Include.NON_EMPTY) -@JacksonXmlRootElement(localName = "message") + public class ErrorWrapper extends ContentMessage { - @JacksonXmlProperty(isAttribute = true) - String xmlns = "urn:emergency:cisu:2.0"; - public static final String JSON_PROPERTY_ERROR = "error"; - private ErrorReport error; + @JacksonXmlProperty(isAttribute = true) + String xmlns = "urn:emergency:cisu:2.0"; + public static final String JSON_PROPERTY_ERROR = "error"; + private Error error; - public ErrorWrapper() {} + public ErrorWrapper() {} - public ErrorWrapper error(ErrorReport error) { + public ErrorWrapper error(Error error) { - this.error = error; - return this; - } + this.error = error; + return this; + } - /** - * Get error - * @return error - **/ - @JsonProperty(JSON_PROPERTY_ERROR) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + /** + * Get error + * @return error + **/ + @JsonProperty(JSON_PROPERTY_ERROR) + @JsonInclude(value = JsonInclude.Include.ALWAYS) - public ErrorReport getError() { - return error; - } + public Error getError() { + return error; + } - @JsonProperty(JSON_PROPERTY_ERROR) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setError(ErrorReport error) { - this.error = error; - } + @JsonProperty(JSON_PROPERTY_ERROR) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setError(Error error) { + this.error = error; + } - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - ErrorWrapper that = (ErrorWrapper) o; - return Objects.equals(this.error, that.error); + @Override + public boolean equals(Object o) { + if (this == o) { + return true; } - - @Override - public int hashCode() { - return Objects.hash(error, super.hashCode()); + if (o == null || getClass() != o.getClass()) { + return false; } + ErrorWrapper errorWrapper = (ErrorWrapper)o; + return Objects.equals(this.error, errorWrapper.error) && super.equals(o); + } - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class ErrorWrapper {\n"); - sb.append(" ").append(toIndentedString(super.toString())).append("\n"); - sb.append(" error: ") - .append(toIndentedString(error)) - .append("\n"); - sb.append("}"); - return sb.toString(); - } + @Override + public int hashCode() { + return Objects.hash(error, super.hashCode()); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ErrorWrapper {\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + sb.append(" error: ").append(toIndentedString(error)).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 "); + /** + * 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"; } -} \ No newline at end of file + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/resources/json-schema/EDXL-DE-full-with-GEO.schema.json b/src/main/resources/json-schema/EDXL-DE-full-with-GEO.schema.json deleted file mode 100644 index ca6227b24..000000000 --- a/src/main/resources/json-schema/EDXL-DE-full-with-GEO.schema.json +++ /dev/null @@ -1,384 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "classpath:/json-schema/schema#", - "definitions": { - "EdxlEnvelope": { - "type": "object", - "properties": { - "senderID": { - "type": "string" - }, - "distributionID": { - "type": "string" - }, - "dateTimeSent": { - "type": "string", - "format": "date-time" - }, - "dateTimeExpires": { - "type": "string", - "format": "date-time" - }, - "distributionStatus": { - "$ref": "#/definitions/DistributionStatus" - }, - "distributionKind": { - "$ref": "#/definitions/DistributionKind" - }, - "descriptor": { - "$ref": "#/definitions/Descriptor" - } - }, - "required": [ - "senderID", - "distributionID", - "dateTimeSent", - "dateTimeExpires", - "distributionStatus", - "distributionKind", - "descriptor" - ] - }, - "EdxlMessage": { - "type": "object", - "allOf": [ - { - "$ref": "#/definitions/EdxlEnvelope" - } - ], - "properties": { - "content": { - "$ref": "#/definitions/Content" - } - }, - "required": [ - "content" - ] - }, - "Content": { - "type": "array", - "items": { - "$ref": "#/definitions/ContentObject" - }, - "minItems": 1 - }, - "ContentObject": { - "type": "object", - "required": [ - "jsonContent" - ], - "properties": { - "jsonContent": { - "$ref": "#/definitions/JsonContent" - } - } - }, - "JsonContent": { - "type": "object", - "required": [ - "embeddedJsonContent" - ], - "properties": { - "embeddedJsonContent": { - "$ref": "#/definitions/EmbeddedJsonContent" - } - } - }, - "EmbeddedJsonContent": { - "type": "object", - "oneOf": [ - { - "allOf": [ - { - "properties": { - "message": { - "$ref": "RC-DE.schema.json" - } - } - }, - { - "properties": { - "message": { - "properties": { - "createCaseHealth": { - "$ref": "RS-EDA.schema.json" - } - }, - "required": [ - "createCaseHealth" - ] - } - } - } - ] - }, - { - "allOf": [ - { - "properties": { - "message": { - "$ref": "RC-DE.schema.json" - } - } - }, - { - "properties": { - "message": { - "properties": { - "createCase": { - "$ref": "RC-EDA.schema.json" - } - }, - "required": [ - "createCase" - ] - } - } - } - ] - }, - { - "allOf": [ - { - "properties": { - "message": { - "$ref": "RC-DE.schema.json" - } - } - }, - { - "properties": { - "message": { - "properties": { - "reference": { - "$ref": "RC-REF.schema.json" - } - }, - "required": [ - "reference" - ] - } - } - } - ] - }, - { - "properties": { - "message": { - "$ref": "RS-INFO.schema.json" - } - } - }, - { - "allOf": [ - { - "properties": { - "message": { - "$ref": "RC-DE.schema.json" - } - } - }, - { - "properties": { - "message": { - "properties": { - "emsi": { - "$ref": "EMSI.schema.json" - } - }, - "required": [ - "emsi" - ] - } - } - } - ] - }, - { - "allOf": [ - { - "properties": { - "message": { - "$ref": "RC-DE.schema.json" - } - } - }, - { - "properties": { - "message": { - "properties": { - "resourceDetails": { - "type": "array", - "items": { - "$ref": "GEO-RES.schema.json" - } - } - }, - "required": [ - "resourceDetails" - ] - } - } - } - ] - }, - { - "allOf": [ - { - "properties": { - "message": { - "$ref": "RC-DE.schema.json" - } - } - }, - { - "properties": { - "message": { - "properties": { - "positionUpdate": { - "type": "array", - "items": { - "$ref": "GEO-POS.schema.json" - } - } - }, - "required": [ - "positionUpdate" - ] - } - } - } - ] - }, - { - "allOf": [ - { - "properties": { - "message": { - "$ref": "RC-DE.schema.json" - } - } - }, - { - "properties": { - "message": { - "properties": { - "resourceRequest": { - "$ref": "GEO-REQ.schema.json" - } - }, - "required": [ - "resourceRequest" - ] - } - } - } - ] - }, - { - "properties": { - "message": { - "properties": { - "customContent": { - "$ref": "CustomContent.schema.json" - } - }, - "required": [ - "customContent" - ] - } - } - } - ] - }, - "Descriptor": { - "type": "object", - "properties": { - "explicitAddress": { - "$ref": "#/definitions/ExplicitAddress" - }, - "language": { - "type": "string" - } - }, - "required": [ - "explicitAddress", - "language" - ] - }, - "DistributionKind": { - "type": "string", - "enum": [ - "Report", - "Update", - "Cancel", - "Ack", - "Error" - ] - }, - "DistributionStatus": { - "type": "string", - "enum": [ - "Actual", - "Exercise" - ] - }, - "ExplicitAddress": { - "type": "object", - "properties": { - "explicitAddressScheme": { - "type": "string" - }, - "explicitAddressValue": { - "type": "string" - } - }, - "required": [ - "explicitAddressScheme", - "explicitAddressValue" - ] - } - }, - "properties": { - "edxlMessage": { - "$ref": "#/definitions/EdxlMessage" - }, - "edxlEnvelope": { - "$ref": "#/definitions/EdxlEnvelope" - }, - "content": { - "$ref": "#/definitions/Content" - }, - "contentObject": { - "$ref": "#/definitions/ContentObject" - }, - "jsonContent": { - "$ref": "#/definitions/JsonContent" - }, - "embeddedJsonContent": { - "$ref": "#/definitions/EmbeddedJsonContent" - }, - "descriptor": { - "$ref": "#/definitions/Descriptor" - }, - "distributionKind": { - "$ref": "#/definitions/DistributionKind" - }, - "distributionStatus": { - "$ref": "#/definitions/DistributionStatus" - }, - "explicitAddress": { - "$ref": "#/definitions/ExplicitAddress" - } - }, - "required": [ - "senderID", - "distributionID", - "dateTimeSent", - "dateTimeExpires", - "distributionStatus", - "distributionKind", - "descriptor", - "content" - ] -} \ No newline at end of file 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 2d694e0eb..db9468b4c 100644 --- a/src/main/resources/json-schema/EDXL-DE-full.schema.json +++ b/src/main/resources/json-schema/EDXL-DE-full.schema.json @@ -206,7 +206,7 @@ "message": { "properties": { "customContent": { - "$ref": "CustomContent.schema.json" + "$ref": "customContent.schema.json" } }, "required": [ diff --git a/src/main/resources/json-schema/EMSI.schema.json b/src/main/resources/json-schema/EMSI.schema.json index 99085db15..cf07ed4f3 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": "24.04.12", + "version": "24.05.29", "example": "example.json#", "type": "object", "title": "emsi", @@ -1408,10 +1408,7 @@ "title": "Localisation de l'\u00e9v\u00e9nement", "x-display": "expansion-panels", "x-health-only": false, - "required": [ - "TYPE", - "POSITION" - ], + "required": [], "properties": { "DATIME": { "type": "string", @@ -1594,9 +1591,7 @@ "title": "Position de l'op\u00e9ration", "x-display": "expansion-panels", "x-health-only": false, - "required": [ - "LOC_ID" - ], + "required": [], "properties": { "LOC_ID": { "type": "string", diff --git a/src/main/resources/json-schema/GEO-POS.schema.json b/src/main/resources/json-schema/GEO-POS.schema.json index 5c2c82e9d..a0ce95614 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": "24.04.12", + "version": "24.05.29", "example": "example.json#", "type": "object", "title": "geoPositionUpdate", diff --git a/src/main/resources/json-schema/GEO-REQ.schema.json b/src/main/resources/json-schema/GEO-REQ.schema.json index 9324f3e52..e4be3d7f1 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": "24.04.12", + "version": "24.05.29", "example": "example.json#", "type": "object", "title": "geoResourceRequest", diff --git a/src/main/resources/json-schema/GEO-RES.schema.json b/src/main/resources/json-schema/GEO-RES.schema.json index 181cd4e10..9fa3dd58b 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": "24.04.12", + "version": "24.05.29", "example": "example.json#", "type": "object", "title": "geoResourceDetails", diff --git a/src/main/resources/json-schema/RC-EDA.schema.json b/src/main/resources/json-schema/RC-EDA.schema.json index 7a16bf28f..666b90d02 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": "24.04.12", + "version": "24.05.29", "example": "example.json#", "type": "object", "title": "createCase", @@ -79,12 +79,16 @@ "$ref": "#/definitions/additionalInformation" }, "freetext": { - "type": "string", - "title": "Description de l'affaire/dossier", + "type": "array", "x-health-only": false, - "x-cols": 6, - "example": "example.json#/freetext", - "description": "Texte libre permettant de donner des informations suppl\u00e9mentaires concernant l'affaire" + "items": { + "type": "string", + "title": "Description de l'affaire/dossier", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/freetext/0", + "description": "Texte libre permettant de donner des informations suppl\u00e9mentaires concernant l'affaire/dossier. Ces informations sont g\u00e9n\u00e9rales, et ont vocation \u00e0 \u00eatre \u00e9chang\u00e9es en inter-force. " + } } }, "definitions": { @@ -143,7 +147,7 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/location/locLabel", - "description": "Permet d'indiquer des indications auto suffisantes permettant pour un op\u00e9rationnel d'acc\u00e9der facilement au lieu avec des indications minimales.\nDans les messages NexSIS, va souvent correspondre \u00e0 la concat\u00e9nation suivant des r\u00e8gles m\u00e9tiers de diff\u00e9rentes informations, dont le \"name\" (toponyme) et l'adresse.\nComprend au maximum 255 caract\u00e8res" + "description": "Donne les informations minimales d'identification du lieu d'intervention, qui permet d'identifier rapidement le lieu pour les \u00e9quipes op\u00e9rationnelles. Comprend au maximum 255 caract\u00e8res.\n15-18 : Dans les messages NexSIS, va souvent correspondre \u00e0 la concat\u00e9nation suivant des r\u00e8gles m\u00e9tiers de diff\u00e9rentes informations, dont le \"name\" (toponyme) et l'adresse.\n" }, "name": { "type": "string", @@ -151,7 +155,13 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/location/name", - "description": "Indique le nom de lieu : nom commercial, for\u00eat de Fontainebleau, lac du Der (plut\u00f4t \u00e0 destination des syst\u00e8mes)." + "description": "Indique le nom de lieu : nom commercial, Etablissement, for\u00eat de Fontainebleau, lac du Der (plut\u00f4t \u00e0 destination des syst\u00e8mes)." + }, + "externalLocationId": { + "type": "array", + "items": { + "$ref": "#/definitions/externalLocationId" + } }, "detailedAddress": { "$ref": "#/definitions/detailedAddress" @@ -423,7 +433,7 @@ }, "freetext": { "type": "string", - "title": "Commentaire", + "title": "Informations compl\u00e9mentaires sur la localisation", "x-health-only": false, "x-cols": 6, "example": "example.json#/location/freetext", @@ -443,7 +453,6 @@ "reception", "reporting", "caller", - "alertSource", "location", "qualification", "callTaker" @@ -479,20 +488,15 @@ "ATTENTION" ] }, - "freetext": { - "type": "string", - "title": "Informations compl\u00e9mentaires sur l'alerte", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/initialAlert/freetext", - "description": "Texte libre permettant de donner des informations suppl\u00e9mentaires concernant l'alerte." + "notes": { + "type": "array", + "items": { + "$ref": "#/definitions/notes" + } }, "caller": { "$ref": "#/definitions/caller" }, - "alertSource": { - "$ref": "#/definitions/contactSource" - }, "location": { "$ref": "#/definitions/location" }, @@ -531,6 +535,18 @@ }, "identity": { "$ref": "#/definitions/insIdentity" + }, + "freetext": { + "type": "array", + "x-health-only": false, + "items": { + "type": "string", + "title": "Informations compl\u00e9mentaires sur le patient", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/patient/0/freetext/0", + "description": "Correspond \u00e0 la zone de commentaire renseign\u00e9 par patient cr\u00e9\u00e9/identifi\u00e9" + } } }, "additionalProperties": false, @@ -542,7 +558,8 @@ "x-display": "expansion-panels", "x-health-only": false, "required": [ - "creation" + "creation", + "type" ], "properties": { "id": { @@ -551,7 +568,7 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/decision/0/id", - "description": "ID partag\u00e9 du patient concern\u00e9, lorsque le patient existe et est identifi\u00e9" + "description": "ID partag\u00e9 du patient concern\u00e9 par la d\u00e9cision, lorsque le patient existe et est identifi\u00e9" }, "creation": { "type": "string", @@ -569,38 +586,17 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/decision/0/type", - "description": "Type de d\u00e9cision prise" - }, - "orientation": { - "type": "string", - "title": "Orientation", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/decision/0/orientation", - "description": "D\u00e9cision(s) d'orientation prise par le m\u00e9decin r\u00e9gulateur" - }, - "transportation": { - "type": "array", - "x-health-only": false, - "items": { - "type": "string", - "title": "Type de transport", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/decision/0/transportation/0", - "description": "Type de transport \u00e0 engager pour la prise en charge du patient" - } - }, - "teamCare": { - "type": "string", - "title": "Niveau de prise en charge", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/decision/0/teamCare", - "description": "Type d\u2019\u00e9quipe (m\u00e9dical, param\u00e9dicale, non m\u00e9dicale, standard, incomplete, ...)" + "description": "Type de d\u00e9cision prise", + "enum": [ + "CONSEIL", + "PMT", + "INTER", + "ORIENT", + "PASPLUS" + ] }, - "destination": { - "$ref": "#/definitions/destination" + "transportDetails": { + "$ref": "#/definitions/transportDetails" } }, "additionalProperties": false, @@ -649,14 +645,6 @@ "x-cols": 6, "example": "example.json#/qualification/whatsHappen/label", "description": "A valoriser avec le libell\u00e9 de la nomenclature associ\u00e9e.\nDans le cas o\u00f9 un syst\u00e8me n'est pas en mesure de reconna\u00eetre un code, il peut directement afficher le libell\u00e9 qui est obligatoirement fourni avec le code." - }, - "freetext": { - "type": "string", - "title": "Commentaire", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/qualification/whatsHappen/freetext", - "description": "Commentaire libre permettant de passer des informations compl\u00e9mentaires associ\u00e9es \u00e0 la nomenclature" } }, "additionalProperties": false, @@ -678,7 +666,188 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/qualification/locationKind/code", - "description": "A valoriser avec un code la nomenclature associ\u00e9e" + "description": "A valoriser avec un code la nomenclature associ\u00e9e", + "enum": [ + "L01.00.00", + "L01.01.00", + "L01.01.01", + "L01.01.02", + "L01.01.03", + "L01.01.04", + "L01.02.00", + "L01.02.01", + "L01.02.02", + "L01.02.03", + "L01.02.04", + "L01.02.05", + "L01.02.06", + "L01.02.07", + "L01.02.08", + "L01.02.09", + "L01.02.10", + "L01.02.11", + "L01.02.12", + "L01.03.00", + "L01.03.01", + "L01.03.02", + "L01.03.03", + "L01.04.00", + "L02.00.00", + "L02.01.00", + "L02.02.00", + "L02.02.01", + "L02.02.02", + "L02.02.03", + "L02.02.04", + "L02.02.05", + "L02.03.00", + "L02.03.01", + "L02.03.02", + "L02.03.03", + "L02.04.00", + "L02.05.00", + "L02.05.01", + "L02.05.02", + "L02.05.03", + "L02.05.04", + "L02.05.05", + "L02.05.06", + "L02.05.07", + "L02.05.08", + "L02.05.09", + "L02.05.10", + "L02.05.11", + "L02.05.12", + "L02.05.13", + "L02.05.14", + "L02.05.15", + "L02.05.16", + "L02.06.00", + "L02.06.01", + "L02.06.02", + "L02.06.03", + "L02.06.04", + "L02.06.05", + "L02.06.06", + "L02.06.07", + "L02.06.08", + "L02.07.00", + "L02.07.01", + "L02.07.02", + "L02.08.00", + "L03.00.00", + "L03.01.00", + "L03.02.00", + "L03.03.00", + "L03.04.00", + "L03.05.00", + "L04.00.00", + "L04.01.00", + "L04.02.00", + "L04.02.01", + "L04.02.02", + "L04.02.03", + "L04.03.00", + "L04.03.01", + "L04.03.02", + "L04.03.03", + "L04.04.00", + "L04.05.00", + "L04.06.00", + "L04.06.01", + "L04.06.02", + "L04.06.03", + "L04.06.04", + "L04.06.05", + "L04.07.00", + "L04.07.01", + "L04.07.02", + "L04.07.03", + "L04.08.00", + "L04.08.01", + "L04.08.02", + "L04.09.00", + "L04.09.01", + "L04.09.02", + "L04.10.00", + "L04.11.00", + "L04.11.01", + "L04.11.02", + "L04.11.03", + "L04.11.04", + "L04.12.00", + "L04.12.01", + "L04.12.02", + "L04.12.03", + "L04.12.04", + "L04.13.00", + "L04.13.01", + "L04.13.02", + "L04.13.03", + "L04.13.04", + "L04.14.00", + "L04.14.01", + "L04.14.02", + "L04.15.00", + "L04.16.00", + "L05.00.00", + "L05.01.00", + "L05.01.01", + "L05.01.02", + "L05.01.03", + "L05.01.04", + "L05.02.00", + "L05.02.01", + "L05.02.02", + "L05.02.03", + "L05.02.04", + "L05.03.00", + "L05.03.01", + "L05.03.02", + "L05.04.00", + "L05.04.01", + "L05.04.02", + "L05.04.03", + "L05.04.04", + "L05.04.05", + "L05.04.06", + "L05.05.00", + "L05.06.00", + "L05.07.00", + "L06.00.00", + "L06.01.00", + "L06.01.01", + "L06.01.02", + "L06.01.03", + "L06.01.04", + "L06.01.05", + "L06.01.06", + "L06.01.07", + "L06.01.08", + "L06.02.00", + "L06.03.00", + "L06.03.01", + "L06.03.02", + "L06.03.03", + "L06.03.04", + "L06.03.05", + "L06.04.00", + "L06.05.00", + "L06.05.01", + "L06.05.02", + "L06.06.00", + "L06.06.01", + "L06.06.02", + "L06.06.03", + "L06.06.04", + "L06.07.00", + "L06.07.01", + "L06.07.02", + "L07.00.00", + "L07.01.00", + "L07.01.01", + "L07.02.00" + ] }, "label": { "type": "string", @@ -687,14 +856,6 @@ "x-cols": 6, "example": "example.json#/qualification/locationKind/label", "description": "A valoriser avec le libell\u00e9 de la nomenclature associ\u00e9e.\nDans le cas o\u00f9 un syst\u00e8me n'est pas en mesure de reconna\u00eetre un code, il peut directement afficher le libell\u00e9 qui est obligatoirement fourni avec le code." - }, - "freetext": { - "type": "string", - "title": "Commentaire", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/qualification/locationKind/freetext", - "description": "Commentaire libre permettant de passer des informations compl\u00e9mentaires associ\u00e9es \u00e0 la nomenclature" } }, "additionalProperties": false, @@ -716,7 +877,46 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/qualification/riskThreat/0/code", - "description": "A valoriser avec un code la nomenclature associ\u00e9e" + "description": "A valoriser avec un code la nomenclature associ\u00e9e", + "enum": [ + "R01", + "R02", + "R03", + "R04", + "R05", + "R06", + "R07", + "R08", + "R09", + "R10", + "R11", + "R12", + "R13", + "R14", + "R15", + "R16", + "R17", + "R18", + "R19", + "R20", + "R21", + "R22", + "R23", + "R24", + "R25", + "R26", + "R27", + "R28", + "R29", + "R30", + "R31", + "R32", + "R33", + "R34", + "R35", + "R36", + "R37" + ] }, "label": { "type": "string", @@ -725,14 +925,6 @@ "x-cols": 6, "example": "example.json#/qualification/riskThreat/0/label", "description": "A valoriser avec le libell\u00e9 de la nomenclature associ\u00e9e.\nDans le cas o\u00f9 un syst\u00e8me n'est pas en mesure de reconna\u00eetre un code, il peut directement afficher le libell\u00e9 qui est obligatoirement fourni avec le code." - }, - "freetext": { - "type": "string", - "title": "Commentaire", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/qualification/riskThreat/0/freetext", - "description": "Commentaire libre permettant de passer des informations compl\u00e9mentaires associ\u00e9es \u00e0 la nomenclature" } }, "additionalProperties": false, @@ -754,7 +946,61 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/qualification/healthMotive/code", - "description": "A valoriser avec un code la nomenclature associ\u00e9e" + "description": "A valoriser avec un code la nomenclature associ\u00e9e", + "enum": [ + "M01.00", + "M01.01", + "M01.02", + "M01.03", + "M02.00", + "M02.01", + "M02.02", + "M02.03", + "M02.04", + "M02.05", + "M02.06", + "M02.07", + "M02.08", + "M02.09", + "M02.10", + "M03.00", + "M03.01", + "M03.02", + "M03.03", + "M03.04", + "M03.05", + "M03.06", + "M03.07", + "M03.08", + "M03.09", + "M03.10", + "M03.11", + "M03.12", + "M03.13", + "M03.14", + "M03.15", + "M03.16", + "M03.17", + "M03.18", + "M03.19", + "M03.20", + "M03.21", + "M03.22", + "M04.00", + "M04.01", + "M04.02", + "M04.03", + "M04.04", + "M05.00", + "M05.01", + "M05.02", + "M06.00", + "M06.01", + "M06.02", + "M06.03", + "M06.04", + "M07.00" + ] }, "label": { "type": "string", @@ -763,14 +1009,6 @@ "x-cols": 6, "example": "example.json#/qualification/healthMotive/label", "description": "A valoriser avec le libell\u00e9 de la nomenclature associ\u00e9e.\nDans le cas o\u00f9 un syst\u00e8me n'est pas en mesure de reconna\u00eetre un code, il peut directement afficher le libell\u00e9 qui est obligatoirement fourni avec le code." - }, - "freetext": { - "type": "string", - "title": "Commentaire", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/qualification/healthMotive/freetext", - "description": "Commentaire libre permettant de passer des informations compl\u00e9mentaires associ\u00e9es \u00e0 la nomenclature" } }, "additionalProperties": false, @@ -824,6 +1062,43 @@ "additionalProperties": false, "example": "example.json#/qualification/victims" }, + "externalLocationId": { + "type": "object", + "title": "Identifiant(s) du lieu", + "x-display": "expansion-panels", + "x-health-only": false, + "required": [ + "source", + "value" + ], + "properties": { + "source": { + "type": "string", + "title": "Source / type d'identifiant", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/location/externalLocationId/0/source", + "description": "Type de l'identifiant fourni", + "enum": [ + "FINESS administratif", + "FINESS g\u00e9ographique", + "SIREN", + "SIRET", + "APE/NAF" + ] + }, + "value": { + "type": "string", + "title": "Identifiant", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/location/externalLocationId/0/value", + "description": "L'identifiant en lui-m\u00eame" + } + }, + "additionalProperties": false, + "example": "example.json#/location/externalLocationId/0" + }, "detailedAddress": { "type": "object", "title": "D\u00e9tails de l'adresse", @@ -839,7 +1114,7 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/location/detailedAddress/complete", - "description": "Num\u00e9ro, type et nom de la voie. \nUtilis\u00e9 pour tout type de voie : autoroute (PK, nom et sens), voie ferr\u00e9e, voie navigable\u2026\nObligatoire et seule valeur des d\u00e9tails de l'adresse fournie par NexSIS." + "description": "Num\u00e9ro, type et nom de la voie. Utilis\u00e9 pour tout type de voie : autoroute (PK, nom et sens), voie ferr\u00e9e, voie navigable\u2026\n15-18 : Obligatoire et seule valeur des d\u00e9tails de l'adresse fournie par NexSIS." }, "number": { "type": "string", @@ -886,7 +1161,7 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/location/city/detail", - "description": "Informations compl\u00e9mentaires permettant de pr\u00e9ciser le quartier, lieu-dit, ancienne commune, \u2026 ou autre information aidant \u00e0 pr\u00e9ciser l'adresse et notamment g\u00e9rer les cas de communes fusionn\u00e9es pour le syst\u00e8me \u00e9metteur\nNB : dans tous les cas, la localisation GPS de la commune doit \u00eatre fournie afin d'\u00e9viter une trop forte ambigu\u00eft\u00e9" + "description": "Informations compl\u00e9mentaires permettant de pr\u00e9ciser le quartier, lieu-dit, ancienne commune, \u2026 ou autre information aidant \u00e0 pr\u00e9ciser l'adresse et notamment g\u00e9rer les cas de communes fusionn\u00e9es pour le syst\u00e8me \u00e9metteur\nNB : dans tous les cas, la localisation GPS de la commune doit \u00eatre fournie afin d'\u00e9viter une trop forte ambigu\u00eft\u00e9." } }, "additionalProperties": false, @@ -1085,14 +1360,16 @@ "title": "Type", "x-health-only": false, "x-cols": 6, - "example": "example.json#/location/detailedAddress/wayName/type" + "example": "example.json#/location/detailedAddress/wayName/type", + "description": "Type de la voie" }, "name": { "type": "string", "title": "Nom", "x-health-only": false, "x-cols": 6, - "example": "example.json#/location/detailedAddress/wayName/name" + "example": "example.json#/location/detailedAddress/wayName/name", + "description": "Nom de la voie" } }, "additionalProperties": false, @@ -1192,12 +1469,43 @@ "additionalProperties": false, "example": "example.json#/location/geometry/point/coord" }, + "notes": { + "type": "object", + "title": "Informations compl\u00e9mentaires sur l'alerte (observations ARM)", + "x-display": "expansion-panels", + "x-health-only": false, + "required": [], + "properties": { + "creation": { + "type": "string", + "title": "Date et heure de l'information compl\u00e9mentaire/l'observation ARM", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/initialAlert/notes/0/creation", + "description": "date et heure de l'observation", + "pattern": "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}[\\-+]\\d{2}:\\d{2}", + "format": "date-time" + }, + "freetext": { + "type": "string", + "title": "Commentaire/Observations", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/initialAlert/notes/0/freetext", + "description": "texte libre contenant les indications renseign\u00e9es par l'ARM" + } + }, + "additionalProperties": false, + "example": "example.json#/initialAlert/notes/0" + }, "caller": { "type": "object", "title": "Requ\u00e9rant", "x-display": "expansion-panels", "x-health-only": false, - "required": [], + "required": [ + "callerContact" + ], "properties": { "callerContact": { "$ref": "#/definitions/contact" @@ -1462,7 +1770,30 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/initialAlert/caller/type", - "description": "Indique la relation du requ\u00e9rant avec l'incident / le patient / la victime" + "description": "Indique la relation du requ\u00e9rant avec l'incident / le patient / la victime", + "enum": [ + "SUJET", + "FAMILLE", + "TIERS", + "POMPIER", + "AMBULANC", + "SECOUR", + "MED", + "MEDSOS", + "MRL", + "EFFML", + "SANTE", + "INF", + "AIDESOIN", + "SF", + "AIDEDOM", + "FDO-MILI", + "ADM-TUTL", + "VIP", + "OBJCONNC", + "AUTRE", + "INCONNU" + ] }, "communication": { "type": "string", @@ -1470,7 +1801,18 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/initialAlert/caller/communication", - "description": "Indique si le requ\u00e9rant rencontre ou non des difficult\u00e9 de communication" + "description": "Indique si le requ\u00e9rant rencontre ou non des difficult\u00e9 de communication", + "enum": [ + "AUCUNE", + "MUET", + "VISION", + "LANGUE", + "PANIQUE", + "HOSTILE", + "AGITE", + "AUTRE", + "IMPOSS" + ] }, "freetext": { "type": "string", @@ -1487,55 +1829,6 @@ "additionalProperties": false, "example": "example.json#/initialAlert/caller" }, - "contactSource": { - "type": "object", - "title": "Source de l'alerte", - "x-display": "expansion-panels", - "x-health-only": false, - "required": [ - "channel", - "type", - "detail" - ], - "properties": { - "channel": { - "type": "string", - "title": "Canal", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/initialAlert/alertSource/channel", - "description": "Permet d'indiquer l'origine du canal \u00e9tablit : Personne, application, DAU, BAU, d\u00e9fibrillateur, ecall" - }, - "type": { - "type": "string", - "title": "Type de contact de la source", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/initialAlert/alertSource/type", - "description": "Type de l'URI utilis\u00e9e par la source, cf. nomenclature EMSI", - "enum": [ - "PSTADD", - "EMLADD", - "IPADD", - "FTPADD", - "WWWADD", - "PHNADD", - "FAXADD", - "PMRADD" - ] - }, - "detail": { - "type": "string", - "title": "URI de contact de la source", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/initialAlert/alertSource/detail", - "description": "Valeur de l'URI utilis\u00e9e par la source" - } - }, - "additionalProperties": false, - "example": "example.json#/initialAlert/alertSource" - }, "callTaker": { "type": "object", "title": "Agent", @@ -1652,10 +1945,19 @@ "x-display": "expansion-panels", "x-health-only": false, "required": [ + "channel", "type", "detail" ], "properties": { + "channel": { + "type": "string", + "title": "Canal", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/initialAlert/caller/callerContact/channel", + "description": "Permet d'indiquer l'origine du canal \u00e9tablit : Personne, application, DAU, BAU, d\u00e9fibrillateur, ecall" + }, "type": { "type": "string", "title": "Type de contact du requ\u00e9rant", @@ -1762,77 +2064,96 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/patient/0/identity/strictFeatures/sex", - "description": "Sexe du patient" + "description": "Sexe du patient", + "enum": [ + "MASC", + "FEM", + "AUTRE", + "INCONNU" + ] } }, "additionalProperties": false, "example": "example.json#/patient/0/identity/strictFeatures" }, - "destination": { + "transportDetails": { "type": "object", - "title": "Destination", + "title": "D\u00e9cision de transport/orientation", "x-display": "expansion-panels", "x-health-only": false, - "required": [], + "required": [ + "orientation", + "teamCare" + ], "properties": { - "type": { + "orientation": { "type": "string", - "title": "Type de destination", + "title": "Type de devenir du patient", "x-health-only": false, "x-cols": 6, - "example": "example.json#/decision/0/destination/type", - "description": "Indique le type de destination de la ressource : service d\u2019urgences d\u2019un Etablissement de sant\u00e9, autres services d\u2019un \u00e9tablissement de sant\u00e9, cabinet d\u2019un professionnel de sant\u00e9, domicile personnel, EPHAD ou long s\u00e9jour, autre", - "enum": [ - "service d\u2019urgences d\u2019un Etablissement de sant\u00e9", - "autres services d\u2019un \u00e9tablissement de sant\u00e9", - "cabinet d\u2019un professionnel de sant\u00e9", - "domicile personnel", - "EPHAD ou long s\u00e9jour", - "autre" - ] + "example": "example.json#/decision/0/transportDetails/orientation", + "description": "D\u00e9cision(s) d'orientation prise par le m\u00e9decin r\u00e9gulateur : \n- A transporter\n- Laisser sur place" }, - "facility": { + "concoursRequest": { "type": "string", - "title": "Etablissement", + "title": "ID demande de concours/de ressources", "x-health-only": false, "x-cols": 6, - "example": "example.json#/decision/0/destination/facility", - "description": "Nom de l'\u00e9tablissement" + "example": "example.json#/decision/0/transportDetails/concoursRequest", + "description": "Identifiant de la ou des demandes de concours " }, - "adminFiness": { + "transportationID": { "type": "string", - "title": "FINESS administratif", + "title": "ID vecteur partag\u00e9", "x-health-only": false, "x-cols": 6, - "example": "example.json#/decision/0/destination/adminFiness", - "description": "N\u00b0 Finess administratif de l'\u00e9tablissement" + "example": "example.json#/decision/0/transportDetails/transportationID", + "description": "Identifiant du v\u00e9hicule terrestre / a\u00e9rien / maritime de transport principal (= celui dans lequel se trouve le patient), permettant d'associer la d\u00e9cision \u00e0 un v\u00e9hicule sp\u00e9cifique + au patient. " }, - "geoFiness": { + "teamCare": { "type": "string", - "title": "FINESS g\u00e9ographique", + "title": "Niveau de prise en charge", "x-health-only": false, "x-cols": 6, - "example": "example.json#/decision/0/destination/geoFiness", - "description": "N\u00b0 Finess g\u00e9ographique de l'\u00e9tablissement" + "example": "example.json#/decision/0/transportDetails/teamCare", + "description": "Type d\u2019\u00e9quipe (m\u00e9dical, param\u00e9dicale, non m\u00e9dicale, standard, incomplete, ...)" }, - "service": { + "destination": { + "$ref": "#/definitions/destination" + } + }, + "additionalProperties": false, + "example": "example.json#/decision/0/transportDetails" + }, + "destination": { + "type": "object", + "title": "Destination", + "x-display": "expansion-panels", + "x-health-only": false, + "required": [], + "properties": { + "type": { "type": "string", - "title": "Service", + "title": "Type de destination", "x-health-only": false, "x-cols": 6, - "example": "example.json#/decision/0/destination/service", - "description": "Service concern\u00e9 par l'admission du patient" + "example": "example.json#/decision/0/transportDetails/destination/type", + "description": "Indique le type de destination de la ressource : service d\u2019urgences d\u2019un Etablissement de sant\u00e9, autres services d\u2019un \u00e9tablissement de sant\u00e9, cabinet d\u2019un professionnel de sant\u00e9, domicile personnel, EPHAD ou long s\u00e9jour, autre", + "enum": [ + "service d\u2019urgences d\u2019un Etablissement de sant\u00e9", + "autres services d\u2019un \u00e9tablissement de sant\u00e9", + "cabinet d\u2019un professionnel de sant\u00e9", + "domicile personnel", + "EPHAD ou long s\u00e9jour", + "autre" + ] }, - "freetext": { - "type": "string", - "title": "Autre", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/decision/0/destination/freetext" + "destinationLocation": { + "$ref": "#/definitions/location" } }, "additionalProperties": false, - "example": "example.json#/decision/0/destination" + "example": "example.json#/decision/0/transportDetails/destination" }, "customMap": { "type": "object", diff --git a/src/main/resources/json-schema/RC-REF.schema.json b/src/main/resources/json-schema/RC-REF.schema.json index d365e81ce..d32e843cb 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": "24.04.12", + "version": "24.05.29", "example": "example.json#", "type": "object", "title": "reference", @@ -26,12 +26,12 @@ "example": "example.json#/refused", "description": "Indique si le message acquitt\u00e9 a \u00e9t\u00e9 refus\u00e9" }, - "infoDistributionID": { + "errorDistributionID": { "type": "string", "title": "Identifiant du message d'erreur li\u00e9", "x-health-only": false, "x-cols": 6, - "example": "example.json#/infoDistributionID", + "example": "example.json#/errorDistributionID", "description": "Identifiant unique du message d'erreur li\u00e9" } }, diff --git a/src/main/resources/json-schema/RS-EDA.schema.json b/src/main/resources/json-schema/RS-EDA.schema.json index 8727b6d21..26846fde1 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": "24.04.12", + "version": "24.05.29", "example": "example.json#", "type": "object", "title": "createCaseHealth", @@ -49,6 +49,31 @@ "example": "example.json#/referenceVersion", "description": "Indique le num\u00e9ro de version du r\u00e9f\u00e9rentiel des nomenclatures des codes transmis. \nCela permet aux diff\u00e9rents syst\u00e8mes de s'assurer qu'ils utilisent la m\u00eame version des codes de nomenclature que leurs partenaires." }, + "perimeter": { + "type": "string", + "title": "Fili\u00e8re", + "x-health-only": true, + "x-cols": 6, + "example": "example.json#/perimeter", + "description": "Sert \u00e0 indiquer \u00e0 quelle fili\u00e8re du CRRA le dossier doit \u00eatre adress\u00e9/affich\u00e9", + "enum": [ + "AMU", + "SNP", + "NEONAT" + ] + }, + "interventionType": { + "type": "string", + "title": "Type d'intervention", + "x-health-only": true, + "x-cols": 6, + "example": "example.json#/interventionType", + "description": "Indiquer s'il s'agit d'un dossier dit primaire (premi\u00e8re intervention urgente) ou secondaire (par exemple TIH)", + "enum": [ + "Primaire", + "Secondaire" + ] + }, "qualification": { "$ref": "#/definitions/qualification" }, @@ -64,13 +89,7 @@ "x-health-only": true, "x-cols": 6, "example": "example.json#/owner", - "description": "Champ servant \u00e0 transf\u00e9rer la responsabilit\u00e9 du traitement d'un dossier \u00e0 un autre CRAA / \u00e0 lui demander de prendre en charge le traitement du dossier.\nLe SAMU demandeur entre dans ce champ l'ID du CRAA \u00e0 qui il demande de traiter l'affaire (uniquement en cas de transfert int\u00e9gral du traitement d'un dossier).\nLe SAMU qui re\u00e7oit la demande de transfert et l'accepte renvoie un RC-EDA de mise \u00e0 jour en laissant son ID dans ce champ + en ajoutant l'ID local du dossier chez lui dans le message.\nLe SAMU qui re\u00e7oit la demande de transfert et la refuse renvoie un RC-EDA de mise \u00e0 jour en remettant l'ID du SAMU demandeur dans ce champ + il envoie l'ID local du dossier chez lui." - }, - "operator": { - "type": "array", - "items": { - "$ref": "#/definitions/operator" - } + "description": "Champ servant \u00e0 transf\u00e9rer la prise en charge d'un dossier \u00e0 un autre CRAA apr\u00e8s accord verbal de ce dernier." }, "patient": { "type": "array", @@ -100,12 +119,16 @@ "$ref": "#/definitions/additionalInformation" }, "freetext": { - "type": "string", - "title": "Description de l'affaire/dossier", + "type": "array", "x-health-only": false, - "x-cols": 6, - "example": "example.json#/freetext", - "description": "Texte libre permettant de donner des informations suppl\u00e9mentaires concernant l'affaire" + "items": { + "type": "string", + "title": "Description de l'affaire/dossier", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/freetext/0", + "description": "Texte libre permettant de donner des informations suppl\u00e9mentaires concernant l'affaire/dossier. Ces informations sont g\u00e9n\u00e9rales, et ont vocation \u00e0 \u00eatre \u00e9chang\u00e9es en inter-force. " + } } }, "definitions": { @@ -135,9 +158,6 @@ }, "details": { "$ref": "#/definitions/caseDetails" - }, - "victims": { - "$ref": "#/definitions/victims" } }, "additionalProperties": false, @@ -167,7 +187,7 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/location/locLabel", - "description": "Permet d'indiquer des indications auto suffisantes permettant pour un op\u00e9rationnel d'acc\u00e9der facilement au lieu avec des indications minimales.\nDans les messages NexSIS, va souvent correspondre \u00e0 la concat\u00e9nation suivant des r\u00e8gles m\u00e9tiers de diff\u00e9rentes informations, dont le \"name\" (toponyme) et l'adresse.\nComprend au maximum 255 caract\u00e8res" + "description": "Donne les informations minimales d'identification du lieu d'intervention, qui permet d'identifier rapidement le lieu pour les \u00e9quipes op\u00e9rationnelles. Comprend au maximum 255 caract\u00e8res.\n15-18 : Dans les messages NexSIS, va souvent correspondre \u00e0 la concat\u00e9nation suivant des r\u00e8gles m\u00e9tiers de diff\u00e9rentes informations, dont le \"name\" (toponyme) et l'adresse.\n" }, "name": { "type": "string", @@ -175,7 +195,13 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/location/name", - "description": "Indique le nom de lieu : nom commercial, for\u00eat de Fontainebleau, lac du Der (plut\u00f4t \u00e0 destination des syst\u00e8mes)." + "description": "Indique le nom de lieu : nom commercial, Etablissement, for\u00eat de Fontainebleau, lac du Der (plut\u00f4t \u00e0 destination des syst\u00e8mes)." + }, + "externalLocationId": { + "type": "array", + "items": { + "$ref": "#/definitions/externalLocationId" + } }, "detailedAddress": { "$ref": "#/definitions/detailedAddress" @@ -447,7 +473,7 @@ }, "freetext": { "type": "string", - "title": "Commentaire", + "title": "Informations compl\u00e9mentaires sur la localisation", "x-health-only": false, "x-cols": 6, "example": "example.json#/location/freetext", @@ -467,9 +493,6 @@ "reception", "reporting", "caller", - "alertSource", - "location", - "qualification", "callTaker" ], "properties": { @@ -503,26 +526,15 @@ "ATTENTION" ] }, - "freetext": { - "type": "string", - "title": "Informations compl\u00e9mentaires sur l'alerte", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/initialAlert/freetext", - "description": "Texte libre permettant de donner des informations suppl\u00e9mentaires concernant l'alerte." + "notes": { + "type": "array", + "items": { + "$ref": "#/definitions/notes" + } }, "caller": { "$ref": "#/definitions/caller" }, - "alertSource": { - "$ref": "#/definitions/contactSource" - }, - "location": { - "$ref": "#/definitions/location" - }, - "qualification": { - "$ref": "#/definitions/qualification" - }, "callTaker": { "$ref": "#/definitions/callTaker" }, @@ -536,38 +548,6 @@ "additionalProperties": false, "example": "example.json#/initialAlert" }, - "operator": { - "type": "object", - "title": "Op\u00e9rateurs impliqu\u00e9s", - "x-display": "expansion-panels", - "x-health-only": true, - "required": [ - "role" - ], - "properties": { - "detailedName": { - "$ref": "#/definitions/detailedName" - }, - "id": { - "type": "string", - "title": "ID", - "x-health-only": true, - "x-cols": 6, - "example": "example.json#/operator/0/id", - "description": "Identifiant professionnel de l'op\u00e9rateur si existant" - }, - "role": { - "type": "string", - "title": "R\u00f4le", - "x-health-only": true, - "x-cols": 6, - "example": "example.json#/operator/0/role", - "description": "R\u00f4le de l'op\u00e9rateur au sein de l'entit\u00e9 \u00e9mettrice du message" - } - }, - "additionalProperties": false, - "example": "example.json#/operator/0" - }, "patient": { "type": "object", "title": "Patient / victime", @@ -600,8 +580,17 @@ "hypothesis": { "$ref": "#/definitions/hypothesis" }, - "resourceDiagnosis": { - "$ref": "#/definitions/resourceDiagnosis" + "freetext": { + "type": "array", + "x-health-only": false, + "items": { + "type": "string", + "title": "Informations compl\u00e9mentaires sur le patient", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/patient/0/freetext/0", + "description": "Correspond \u00e0 la zone de commentaire renseign\u00e9 par patient cr\u00e9\u00e9/identifi\u00e9" + } } }, "additionalProperties": false, @@ -680,7 +669,8 @@ "x-display": "expansion-panels", "x-health-only": false, "required": [ - "creation" + "creation", + "type" ], "properties": { "id": { @@ -689,7 +679,7 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/decision/0/id", - "description": "ID partag\u00e9 du patient concern\u00e9, lorsque le patient existe et est identifi\u00e9" + "description": "ID partag\u00e9 du patient concern\u00e9 par la d\u00e9cision, lorsque le patient existe et est identifi\u00e9" }, "creation": { "type": "string", @@ -707,38 +697,20 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/decision/0/type", - "description": "Type de d\u00e9cision prise" - }, - "orientation": { - "type": "string", - "title": "Orientation", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/decision/0/orientation", - "description": "D\u00e9cision(s) d'orientation prise par le m\u00e9decin r\u00e9gulateur" - }, - "transportation": { - "type": "array", - "x-health-only": false, - "items": { - "type": "string", - "title": "Type de transport", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/decision/0/transportation/0", - "description": "Type de transport \u00e0 engager pour la prise en charge du patient" - } + "description": "Type de d\u00e9cision prise", + "enum": [ + "CONSEIL", + "PMT", + "INTER", + "ORIENT", + "PASPLUS" + ] }, - "teamCare": { - "type": "string", - "title": "Niveau de prise en charge", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/decision/0/teamCare", - "description": "Type d\u2019\u00e9quipe (m\u00e9dical, param\u00e9dicale, non m\u00e9dicale, standard, incomplete, ...)" + "engagementDetails": { + "$ref": "#/definitions/engagementDetails" }, - "destination": { - "$ref": "#/definitions/destination" + "transportDetails": { + "$ref": "#/definitions/transportDetails" } }, "additionalProperties": false, @@ -787,14 +759,6 @@ "x-cols": 6, "example": "example.json#/qualification/whatsHappen/label", "description": "A valoriser avec le libell\u00e9 de la nomenclature associ\u00e9e.\nDans le cas o\u00f9 un syst\u00e8me n'est pas en mesure de reconna\u00eetre un code, il peut directement afficher le libell\u00e9 qui est obligatoirement fourni avec le code." - }, - "freetext": { - "type": "string", - "title": "Commentaire", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/qualification/whatsHappen/freetext", - "description": "Commentaire libre permettant de passer des informations compl\u00e9mentaires associ\u00e9es \u00e0 la nomenclature" } }, "additionalProperties": false, @@ -816,7 +780,188 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/qualification/locationKind/code", - "description": "A valoriser avec un code la nomenclature associ\u00e9e" + "description": "A valoriser avec un code la nomenclature associ\u00e9e", + "enum": [ + "L01.00.00", + "L01.01.00", + "L01.01.01", + "L01.01.02", + "L01.01.03", + "L01.01.04", + "L01.02.00", + "L01.02.01", + "L01.02.02", + "L01.02.03", + "L01.02.04", + "L01.02.05", + "L01.02.06", + "L01.02.07", + "L01.02.08", + "L01.02.09", + "L01.02.10", + "L01.02.11", + "L01.02.12", + "L01.03.00", + "L01.03.01", + "L01.03.02", + "L01.03.03", + "L01.04.00", + "L02.00.00", + "L02.01.00", + "L02.02.00", + "L02.02.01", + "L02.02.02", + "L02.02.03", + "L02.02.04", + "L02.02.05", + "L02.03.00", + "L02.03.01", + "L02.03.02", + "L02.03.03", + "L02.04.00", + "L02.05.00", + "L02.05.01", + "L02.05.02", + "L02.05.03", + "L02.05.04", + "L02.05.05", + "L02.05.06", + "L02.05.07", + "L02.05.08", + "L02.05.09", + "L02.05.10", + "L02.05.11", + "L02.05.12", + "L02.05.13", + "L02.05.14", + "L02.05.15", + "L02.05.16", + "L02.06.00", + "L02.06.01", + "L02.06.02", + "L02.06.03", + "L02.06.04", + "L02.06.05", + "L02.06.06", + "L02.06.07", + "L02.06.08", + "L02.07.00", + "L02.07.01", + "L02.07.02", + "L02.08.00", + "L03.00.00", + "L03.01.00", + "L03.02.00", + "L03.03.00", + "L03.04.00", + "L03.05.00", + "L04.00.00", + "L04.01.00", + "L04.02.00", + "L04.02.01", + "L04.02.02", + "L04.02.03", + "L04.03.00", + "L04.03.01", + "L04.03.02", + "L04.03.03", + "L04.04.00", + "L04.05.00", + "L04.06.00", + "L04.06.01", + "L04.06.02", + "L04.06.03", + "L04.06.04", + "L04.06.05", + "L04.07.00", + "L04.07.01", + "L04.07.02", + "L04.07.03", + "L04.08.00", + "L04.08.01", + "L04.08.02", + "L04.09.00", + "L04.09.01", + "L04.09.02", + "L04.10.00", + "L04.11.00", + "L04.11.01", + "L04.11.02", + "L04.11.03", + "L04.11.04", + "L04.12.00", + "L04.12.01", + "L04.12.02", + "L04.12.03", + "L04.12.04", + "L04.13.00", + "L04.13.01", + "L04.13.02", + "L04.13.03", + "L04.13.04", + "L04.14.00", + "L04.14.01", + "L04.14.02", + "L04.15.00", + "L04.16.00", + "L05.00.00", + "L05.01.00", + "L05.01.01", + "L05.01.02", + "L05.01.03", + "L05.01.04", + "L05.02.00", + "L05.02.01", + "L05.02.02", + "L05.02.03", + "L05.02.04", + "L05.03.00", + "L05.03.01", + "L05.03.02", + "L05.04.00", + "L05.04.01", + "L05.04.02", + "L05.04.03", + "L05.04.04", + "L05.04.05", + "L05.04.06", + "L05.05.00", + "L05.06.00", + "L05.07.00", + "L06.00.00", + "L06.01.00", + "L06.01.01", + "L06.01.02", + "L06.01.03", + "L06.01.04", + "L06.01.05", + "L06.01.06", + "L06.01.07", + "L06.01.08", + "L06.02.00", + "L06.03.00", + "L06.03.01", + "L06.03.02", + "L06.03.03", + "L06.03.04", + "L06.03.05", + "L06.04.00", + "L06.05.00", + "L06.05.01", + "L06.05.02", + "L06.06.00", + "L06.06.01", + "L06.06.02", + "L06.06.03", + "L06.06.04", + "L06.07.00", + "L06.07.01", + "L06.07.02", + "L07.00.00", + "L07.01.00", + "L07.01.01", + "L07.02.00" + ] }, "label": { "type": "string", @@ -825,14 +970,6 @@ "x-cols": 6, "example": "example.json#/qualification/locationKind/label", "description": "A valoriser avec le libell\u00e9 de la nomenclature associ\u00e9e.\nDans le cas o\u00f9 un syst\u00e8me n'est pas en mesure de reconna\u00eetre un code, il peut directement afficher le libell\u00e9 qui est obligatoirement fourni avec le code." - }, - "freetext": { - "type": "string", - "title": "Commentaire", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/qualification/locationKind/freetext", - "description": "Commentaire libre permettant de passer des informations compl\u00e9mentaires associ\u00e9es \u00e0 la nomenclature" } }, "additionalProperties": false, @@ -854,7 +991,46 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/qualification/riskThreat/0/code", - "description": "A valoriser avec un code la nomenclature associ\u00e9e" + "description": "A valoriser avec un code la nomenclature associ\u00e9e", + "enum": [ + "R01", + "R02", + "R03", + "R04", + "R05", + "R06", + "R07", + "R08", + "R09", + "R10", + "R11", + "R12", + "R13", + "R14", + "R15", + "R16", + "R17", + "R18", + "R19", + "R20", + "R21", + "R22", + "R23", + "R24", + "R25", + "R26", + "R27", + "R28", + "R29", + "R30", + "R31", + "R32", + "R33", + "R34", + "R35", + "R36", + "R37" + ] }, "label": { "type": "string", @@ -863,14 +1039,6 @@ "x-cols": 6, "example": "example.json#/qualification/riskThreat/0/label", "description": "A valoriser avec le libell\u00e9 de la nomenclature associ\u00e9e.\nDans le cas o\u00f9 un syst\u00e8me n'est pas en mesure de reconna\u00eetre un code, il peut directement afficher le libell\u00e9 qui est obligatoirement fourni avec le code." - }, - "freetext": { - "type": "string", - "title": "Commentaire", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/qualification/riskThreat/0/freetext", - "description": "Commentaire libre permettant de passer des informations compl\u00e9mentaires associ\u00e9es \u00e0 la nomenclature" } }, "additionalProperties": false, @@ -894,7 +1062,61 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/qualification/healthMotive/code", - "description": "A valoriser avec un code la nomenclature associ\u00e9e" + "description": "A valoriser avec un code la nomenclature associ\u00e9e", + "enum": [ + "M01.00", + "M01.01", + "M01.02", + "M01.03", + "M02.00", + "M02.01", + "M02.02", + "M02.03", + "M02.04", + "M02.05", + "M02.06", + "M02.07", + "M02.08", + "M02.09", + "M02.10", + "M03.00", + "M03.01", + "M03.02", + "M03.03", + "M03.04", + "M03.05", + "M03.06", + "M03.07", + "M03.08", + "M03.09", + "M03.10", + "M03.11", + "M03.12", + "M03.13", + "M03.14", + "M03.15", + "M03.16", + "M03.17", + "M03.18", + "M03.19", + "M03.20", + "M03.21", + "M03.22", + "M04.00", + "M04.01", + "M04.02", + "M04.03", + "M04.04", + "M05.00", + "M05.01", + "M05.02", + "M06.00", + "M06.01", + "M06.02", + "M06.03", + "M06.04", + "M07.00" + ] }, "label": { "type": "string", @@ -903,14 +1125,6 @@ "x-cols": 6, "example": "example.json#/qualification/healthMotive/label", "description": "A valoriser avec le libell\u00e9 de la nomenclature associ\u00e9e.\nDans le cas o\u00f9 un syst\u00e8me n'est pas en mesure de reconna\u00eetre un code, il peut directement afficher le libell\u00e9 qui est obligatoirement fourni avec le code." - }, - "freetext": { - "type": "string", - "title": "Commentaire", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/qualification/healthMotive/freetext", - "description": "Commentaire libre permettant de passer des informations compl\u00e9mentaires associ\u00e9es \u00e0 la nomenclature" } }, "additionalProperties": false, @@ -950,7 +1164,7 @@ "enum": [ "D", "DR", - "DRM \nNOMENC_TYPEDOS" + "DRM" ] }, "attribution": { @@ -959,7 +1173,45 @@ "x-health-only": true, "x-cols": 6, "example": "example.json#/qualification/details/attribution", - "description": "D\u00e9crit le type de professionnel m\u00e9dical \u00e0 qui le dossier est attribu\u00e9 : M\u00e9decin g\u00e9n\u00e9raliste, m\u00e9decin urgentiste etc." + "description": "D\u00e9crit le type de professionnel m\u00e9dical \u00e0 qui le dossier est attribu\u00e9 : M\u00e9decin g\u00e9n\u00e9raliste, m\u00e9decin urgentiste etc.", + "enum": [ + "DRM", + "DRMMRU", + "MU", + "DENT", + "GERIA", + "PEDIA", + "PSY", + "TOXICOL", + "INDISPMU", + "SSE", + "PLANBLAN", + "PCSAMU", + "DRMMRL", + "MG", + "INDISPMG", + "ABSML", + "DR", + "DREG", + "DRARM", + "DRMED", + "DRPHARMA", + "DRDENT", + "DRINFO", + "DOS-SIS", + "DOS-FDO", + "D", + "D-MALV", + "ERR", + "NRP", + "MALV", + "FAX", + "ITERATIF", + "D-IDENT", + "ADMIN", + "PERSO", + "AUTRE" + ] }, "priority": { "type": "string", @@ -967,59 +1219,55 @@ "x-health-only": true, "x-cols": 6, "example": "example.json#/qualification/details/priority", - "description": "D\u00e9crit la priorit\u00e9 de r\u00e9gulation m\u00e9dicale du dossier : P0, P1, P2, P3" + "description": "D\u00e9crit la priorit\u00e9 de r\u00e9gulation m\u00e9dicale du dossier : P0, P1, P2, P3", + "enum": [ + "P0", + "P1", + "P2", + "P3", + "NR" + ] } }, "additionalProperties": false, "example": "example.json#/qualification/details" }, - "victims": { + "externalLocationId": { "type": "object", - "title": "Patients-Victimes", + "title": "Identifiant(s) du lieu", "x-display": "expansion-panels", "x-health-only": false, - "required": [], + "required": [ + "source", + "value" + ], "properties": { - "count": { - "type": "string", - "title": "Nombre de patients-victimes", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/qualification/victims/count", - "description": "Indique le nombre de victimes selon la nomenclature du r\u00e9f\u00e9rentiel CISU", - "enum": [ - "0", - "1", - "SEVERAL", - "MANY", - "UNKNOWN" - ] - }, - "mainVictim": { + "source": { "type": "string", - "title": "Type du patient-victime principal", + "title": "Source / type d'identifiant", "x-health-only": false, "x-cols": 6, - "example": "example.json#/qualification/victims/mainVictim", - "description": "Identifie le type de la principale victime (celle dont l'\u00e9tat de sant\u00e9 provoque le d\u00e9clenchement de l'envoi des secours). Prend les valeurs du r\u00e9f\u00e9rentiel CISU. Entre dans la d\u00e9termination des partenaires impliqu\u00e9s par NexSIS.", + "example": "example.json#/location/externalLocationId/0/source", + "description": "Type de l'identifiant fourni", "enum": [ - "INFANT", - "CHILD", - "ADULT", - "SENIOR" + "FINESS administratif", + "FINESS g\u00e9ographique", + "SIREN", + "SIRET", + "APE/NAF" ] }, - "freetext": { + "value": { "type": "string", - "title": "Informations compl\u00e9mentaires sur les patients-victimes", + "title": "Identifiant", "x-health-only": false, "x-cols": 6, - "example": "example.json#/qualification/victims/freetext", - "description": "Permet de compl\u00e9menter en commentaire libre la(les) victime(s)" + "example": "example.json#/location/externalLocationId/0/value", + "description": "L'identifiant en lui-m\u00eame" } }, "additionalProperties": false, - "example": "example.json#/qualification/victims" + "example": "example.json#/location/externalLocationId/0" }, "detailedAddress": { "type": "object", @@ -1036,7 +1284,7 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/location/detailedAddress/complete", - "description": "Num\u00e9ro, type et nom de la voie. \nUtilis\u00e9 pour tout type de voie : autoroute (PK, nom et sens), voie ferr\u00e9e, voie navigable\u2026\nObligatoire et seule valeur des d\u00e9tails de l'adresse fournie par NexSIS." + "description": "Num\u00e9ro, type et nom de la voie. Utilis\u00e9 pour tout type de voie : autoroute (PK, nom et sens), voie ferr\u00e9e, voie navigable\u2026\n15-18 : Obligatoire et seule valeur des d\u00e9tails de l'adresse fournie par NexSIS." }, "number": { "type": "string", @@ -1083,7 +1331,7 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/location/city/detail", - "description": "Informations compl\u00e9mentaires permettant de pr\u00e9ciser le quartier, lieu-dit, ancienne commune, \u2026 ou autre information aidant \u00e0 pr\u00e9ciser l'adresse et notamment g\u00e9rer les cas de communes fusionn\u00e9es pour le syst\u00e8me \u00e9metteur\nNB : dans tous les cas, la localisation GPS de la commune doit \u00eatre fournie afin d'\u00e9viter une trop forte ambigu\u00eft\u00e9" + "description": "Informations compl\u00e9mentaires permettant de pr\u00e9ciser le quartier, lieu-dit, ancienne commune, \u2026 ou autre information aidant \u00e0 pr\u00e9ciser l'adresse et notamment g\u00e9rer les cas de communes fusionn\u00e9es pour le syst\u00e8me \u00e9metteur\nNB : dans tous les cas, la localisation GPS de la commune doit \u00eatre fournie afin d'\u00e9viter une trop forte ambigu\u00eft\u00e9." } }, "additionalProperties": false, @@ -1282,14 +1530,16 @@ "title": "Type", "x-health-only": false, "x-cols": 6, - "example": "example.json#/location/detailedAddress/wayName/type" + "example": "example.json#/location/detailedAddress/wayName/type", + "description": "Type de la voie" }, "name": { "type": "string", "title": "Nom", "x-health-only": false, "x-cols": 6, - "example": "example.json#/location/detailedAddress/wayName/name" + "example": "example.json#/location/detailedAddress/wayName/name", + "description": "Nom de la voie" } }, "additionalProperties": false, @@ -1389,12 +1639,43 @@ "additionalProperties": false, "example": "example.json#/location/geometry/point/coord" }, + "notes": { + "type": "object", + "title": "Informations compl\u00e9mentaires sur l'alerte (observations ARM)", + "x-display": "expansion-panels", + "x-health-only": false, + "required": [], + "properties": { + "creation": { + "type": "string", + "title": "Date et heure de l'information compl\u00e9mentaire/l'observation ARM", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/initialAlert/notes/0/creation", + "description": "date et heure de l'observation", + "pattern": "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}[\\-+]\\d{2}:\\d{2}", + "format": "date-time" + }, + "freetext": { + "type": "string", + "title": "Commentaire/Observations", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/initialAlert/notes/0/freetext", + "description": "texte libre contenant les indications renseign\u00e9es par l'ARM" + } + }, + "additionalProperties": false, + "example": "example.json#/initialAlert/notes/0" + }, "caller": { "type": "object", "title": "Requ\u00e9rant", "x-display": "expansion-panels", "x-health-only": false, - "required": [], + "required": [ + "callerContact" + ], "properties": { "callerContact": { "$ref": "#/definitions/contact" @@ -1659,7 +1940,30 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/initialAlert/caller/type", - "description": "Indique la relation du requ\u00e9rant avec l'incident / le patient / la victime" + "description": "Indique la relation du requ\u00e9rant avec l'incident / le patient / la victime", + "enum": [ + "SUJET", + "FAMILLE", + "TIERS", + "POMPIER", + "AMBULANC", + "SECOUR", + "MED", + "MEDSOS", + "MRL", + "EFFML", + "SANTE", + "INF", + "AIDESOIN", + "SF", + "AIDEDOM", + "FDO-MILI", + "ADM-TUTL", + "VIP", + "OBJCONNC", + "AUTRE", + "INCONNU" + ] }, "communication": { "type": "string", @@ -1667,7 +1971,18 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/initialAlert/caller/communication", - "description": "Indique si le requ\u00e9rant rencontre ou non des difficult\u00e9 de communication" + "description": "Indique si le requ\u00e9rant rencontre ou non des difficult\u00e9 de communication", + "enum": [ + "AUCUNE", + "MUET", + "VISION", + "LANGUE", + "PANIQUE", + "HOSTILE", + "AGITE", + "AUTRE", + "IMPOSS" + ] }, "freetext": { "type": "string", @@ -1684,55 +1999,6 @@ "additionalProperties": false, "example": "example.json#/initialAlert/caller" }, - "contactSource": { - "type": "object", - "title": "Source de l'alerte", - "x-display": "expansion-panels", - "x-health-only": false, - "required": [ - "channel", - "type", - "detail" - ], - "properties": { - "channel": { - "type": "string", - "title": "Canal", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/initialAlert/alertSource/channel", - "description": "Permet d'indiquer l'origine du canal \u00e9tablit : Personne, application, DAU, BAU, d\u00e9fibrillateur, ecall" - }, - "type": { - "type": "string", - "title": "Type de contact de la source", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/initialAlert/alertSource/type", - "description": "Type de l'URI utilis\u00e9e par la source, cf. nomenclature EMSI", - "enum": [ - "PSTADD", - "EMLADD", - "IPADD", - "FTPADD", - "WWWADD", - "PHNADD", - "FAXADD", - "PMRADD" - ] - }, - "detail": { - "type": "string", - "title": "URI de contact de la source", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/initialAlert/alertSource/detail", - "description": "Valeur de l'URI utilis\u00e9e par la source" - } - }, - "additionalProperties": false, - "example": "example.json#/initialAlert/alertSource" - }, "callTaker": { "type": "object", "title": "Agent", @@ -1849,10 +2115,19 @@ "x-display": "expansion-panels", "x-health-only": false, "required": [ + "channel", "type", "detail" ], "properties": { + "channel": { + "type": "string", + "title": "Canal", + "x-health-only": false, + "x-cols": 6, + "example": "example.json#/initialAlert/caller/callerContact/channel", + "description": "Permet d'indiquer l'origine du canal \u00e9tablit : Personne, application, DAU, BAU, d\u00e9fibrillateur, ecall" + }, "type": { "type": "string", "title": "Type de contact du requ\u00e9rant", @@ -2009,7 +2284,13 @@ "title": "Niveau de soin", "x-health-only": true, "x-cols": 6, - "example": "example.json#/patient/0/detail/careLevel" + "example": "example.json#/patient/0/detail/careLevel", + "enum": [ + "R1", + "R2", + "R3", + "R4" + ] } }, "additionalProperties": false, @@ -2035,44 +2316,6 @@ "additionalProperties": false, "example": "example.json#/patient/0/hypothesis" }, - "resourceDiagnosis": { - "type": "object", - "title": "Diagnostic de l'effecteur", - "x-display": "expansion-panels", - "x-health-only": true, - "required": [ - "code", - "label" - ], - "properties": { - "code": { - "type": "string", - "title": "Code", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/patient/0/resourceDiagnosis/code", - "description": "A valoriser avec un code la nomenclature associ\u00e9e" - }, - "label": { - "type": "string", - "title": "Libell\u00e9", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/patient/0/resourceDiagnosis/label", - "description": "A valoriser avec le libell\u00e9 de la nomenclature associ\u00e9e.\nDans le cas o\u00f9 un syst\u00e8me n'est pas en mesure de reconna\u00eetre un code, il peut directement afficher le libell\u00e9 qui est obligatoirement fourni avec le code." - }, - "freetext": { - "type": "string", - "title": "Commentaire", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/patient/0/resourceDiagnosis/freetext", - "description": "Commentaire libre permettant de passer des informations compl\u00e9mentaires associ\u00e9es \u00e0 la nomenclature" - } - }, - "additionalProperties": false, - "example": "example.json#/patient/0/resourceDiagnosis" - }, "externalId": { "type": "object", "title": "Identifiant(s) patient(s)", @@ -2141,7 +2384,7 @@ }, "id": { "type": "string", - "title": "Identifiant", + "title": "Identifiant RPPS", "x-health-only": true, "x-cols": 6, "example": "example.json#/patient/0/administrativeFile/generalPractitioner/id", @@ -2271,7 +2514,13 @@ "x-health-only": false, "x-cols": 6, "example": "example.json#/patient/0/identity/strictFeatures/sex", - "description": "Sexe du patient" + "description": "Sexe du patient", + "enum": [ + "MASC", + "FEM", + "AUTRE", + "INCONNU" + ] }, "birthPlaceCode": { "type": "number", @@ -2310,14 +2559,6 @@ "x-cols": 6, "example": "example.json#/patient/0/hypothesis/mainDiagnosis/label", "description": "A valoriser avec le libell\u00e9 de la nomenclature associ\u00e9e.\nDans le cas o\u00f9 un syst\u00e8me n'est pas en mesure de reconna\u00eetre un code, il peut directement afficher le libell\u00e9 qui est obligatoirement fourni avec le code." - }, - "freetext": { - "type": "string", - "title": "Commentaire", - "x-health-only": false, - "x-cols": 6, - "example": "example.json#/patient/0/hypothesis/mainDiagnosis/freetext", - "description": "Commentaire libre permettant de passer des informations compl\u00e9mentaires associ\u00e9es \u00e0 la nomenclature" } }, "additionalProperties": false, @@ -2348,84 +2589,166 @@ "x-cols": 6, "example": "example.json#/patient/0/hypothesis/otherDiagnosis/0/label", "description": "A valoriser avec le libell\u00e9 de la nomenclature associ\u00e9e.\nDans le cas o\u00f9 un syst\u00e8me n'est pas en mesure de reconna\u00eetre un code, il peut directement afficher le libell\u00e9 qui est obligatoirement fourni avec le code." + } + }, + "additionalProperties": false, + "example": "example.json#/patient/0/hypothesis/otherDiagnosis/0" + }, + "operator": { + "type": "object", + "title": "Professionnel de sant\u00e9 qui r\u00e9alise l'interrogatoire", + "x-display": "expansion-panels", + "x-health-only": true, + "required": [ + "role" + ], + "properties": { + "detailedName": { + "$ref": "#/definitions/detailedName" }, - "freetext": { + "id": { "type": "string", - "title": "Commentaire", - "x-health-only": false, + "title": "ID", + "x-health-only": true, "x-cols": 6, - "example": "example.json#/patient/0/hypothesis/otherDiagnosis/0/freetext", - "description": "Commentaire libre permettant de passer des informations compl\u00e9mentaires associ\u00e9es \u00e0 la nomenclature" + "example": "example.json#/medicalNote/0/operator/id", + "description": "Identifiant professionnel de l'op\u00e9rateur si existant" + }, + "role": { + "type": "string", + "title": "R\u00f4le", + "x-health-only": true, + "x-cols": 6, + "example": "example.json#/medicalNote/0/operator/role", + "description": "R\u00f4le de l'op\u00e9rateur au sein de l'entit\u00e9 \u00e9mettrice du message" } }, "additionalProperties": false, - "example": "example.json#/patient/0/hypothesis/otherDiagnosis/0" + "example": "example.json#/medicalNote/0/operator" }, - "destination": { + "engagementDetails": { "type": "object", - "title": "Destination", + "title": "D\u00e9cision d'engagement", "x-display": "expansion-panels", - "x-health-only": false, - "required": [], + "x-health-only": true, + "required": [ + "categoryType", + "teamCareInitial" + ], "properties": { - "type": { + "categoryType": { "type": "string", - "title": "Type de destination", - "x-health-only": false, + "title": "Type de moyen", + "x-health-only": true, "x-cols": 6, - "example": "example.json#/decision/0/destination/type", - "description": "Indique le type de destination de la ressource : service d\u2019urgences d\u2019un Etablissement de sant\u00e9, autres services d\u2019un \u00e9tablissement de sant\u00e9, cabinet d\u2019un professionnel de sant\u00e9, domicile personnel, EPHAD ou long s\u00e9jour, autre", - "enum": [ - "service d\u2019urgences d\u2019un Etablissement de sant\u00e9", - "autres services d\u2019un \u00e9tablissement de sant\u00e9", - "cabinet d\u2019un professionnel de sant\u00e9", - "domicile personnel", - "EPHAD ou long s\u00e9jour", - "autre" - ] + "example": "example.json#/decision/0/engagementDetails/categoryType", + "description": "d\u00e9taille le moyen \u00e0 engager" + }, + "resourceType": { + "type": "string", + "title": "Type de vecteur", + "x-health-only": true, + "x-cols": 6, + "example": "example.json#/decision/0/engagementDetails/resourceType", + "description": "d\u00e9taille le type de vecteur \u00e0 engager" }, - "facility": { + "resourceId": { + "type": "string", + "title": "ID vecteur ", + "x-health-only": true, + "x-cols": 6, + "example": "example.json#/decision/0/engagementDetails/resourceId" + }, + "teamCareInitial": { + "type": "string", + "title": "Niveau de prise en charge", + "x-health-only": true, + "x-cols": 6, + "example": "example.json#/decision/0/engagementDetails/teamCareInitial", + "description": "Type d\u2019\u00e9quipe (m\u00e9dical, param\u00e9dicale, non m\u00e9dicale, standard, incomplete, ...)" + } + }, + "additionalProperties": false, + "example": "example.json#/decision/0/engagementDetails" + }, + "transportDetails": { + "type": "object", + "title": "D\u00e9cision de transport/orientation", + "x-display": "expansion-panels", + "x-health-only": false, + "required": [ + "orientation", + "teamCare" + ], + "properties": { + "orientation": { "type": "string", - "title": "Etablissement", + "title": "Type de devenir du patient", "x-health-only": false, "x-cols": 6, - "example": "example.json#/decision/0/destination/facility", - "description": "Nom de l'\u00e9tablissement" + "example": "example.json#/decision/0/transportDetails/orientation", + "description": "D\u00e9cision(s) d'orientation prise par le m\u00e9decin r\u00e9gulateur : \n- A transporter\n- Laisser sur place" }, - "adminFiness": { + "concoursRequest": { "type": "string", - "title": "FINESS administratif", + "title": "ID demande de concours/de ressources", "x-health-only": false, "x-cols": 6, - "example": "example.json#/decision/0/destination/adminFiness", - "description": "N\u00b0 Finess administratif de l'\u00e9tablissement" + "example": "example.json#/decision/0/transportDetails/concoursRequest", + "description": "Identifiant de la ou des demandes de concours " }, - "geoFiness": { + "transportationID": { "type": "string", - "title": "FINESS g\u00e9ographique", + "title": "ID vecteur partag\u00e9", "x-health-only": false, "x-cols": 6, - "example": "example.json#/decision/0/destination/geoFiness", - "description": "N\u00b0 Finess g\u00e9ographique de l'\u00e9tablissement" + "example": "example.json#/decision/0/transportDetails/transportationID", + "description": "Identifiant du v\u00e9hicule terrestre / a\u00e9rien / maritime de transport principal (= celui dans lequel se trouve le patient), permettant d'associer la d\u00e9cision \u00e0 un v\u00e9hicule sp\u00e9cifique + au patient. " }, - "service": { + "teamCare": { "type": "string", - "title": "Service", + "title": "Niveau de prise en charge", "x-health-only": false, "x-cols": 6, - "example": "example.json#/decision/0/destination/service", - "description": "Service concern\u00e9 par l'admission du patient" + "example": "example.json#/decision/0/transportDetails/teamCare", + "description": "Type d\u2019\u00e9quipe (m\u00e9dical, param\u00e9dicale, non m\u00e9dicale, standard, incomplete, ...)" }, - "freetext": { + "destination": { + "$ref": "#/definitions/destination" + } + }, + "additionalProperties": false, + "example": "example.json#/decision/0/transportDetails" + }, + "destination": { + "type": "object", + "title": "Destination", + "x-display": "expansion-panels", + "x-health-only": false, + "required": [], + "properties": { + "type": { "type": "string", - "title": "Autre", + "title": "Type de destination", "x-health-only": false, "x-cols": 6, - "example": "example.json#/decision/0/destination/freetext" + "example": "example.json#/decision/0/transportDetails/destination/type", + "description": "Indique le type de destination de la ressource : service d\u2019urgences d\u2019un Etablissement de sant\u00e9, autres services d\u2019un \u00e9tablissement de sant\u00e9, cabinet d\u2019un professionnel de sant\u00e9, domicile personnel, EPHAD ou long s\u00e9jour, autre", + "enum": [ + "service d\u2019urgences d\u2019un Etablissement de sant\u00e9", + "autres services d\u2019un \u00e9tablissement de sant\u00e9", + "cabinet d\u2019un professionnel de sant\u00e9", + "domicile personnel", + "EPHAD ou long s\u00e9jour", + "autre" + ] + }, + "destinationLocation": { + "$ref": "#/definitions/location" } }, "additionalProperties": false, - "example": "example.json#/decision/0/destination" + "example": "example.json#/decision/0/transportDetails/destination" }, "customMap": { "type": "object", diff --git a/src/main/resources/json-schema/RS-EDA.xsd b/src/main/resources/json-schema/RS-EDA.xsd deleted file mode 100644 index 5b20bb149..000000000 --- a/src/main/resources/json-schema/RS-EDA.xsd +++ /dev/null @@ -1,1412 +0,0 @@ - - - - - - - Identifiant technique de l'affaire et partagé entre tous les intervenants. - Il doit pouvoir être généré de façon unique et décentralisée et ne présenter aucune ambiguïté. Il est généré par les systèmes du partenaire récepteur de la primo-demande de secours et contient une clé conventionnelle permettant d'identifier la source. - Valorisation : - {cleConventionnelle}:{cleUnique} - où cleConventionnelle est la clé utilisée par le partenaire emetteur et cleUnique l'identifiant locale d'affaire dans le système du partenaire emetteur. - cleUnique est une chaîne de caractère (string) comprise entre 4 et 22 caractères alphanumériques. - - - - - Valoriser avec l'identifiant de l'affaire dans le SI de l'émetteur du message - Ce champ est facultatif, il ne sera notamment pas transmis par NexSIS - Dans le cas où deux opérateurs ont besoin d'identifier une affaire, ils peuvent utiliser les derniers caractères de l'identifiant local de leur partenaire. - - - - - Groupe date heure de début de partage lié à la création de l'affaire (et donc de génération du caseId). Il doit être renseigné à la fin du processus de la création de la première alerte. Lors de l'ajout d'alerte à une affaire ce champ ne doit pas être modifié. L'indicateur de fuseau horaire Z ne doit pas être utilisé. - - - - - Indique le numéro de version du référentiel des nomenclatures des codes transmis. - Cela permet aux différents systèmes de s'assurer qu'ils utilisent la même version des codes de nomenclature que leurs partenaires. - - - - - - - - Champ servant à transférer la responsabilité du traitement d'un dossier à un autre CRAA / à lui demander de prendre en charge le traitement du dossier. - Le SAMU demandeur entre dans ce champ l'ID du CRAA à qui il demande de traiter l'affaire (uniquement en cas de transfert intégral du traitement d'un dossier). - Le SAMU qui reçoit la demande de transfert et l'accepte renvoie un RC-EDA de mise à jour en laissant son ID dans ce champ + en ajoutant l'ID local du dossier chez lui dans le message. - Le SAMU qui reçoit la demande de transfert et la refuse renvoie un RC-EDA de mise à jour en remettant l'ID du SAMU demandeur dans ce champ + il envoie l'ID local du dossier chez lui. - - - - - - - - - - Texte libre permettant de donner des informations supplémentaires concernant l'affaire - - - - - - - - - - - - - - - - - - - ID technique et provisoire permettant d'identifier le lieu dans le cadre des échanges de cette affaire. - - - - - Permet d'indiquer des indications auto suffisantes permettant pour un opérationnel d'accéder facilement au lieu avec des indications minimales. - Dans les messages NexSIS, va souvent correspondre à la concaténation suivant des règles métiers de différentes informations, dont le "name" (toponyme) et l'adresse. - Comprend au maximum 255 caractères - - - - - Indique le nom de lieu : nom commercial, forêt de Fontainebleau, lac du Der (plutôt à destination des systèmes). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Champ libre pour compléter les informations de localisation - - - - - - - - - Identifiant technique unique de l'alerte. Il doit pouvoir être généré automatiquement par le système émetteur et ne doit pas avoir de signification / utilisation particulière par les différents systèmes pour garantir leur découplage. - Voir la description de l'identifiant de l'affaire pour voir le format. - Lorsqu’une alerte est générée dans NexSIS et crée une affaire, elle est qualifiée d’Alerte Initiale. - a) Si cette dernière concerne un partenaire (caractère médical pour la Santé par exemple), elle est relayée seule dans le message. Il y’a un seul objet initialAlert. - b) Sinon, une autre alerte liée à la même affaire peut être déclarée ultérieurement, concernant cette fois le partenaire. Lorsqu’elle est déclarée cette Nouvelle Alerte est relayée avec l’Alerte Initiale pour partager un contexte commun. Dans le message de création d’affaire il y’a deux objets alerte : initialAlert et newAlert. - Le rattachement des messages à une affaire doivent s'appuyer sur les caseId et non les alertId qui peuvent varier d'un système à l'autre. - - - - - Groupe date heure de réception de l'alerte - - - - - Permet d'attirer l'attention des forces partenaires sur une affaire pour le faire sortir du lot. - Eventuellement automatisé en fonction des critères saisis et de leur paramétrage, ou renseigné par l'opérateur. - Prend les valeurs définies dans la nomenclature CISU : - - standard : STANDARD - - signalé : ATTENTION - Les systèmes peuvent proposer des fonctionnalités faisant ressortir les dossiers avec le libellé ATTENTION - - - - - - - - - - - Texte libre permettant de donner des informations supplémentaires concernant l'alerte - - - - - - - - - - - - - - - - Identifiant professionnel de l'opérateur si existant - - - - - Rôle de l'opérateur au sein de l'entité émettrice du message - - - - - - - - - Identifiant technique du patient pour permettre les rapprochements d'infos. Le 1er qui créé l'ID patient a raison. - - - - - - - - - - - - - - - - ID du patient concerné, lorsque le patient existe et est identifié - - - - - - - - - - - - - - - A valoriser avec un code la nomenclature associée - - - - - A valoriser avec le libellé de la nomenclature associée. - Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut directement afficher le libellé qui est obligatoirement fourni avec le code. - - - - - Permet de complémenter en commentaire libre l'attribut permettant de qualifier l'événement. - - - - - - - - - cf. cycle SI SAMU uniquement (si applicable) : échanger l'état du dossier si le cycle de vie du dossier est implémenté de manière conforme au cycle de vie du dossier SI-SAMU - - - - - - - - - - - - - - D/DR/DRM si cycle SI-SAMU implémenté - - - - - Décrit le type de professionnel médical à qui le dossier est attribué - - - - - Décrit la priorité de régulation médicale du dossier. - - - - - - - - - - - - - - - - - Indique le nombre de victimes selon la nomenclature du référentiel CISU - - - - - - - - - - - - - - Identifie le type de la principale victime (celle dont l'état de santé provoque le déclenchement de l'envoi des secours). Prend les valeurs du référentiel CISU. Entre dans la détermination des partenaires impliqués par NexSIS. - - - - - - - - - - - - - Permet de complémenter en commentaire libre la(les) victime(s) - - - - - - - - - Numéro, type et nom de la voie. - Utilisé pour tout type de voie : autoroute (PK, nom et sens), voie ferrée, voie navigable… - Obligatoire et seule valeur des détails de l'adresse fournie par NexSIS. - - - - - Numéro dans l'adresse (inclut point kilométrique sur l'autoroute, voie ferrée ou voie navigable). Inclut l'indice de répétition associé au numéro (par exemple bis, a…). - - - - - - - - - - Nom officiel de la commune actuelle - - - - - Code INSEE de la commune actuelle sur la base du Code Officiel géographique en vigueur. Obligatoire si le nom de la commune est renseigné. - - - - - - - - - - Informations complémentaires permettant de préciser le quartier, lieu-dit, ancienne commune, … ou autre information aidant à préciser l'adresse et notamment gérer les cas de communes fusionnées pour le système émetteur - NB : dans tous les cas, la localisation GPS de la commune doit être fournie afin d'éviter une trop forte ambiguïté - - - - - - - - - Etage - - - - - Spécifie numéro d'appartement, de chambre, de bureau - - - - - Indique les informations nécessaires à l'identification de l'interphone (numéro, nom) - - - - - - Indique l'ascenseur ou la cage d'escalier - - - - - Nom du bâtiment - - - - - - Nom du service concerné au sein de l'établissement - - - - - Numéro de téléphone permettant d'accéder au lieu de l'intervention, par exemple : téléphone du secrétariat, téléphone du service administratif ou se trouve le patient/victime. - - - - - - - - - Groupe date heure de renseignement des coordonnées du point clé de la localisation. Permet de connaître la fraîcheur et donc pertinence des informations pour intervenir. - - - - - - Objet gml (équivalent xml du geojson). Le langage GML permet de décrire une forme dans un système de projection donné. - Dans le cas d'une alerte donnée sur une zone géographique non précise (par exemple une section d'autoroute ou une zone sur un chemin de randonnée), une indication sur la zone de recherche peut être fournie. - En XML, un objet gml est encapsulé dans une balise <sketch xmlns:gml='http://www.opengis.net/gml' version='1.0' > </sketch> - En JSON, les balises sont reprises depuis le modèle gml - Voir http://www.opengis.net/gml pour le format de l'objet sketch - - - - - - - - - Système fournissant le localisant : NexSiS ou l'ORG_ID (BAN, IGN, ...) - - - - - - - - - - - - Définition du type d'objet dans le système - Ex : SIG NexSIS / OSM ont plusieurs types de données -> savoir du quel on parle (POI, tronçon de route, …) pour faciliter le filtre | Aussi table dans une base de données - - - - - - - - - - - - - - Identifiant unique dans le type. Exemple : UUID d'un ega - - - - - - - - - Type et nom de la voie (venant d'un référentiel ou non) - Si les champs type et name sont renseignés, le champ callerName doit être valorisé ainsi : "{type} {nom}". - - - - - - - - - - - - Indique le type de coordonnées utilisé. Actuellement, la seule valeur valide est «EPSG-4326», indiquant l'utilisation de WGS-84. Si ce champ n'est pas renseigné, on considère que la valeur par défaut est «». - - - - - - - - - Latitude du point clé de la localisation - - - - - Longitude du point clé de la localisation - - - - - Altitude du point clé de la localisation, en mètre, ignoré côté NexSIS. - - - - - En degré - - - - - Vitesse en km/h, notamment fournie par eCall, tel, nouveau AML, … - - - - - Indique via une nomenclature le niveau de précision des coordonnées fournies par le système emetteur. - CITY=Précision à l'échelle de la ville, STREET=Précision à l'échelle de la rue, ADDRESS=Adresse précise, EXACT=Point coordonnée GPS exact, UNKNOWN=Précision de la localisation non évaluable par l'émetteur - - - - - - - - - - - - - - - - - - - - Langue parlée par le requérant. Permet de mettre en place des traducteurs si besoin. Utilise la nomenclature LANGUE du SI-SAMU. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Indique la relation du requérant avec l'incident / le patient / la victime - - - - - Indique si le requérant rencontre ou non des difficulté de communication - - - - - Informations complémentaires sur le requérant - Les informations peuvent être passées sous forme de texte libre ou via une liste d'adjectif - - - - - - - - - - Permet d'indiquer l'origine du canal établit : Personne, application, DAU, BAU, défibrillateur, ecall - - - - - Type de l'URI utilisée par la source, cf. nomenclature EMSI - - - - - - - - - - - - - - - - - Valeur de l'URI utilisée par la source - - - - - - - - - Décrit la structure ou le service à laquelle est rattachée l'agent (en fonction du niveau de précision disponible). - Se référer au DSF pour la structure normée des organisations - Le format est le suivant {pays}:{domaine}:{code département}:{organisation}:{structure interne}*:{unité fonctionnelle}*. - - - - - Décrit le centre d'appel auquel est rattaché l'agent - - - - - Décrit le rôle de l'agent au sein du service selon la nomenclature PERSO (nomenclature SI-SAMU) - - - - - - Identifiant unique de l'opérateur ayant traité l'alerte (peut être un identifiant technique, un numéro de carte CPS etc) - - - - - - - - - Décrit la ressource en précisant le type et le contenu, tels que «carte» ou «photo» - - - - - L'identifiant du type MIME de contenu et sous-type décrivant la ressource - - - - - Taille approximative de la ressource en kO - - - - - Une URI, généralement une URL, qui permet d'atteindre la ressource sur Internet ou sur un réseau privé - Nous suggérons d'employer le format suivant de regex (https?|ftp|file):\/\/([\w-]+(\.[\w-]+)*)(\/[\w\-\.]*)*\/?(\?[^\s]*)? - - - - - Peut être utilisé à la place de l'élément 'URI' pour envoyer la ressource encodée en base64 pour éviter des problèmes de transcodage (sur des double quotes qui casseraient le message, …) - - - - - Hash de la ressource pour confirmer la réception de la bonne ressource - La ressource est hashée avec le protocole SHA-256 - - - - - - - - - Type de l'URI utilisée par le requérant, cf. nomenclature EMSI - - - - - - - - - - - - - - - - - Valeur de l'URI utilisée pour contacter le partenaire - - - - - - - - - Prénom et nom usuel du requérant. - Si les champs callerLastName et callerFirstName sont renseignés, le champ callerName doit être valorisé ainsi : "{callerFirstName} {callerLastName}". - Note : NexSIS ne dispose que de ces informations (concaténées) et pas de deux champs séparés. - - - - - Nom du requérant - - - - - Prénom du réquérant. - Par convention les prénoms composés doivent préférablement être séparés par le caractère "-" - - - - - - - - - - - - - - - - - - - - - - - - - Poids en kilogrammes - - - - - Taille en centimètres - - - - - Age du patient (Norme ISO_8601) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Groupe date heure de début de partage lié à la création de l'interrogatoire. L'indicateur de fuseau horaire Z ne doit pas être utilisé. - - - - - Observations médicales du professionnel de santé qui réalise l'interrogatoire (texte libre) - Champ à utiliser pour aggréger l'ensemble des antécédents /traitements/allergies du patient si les catégories ne sont pas disctinctes dans le LRM - - - - - Texte libre pour décrire les antécédents du patient - - - - - Texte libre pour décrire les traitements du patient - - - - - Texte libre pour décrire les allergies du patient - - - - - - - - - Type de l'identifiant fourni - - - - - - - - - - - - L'identifiant en lui-même - - - - - - - - - - - - - - - - Numéro RPPS du médecin traitant - - - - - - - - - - - Le RNIV exige que les logiciels référentiels d’identités gèrent les 4 statuts fonctionnels suivants : - - « identité provisoire », - - « identité récupérée », - - « identité validée », - - « identité qualifiée ». - Ces statuts fonctionnels sont exclusifs les uns des autres. Le référentiel INS [EXI 18] précise en outre que le matricule INS et l’OID doivent être accompagnés d’informations confirmant qu’ils ont été qualifiés. - - - - - Le RNIV recommande que les logiciels référentiels d’identités gèrent a minima les 3 attributs suivants : - - identité homonyme, - - identité douteuse, - - identité fictive. - - - - - - - - - n° NIR OU n° NIA de l'individu. Le matricule INS (et son OID) ne doit jamais être propagé (= échangé) si l'identité est à un statut autre que qualifiée. Il correspond au numéro personnel de sécurité sociale. Il peut être différent du numéro de sécurité sociale utilisé pour le remboursement des soins par l’assurance maladie, dans le cas par exemple où l’usager n’est pas l’assuré social (ex.: l’enfant qui est rattaché à l’un de ses parents). - Le matricule INS est composé des 13 caractères et de la clé de contrôle. - - - - - Identifiant de la structure qui a affecté l’INS sous la forme d'un OID. Les OID (Object Identifier) sont des identifiants universels, représentés sous la forme d'une suite d'entiers. Ils sont organisés sous forme hiérarchique avec des nœuds. L'OID est toujours associé à un matricule INS, il n'est donc pas propagé si le statut de l'identité n'est pas "qualifiée" - - - - - - - - - Egalement appelé nom de famille. - - - - - Doit être cohérent avec la liste des prénoms de naissance renvoyée par INSi. Ex: si la liste des prénoms renvoyée est "Pierre Alain Jacques", le premier prénom de naissance ne peut être que : - Pierre - Pierre Alain - Pierre Alain Jacques - - - - - Ensemble des prénoms de naissance (renvoyés par INSi) - - - - - Date de naissance du patient - - - - - Sexe du patient - - - - - - - - - - - - - Il s’agit de la commune de naissance pour les personnes nées en France et du pays de naissance pour les personnes nées à l’étranger. Utilisation du code INSEE (différent du code postal), auquel est associé le nom de la commune ou du pays correspondant. - - - - - - - - - Type de décision prise - - - - - Décision(s) d'orientation prise par le médecin régulateur - - - - - - Type d’équipe (médical, paramédicale, non médicale, standard, incomplete, ...) - - - - - - - - - - - - - - - - - Nom de la balise - - - - - Libellé correspondant - - - - - Valeur associée à la clé - - - - - Informations complémentaires sur le contexte / utilisation de ce matching additionnel - - - - - \ No newline at end of file diff --git a/src/main/resources/json-schema/RS-ERROR.schema.json b/src/main/resources/json-schema/RS-ERROR.schema.json index 3ed05ce5c..8d62e2c70 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": "24.04.12", + "version": "24.05.29", "example": "example.json#", "type": "object", "title": "error", diff --git a/src/main/resources/json-schema/RS-INFO.schema.json b/src/main/resources/json-schema/RS-INFO.schema.json index 95fe468d8..6436b5f90 100644 --- a/src/main/resources/json-schema/RS-INFO.schema.json +++ b/src/main/resources/json-schema/RS-INFO.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", "x-id": "RS-INFO.schema.json#", - "version": "24.04.12", + "version": "24.05.29", "example": "example.json#", "type": "object", "title": "info", diff --git a/src/main/resources/json-schema/CustomContent.schema.json b/src/main/resources/json-schema/customContent.schema.json similarity index 80% rename from src/main/resources/json-schema/CustomContent.schema.json rename to src/main/resources/json-schema/customContent.schema.json index df7483cb6..c3d2ddf0b 100644 --- a/src/main/resources/json-schema/CustomContent.schema.json +++ b/src/main/resources/json-schema/customContent.schema.json @@ -1,8 +1,8 @@ { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "classpath:/json-schema/schema#", - "x-id": "CustomContent.schema.json#", - "version": "24.04.12", + "x-id": "customContent.schema.json#", + "version": "24.05.29", "example": "example.json#", "type": "object", "title": "customContent", diff --git a/src/main/resources/sample/examples/RC-EDA/RC-EDA-usecase-Armaury-1.json b/src/main/resources/sample/examples/RC-EDA/RC-EDA-usecase-Armaury-1.json index 7693c805c..c73bb668a 100644 --- a/src/main/resources/sample/examples/RC-EDA/RC-EDA-usecase-Armaury-1.json +++ b/src/main/resources/sample/examples/RC-EDA/RC-EDA-usecase-Armaury-1.json @@ -7,30 +7,26 @@ "qualification": { "whatsHappen": { "code": "C01.01.04", - "label": "2-roues", - "freetext": "autres véhicules présents sur site d'intervention sont génés à la circulation" + "label": "2-roues" }, "locationKind": { "code": "L02.01.00", - "label": "Voie publique hors voie rapide", - "freetext": "Voie vélo le long d'une route" + "label": "Voie publique hors voie rapide" }, "riskThreat": [ { "code": "R22", - "label": "Gêne à la circulation", - "freetext": "risque lié aux voitures" + "label": "Gêne à la circulation" } ], "healthMotive": { - "code": "M03.11, M02.07", - "label": "Céphalée, migraines, Traumatisme sérieux, plaie intermédiaire", - "freetext": "Portait un casque de protection" + "code": "M02.01", + "label": "Saignements" }, "victims": { "count": "SEVERAL", "mainVictim": "ADULT", - "freetext": "Deuxième victime présente saignements legers aux mains et genoux" + "freetext": "Deuxième victime présente saignements et brûlures legères aux mains et genoux" } }, "location": { @@ -48,10 +44,10 @@ }, "city": { "name": "Lyon", - "inseeCode": "65002" + "inseeCode": "69382" }, "geometry": { - "obsDatime": "2023-11-03T10:04:00+01:00" , + "obsDatime": "2023-11-03T10:04:00+01:00", "point": { "coord": { "lat": 48.866667, @@ -77,13 +73,20 @@ "id": "samu690-20231103-AL01234", "reception": "2023-11-03T10:02:00+01:00", "reporting": "STANDARD", - "freetext": "suite collision avec un autre vélo sur piste cyclable, gonflement du geneoux, grosses égratinures, maux de tête", + "notes": [ + { + "creation": "2023-11-03T10:02:00+01:00", + "freetext": "Accident entre une voiture et un vélo" + } + ], "caller": { "callerContact": { + "channel": "Personne", "type": "PHNADD", "detail": "0607080901" }, "callbackContact": { + "channel": "Personne", "type": "PHNADD", "detail": "0607080901" }, @@ -95,11 +98,6 @@ "firstName": "Albane" } }, - "alertSource": { - "channel": "Personne", - "type": "PHNADD", - "detail": "calltakerContact" - }, "location": { "locID": "111fb03a-6fd9-41e0-8e81-990c45188887", "locLabel": "8 quai des Célestins - 69002 Lyon", @@ -115,10 +113,10 @@ }, "city": { "name": "Lyon", - "inseeCode": "65002" + "inseeCode": "69382" }, "geometry": { - "obsDatime": "2023-11-03T10:04:00+01:00" , + "obsDatime": "2023-11-03T10:04:00+01:00", "point": { "coord": { "lat": 48.866667, @@ -143,30 +141,26 @@ "qualification": { "whatsHappen": { "code": "C01.01.04", - "label": "2-roues", - "freetext": "autres véhicules présents sur site d'intervention sont génés à la circulation" + "label": "2-roues" }, "locationKind": { "code": "L02.01.00", - "label": "Voie publique hors voie rapide", - "freetext": "Voie vélo le long d'une route" + "label": "Voie publique hors voie rapide" }, "riskThreat": [ { "code": "R22", - "label": "Gêne à la circulation", - "freetext": "risque lié aux voitures" + "label": "Gêne à la circulation" } ], "healthMotive": { - "code": "M03.11, M02.07", - "label": "Céphalée, migraines, Traumatisme sérieux, plaie intermédiaire", - "freetext": "Portait un casque de protection" + "code": "M02.01", + "label": "Saignements" }, "victims": { "count": "SEVERAL", "mainVictim": "ADULT", - "freetext": "Deuxième victime présente saignements legers aux mains et genoux" + "freetext": "Deuxième victime présente saignements et brûlures legères aux mains et genoux" } }, "callTaker": { @@ -174,8 +168,9 @@ "controlRoom": "CRRA 690", "role": "ARM", "calltakerContact": { + "channel": "Personne", "type": "PHNADD", - "detail": "0607080901" + "detail": "0607080903" }, "calltakerId": "id1234" }, @@ -188,6 +183,28 @@ } ] }, + "decision": [ + { + "type": "INTER", + "creation": "2023-11-03T10:05:00+01:00" + } + ], + "patient": [ + { + "identity": { + "nonStrictFeatures": { + "complete": "Alexandre Armaury", + "lastName": "Armaury", + "firstName": "Alexandre" + }, + "strictFeatures": { + "sex": "MASC", + "birthDate": "1981-01-01" + } + }, + "id": "fr.health.samu690.DRFR15690240430050.P01" + } + ], "additionalInformation": { "customMap": [ { @@ -198,6 +215,8 @@ } ] }, - "freetext": "None" + "freetext": [ + "None" + ] } } diff --git a/src/main/resources/sample/examples/RS-EDA/RS-EDA-usecase-AppelLimitrophe-2.json b/src/main/resources/sample/examples/RS-EDA/RS-EDA-usecase-AppelLimitrophe-2.json index be160254b..6f4ee13fd 100644 --- a/src/main/resources/sample/examples/RS-EDA/RS-EDA-usecase-AppelLimitrophe-2.json +++ b/src/main/resources/sample/examples/RS-EDA/RS-EDA-usecase-AppelLimitrophe-2.json @@ -11,21 +11,15 @@ }, "locationKind": { "code": "L03.01.00", - "label": "Local d’activité professionnelle; Local administratif", - "freetext": "service comptabilité de la SARL Toto" + "label": "Local d’activité professionnelle; Local administratif" }, "healthMotive": { "code": "M03.06", "label": "Problème médical; Douleur thoracique " }, - "victims": { - "count": "1", - "mainVictim": "ADULT" - }, "details": { "priority": "P0", - "attribution": "MU", - "type": "D" + "attribution": "MU" } }, "location": { @@ -69,15 +63,16 @@ "id": "fr.health.samu950-DRFR159502401000233", "reception": "2024-01-10T14:05:00+01:00", "reporting": "STANDARD", - "freetext": "douleurs dans la poitrine, pas de difficulté à respirer, la victime est consciente. A des antécédents de maladie cardiaque", "caller": { "callerContact": { "type": "PHNADD", - "detail": "0607080928" + "detail": "0607080928", + "channel": "Personne" }, "callbackContact": { "type": "PHNADD", - "detail": "0607080928" + "detail": "0607080928", + "channel": "Personne" }, "language": "FR", "freetext": "Collègue de la victime", @@ -88,78 +83,21 @@ }, "type": "TIERS" }, - "alertSource": { - "channel": "Personne", - "type": "PHNADD", - "detail": "0607080928" - }, - "location": { - "locID": "555fb03a-4df5-8zg6-8e81-990c4514986", - "name": "SARL TOTO", - "detailedAddress": { - "complete": "18 rue des Bois Rochefort", - "number": "18", - "wayName": { - "complete": " rue des Bois Rochefort", - "type": "Rue", - "name": "des Bois Rochefort" - } - }, - "city": { - "name": "Sartrouville", - "inseeCode": "78586" - }, - "country": "FR", - "access": { - "interphone": "SARL TOTO", - "floor": "4", - "elevator": "ESC D", - "buildingName": "C", - "entity": "Comptabilité", - "phoneNumber": 156789456 - }, - "geometry": { - "point": { - "coord": { - "lon": 2.1857428550720215, - "lat": 48.95102310180664, - "precision": "ADDRESS" - } - }, - "obsDatime": "2024-01-04T00:05:00+01:00" - } - }, - "qualification": { - "whatsHappen": { - "code": "C02.05.01", - "label": "Atteinte aux personnes; Pathologie / maladie ; Médicale " - }, - "locationKind": { - "code": "L03.01.00", - "label": "Local d’activité professionnelle; Local administratif", - "freetext": "service comptabilité de la SARL Toto" - }, - "healthMotive": { - "code": "M03.06", - "label": "Problème médical; Douleur thoracique " - }, - "victims": { - "count": "1", - "mainVictim": "ADULT" - }, - "details": { - "attribution": "MU", - "priority": "P0" - } - }, "callTaker": { "organization": "fr.health.samu950", "controlRoom": "CRRA 95", "calltakerContact": { "type": "PHNADD", - "detail": "060102030406" + "detail": "060102030406", + "channel": "Personne" } - } + }, + "notes": [ + { + "freetext": "Douleurs dans la poitrine, pas de difficulté à respirer, la victime est consciente.", + "creation": "2024-01-10T07:09:00+01:00" + } + ] }, "owner": "fr.health.samu950", "additionalInformation": { @@ -187,8 +125,10 @@ "sex": "FEM" } }, - "id": "fr.health.samu950-DRFR159502401000233.P11" + "id": "fr.health.samu950-DRFR159502401000233.P1" } - ] + ], + "perimeter": "AMU", + "interventionType": "Primaire" } } diff --git a/src/main/resources/sample/examples/RS-EDA/RS-EDA-usecase-PartageDossier-1.json b/src/main/resources/sample/examples/RS-EDA/RS-EDA-usecase-PartageDossier-1.json index 3312b174d..780db73d8 100644 --- a/src/main/resources/sample/examples/RS-EDA/RS-EDA-usecase-PartageDossier-1.json +++ b/src/main/resources/sample/examples/RS-EDA/RS-EDA-usecase-PartageDossier-1.json @@ -7,8 +7,7 @@ "qualification": { "whatsHappen": { "code": "C02.08.05", - "label": "Par objet tranchant ou perforant", - "freetext": "Atteinte aux personnes ; Traumatisme / Accident ; Par objet tranchant ou perforant" + "label": "Atteinte aux personnes ; Traumatisme / Accident ; Par objet tranchant ou perforant" }, "locationKind": { "code": "L01.01.04", @@ -18,10 +17,6 @@ "code": "M01.02", "label": "Détresse vitale; Altération de la conscience; Dont inconscient, coma" }, - "victims": { - "count": "1", - "mainVictim": "ADULT" - }, "details": { "priority": "P0", "attribution": "MU" @@ -59,13 +54,14 @@ "id": "fr.health.samu770-DRFR157702400400055", "reception": "2024-01-04T15:00:00+01:00", "reporting": "STANDARD", - "freetext": "Coupure grave causée par une scie circulaire au niveau de la main; saigne beaucoup. La victime est inconsciente (perte de connaissance).", "caller": { "callerContact": { + "channel": "Personne", "type": "PHNADD", "detail": "0607080915" }, "callbackContact": { + "channel": "Personne", "type": "PHNADD", "detail": "0607080915" }, @@ -78,68 +74,25 @@ }, "type": "FAMILLE" }, - "alertSource": { - "channel": "Personne", - "type": "PHNADD", - "detail": "0607080915" - }, - "location": { - "locID": "555fb03a-4df5-8zg6-8e81-990c4511256", - "detailedAddress": { - "complete": "12 Rue Louis Aristide Verdier", - "number": "12", - "wayName": { - "complete": "Rue Louis Aristide Verdier", - "type": "Rue", - "name": "Louis Aristide Verdier" - } - }, - "city": { - "name": "Vaires-sur-Marne", - "inseeCode": "77479" - }, - "country": "FR", - "geometry": { - "point": { - "coord": { - "lon": 2.6320988, - "lat": 48.8668403, - "precision": "ADDRESS" - } - }, - "obsDatime": "2024-01-04T00:05:00+01:00" - } - }, - "qualification": { - "whatsHappen": { - "code": "C02.08.05", - "label": "Atteinte aux personnes ; Traumatisme / Accident ; Par objet tranchant ou perforant" - }, - "locationKind": { - "code": "L01.01.04", - "label": "Domicile ; Maison particulière, pavillon ; dépendance" - }, - "healthMotive": { - "code": "M01.02", - "label": "Détresse vitale; Altération de la conscience; Dont inconscient, coma" - }, - "victims": { - "count": "1", - "mainVictim": "ADULT" - }, - "details": { - "attribution": "MU", - "priority": "P0" - } - }, "callTaker": { "organization": "fr.health.samu770", "controlRoom": "CRRA 77", "calltakerContact": { + "channel": "Personne", "type": "PHNADD", "detail": "0102030405" } - } + }, + "notes": [ + { + "freetext": "Coupure grave causée par une scie circulaire au niveau de la main; saigne beaucoup.", + "creation": "2024-01-04T08:04:00+01:00" + }, + { + "freetext": "La victime est inconsciente (perte de connaissance).", + "creation": "2024-01-04T08:07:00+01:00" + } + ] }, "owner": "fr.health.samu770", "patient": [ @@ -159,6 +112,8 @@ }, "id": "fr.health.samu770-DRFR157702400400055.P167" } - ] + ], + "perimeter": "AMU", + "interventionType": "Primaire" } } diff --git a/src/main/resources/sample/failing/RC-EDA/RC-EDA-missing-required-fields.json b/src/main/resources/sample/failing/RC-EDA/RC-EDA-missing-required-fields.json index d8c2bbcdc..8a33cbc4e 100644 --- a/src/main/resources/sample/failing/RC-EDA/RC-EDA-missing-required-fields.json +++ b/src/main/resources/sample/failing/RC-EDA/RC-EDA-missing-required-fields.json @@ -32,86 +32,79 @@ } ], "createCase": { + "caseId": "fr.health.samu690.DRFR15690240430050", + "senderCaseId": "DRFR15690240430050", "sender": { "name": "samuA", "URI": "hubex:fr.health.samuA" }, - "caseId": "samuA:CA126B445579GD4A67AV", - "senderCaseId": "CA126B445579GD4A67AV", - "creation": "2022-09-27T08:23:34+02:00", - "referenceVersion": "1.2", + "creation": "2023-11-03T10:03:00+01:00", + "referenceVersion": "1.3", "qualification": { "whatsHappen": { - "code": "C07.13.02", - "label": "Rod\u00e9o automobile", - "freetext": "None" - }, - "locationKind": { - "code": "TO_BE_CONTROLLED", - "label": "TO_BE_CONTROLLED", - "freetext": "TO_BE_CONTROLLED" + "code": "C01.01.04", + "label": "2-roues" }, "riskThreat": [ { - "code": "TO_BE_CONTROLLED", - "label": "TO_BE_CONTROLLED", - "freetext": "TO_BE_CONTROLLED" + "code": "R22", + "label": "Gêne à la circulation" }, { - "code": "TO_BE_CONTROLLED", - "label": "TO_BE_CONTROLLED", - "freetext": "TO_BE_CONTROLLED" + "code": "R23", + "label": "Second risque" } ], - "healthMotive": { - "code": "TO_BE_CONTROLLED", - "label": "TO_BE_CONTROLLED", - "freetext": "TO_BE_CONTROLLED" - }, "victims": { "count": "SEVERAL", - "mainVictim": "CHILD", - "freetext": "Jeanne Dupont, 6 ans, ne r\u00e9pond plus" + "mainVictim": "ADULT", + "freetext": "Deuxième victime présente saignements et brûlures legères aux mains et genoux" } }, "location": { "locID": "111fb03a-6fd9-41e0-8e81-990c45188887", - "locLabel": "Lyc\u00e9e Pierre de Coubertin - 12 rue de l'Amiti\u00e9 77288 Melun, Mus\u00e9e Bossuet - Acc\u00e8s 2 - 77048 Saint-Albray", - "name": "Lyc\u00e9e Pierre de Coubertin", + "locLabel": "8 quai des Célestins - 69002 Lyon", + "name": "Quai des Célestins", + "externalLocationId": [ + { + "source": "FINESS administratif", + "value": "'920000650" + } + ], "detailedAddress": { - "complete": "9 Bd du Montparnasse", - "number": "9, 4bis, PK10, \u2026", + "complete": "8 quai des Célestins", + "number": "8", "wayName": { - "complete": "Boulevard du Montparnasse", - "type": "Boulevard", - "name": "du Montparnasse" + "complete": "quai des Célestins", + "type": "Quai", + "name": "des Célestins" } }, "city": { - "name": "Lille", - "inseeCode": "59350", - "detail": "Quartie Melun Nord, Lhomme, \u2026" + "name": "Lyon", + "inseeCode": "69382", + "detail": "Quartier Melun Nord" }, "access": { - "floor": "RDC, 1, 2, \u2026", - "roomNumber": "A16, 37, 104, \u2026", + "floor": "RDC", + "roomNumber": "A16", "interphone": "Dupont", "accessCode": [ "1234A", "4321B" ], "elevator": "C3", - "buildingName": "Batiment B, Batiment Maunoury", - "entrance": "Zone Sud, Porte 1, \u2026", - "entity": "Infirmerie, service finance, service cardiologie, \u2026" + "buildingName": "Batiment B", + "entrance": "Zone Sud", + "entity": "Infirmerie" }, "geometry": { - "obsDatime": "2022-09-27T08:23:34+02:00", + "obsDatime": "2023-11-03T10:04:00+01:00", "point": { "coord": { "lat": 48.866667, "lon": 2.333333, - "height": 120, + "height": 168, "heading": 96, "speed": 34, "precision": "ADDRESS" @@ -128,60 +121,56 @@ } ], "country": "FR", - "freetext": "Cl\u00e9 derri\u00e8re le pot de fleur" + "freetext": "Clé derrière le pot de fleur" }, "initialAlert": { - "reception": "2022-09-27T08:21:06+02:00", + "reception": "2023-11-03T10:02:00+01:00", "reporting": "STANDARD", - "freetext": "D\u00e9clenchement t\u00e9l\u00e9alarme, voisine sur les liens", "caller": { "callerContact": { + "channel": "Personne", "type": "PHNADD", - "detail": "0671830530" + "detail": "0607080901" }, "callbackContact": { + "channel": "Personne", "type": "PHNADD", - "detail": "0671830530" + "detail": "0607080901" }, "language": "FR", - "freetext": "P\u00e8re", + "freetext": "épouse de la victime", "detailedName": { - "complete": "Jean Dupont", - "lastName": "Dupont", - "firstName": "Jean" + "complete": "Albane Armaury", + "lastName": "Armaury", + "firstName": "Albane" } }, - "alertSource": { - "channel": "Personne", - "type": "PHNADD", - "detail": "0671830530" - }, "location": { "locID": "111fb03a-6fd9-41e0-8e81-990c45188887", - "name": "Lyc\u00e9e Pierre de Coubertin", + "name": "Quai des Célestins", "country": "FR" }, "qualification": { "whatsHappen": { - "code": "C07.13.02", - "label": "Rod\u00e9o automobile", - "freetext": "None" + "code": "C01.01.04", + "label": "2-roues" } }, "callTaker": { - "organization": "FR:Administration:44:samu44:crra:regulationN3", - "controlRoom": "CGA, CGO 21, CRRA 44, ...", + "organization": "fr.health.samu690", + "controlRoom": "CRRA 690", "role": "ARM", "calltakerContact": { + "channel": "Personne", "type": "PHNADD", - "detail": "0671830530" + "detail": "0607080901" }, "calltakerId": "id1234" }, "attachment": [ { - "description": "photo, carte, \u2026", - "mimeType": "PDF, XML, JPEG, \u2026", + "description": "photo", + "mimeType": "JPEG", "size": 1235, "URI": "https://hub.esante.gouv.fr/resourceExample", "derefURI": "None", @@ -194,10 +183,12 @@ "key": "neighborhood", "label": "Quartier", "value": "LYON 2e arrondissement", - "freetext": "Pr\u00e9cision sur le quartier d'intervention" + "freetext": "Précision sur le quartier d'intervention" } }, - "freetext": "None" + "freetext": [ + "None" + ] } } } diff --git a/src/main/resources/sample/failing/RC-EDA/RC-EDA-missing-required-fields.xml b/src/main/resources/sample/failing/RC-EDA/RC-EDA-missing-required-fields.xml index 0caf45d71..6e612e640 100644 --- a/src/main/resources/sample/failing/RC-EDA/RC-EDA-missing-required-fields.xml +++ b/src/main/resources/sample/failing/RC-EDA/RC-EDA-missing-required-fields.xml @@ -39,17 +39,14 @@ C07.13.02 - None C01.00.00 - risque lié aux voitures C01.01.00 - champ libre SEVERAL @@ -144,7 +141,6 @@ C07.13.02 - None diff --git a/src/main/resources/sample/failing/RC-EDA/invalid-RC-EDA-valid-EDXL.json b/src/main/resources/sample/failing/RC-EDA/invalid-RC-EDA-valid-EDXL.json index 18d7201b3..766bed2e6 100644 --- a/src/main/resources/sample/failing/RC-EDA/invalid-RC-EDA-valid-EDXL.json +++ b/src/main/resources/sample/failing/RC-EDA/invalid-RC-EDA-valid-EDXL.json @@ -32,81 +32,74 @@ } ], "createCase": { - "caseId": "samuA:CA126B445579GD4A67AV", - "senderCaseId": "CA126B445579GD4A67AV", - "referenceVersion": "1.2", + "caseId": "fr.health.samu690.DRFR15690240430050", + "senderCaseId": "DRFR15690240430050", + "referenceVersion": "1.3", "qualification": { "whatsHappen": { - "code": "C07.13.02", - "label": "Rod\u00e9o automobile", - "freetext": "None" - }, - "locationKind": { - "code": "TO_BE_CONTROLLED", - "label": "TO_BE_CONTROLLED", - "freetext": "TO_BE_CONTROLLED" + "code": "C01.01.04", + "label": "2-roues" }, "riskThreat": [ { - "code": "TO_BE_CONTROLLED", - "label": "TO_BE_CONTROLLED", - "freetext": "TO_BE_CONTROLLED" + "code": "R22", + "label": "Gêne à la circulation" }, { - "code": "TO_BE_CONTROLLED", - "label": "TO_BE_CONTROLLED", - "freetext": "TO_BE_CONTROLLED" + "code": "R23", + "label": "Second risque" } ], - "healthMotive": { - "code": "TO_BE_CONTROLLED", - "label": "TO_BE_CONTROLLED", - "freetext": "TO_BE_CONTROLLED" - }, "victims": { "count": "SEVERAL", - "mainVictim": "CHILD", - "freetext": "Jeanne Dupont, 6 ans, ne r\u00e9pond plus" + "mainVictim": "ADULT", + "freetext": "Deuxième victime présente saignements et brûlures legères aux mains et genoux" } }, "location": { "locID": "111fb03a-6fd9-41e0-8e81-990c45188887", - "locLabel": "Lyc\u00e9e Pierre de Coubertin - 12 rue de l'Amiti\u00e9 77288 Melun, Mus\u00e9e Bossuet - Acc\u00e8s 2 - 77048 Saint-Albray", - "name": "Lyc\u00e9e Pierre de Coubertin", + "locLabel": "8 quai des Célestins - 69002 Lyon", + "name": "Quai des Célestins", + "externalLocationId": [ + { + "source": "FINESS administratif", + "value": "'920000650" + } + ], "detailedAddress": { - "complete": "9 Bd du Montparnasse", - "number": "9, 4bis, PK10, \u2026", + "complete": "8 quai des Célestins", + "number": "8", "wayName": { - "complete": "Boulevard du Montparnasse", - "type": "Boulevard", - "name": "du Montparnasse" + "complete": "quai des Célestins", + "type": "Quai", + "name": "des Célestins" } }, "city": { - "name": "Lille", - "inseeCode": "59350", - "detail": "Quartie Melun Nord, Lhomme, \u2026" + "name": "Lyon", + "inseeCode": "69382", + "detail": "Quartier Melun Nord" }, "access": { - "floor": "RDC, 1, 2, \u2026", - "roomNumber": "A16, 37, 104, \u2026", + "floor": "RDC", + "roomNumber": "A16", "interphone": "Dupont", "accessCode": [ "1234A", "4321B" ], "elevator": "C3", - "buildingName": "Batiment B, Batiment Maunoury", - "entrance": "Zone Sud, Porte 1, \u2026", - "entity": "Infirmerie, service finance, service cardiologie, \u2026" + "buildingName": "Batiment B", + "entrance": "Zone Sud", + "entity": "Infirmerie" }, "geometry": { - "obsDatime": "2022-09-27T08:23:34+02:00", + "obsDatime": "2023-11-03T10:04:00+01:00", "point": { "coord": { "lat": 48.866667, "lon": 2.333333, - "height": 120, + "height": 168, "heading": 96, "speed": 34, "precision": "ADDRESS" @@ -123,61 +116,57 @@ } ], "country": "FR", - "freetext": "Cl\u00e9 derri\u00e8re le pot de fleur" + "freetext": "Clé derrière le pot de fleur" }, "initialAlert": { - "id": "SGO050-20230605-AL0123", - "reception": "2022-09-27T08:21:06+02:00", + "id": "samu690-20231103-AL01234", + "reception": "2023-11-03T10:02:00+01:00", "reporting": "STANDARD", - "freetext": "D\u00e9clenchement t\u00e9l\u00e9alarme, voisine sur les liens", "caller": { "callerContact": { + "channel": "Personne", "type": "PHNADD", - "detail": "0671830530" + "detail": "0607080901" }, "callbackContact": { + "channel": "Personne", "type": "PHNADD", - "detail": "0671830530" + "detail": "0607080901" }, "language": "FR", - "freetext": "P\u00e8re", + "freetext": "épouse de la victime", "detailedName": { - "complete": "Jean Dupont", - "lastName": "Dupont", - "firstName": "Jean" + "complete": "Albane Armaury", + "lastName": "Armaury", + "firstName": "Albane" } }, - "alertSource": { - "channel": "Personne", - "type": "PHNADD", - "detail": "0671830530" - }, "location": { "locID": "111fb03a-6fd9-41e0-8e81-990c45188887", - "name": "Lyc\u00e9e Pierre de Coubertin", + "name": "Quai des Célestins", "country": "FR" }, "qualification": { "whatsHappen": { - "code": "C07.13.02", - "label": "Rod\u00e9o automobile", - "freetext": "None" + "code": "C01.01.04", + "label": "2-roues" } }, "callTaker": { - "organization": "FR:Administration:44:samu44:crra:regulationN3", - "controlRoom": "CGA, CGO 21, CRRA 44, ...", + "organization": "fr.health.samu690", + "controlRoom": "CRRA 690", "role": "ARM", "calltakerContact": { + "channel": "Personne", "type": "PHNADD", - "detail": "0671830530" + "detail": "0607080901" }, "calltakerId": "id1234" }, "attachment": [ { - "description": "photo, carte, \u2026", - "mimeType": "PDF, XML, JPEG, \u2026", + "description": "photo", + "mimeType": "JPEG", "size": 1235, "URI": "https://hub.esante.gouv.fr/resourceExample", "derefURI": "None", @@ -190,10 +179,12 @@ "key": "neighborhood", "label": "Quartier", "value": "LYON 2e arrondissement", - "freetext": "Pr\u00e9cision sur le quartier d'intervention" + "freetext": "Précision sur le quartier d'intervention" } }, - "freetext": "None" + "freetext": [ + "None" + ] } } } diff --git a/src/main/resources/sample/failing/RC-EDA/invalid-RC-EDA-valid-EDXL.xml b/src/main/resources/sample/failing/RC-EDA/invalid-RC-EDA-valid-EDXL.xml index db81bc0c4..165cb312a 100644 --- a/src/main/resources/sample/failing/RC-EDA/invalid-RC-EDA-valid-EDXL.xml +++ b/src/main/resources/sample/failing/RC-EDA/invalid-RC-EDA-valid-EDXL.xml @@ -86,7 +86,7 @@ Quartier Melun Nord, Lhomme, ... - RDC, 1, 2, ...: + RDC, 1, 2, ... A16, 37, 104, ... Dupont 1234A diff --git a/src/main/resources/sample/failing/RS-ERROR/RS-ERROR-invalid-enum.json b/src/main/resources/sample/failing/RS-ERROR/RS-ERROR-invalid-enum.json new file mode 100644 index 000000000..967f610dc --- /dev/null +++ b/src/main/resources/sample/failing/RS-ERROR/RS-ERROR-invalid-enum.json @@ -0,0 +1,82 @@ +{ + "distributionID": "fr.health.hub_2608323d-507d-4cbf-bf74-52007f8124ea", + "senderID": "fr.health.hub", + "dateTimeSent": "2022-07-25T10:04:34+01:00", + "dateTimeExpires": "2072-07-25T10:04:34+01:00", + "distributionStatus": "Actual", + "distributionKind": "Error", + "descriptor": { + "language": "fr-FR", + "explicitAddress": { + "explicitAddressScheme": "hubex", + "explicitAddressValue": "fr.health.samuA" + } + }, + "content": [ + { + "jsonContent": { + "embeddedJsonContent": { + "message": { + "error": { + "errorCode": { + "statusCode": 100, + "statusString": "NOT_ALLOWED_CONTENT_TYPE" + }, + "errorCause": "cause", + "referencedDistributionID": "fr.health.hub_2608323d-507d-4cbf-bf74-52007f8124ea", + "sourceMessage": { + "distributionID": "fr.health.samuA_2608323d-507d-4cbf-bf74-52007f8124ea", + "senderID": "fr.health.samuA", + "dateTimeSent": "2022-07-25T10:04:34+01:00", + "dateTimeExpires": "2072-07-25T10:04:34+01:00", + "distributionStatus": "Actual", + "distributionKind": "Ack", + "descriptor": { + "language": "fr-FR", + "explicitAddress": { + "explicitAddressScheme": "hubex", + "explicitAddressValue": "fr.health.samuB" + } + }, + "content": [ + { + "jsonContent": { + "embeddedJsonContent": { + "message": { + "messageId": "fr.health.samuA_2608323d-507d-4cbf-bf74-52007f8124ea", + "sender": { + "name": "samuA", + "URI": "hubex:fr.health.samuA" + }, + "sentAt": "2022-07-25T10:04:34+01:00", + "status": "Actual", + "kind": "Ack", + "recipient": [ + { + "name": "samuB", + "URI": "hubex:fr.health.samuB" + } + ], + "reference": { + "distributionID": "samuB_2607723d-507d-4cbf-bf74-12345f7064cd" + }, + "error": { + "errorCode": { + "statusString": "DELIVERY_MODE_INCONSISTENCY" + }, + "errorCause": "cause", + "sourceMessage": "source" + } + } + } + } + } + ] + } + } + } + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/sample/failing/RS-ERROR/RS-ERROR-invalid-enum.xml b/src/main/resources/sample/failing/RS-ERROR/RS-ERROR-invalid-enum.xml new file mode 100644 index 000000000..2f9e2f848 --- /dev/null +++ b/src/main/resources/sample/failing/RS-ERROR/RS-ERROR-invalid-enum.xml @@ -0,0 +1,34 @@ + + + fr.health.samuB_2608323d-507d-4cbf-bf74-52007f8124ea + fr.health.samuB + 2022-07-25T10:04:34+01:00 + 2072-07-25T10:04:34+01:00 + Actual + Error + + fr-FR + + hubex + fr.health.samuA + + + + + + + + + + 100 + NOT_ALLOWED_CONTENT_TYPE + + cause + fr.health.hub_2608323d-507d-4cbf-bf74-52007f8124ea + + + + + + + \ No newline at end of file diff --git a/src/main/resources/sample/valid/RC-EDA/RC-EDA.json b/src/main/resources/sample/valid/RC-EDA/RC-EDA.json index 8f067be45..9b7d1b061 100644 --- a/src/main/resources/sample/valid/RC-EDA/RC-EDA.json +++ b/src/main/resources/sample/valid/RC-EDA/RC-EDA.json @@ -32,72 +32,75 @@ } ], "createCase": { - "caseId": "samuA:CA126B445579GD4A67AV", - "senderCaseId": "CA126B445579GD4A67AV", - "creation": "2022-09-27T08:23:34+02:00", - "referenceVersion": "1.2", + "caseId": "fr.health.samu690.DRFR15690240430050", + "senderCaseId": "DRFR15690240430050", + "creation": "2023-11-03T10:03:00+01:00", + "referenceVersion": "1.3", "qualification": { "whatsHappen": { - "code": "C07.13.02", - "label": "Rod\u00e9o automobile", - "freetext": "None" + "code": "C01.01.04", + "label": "2-roues" }, "riskThreat": [ { - "code": "C01.00.00", - "label": "Gêne à la circulation", - "freetext": "risque lié aux voitures" + "code": "R22", + "label": "Gêne à la circulation" }, { - "code": "C01.01.00", - "label": "Second riskThreat", - "freetext": "champ libre" + "code": "R23", + "label": "Second risque" } ], "victims": { "count": "SEVERAL", "mainVictim": "ADULT", - "freetext": "Deuxième victime présente saignements legers aux mains et genoux" + "freetext": "Deuxième victime présente saignements et brûlures legères aux mains et genoux" } }, "location": { "locID": "111fb03a-6fd9-41e0-8e81-990c45188887", - "locLabel": "Lycée Pierre de Coubertin - 12 rue de l'Amitié 77288 Melun, Musée Bossuet - Accès 2 - 77048 Saint-Albray", - "name": "Lycée Pierre de Coubertin", + "locLabel": "8 quai des Célestins - 69002 Lyon", + "name": "Quai des Célestins", + "externalLocationId": [ + { + "source": "FINESS administratif", + "value": "'920000650" + } + ], "detailedAddress": { - "complete": "9 Bd du Montparnasse", - "number": "9, 4bis, PK10, ...", + "complete": "8 quai des Célestins", + "number": "8", "wayName": { - "complete": "Boulevard du Montparnasse", - "type": "Boulevard", - "name": "du Montparnasse" + "complete": "quai des Célestins", + "type": "Quai", + "name": "des Célestins" } }, "city": { - "name": "Lille", - "inseeCode": "59350", - "detail": "Quartier Melun Nord, Lhomme, ..." + "name": "Lyon", + "inseeCode": "69382", + "detail": "Quartier Melun Nord" }, "access": { - "floor": "RDC, 1, 2, ...", - "roomNumber": "A16, 37, 104, ...", + "floor": "RDC", + "roomNumber": "A16", "interphone": "Dupont", "accessCode": [ "1234A", "4321B" ], "elevator": "C3", - "buildingName": "Batiment B, Batiment Maunoury", - "entrance": "Zone Sud, Porte 1, ...", - "entity": "Infirmerie, service finance, service cardiologie, ..." + "buildingName": "Batiment B", + "entrance": "Zone Sud", + "entity": "Infirmerie" }, "geometry": { - "obsDatime": "2022-09-27T08:23:34+02:00", + "obsDatime": "2023-11-03T10:04:00+01:00", "point": { "coord": { "lat": 48.866667, "lon": 2.333333, - "height": 120, + "height": 168, "heading": 96, "speed": 34, "precision": "ADDRESS" @@ -117,58 +120,60 @@ "freetext": "Clé derrière le pot de fleur" }, "initialAlert": { - "id": "SGO050-20230605-AL0123", - "reception": "2022-09-27T08:21:06+02:00", + "id": "samu690-20231103-AL01234", + "reception": "2023-11-03T10:02:00+01:00", "reporting": "STANDARD", - "freetext": "Déclenchement téléalarme, voisine sur les liens", + "notes": [ + { + "creation": "2023-11-03T10:02:00+01:00", + "freetext": "Accident entre une voiture et un vélo" + } + ], "caller": { "callerContact": { + "channel": "Personne", "type": "PHNADD", - "detail": "0671830530" + "detail": "0607080901" }, "callbackContact": { + "channel": "Personne", "type": "PHNADD", - "detail": "0671830530" + "detail": "0607080901" }, "language": "FR", - "freetext": "Père", + "freetext": "épouse de la victime", "detailedName": { - "complete": "Jean Dupont", - "lastName": "Dupont", - "firstName": "Jean" + "complete": "Albane Armaury", + "lastName": "Armaury", + "firstName": "Albane" } }, - "alertSource": { - "channel": "Personne", - "type": "PHNADD", - "detail": "0671830530" - }, "location": { "locID": "111fb03a-6fd9-41e0-8e81-990c45188887", - "name": "Lycée Pierre de Coubertin", + "name": "Quai des Célestins", "country": "FR" }, "qualification": { "whatsHappen": { - "code": "C07.13.02", - "label": "Rodéo automobile", - "freetext": "None" + "code": "C01.01.04", + "label": "2-roues" } }, "callTaker": { - "organization": "FR:Administration:44:samu44:crra:regulationN3", - "controlRoom": "CGA, CGO 21, CRRA 44, ...", + "organization": "fr.health.samu690", + "controlRoom": "CRRA 690", "role": "ARM", "calltakerContact": { + "channel": "Personne", "type": "PHNADD", - "detail": "0671830530" + "detail": "0607080901" }, "calltakerId": "id1234" }, "attachment": [ { - "description": "photo, carte, ...", - "mimeType": "PDF, XML, JPEG, ...", + "description": "photo", + "mimeType": "JPEG", "size": 1235, "URI": "https://hub.esante.gouv.fr/resourceExample", "derefURI": "None", @@ -176,6 +181,28 @@ } ] }, + "decision": [ + { + "type": "INTER", + "creation": "2023-11-03T10:05:00+01:00" + } + ], + "patient": [ + { + "identity": { + "nonStrictFeatures": { + "complete": "Alexandre Armaury", + "lastName": "Armaury", + "firstName": "Alexandre" + }, + "strictFeatures": { + "sex": "MASC", + "birthDate": "1981-01-01" + } + }, + "id": "fr.health.samu690.DRFR15690240430050.P01" + } + ], "additionalInformation": { "customMap": [ { @@ -186,11 +213,13 @@ } ] }, - "freetext": "None" + "freetext": [ + "None" + ] } } } } } ] -} \ No newline at end of file +} diff --git a/src/main/resources/sample/valid/RC-EDA/RC-EDA.xml b/src/main/resources/sample/valid/RC-EDA/RC-EDA.xml index ce83b6077..6a825fce3 100644 --- a/src/main/resources/sample/valid/RC-EDA/RC-EDA.xml +++ b/src/main/resources/sample/valid/RC-EDA/RC-EDA.xml @@ -1,6 +1,8 @@ - + fr.health.samuB_2608323d-507d-4cbf-bf74-52007f8124ea fr.health.samuB 2022-07-25T10:04:34+01:00 @@ -14,12 +16,12 @@ fr.health.samuA - + - fr.health.samuB_2608323d-507d-4cbf-bf74-52007f8124ea + messageId samuB hubex:fr.health.samuB @@ -32,68 +34,69 @@ hubex:fr.health.samuA - samuA:CA126B445579GD4A67AV - CA126B445579GD4A67AV - 2022-09-27T08:23:34+02:00 - 1.2 + fr.health.samu690.DRFR15690240430050 + DRFR15690240430050 + 2023-11-03T10:03:00+01:00 + 1.3 - C07.13.02 - - None + C01.01.04 + - C01.00.00 + R22 - risque lié aux voitures - C01.01.00 - - champ libre + R23 + SEVERAL ADULT - Deuxième victime présente saignements legers aux mains et genoux + Deuxième victime présente saignements et brûlures legères aux mains et genoux 111fb03a-6fd9-41e0-8e81-990c45188887 - Lycée Pierre de Coubertin - 12 rue de l'Amitié 77288 Melun, Musée Bossuet - Accès 2 - 77048 Saint-Albray - Lycée Pierre de Coubertin + 8 quai des Célestins - 69002 Lyon + Quai des Célestins + + FINESS administratif + '920000650 + - 9 Bd du Montparnasse - 9, 4bis, PK10, ... + 8 quai des Célestins + 8 - Boulevard du Montparnasse - Boulevard - du Montparnasse + quai des Célestins + Quai + des Célestins - Lille - 59350 - Quartier Melun Nord, Lhomme, ... + Lyon + 69382 + Quartier Melun Nord - RDC, 1, 2, ... - A16, 37, 104, ... + RDC + A16 Dupont 1234A 4321B C3 - Batiment B, Batiment Maunoury - Zone Sud, Porte 1, ... - Infirmerie, service finance, service cardiologie, ... + Batiment B + Zone Sud + Infirmerie - 2022-09-27T08:23:34+02:00 + 2023-11-03T10:04:00+01:00 48.866667 2.333333 - 120 + 168 96 34 ADDRESS @@ -111,63 +114,81 @@ Clé derrière le pot de fleur - SGO050-20230605-AL0123 - 2022-09-27T08:21:06+02:00 + samu690-20231103-AL01234 + 2023-11-03T10:02:00+01:00 STANDARD - Déclenchement téléalarme, voisine sur les liens + + 2023-11-03T10:02:00+01:00 + Accident entre une voiture et un vélo + + Personne PHNADD - 0671830530 + 0607080901 + Personne PHNADD - 0671830530 + 0607080901 FR - Père + épouse de la victime - Jean Dupont - Dupont - Jean + Albane Armaury + Armaury + Albane - - Personne - PHNADD - 0671830530 - 111fb03a-6fd9-41e0-8e81-990c45188887 - Lycée Pierre de Coubertin + Quai des Célestins FR - C07.13.02 - - None + C01.01.04 + - FR:Administration:44:samu44:crra:regulationN3 - CGA, CGO 21, CRRA 44, ... + fr.health.samu690 + CRRA 690 ARM + Personne PHNADD - 0671830530 + 0607080901 id1234 - photo, carte, ... - PDF, XML, JPEG, ... + photo + JPEG 1235 https://hub.esante.gouv.fr/resourceExample None None + + fr.health.samu690.DRFR15690240430050.P01 + + + 1981-01-01 + MASC + + + Alexandre Armaury + Armaury + Alexandre + + + + + 2023-11-03T10:05:00+01:00 + INTER + neighborhood @@ -183,4 +204,4 @@ - + \ No newline at end of file diff --git a/src/main/resources/sample/valid/RS-EDA/RS-EDA.json b/src/main/resources/sample/valid/RS-EDA/RS-EDA.json index e6003defd..0f6e5af3a 100644 --- a/src/main/resources/sample/valid/RS-EDA/RS-EDA.json +++ b/src/main/resources/sample/valid/RS-EDA/RS-EDA.json @@ -33,41 +33,42 @@ ], "createCaseHealth": { "caseId": "fr.health.samu950-DRFR159502401000233", - "senderCaseId": "fr.health.samu950-DRFR159502401000233", + "senderCaseId": "DRFR159502401000233", "creation": "2024-01-10T14:07:00+01:00", - "referenceVersion": "1.3", + "referenceVersion": "1.4", "qualification": { "whatsHappen": { "code": "C02.05.01", - "label": "Pathologie / Maladie - Médicale ", - "freetext": "Douleurs thoraciques" + "label": "Atteinte aux personnes; Pathologie / maladie ; Médicale " }, "locationKind": { "code": "L03.01.00", - "label": "Local administratif", - "freetext": "service comptabilité de la SARL Toto" + "label": "Local d’activité professionnelle; Local administratif" }, - "riskThreat": [], "healthMotive": { "code": "M03.06", - "label": "Douleur thoracique ", - "freetext": "douleurs dans la poitrine, pas de difficulté à respirer, la victime est consciente. A des antécédents de maladie cardiaque" - }, - "victims": { - "count": "1", - "mainVictim": "ADULT", - "freetext": "Femme de 47 ans" + "label": "Problème médical; Douleur thoracique " }, "details": { "priority": "P0", - "attribution": "Médecin urgentiste", - "type": "D" - } + "attribution": "MU", + "type": "D", + "status": "Actif " + }, + "riskThreat": [ + { + "code": "R02", + "label": "libellé risque 1" + }, + { + "code": "R03", + "label": "Libellé risque 2" + } + ] }, "location": { "locID": "555fb03a-4df5-8zg6-8e81-990c4514986", - "locLabel": "18 rue des Bois Rochefort 78500 Sartrouville", - "name": "rue des Bois Rochefort", + "name": "SARL Toto", "detailedAddress": { "complete": "18 rue des Bois Rochefort 78500 Sartrouville", "number": "18", @@ -79,18 +80,21 @@ }, "city": { "name": "Sartrouville", - "inseeCode": "78586" + "inseeCode": "78586", + "detail": "Sartrouville" }, - "externalInfo": [], "country": "FR", "access": { - "accessCode": [], "floor": "4", "interphone": "SARL TOTO", "elevator": "Esc D", "buildingName": "C", "entity": "Comptabilité", - "phoneNumber": 156789456 + "phoneNumber": 156789456, + "accessCode": [ + "4568" + ], + "entrance": "B" }, "freetext": "Se rendre au service comptabilité l'accueil est prévenu", "geometry": { @@ -98,25 +102,45 @@ "coord": { "lat": 48.95102310180664, "lon": 2.1857428550720215, - "precision": "ADDRESS" - } + "precision": "UNKNOWN", + "height": 6, + "heading": 8, + "speed": 49 + }, + "sysCoord": "système" }, - "obsDatime": "2024-01-10T11:00:00+01:00" - } + "obsDatime": "2024-01-10T11:00:00+01:00", + "sketch": "formes" + }, + "externalInfo": [ + { + "freetext": "IGN", + "type": "PHOTO", + "uri": "1564-fghr-ID" + } + ], + "externalLocationId": [ + { + "source": "SIRET", + "value": "36252187900034" + } + ], + "locLabel": "Résumé localisation dossier" }, "initialAlert": { "id": "fr.health.samu950-DRFR159502401000233", "reception": "2024-01-10T14:05:00+01:00", "reporting": "STANDARD", - "freetext": "Problème médical", "caller": { "callerContact": { "type": "PHNADD", - "detail": "0607080928" + "detail": "0607080928", + "channel": "Personne" }, "callbackContact": { "type": "PHNADD", - "detail": "0607080928" + "detail": "0607080928", + "channel": "Personne" }, "language": "FR", "freetext": "Collègue de la victime", @@ -126,95 +150,45 @@ "firstName": "Magda" }, "type": "TIERS", - "communication": "" - }, - "alertSource": { - "channel": "Personne", - "type": "PHNADD", - "detail": "calltakerContact" - }, - "location": { - "locID": "555fb03a-4df5-8zg6-8e81-990c4514986", - "locLabel": "18 rue des Bois Rochefort 78500 Sartrouville", - "name": "SARL TOTO", - "detailedAddress": { - "complete": "18 rue des Bois Rochefort", - "number": "18", - "wayName": { - "complete": " rue des Bois Rochefort", - "type": "Rue", - "name": "des Bois Rochefort" - } - }, - "city": { - "name": "Sartrouville", - "inseeCode": "78586" - }, - "externalInfo": [], - "country": "FR", - "access": { - "accessCode": [], - "interphone": "SARL TOTO", - "floor": "4", - "elevator": "ESC D", - "buildingName": "C", - "entity": "Comptabilité", - "phoneNumber": 156789456 - }, - "geometry": { - "point": { - "coord": { - "lon": 2.1857428550720215, - "lat": 48.95102310180664, - "precision": "ADDRESS" - } - }, - "obsDatime": "2024-01-04T00:05:00+01:00" - } - }, - "qualification": { - "whatsHappen": { - "code": "C02.05.01", - "label": "Pathologie / Maladie - Médicale ", - "freetext": "Douleurs thoraciques" - }, - "locationKind": { - "code": "L03.01.00", - "label": "Local administratif– service comptabilité ", - "freetext": "service comptabilité de la SARL Toto" - }, - "riskThreat": [], - "healthMotive": { - "code": "M03.06", - "label": "Douleur thoracique", - "freetext": "douleurs dans la poitrine, pas de difficulté à respirer, la victime est consciente. A des antécédents de maladie cardiaque" - }, - "victims": { - "count": "1", - "mainVictim": "ADULT", - "freetext": "Femme de 47 ans" - }, - "details": { - "attribution": "Médecin urgentiste", - "priority": "P0" - } + "communication": "LANGUE" }, "callTaker": { - "organization": "fr.health.samu770.chuLyon.crra.regulationN3", - "controlRoom": "CRRA 770", - "role": "ARM", - "calltakerId": "id5678", + "organization": "fr.health.samu950", + "controlRoom": "CRRA 95", "calltakerContact": { "type": "PHNADD", - "detail": "0607080928" - } + "detail": "060102030406", + "channel": "Personne" + }, + "role": "ARM", + "calltakerId": "4978-IDARM2" }, - "attachment": [] + "attachment": [ + { + "description": "TYPE PJ", + "mimeType": "TYPE MIME", + "size": 798, + "URI": "https://bac-a-sable.hub.esante.gouv.fr/lrm/json", + "derefURI": "aHR0cHM6Ly93d3cuYmFzZTY0ZW5jb2RlLm9yZy9mci8=", + "digest": "hash" + } + ], + "notes": [ + { + "creation": "2024-01-10T07:04:00+01:00", + "freetext": "Observation ARM 1" + }, + { + "creation": "2024-01-10T07:06:00+01:00", + "freetext": "Observation ARM 2" + }, + { + "freetext": "Observation ARM 3", + "creation": "2024-01-10T07:15:00+01:00" + } + ] }, - "freetext": "Problème médical", - "decision": [], - "newAlert": [], - "owner": "fr.health.samu780", + "owner": "fr.health.samu950", "additionalInformation": { "customMap": [ { @@ -225,8 +199,261 @@ } ] }, - "patient": [], - "operator": [] + "patient": [ + { + "detail": { + "age": "P47Y", + "height": 160, + "weight": 75, + "careLevel": "R1" + }, + "identity": { + "nonStrictFeatures": { + "complete": "Ouardia Boudadi", + "firstName": "Ouardia", + "lastName": "Boudadi" + }, + "strictFeatures": { + "sex": "FEM", + "birthName": "BOUDADI", + "birthFirstName": "Ouardia", + "birthFirstNamesList": "Ouardia Salomé", + "birthDate": "1982-02-26", + "birthPlaceCode": 99205 + }, + "number": { + "value": "256897445698754", + "oid": "1.2.250.1.213.1.4.8" + }, + "cycle": { + "status": "Qualifiée", + "attribute": "Homonyme" + } + }, + "id": "fr.health.samu950-DRFR159502401000233.P11", + "hypothesis": { + "mainDiagnosis": { + "code": "Z86. 704", + "label": "AVC" + }, + "otherDiagnosis": [ + { + "code": "Z86. 704", + "label": "AVC" + } + ] + }, + "healthMotive": { + "label": "Problème médical, Douleur thoracique", + "code": "M03.06" + }, + "administrativeFile": { + "generalPractitioner": { + "personalAddress": { + "city": { + "name": "ST DENIS", + "detail": "Lieu-dit", + "inseeCode": "93066" + }, + "detailedAddress": { + "wayName": { + "complete": "PLACE PLEYEL", + "type": "PLACE", + "name": "PLEYEL" + }, + "complete": "1 PLACE PLEYEL", + "number": "1" + } + }, + "detailedName": { + "complete": "Michel Dupont", + "lastName": "Dupont", + "firstName": "Michel " + }, + "id": "10003019207" + }, + "personalAddress": { + "city": { + "name": "Paris", + "inseeCode": "75111", + "detail": "Cedex 03" + }, + "detailedAddress": { + "wayName": { + "complete": "rue du chemin vert", + "type": "rue", + "name": "du chemin vert" + }, + "complete": "60 rue du chemin vert", + "number": "60" + } + } + }, + "freetext": [ + "Commentaire 1 dossier", + "Commentaire 2 dossier", + "Commentaire 3 dossier" + ] + } + ], + "freetext": [ + "Commentaire dossier 1", + "Commentaire dossier 2", + "Commentaire dossier 3" + ], + "newAlert": [ + { + "callTaker": { + "calltakerContact": { + "channel": "Personne", + "type": "PHNADD", + "detail": "0506070809" + }, + "organization": "fr.health.samu950", + "controlRoom": "fr.health.samu950", + "role": "Medecin", + "calltakerId": "12345" + }, + "caller": { + "detailedName": { + "complete": "tom tom", + "lastName": "tom", + "firstName": "tom" + }, + "callbackContact": { + "channel": "Personne", + "type": "WWWADD", + "detail": "https://bac-a-sable.hub.esante.gouv.fr/lrm/json" + }, + "callerContact": { + "type": "PSTADD", + "channel": "Personne", + "detail": "0102030405" + }, + "language": "AL", + "type": "AMBULANC", + "communication": "LANGUE", + "freetext": "commentaire" + }, + "attachment": [ + { + "description": "type PJ", + "mimeType": "type MIME", + "size": 234, + "URI": "https://bac-a-sable.hub.esante.gouv.fr/lrm/json", + "derefURI": "aHR0cHM6Ly9iYWMtYS1zYWJsZS5odWIuZXNhbnRlLmdvdXYuZnIvbHJtL2pzb24=", + "digest": "test" + } + ], + "id": "fr.health.samu950-DRFR159502401000233", + "reception": "2024-04-18T09:45:00+02:00", + "reporting": "ATTENTION" + } + ], + "decision": [ + { + "transportDetails": { + "destination": { + "destinationLocation": { + "geometry": { + "point": { + "coord": { + "lat": 48.869422912597656, + "lon": 2.2231545448303223, + "height": 22, + "heading": 35, + "speed": 46, + "precision": "STREET" + }, + "sysCoord": "systeme" + }, + "obsDatime": "2024-04-08T06:40:00+02:00", + "sketch": "test" + }, + "access": { + "accessCode": [ + "1234" + ], + "floor": "étage", + "roomNumber": "2", + "interphone": "interphone", + "elevator": "esc2", + "buildingName": "batb", + "entrance": "235a", + "entity": "urgences", + "phoneNumber": 102030405 + }, + "city": { + "inseeCode": "92073", + "name": "Suresnes", + "detail": "Suresnes" + }, + "detailedAddress": { + "wayName": { + "complete": "Rue Merlin de Thionville", + "type": "Rue", + "name": "Merlin de Thionville" + }, + "complete": "39 Rue Merlin de Thionville", + "number": "39 " + }, + "externalInfo": [ + { + "freetext": "BAN", + "type": "MANUAL", + "uri": "555fb03a-qs48" + } + ], + "externalLocationId": [ + { + "source": "FINESS géographique", + "value": "123456789" + } + ], + "locID": "555fb03a-4df5-8zg6-8e81-990c4514986", + "locLabel": "Résumé localisation urgences", + "name": "urgences", + "country": "FR", + "freetext": "test" + }, + "type": "service d’urgences d’un Etablissement de santé" + }, + "orientation": "OK", + "teamCare": "MED", + "concoursRequest": "fr.health.samu950-DRFR159502401000233.D350", + "transportationID": "IDV-OIUSJP1245" + }, + "id": "fr.health.samu950-DRFR159502401000233.P11", + "creation": "2024-04-30T09:15:00+02:00", + "type": "ORIENT", + "engagementDetails": { + "categoryType": "SMUR", + "resourceType": "VLM", + "teamCareInitial": "R1" + } + } + ], + "medicalNote": [ + { + "operator": { + "detailedName": { + "complete": "Lucas Stefano", + "lastName": "Stefano", + "firstName": "Lucas " + }, + "id": "1245_ID", + "role": "ARM" + }, + "id": "fr.health.samu950-DRFR159502401000233.P11", + "creation": "2024-04-03T01:15:00+02:00", + "freetext": "Observations et commentaires médicaux sur le patient Ouardia Boudadi. ", + "medicalHistory": "Antécédent de crise cardiaque", + "treatments": "Pas de traitement", + "allergies": "Pas d’allergie" + } + ], + "perimeter": "AMU", + "interventionType": "Primaire" } } } @@ -234,5 +461,3 @@ } ] } - - diff --git a/src/main/resources/sample/valid/RS-ERROR/RS-ERROR.json b/src/main/resources/sample/valid/RS-ERROR/RS-ERROR.json index fce954402..925369b2d 100644 --- a/src/main/resources/sample/valid/RS-ERROR/RS-ERROR.json +++ b/src/main/resources/sample/valid/RS-ERROR/RS-ERROR.json @@ -43,23 +43,8 @@ "jsonContent": { "embeddedJsonContent": { "message": { - "messageId": "fr.health.samuA_2608323d-507d-4cbf-bf74-52007f8124ea", - "sender": { - "name": "samuA", - "URI": "hubex:fr.health.samuA" - }, - "sentAt": "2022-07-25T10:04:34+01:00", - "status": "Actual", - "kind": "Ack", - "recipient": [ - { - "name": "samuB", - "URI": "hubex:fr.health.samuB" - } - ], - "reference": { - "distributionID": "samuB_2607723d-507d-4cbf-bf74-12345f7064cd" - } + "customContent": {}, + "unknown_property": "unknown_value" } } } diff --git a/src/main/resources/sample/valid/RS-ERROR/RS-ERROR.xml b/src/main/resources/sample/valid/RS-ERROR/RS-ERROR.xml index 7e8070487..02cd320dd 100644 --- a/src/main/resources/sample/valid/RS-ERROR/RS-ERROR.xml +++ b/src/main/resources/sample/valid/RS-ERROR/RS-ERROR.xml @@ -24,6 +24,35 @@ DELIVERY_MODE_INCONSISTENCY cause + + + fr.health.samuB_2608323d-507d-4cbf-bf74-52007f8124ea + fr.health.samuB + 2022-07-25T10:04:34+01:00 + 2072-07-25T10:04:34+01:00 + Actual + Error + + fr-FR + + hubex + fr.health.samuA + + + + + + + + + unknown_value + + + + + + + fr.health.hub_2608323d-507d-4cbf-bf74-52007f8124ea diff --git a/src/main/resources/xsd/EMSI.xsd b/src/main/resources/xsd/EMSI.xsd index 9ce2fd5c9..953c5886e 100644 --- a/src/main/resources/xsd/EMSI.xsd +++ b/src/main/resources/xsd/EMSI.xsd @@ -1105,7 +1105,7 @@ NB : ce champ (EVENT.REFERENCE.ORG_ID) ne peut pas être le même que le champ C La localisation de l'affaire est transmise en amont dans un message RC-EDA et le lieu souhaité pour l'intervention est systématiquement reprécisé dans un objet MISSION - + Optionnel La localisation de l'affaire est transmise en amont dans un message RC-EDA et le lieu souhaité pour l'intervention est systématiquement reprécisé dans un objet MISSION. @@ -1261,12 +1261,12 @@ La localisation de l'affaire est transmise en amont dans un message RC-EDA et le La localisation de l'affaire est transmise en amont dans un message RC-EDA et le lieu souhaité pour l'intervention est systématiquement reprécisé dans un objet MISSION - + - + Optionnel La localisation de l'affaire est transmise en amont dans un message RC-EDA et le lieu souhaité pour l'intervention est systématiquement reprécisé dans un objet MISSION. diff --git a/src/main/resources/xsd/RC-EDA.xsd b/src/main/resources/xsd/RC-EDA.xsd index b1cbedbfb..6a485e9af 100644 --- a/src/main/resources/xsd/RC-EDA.xsd +++ b/src/main/resources/xsd/RC-EDA.xsd @@ -35,11 +35,7 @@ Cela permet aux différents systèmes de s'assurer qu'ils utilisent la même ver - - - Texte libre permettant de donner des informations supplémentaires concernant l'affaire - - + @@ -60,16 +56,17 @@ Cela permet aux différents systèmes de s'assurer qu'ils utilisent la même ver - Permet d'indiquer des indications auto suffisantes permettant pour un opérationnel d'accéder facilement au lieu avec des indications minimales. -Dans les messages NexSIS, va souvent correspondre à la concaténation suivant des règles métiers de différentes informations, dont le "name" (toponyme) et l'adresse. -Comprend au maximum 255 caractères + Donne les informations minimales d'identification du lieu d'intervention, qui permet d'identifier rapidement le lieu pour les équipes opérationnelles. Comprend au maximum 255 caractères. +15-18 : Dans les messages NexSIS, va souvent correspondre à la concaténation suivant des règles métiers de différentes informations, dont le "name" (toponyme) et l'adresse. + - Indique le nom de lieu : nom commercial, forêt de Fontainebleau, lac du Der (plutôt à destination des systèmes). + Indique le nom de lieu : nom commercial, Etablissement, forêt de Fontainebleau, lac du Der (plutôt à destination des systèmes). + @@ -362,13 +359,8 @@ Les systèmes peuvent proposer des fonctionnalités faisant ressortir les dossie - - - Texte libre permettant de donner des informations supplémentaires concernant l'alerte. - - + - @@ -383,13 +375,14 @@ Les systèmes peuvent proposer des fonctionnalités faisant ressortir les dossie + - ID partagé du patient concerné, lorsque le patient existe et est identifié + ID partagé du patient concerné par la décision, lorsque le patient existe et est identifié @@ -397,23 +390,21 @@ Les systèmes peuvent proposer des fonctionnalités faisant ressortir les dossie Groupe date heure de création de la décision. L'indicateur de fuseau horaire Z ne doit pas être utilisé. - + Type de décision prise + + + + + + + + + - - - Décision(s) d'orientation prise par le médecin régulateur - - - - - - Type d’équipe (médical, paramédicale, non médicale, standard, incomplete, ...) - - - + @@ -434,19 +425,197 @@ Les systèmes peuvent proposer des fonctionnalités faisant ressortir les dossie Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut directement afficher le libellé qui est obligatoirement fourni avec le code. - - - Commentaire libre permettant de passer des informations complémentaires associées à la nomenclature - - - + A valoriser avec un code la nomenclature associée + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -454,19 +623,55 @@ Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut directement afficher le libellé qui est obligatoirement fourni avec le code. - - - Commentaire libre permettant de passer des informations complémentaires associées à la nomenclature - - - + A valoriser avec un code la nomenclature associée + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -474,19 +679,70 @@ Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut directement afficher le libellé qui est obligatoirement fourni avec le code. - - - Commentaire libre permettant de passer des informations complémentaires associées à la nomenclature - - - + A valoriser avec un code la nomenclature associée + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -494,11 +750,6 @@ Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut directement afficher le libellé qui est obligatoirement fourni avec le code. - - - Commentaire libre permettant de passer des informations complémentaires associées à la nomenclature - - @@ -537,13 +788,35 @@ Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut + + + + + Type de l'identifiant fourni + + + + + + + + + + + + + + L'identifiant en lui-même + + + + - Numéro, type et nom de la voie. -Utilisé pour tout type de voie : autoroute (PK, nom et sens), voie ferrée, voie navigable… -Obligatoire et seule valeur des détails de l'adresse fournie par NexSIS. + Numéro, type et nom de la voie. Utilisé pour tout type de voie : autoroute (PK, nom et sens), voie ferrée, voie navigable… +15-18 : Obligatoire et seule valeur des détails de l'adresse fournie par NexSIS. @@ -574,7 +847,7 @@ Obligatoire et seule valeur des détails de l'adresse fournie par NexSIS. Informations complémentaires permettant de préciser le quartier, lieu-dit, ancienne commune, … ou autre information aidant à préciser l'adresse et notamment gérer les cas de communes fusionnées pour le système émetteur -NB : dans tous les cas, la localisation GPS de la commune doit être fournie afin d'éviter une trop forte ambiguïté +NB : dans tous les cas, la localisation GPS de la commune doit être fournie afin d'éviter une trop forte ambiguïté. @@ -683,8 +956,16 @@ Ex : SIG NexSIS / OSM ont plusieurs types de données -> savoir du quel on pa Si les champs type et name sont renseignés, le champ callerName doit être valorisé ainsi : "{type} {nom}". - - + + + Type de la voie + + + + + Nom de la voie + + @@ -741,9 +1022,23 @@ CITY=Précision à l'échelle de la ville, STREET=Précision à l'échelle de la + + + + + date et heure de l'observation + + + + + texte libre contenant les indications renseignées par l'ARM + + + + - + @@ -995,54 +1290,61 @@ CITY=Précision à l'échelle de la ville, STREET=Précision à l'échelle de la - + Indique la relation du requérant avec l'incident / le patient / la victime + + + + + + + + + + + + + + + + + + + + + + + + + - + Indique si le requérant rencontre ou non des difficulté de communication - - - - Informations complémentaires sur le requérant -Les informations peuvent être passées sous forme de texte libre ou via une liste d'adjectif - - - - - - - - - - Permet d'indiquer l'origine du canal établit : Personne, application, DAU, BAU, défibrillateur, ecall - - - - - Type de l'URI utilisée par la source, cf. nomenclature EMSI - - - - - - - - - + + + + + + + + + - + - Valeur de l'URI utilisée par la source + Informations complémentaires sur le requérant +Les informations peuvent être passées sous forme de texte libre ou via une liste d'adjectif + @@ -1110,6 +1412,11 @@ La ressource est hashée avec le protocole SHA-256 + + + Permet d'indiquer l'origine du canal établit : Personne, application, DAU, BAU, défibrillateur, ecall + + Type de l'URI utilisée par le requérant, cf. nomenclature EMSI @@ -1174,11 +1481,46 @@ Par convention les prénoms composés doivent préférablement être séparés p - + Sexe du patient + + + + + + + + + + + + + + + + Décision(s) d'orientation prise par le médecin régulateur : +- A transporter +- Laisser sur place + + + + + Identifiant de la ou des demandes de concours + + + + Identifiant du véhicule terrestre / aérien / maritime de transport principal (= celui dans lequel se trouve le patient), permettant d'associer la décision à un véhicule spécifique + au patient. + + + + + Type d’équipe (médical, paramédicale, non médicale, standard, incomplete, ...) + + + @@ -1198,27 +1540,7 @@ Par convention les prénoms composés doivent préférablement être séparés p - - - Nom de l'établissement - - - - - N° Finess administratif de l'établissement - - - - - N° Finess géographique de l'établissement - - - - - Service concerné par l'admission du patient - - - + diff --git a/src/main/resources/xsd/RC-REF.xsd b/src/main/resources/xsd/RC-REF.xsd index 52efdd366..0592275ce 100644 --- a/src/main/resources/xsd/RC-REF.xsd +++ b/src/main/resources/xsd/RC-REF.xsd @@ -12,7 +12,7 @@ Indique si le message acquitté a été refusé - + Identifiant unique du message d'erreur lié diff --git a/src/main/resources/xsd/RS-EDA.xsd b/src/main/resources/xsd/RS-EDA.xsd index 460944d0f..a5e8c2bc4 100644 --- a/src/main/resources/xsd/RS-EDA.xsd +++ b/src/main/resources/xsd/RS-EDA.xsd @@ -28,28 +28,43 @@ Ce champ est facultatif, il ne sera notamment pas transmis par NexSIS. Cela permet aux différents systèmes de s'assurer qu'ils utilisent la même version des codes de nomenclature que leurs partenaires. + + + Sert à indiquer à quelle filière du CRRA le dossier doit être adressé/affiché + + + + + + + + + + + + Indiquer s'il s'agit d'un dossier dit primaire (première intervention urgente) ou secondaire (par exemple TIH) + + + + + + + + - Champ servant à transférer la responsabilité du traitement d'un dossier à un autre CRAA / à lui demander de prendre en charge le traitement du dossier. -Le SAMU demandeur entre dans ce champ l'ID du CRAA à qui il demande de traiter l'affaire (uniquement en cas de transfert intégral du traitement d'un dossier). -Le SAMU qui reçoit la demande de transfert et l'accepte renvoie un RC-EDA de mise à jour en laissant son ID dans ce champ + en ajoutant l'ID local du dossier chez lui dans le message. -Le SAMU qui reçoit la demande de transfert et la refuse renvoie un RC-EDA de mise à jour en remettant l'ID du SAMU demandeur dans ce champ + il envoie l'ID local du dossier chez lui. + Champ servant à transférer la prise en charge d'un dossier à un autre CRAA après accord verbal de ce dernier. - - - - Texte libre permettant de donner des informations supplémentaires concernant l'affaire - - + @@ -59,7 +74,6 @@ Le SAMU qui reçoit la demande de transfert et la refuse renvoie un RC-EDA de mi - @@ -71,16 +85,17 @@ Le SAMU qui reçoit la demande de transfert et la refuse renvoie un RC-EDA de mi - Permet d'indiquer des indications auto suffisantes permettant pour un opérationnel d'accéder facilement au lieu avec des indications minimales. -Dans les messages NexSIS, va souvent correspondre à la concaténation suivant des règles métiers de différentes informations, dont le "name" (toponyme) et l'adresse. -Comprend au maximum 255 caractères + Donne les informations minimales d'identification du lieu d'intervention, qui permet d'identifier rapidement le lieu pour les équipes opérationnelles. Comprend au maximum 255 caractères. +15-18 : Dans les messages NexSIS, va souvent correspondre à la concaténation suivant des règles métiers de différentes informations, dont le "name" (toponyme) et l'adresse. + - Indique le nom de lieu : nom commercial, forêt de Fontainebleau, lac du Der (plutôt à destination des systèmes). + Indique le nom de lieu : nom commercial, Etablissement, forêt de Fontainebleau, lac du Der (plutôt à destination des systèmes). + @@ -373,34 +388,12 @@ Les systèmes peuvent proposer des fonctionnalités faisant ressortir les dossie - - - Texte libre permettant de donner des informations supplémentaires concernant l'alerte. - - + - - - - - - - - - Identifiant professionnel de l'opérateur si existant - - - - - Rôle de l'opérateur au sein de l'entité émettrice du message - - - - @@ -413,7 +406,7 @@ Les systèmes peuvent proposer des fonctionnalités faisant ressortir les dossie - + @@ -456,7 +449,7 @@ Champ à utiliser pour aggréger l'ensemble des antécédents /traitements/aller - ID partagé du patient concerné, lorsque le patient existe et est identifié + ID partagé du patient concerné par la décision, lorsque le patient existe et est identifié @@ -464,23 +457,22 @@ Champ à utiliser pour aggréger l'ensemble des antécédents /traitements/aller Groupe date heure de création de la décision. L'indicateur de fuseau horaire Z ne doit pas être utilisé. - + Type de décision prise + + + + + + + + + - - - Décision(s) d'orientation prise par le médecin régulateur - - - - - - Type d’équipe (médical, paramédicale, non médicale, standard, incomplete, ...) - - - + + @@ -501,19 +493,197 @@ Champ à utiliser pour aggréger l'ensemble des antécédents /traitements/aller Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut directement afficher le libellé qui est obligatoirement fourni avec le code. - - - Commentaire libre permettant de passer des informations complémentaires associées à la nomenclature - - - + A valoriser avec un code la nomenclature associée + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -521,19 +691,55 @@ Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut directement afficher le libellé qui est obligatoirement fourni avec le code. - - - Commentaire libre permettant de passer des informations complémentaires associées à la nomenclature - - - + A valoriser avec un code la nomenclature associée + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -541,19 +747,70 @@ Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut directement afficher le libellé qui est obligatoirement fourni avec le code. - - - Commentaire libre permettant de passer des informations complémentaires associées à la nomenclature - - - + A valoriser avec un code la nomenclature associée + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -561,11 +818,6 @@ Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut directement afficher le libellé qui est obligatoirement fourni avec le code. - - - Commentaire libre permettant de passer des informations complémentaires associées à la nomenclature - - @@ -595,54 +847,90 @@ Echanger à minima l'information que le dossier est clôturé. - + - + Décrit le type de professionnel médical à qui le dossier est attribué : Médecin généraliste, médecin urgentiste etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + Décrit la priorité de régulation médicale du dossier : P0, P1, P2, P3 - - - - - - - - Indique le nombre de victimes selon la nomenclature du référentiel CISU - - - - - - + + + + + - + + + + + - Identifie le type de la principale victime (celle dont l'état de santé provoque le déclenchement de l'envoi des secours). Prend les valeurs du référentiel CISU. Entre dans la détermination des partenaires impliqués par NexSIS. + Type de l'identifiant fourni - - - - + + + + + - + - Permet de complémenter en commentaire libre la(les) victime(s) + L'identifiant en lui-même @@ -651,9 +939,8 @@ Echanger à minima l'information que le dossier est clôturé. - Numéro, type et nom de la voie. -Utilisé pour tout type de voie : autoroute (PK, nom et sens), voie ferrée, voie navigable… -Obligatoire et seule valeur des détails de l'adresse fournie par NexSIS. + Numéro, type et nom de la voie. Utilisé pour tout type de voie : autoroute (PK, nom et sens), voie ferrée, voie navigable… +15-18 : Obligatoire et seule valeur des détails de l'adresse fournie par NexSIS. @@ -684,7 +971,7 @@ Obligatoire et seule valeur des détails de l'adresse fournie par NexSIS. Informations complémentaires permettant de préciser le quartier, lieu-dit, ancienne commune, … ou autre information aidant à préciser l'adresse et notamment gérer les cas de communes fusionnées pour le système émetteur -NB : dans tous les cas, la localisation GPS de la commune doit être fournie afin d'éviter une trop forte ambiguïté +NB : dans tous les cas, la localisation GPS de la commune doit être fournie afin d'éviter une trop forte ambiguïté. @@ -793,8 +1080,16 @@ Ex : SIG NexSIS / OSM ont plusieurs types de données -> savoir du quel on pa Si les champs type et name sont renseignés, le champ callerName doit être valorisé ainsi : "{type} {nom}". - - + + + Type de la voie + + + + + Nom de la voie + + @@ -851,9 +1146,23 @@ CITY=Précision à l'échelle de la ville, STREET=Précision à l'échelle de la + + + + + date et heure de l'observation + + + + + texte libre contenant les indications renseignées par l'ARM + + + + - + @@ -1105,54 +1414,61 @@ CITY=Précision à l'échelle de la ville, STREET=Précision à l'échelle de la - + Indique la relation du requérant avec l'incident / le patient / la victime + + + + + + + + + + + + + + + + + + + + + + + + + - + Indique si le requérant rencontre ou non des difficulté de communication - - - - Informations complémentaires sur le requérant -Les informations peuvent être passées sous forme de texte libre ou via une liste d'adjectif - - - - - - - - - - Permet d'indiquer l'origine du canal établit : Personne, application, DAU, BAU, défibrillateur, ecall - - - - - Type de l'URI utilisée par la source, cf. nomenclature EMSI - - - - - - - - - + + + + + + + + + - + - Valeur de l'URI utilisée par la source + Informations complémentaires sur le requérant +Les informations peuvent être passées sous forme de texte libre ou via une liste d'adjectif + @@ -1220,6 +1536,11 @@ La ressource est hashée avec le protocole SHA-256 + + + Permet d'indiquer l'origine du canal établit : Personne, application, DAU, BAU, défibrillateur, ecall + + Type de l'URI utilisée par le requérant, cf. nomenclature EMSI @@ -1305,7 +1626,16 @@ Au format Durée de la norme ISO 8601 (https://fr.wikipedia.org/wiki/ISO_8601#Du - + + + + + + + + + + @@ -1314,26 +1644,6 @@ Au format Durée de la norme ISO 8601 (https://fr.wikipedia.org/wiki/ISO_8601#Du - - - - - A valoriser avec un code la nomenclature associée - - - - - A valoriser avec le libellé de la nomenclature associée. -Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut directement afficher le libellé qui est obligatoirement fourni avec le code. - - - - - Commentaire libre permettant de passer des informations complémentaires associées à la nomenclature - - - - @@ -1457,10 +1767,18 @@ Pierre Alain Jacques - + Sexe du patient + + + + + + + + @@ -1482,11 +1800,6 @@ Pierre Alain Jacques Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut directement afficher le libellé qui est obligatoirement fourni avec le code. - - - Commentaire libre permettant de passer des informations complémentaires associées à la nomenclature - - @@ -1502,11 +1815,68 @@ Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut directement afficher le libellé qui est obligatoirement fourni avec le code. - + + + + + + + + Identifiant professionnel de l'opérateur si existant + + + + + Rôle de l'opérateur au sein de l'entité émettrice du message + + + + + + + + + détaille le moyen à engager + + + + + détaille le type de vecteur à engager + + + + + + Type d’équipe (médical, paramédicale, non médicale, standard, incomplete, ...) + + + + + + + + + Décision(s) d'orientation prise par le médecin régulateur : +- A transporter +- Laisser sur place + + + + + Identifiant de la ou des demandes de concours + + + + + Identifiant du véhicule terrestre / aérien / maritime de transport principal (= celui dans lequel se trouve le patient), permettant d'associer la décision à un véhicule spécifique + au patient. + + + - Commentaire libre permettant de passer des informations complémentaires associées à la nomenclature + Type d’équipe (médical, paramédicale, non médicale, standard, incomplete, ...) + @@ -1526,27 +1896,7 @@ Dans le cas où un système n'est pas en mesure de reconnaître un code, il peut - - - Nom de l'établissement - - - - - N° Finess administratif de l'établissement - - - - - N° Finess géographique de l'établissement - - - - - Service concerné par l'admission du patient - - - + diff --git a/src/main/resources/xsd/RS-ERROR.xsd b/src/main/resources/xsd/RS-ERROR.xsd index 922b28e06..e939bd667 100644 --- a/src/main/resources/xsd/RS-ERROR.xsd +++ b/src/main/resources/xsd/RS-ERROR.xsd @@ -31,6 +31,9 @@ - + + + + diff --git a/src/test/java/com/hubsante/model/builders/CreateCaseWrapperBuilderTest.java b/src/test/java/com/hubsante/model/builders/CreateCaseWrapperBuilderTest.java index 7fedf36d2..25c530216 100644 --- a/src/test/java/com/hubsante/model/builders/CreateCaseWrapperBuilderTest.java +++ b/src/test/java/com/hubsante/model/builders/CreateCaseWrapperBuilderTest.java @@ -18,8 +18,8 @@ import com.hubsante.model.EdxlHandler; import com.hubsante.model.cisu.CreateCase; import com.hubsante.model.cisu.CreateCaseWrapper; -import com.hubsante.model.common.DistributionElement; -import com.hubsante.model.common.Recipient; +import com.hubsante.model.rcde.DistributionElement; +import com.hubsante.model.rcde.Recipient; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/hubsante/model/builders/DistributionElementBuilderTest.java b/src/test/java/com/hubsante/model/builders/DistributionElementBuilderTest.java index 5a6026df2..477bf3c02 100644 --- a/src/test/java/com/hubsante/model/builders/DistributionElementBuilderTest.java +++ b/src/test/java/com/hubsante/model/builders/DistributionElementBuilderTest.java @@ -15,8 +15,8 @@ */ package com.hubsante.model.builders; -import com.hubsante.model.common.DistributionElement; -import com.hubsante.model.common.Recipient; +import com.hubsante.model.rcde.DistributionElement; +import com.hubsante.model.rcde.Recipient; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/hubsante/model/builders/ReferenceWrapperBuilderTest.java b/src/test/java/com/hubsante/model/builders/ReferenceWrapperBuilderTest.java index a95004c20..3f2d45379 100644 --- a/src/test/java/com/hubsante/model/builders/ReferenceWrapperBuilderTest.java +++ b/src/test/java/com/hubsante/model/builders/ReferenceWrapperBuilderTest.java @@ -15,9 +15,9 @@ */ package com.hubsante.model.builders; -import com.hubsante.model.common.DistributionElement; -import com.hubsante.model.common.Recipient; -import com.hubsante.model.common.ReferenceWrapper; +import com.hubsante.model.rcde.DistributionElement; +import com.hubsante.model.rcde.Recipient; +import com.hubsante.model.reference.ReferenceWrapper; import com.hubsante.model.edxl.DistributionKind; import com.hubsante.model.edxl.EdxlMessage; import org.junit.jupiter.api.DisplayName; diff --git a/src/test/java/com/hubsante/model/edxlhandler/RsErrorHandlerTest.java b/src/test/java/com/hubsante/model/edxlhandler/RsErrorHandlerTest.java index 6ed6b6be6..7e8c1654b 100644 --- a/src/test/java/com/hubsante/model/edxlhandler/RsErrorHandlerTest.java +++ b/src/test/java/com/hubsante/model/edxlhandler/RsErrorHandlerTest.java @@ -15,11 +15,17 @@ */ package com.hubsante.model.edxlhandler; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.exc.ValueInstantiationException; +import com.hubsante.model.edxl.EdxlMessage; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import java.io.IOException; +import static com.hubsante.model.TestMessagesHelper.getInvalidMessage; +import static org.junit.jupiter.api.Assertions.assertThrows; + public class RsErrorHandlerTest extends AbstractEdxlHandlerTest { @Test @DisplayName("should consistently deserialize then serialize JSON RS-ERROR") @@ -32,4 +38,18 @@ public void end2end_RS_ERROR_JSON() throws IOException { public void end2end_RS_ERROR_XML() throws IOException { end2end("RS-ERROR", true); } + + @Test + @DisplayName("should not deserialize JSON RS-ERROR with inconsistent enum") + public void invalidJsonRsErrorEnumFails() throws IOException { + String json = getInvalidMessage("RS-ERROR/RS-ERROR-invalid-enum.json"); + assertThrows(ValueInstantiationException.class, () -> converter.deserializeJsonEDXL(json)); // Or JsonProcessingException on a higher level (exception handled in the Dispatcher methods) + } + + @Test + @DisplayName("should not deserialize XML RS-ERROR with inconsistent enum") + public void invalidXmlRsErrorEnumFails() throws IOException { + String xml = getInvalidMessage("RS-ERROR/RS-ERROR-invalid-enum.xml"); + assertThrows(ValueInstantiationException.class, () -> converter.deserializeXmlEDXL(xml)); + } } diff --git a/src/test/java/com/hubsante/model/utils/EdxlWrapperUtils.java b/src/test/java/com/hubsante/model/utils/EdxlWrapperUtils.java index 0cc886022..088326543 100644 --- a/src/test/java/com/hubsante/model/utils/EdxlWrapperUtils.java +++ b/src/test/java/com/hubsante/model/utils/EdxlWrapperUtils.java @@ -23,8 +23,8 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.hubsante.model.builders.EDXL_DE_Builder; -import com.hubsante.model.common.Recipient; -import com.hubsante.model.common.Sender; +import com.hubsante.model.rcde.Recipient; +import com.hubsante.model.rcde.Sender; import com.hubsante.model.edxl.*; import java.time.LocalDateTime; diff --git a/src/test/java/com/hubsante/model/utils/Sanitizer.java b/src/test/java/com/hubsante/model/utils/Sanitizer.java index 74ed24ee1..39bebe90c 100644 --- a/src/test/java/com/hubsante/model/utils/Sanitizer.java +++ b/src/test/java/com/hubsante/model/utils/Sanitizer.java @@ -16,9 +16,9 @@ package com.hubsante.model.utils; import com.hubsante.model.cisu.CreateCaseWrapper; -import com.hubsante.model.common.Recipient; -import com.hubsante.model.common.ReferenceWrapper; -import com.hubsante.model.common.Sender; +import com.hubsante.model.rcde.Recipient; +import com.hubsante.model.reference.ReferenceWrapper; +import com.hubsante.model.rcde.Sender; import com.hubsante.model.edxl.ContentMessage; import com.hubsante.model.edxl.EdxlMessage; import com.hubsante.model.emsi.EmsiWrapper; @@ -73,6 +73,7 @@ private static ContentMessage sanitizeContent(ContentMessage contentMessage) { private static Sender sanitizeSender() { Sender revertedSender = new Sender(); revertedSender.setName("sender"); + revertedSender.setURI("hubex:sender"); return revertedSender; }