1 | # emsi-lib
|
2 | A EMSI (Emergency Management Shared Information) object model to manipulate emergency messages defined in ISO/TR 22351 document.
|
3 |
|
4 | ## Main features
|
5 | - Provide high level abstraction of EMSI objects and types
|
6 | - Generate XML message from EMSI objects
|
7 | - Generate EMSI objects from XML
|
8 | - Check ISO rules (work in progress)
|
9 |
|
10 | ## Usage
|
11 |
|
12 | ### Generate XML EMSI (JS -> XML)
|
13 | ```javascript
|
14 | import { Emsi, Event, Mission, Context, ExternalInfo, Origin, /* ... */} from 'emsi-lib'
|
15 |
|
16 | const extInfo = new ExternalInfo("https://secourir.eu/.../", InfoType.PHOTO, "Photos of the accident")
|
17 |
|
18 | const origin = new Origin("43d38170-ce5d-4d8e-81d7-2bd4071d83f4", "58113", "SC/SDIS24")
|
19 |
|
20 | const context = new Context(Mode.ACTUAL, MsgType.ALERT)
|
21 | .setFreeText("Firs message")
|
22 | .setLevel(Level.TACTICAL)
|
23 | .setSecurityClassification(SeClass.RESTRICTED)
|
24 | .setUrgency(Urgency.URGENT)
|
25 | .addExternalInfo([ extInfo ])
|
26 | .setOrigin(origin)
|
27 |
|
28 | const mission = new Mission('Casualty search')
|
29 | .setStatus(MissionStatus.IN_PROGRESS, 30)
|
30 | .setPriority(MissionPriority.P3)
|
31 | .setStartTime(new Date())
|
32 | .setFreeText('Many victims')
|
33 |
|
34 | const etype = new EType(['/TRP/COL'], ['/VEH/TRK', '/VEH/TRN'], ['/RAIL/TRK', 'ROAD'])
|
35 |
|
36 | const event = new Event('FR-SC-24-0001', 'Railway accident')
|
37 | .setScale(Scale.LEVEL_1)
|
38 | .setEventType(etype)
|
39 |
|
40 | const emsi = new Emsi()
|
41 | .setContext(context)
|
42 | .setEvent(event)
|
43 | .addMissions([mission])
|
44 |
|
45 | const emsiXml = emsi.generateXml()
|
46 | ```
|
47 |
|
48 | ### Populate EMSI object from XML (XML -> JS)
|
49 | ```javascript
|
50 | const target = new Emsi()
|
51 | target.loadFromXml(emsiXml)
|
52 |
|
53 | if (target.context?.urgency !== Urgency.URGENT) {
|
54 |
|
55 | if (target.context?.link?.[1].linkRole !== LinkRole.SUPERSEDE)
|
56 | target.context?.addLink([new Link('43d38170-ce5d-4d8e-81d7-2bd4071d83f4', LinkRole.SUPERSEDE)])
|
57 |
|
58 | emsi.mission?.[0].setEndTime(new Date())
|
59 |
|
60 | const newMessage = target.generateXml()
|
61 | /* Send newMessage */
|
62 | }
|
63 | ``` |
\ | No newline at end of file |