Compare commits
3 Commits
feat/38-fs
...
3999532714
Author | SHA1 | Date | |
---|---|---|---|
3999532714
|
|||
e51dcc0ed0
|
|||
0f7a291b3c
|
120
Cargo.lock
generated
120
Cargo.lock
generated
@ -327,9 +327,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bytemuck"
|
name = "bytemuck"
|
||||||
version = "1.16.1"
|
version = "1.16.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e"
|
checksum = "102087e286b4677862ea56cf8fc58bb2cdfa8725c40ffb80fe3a008eb7f2fc83"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "byteorder"
|
name = "byteorder"
|
||||||
@ -339,9 +339,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bytes"
|
name = "bytes"
|
||||||
version = "1.6.1"
|
version = "1.7.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952"
|
checksum = "fca2be1d5c43812bae364ee3f30b3afcb7877cf59f4aeb94c66f313a41d2fac9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
@ -410,14 +410,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "8a969e13a7589e9e3e4207e153bae624ade2b5622fb4684a4923b23ec3d57719"
|
checksum = "8a969e13a7589e9e3e4207e153bae624ade2b5622fb4684a4923b23ec3d57719"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
"toml 0.8.16",
|
"toml 0.8.19",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cc"
|
name = "cc"
|
||||||
version = "1.1.6"
|
version = "1.1.7"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f"
|
checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cesu8"
|
name = "cesu8"
|
||||||
@ -769,12 +769,6 @@ dependencies = [
|
|||||||
"syn 2.0.72",
|
"syn 2.0.72",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "dotenv"
|
|
||||||
version = "0.15.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dpi"
|
name = "dpi"
|
||||||
version = "0.1.1"
|
version = "0.1.1"
|
||||||
@ -820,7 +814,7 @@ dependencies = [
|
|||||||
"cc",
|
"cc",
|
||||||
"memchr",
|
"memchr",
|
||||||
"rustc_version",
|
"rustc_version",
|
||||||
"toml 0.8.16",
|
"toml 0.8.19",
|
||||||
"vswhom",
|
"vswhom",
|
||||||
"winreg",
|
"winreg",
|
||||||
]
|
]
|
||||||
@ -1520,9 +1514,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "indexmap"
|
name = "indexmap"
|
||||||
version = "2.2.6"
|
version = "2.3.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
|
checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"equivalent",
|
"equivalent",
|
||||||
"hashbrown 0.14.5",
|
"hashbrown 0.14.5",
|
||||||
@ -2360,7 +2354,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016"
|
checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64 0.22.1",
|
"base64 0.22.1",
|
||||||
"indexmap 2.2.6",
|
"indexmap 2.3.0",
|
||||||
"quick-xml",
|
"quick-xml",
|
||||||
"serde",
|
"serde",
|
||||||
"time",
|
"time",
|
||||||
@ -2387,9 +2381,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ppv-lite86"
|
name = "ppv-lite86"
|
||||||
version = "0.2.17"
|
version = "0.2.18"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
|
checksum = "dee4364d9f3b902ef14fab8a1ddffb783a1cb6b4bba3bfc1fa3922732c7de97f"
|
||||||
|
dependencies = [
|
||||||
|
"zerocopy",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "precomputed-hash"
|
name = "precomputed-hash"
|
||||||
@ -2814,11 +2811,12 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_json"
|
name = "serde_json"
|
||||||
version = "1.0.120"
|
version = "1.0.121"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5"
|
checksum = "4ab380d7d9f22ef3f21ad3e6c1ebe8e4fc7a2000ccba2e4d71fc96f15b2cb609"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"itoa 1.0.11",
|
"itoa 1.0.11",
|
||||||
|
"memchr",
|
||||||
"ryu",
|
"ryu",
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
@ -2875,7 +2873,7 @@ dependencies = [
|
|||||||
"chrono",
|
"chrono",
|
||||||
"hex",
|
"hex",
|
||||||
"indexmap 1.9.3",
|
"indexmap 1.9.3",
|
||||||
"indexmap 2.2.6",
|
"indexmap 2.3.0",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_derive",
|
"serde_derive",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
@ -2917,6 +2915,10 @@ dependencies = [
|
|||||||
"syn 1.0.109",
|
"syn 1.0.109",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "services-sesam-vitale-sys"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo_arc"
|
name = "servo_arc"
|
||||||
version = "0.1.1"
|
version = "0.1.1"
|
||||||
@ -2931,7 +2933,6 @@ dependencies = [
|
|||||||
name = "sesam-vitale"
|
name = "sesam-vitale"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dotenv",
|
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -3142,7 +3143,7 @@ dependencies = [
|
|||||||
"cfg-expr",
|
"cfg-expr",
|
||||||
"heck 0.5.0",
|
"heck 0.5.0",
|
||||||
"pkg-config",
|
"pkg-config",
|
||||||
"toml 0.8.16",
|
"toml 0.8.19",
|
||||||
"version-compare",
|
"version-compare",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -3198,15 +3199,15 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "target-lexicon"
|
name = "target-lexicon"
|
||||||
version = "0.12.15"
|
version = "0.12.16"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2"
|
checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri"
|
name = "tauri"
|
||||||
version = "2.0.0-beta.24"
|
version = "2.0.0-beta.25"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3eab508aad4ae86e23865e294b20a7bb89bd7afea523897b7478329b841d4295"
|
checksum = "4339c67eb7700fe4a80ad6507e3b9af0b4159959f3d74aae48feed298baf4cbf"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bytes",
|
"bytes",
|
||||||
@ -3269,7 +3270,7 @@ dependencies = [
|
|||||||
"serde_json",
|
"serde_json",
|
||||||
"tauri-utils",
|
"tauri-utils",
|
||||||
"tauri-winres",
|
"tauri-winres",
|
||||||
"toml 0.8.16",
|
"toml 0.8.19",
|
||||||
"walkdir",
|
"walkdir",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -3316,9 +3317,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-runtime"
|
name = "tauri-runtime"
|
||||||
version = "2.0.0-beta.20"
|
version = "2.0.0-beta.21"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "fe978df03966febbebc608931dc2cf26ef94df70855a18b05f07134cf474de09"
|
checksum = "189510033be50f6fde35cfa50b50c7ab4e0ced0c867ae0f643b4907b8385bbe5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dpi",
|
"dpi",
|
||||||
"gtk",
|
"gtk",
|
||||||
@ -3335,9 +3336,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-runtime-wry"
|
name = "tauri-runtime-wry"
|
||||||
version = "2.0.0-beta.20"
|
version = "2.0.0-beta.21"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "11e4d568f61095f507b3fc4254dfbfff3b20de2a1d66167ffca3f6d90b14db8f"
|
checksum = "6938bd63b6658e7b08f0fe2151390148ee5a8ccdba100d4dff961d2c8734d9a9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cocoa",
|
"cocoa",
|
||||||
"gtk",
|
"gtk",
|
||||||
@ -3386,7 +3387,7 @@ dependencies = [
|
|||||||
"serde_with",
|
"serde_with",
|
||||||
"swift-rs",
|
"swift-rs",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
"toml 0.8.16",
|
"toml 0.8.19",
|
||||||
"url",
|
"url",
|
||||||
"urlpattern",
|
"urlpattern",
|
||||||
"walkdir",
|
"walkdir",
|
||||||
@ -3497,9 +3498,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tokio"
|
name = "tokio"
|
||||||
version = "1.39.1"
|
version = "1.39.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d040ac2b29ab03b09d4129c2f5bbd012a3ac2f79d38ff506a4bf8dd34b0eac8a"
|
checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"backtrace",
|
"backtrace",
|
||||||
"bytes",
|
"bytes",
|
||||||
@ -3549,21 +3550,21 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "toml"
|
name = "toml"
|
||||||
version = "0.8.16"
|
version = "0.8.19"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "81967dd0dd2c1ab0bc3468bd7caecc32b8a4aa47d0c8c695d8c2b2108168d62c"
|
checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
"serde_spanned",
|
"serde_spanned",
|
||||||
"toml_datetime",
|
"toml_datetime",
|
||||||
"toml_edit 0.22.17",
|
"toml_edit 0.22.20",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "toml_datetime"
|
name = "toml_datetime"
|
||||||
version = "0.6.7"
|
version = "0.6.8"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f8fb9f64314842840f1d940ac544da178732128f1c78c21772e876579e0da1db"
|
checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
@ -3574,7 +3575,7 @@ version = "0.19.15"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
|
checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"indexmap 2.2.6",
|
"indexmap 2.3.0",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_spanned",
|
"serde_spanned",
|
||||||
"toml_datetime",
|
"toml_datetime",
|
||||||
@ -3587,22 +3588,22 @@ version = "0.20.7"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81"
|
checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"indexmap 2.2.6",
|
"indexmap 2.3.0",
|
||||||
"toml_datetime",
|
"toml_datetime",
|
||||||
"winnow 0.5.40",
|
"winnow 0.5.40",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "toml_edit"
|
name = "toml_edit"
|
||||||
version = "0.22.17"
|
version = "0.22.20"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8d9f8729f5aea9562aac1cc0441f5d6de3cff1ee0c5d67293eeca5eb36ee7c16"
|
checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"indexmap 2.2.6",
|
"indexmap 2.3.0",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_spanned",
|
"serde_spanned",
|
||||||
"toml_datetime",
|
"toml_datetime",
|
||||||
"winnow 0.6.16",
|
"winnow 0.6.18",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -4453,9 +4454,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winnow"
|
name = "winnow"
|
||||||
version = "0.6.16"
|
version = "0.6.18"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b480ae9340fc261e6be3e95a1ba86d54ae3f9171132a73ce8d4bbaf68339507c"
|
checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"memchr",
|
"memchr",
|
||||||
]
|
]
|
||||||
@ -4532,3 +4533,24 @@ dependencies = [
|
|||||||
"once_cell",
|
"once_cell",
|
||||||
"pkg-config",
|
"pkg-config",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "zerocopy"
|
||||||
|
version = "0.6.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "854e949ac82d619ee9a14c66a1b674ac730422372ccb759ce0c39cabcf2bf8e6"
|
||||||
|
dependencies = [
|
||||||
|
"byteorder",
|
||||||
|
"zerocopy-derive",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "zerocopy-derive"
|
||||||
|
version = "0.6.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "125139de3f6b9d625c39e2efdd73d41bdac468ccd556556440e322be0e1bbd91"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 2.0.72",
|
||||||
|
]
|
||||||
|
@ -4,4 +4,4 @@ members = [
|
|||||||
"crates/app",
|
"crates/app",
|
||||||
"crates/sesam-vitale",
|
"crates/sesam-vitale",
|
||||||
"crates/desktop"
|
"crates/desktop"
|
||||||
]
|
, "crates/services-sesam-vitale-sys"]
|
||||||
|
4
crates/services-sesam-vitale-sys/Cargo.toml
Normal file
4
crates/services-sesam-vitale-sys/Cargo.toml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[package]
|
||||||
|
name = "services-sesam-vitale-sys"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
285
crates/services-sesam-vitale-sys/src/bindings.rs
Normal file
285
crates/services-sesam-vitale-sys/src/bindings.rs
Normal file
@ -0,0 +1,285 @@
|
|||||||
|
#![allow(non_upper_case_globals)]
|
||||||
|
#![allow(non_camel_case_types)]
|
||||||
|
#![allow(non_snake_case)]
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
// Fonctions de gestion des données
|
||||||
|
|
||||||
|
pub fn SSV_LireCartePS(
|
||||||
|
NomRessourcePS: *const ::std::os::raw::c_char,
|
||||||
|
NomRessourceLecteur: *const ::std::os::raw::c_char,
|
||||||
|
CodePorteurPS: *const ::std::os::raw::c_char,
|
||||||
|
pZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
pTailleZone: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
pub fn SSV_LireDroitsVitale(
|
||||||
|
NomRessourcePS: *const ::std::os::raw::c_char,
|
||||||
|
NomRessourceLecteur: *const ::std::os::raw::c_char,
|
||||||
|
CodePorteurPS: *const ::std::os::raw::c_char,
|
||||||
|
DateConsultation: *const ::std::os::raw::c_char,
|
||||||
|
pZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
pTailleZone: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
pub fn SSV_FormaterFactures(
|
||||||
|
cFactureACreer: ::std::os::raw::c_char,
|
||||||
|
cModeSecur: ::std::os::raw::c_char,
|
||||||
|
cTypeFlux: ::std::os::raw::c_char,
|
||||||
|
pZDataIn: *mut ::std::os::raw::c_void,
|
||||||
|
TailleDataIn: usize,
|
||||||
|
pZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
pTailleZone: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
pub fn SSV_ChiffrerFacture(
|
||||||
|
pZDataIn: *mut ::std::os::raw::c_void,
|
||||||
|
TailleDataIn: usize,
|
||||||
|
pZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
pTailleZone: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
pub fn SSV_SignerFactureVitale(
|
||||||
|
pcNomRessourceVitale: *const ::std::os::raw::c_char,
|
||||||
|
pZDataIn: *mut ::std::os::raw::c_void,
|
||||||
|
szTailleDataIn: usize,
|
||||||
|
pZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
pszTailleZone: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
pub fn SSV_CalculerHashFactureAssure(
|
||||||
|
pcNumSerie: *const ::std::os::raw::c_char,
|
||||||
|
pZDataIn: *mut ::std::os::raw::c_void,
|
||||||
|
szTailleDataIn: usize,
|
||||||
|
pZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
pszTailleZone: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
pub fn SSV_AjouterSignatureAssureDansFacture(
|
||||||
|
pZDataIn: *mut ::std::os::raw::c_void,
|
||||||
|
szTailleDataIn: usize,
|
||||||
|
pZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
pszTailleZone: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
pub fn SSV_SignerFactureCPS(
|
||||||
|
pcNomRessourcePS: *const ::std::os::raw::c_char,
|
||||||
|
pcNomRessourceLecteur: *const ::std::os::raw::c_char,
|
||||||
|
pcCodePorteurPS: *const ::std::os::raw::c_char,
|
||||||
|
cNologSituation: ::std::os::raw::c_char,
|
||||||
|
pZDataIn: *mut ::std::os::raw::c_void,
|
||||||
|
szTailleDataIn: usize,
|
||||||
|
pZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
pszTailleZone: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
pub fn SSV_FormaterLot(
|
||||||
|
NBZDataIn: ::std::os::raw::c_short,
|
||||||
|
TZDataIn: *mut *mut ::std::os::raw::c_void,
|
||||||
|
TTailleZoneIn: *mut usize,
|
||||||
|
pNbZDataOut: *mut ::std::os::raw::c_short,
|
||||||
|
TZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
TTailleZoneOut: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
pub fn SSV_SignerLotCPS(
|
||||||
|
pcNomRessourcePS: *const ::std::os::raw::c_char,
|
||||||
|
pcNomRessourceLecteur: *const ::std::os::raw::c_char,
|
||||||
|
pcCodePorteurPS: *const ::std::os::raw::c_char,
|
||||||
|
cNologSituation: ::std::os::raw::c_char,
|
||||||
|
pZDataIn: *mut ::std::os::raw::c_void,
|
||||||
|
szTailleDataIn: usize,
|
||||||
|
pZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
pszTailleZone: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
pub fn SSV_FormaterFichier(
|
||||||
|
pZDataIn: *mut ::std::os::raw::c_void,
|
||||||
|
TailleDataIn: usize,
|
||||||
|
pZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
pTailleZone: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
pub fn SSV_TraduireARL(
|
||||||
|
NbZDonneesEntree: ::std::os::raw::c_short,
|
||||||
|
TZDataIn: *mut *mut ::std::os::raw::c_void,
|
||||||
|
TTailleZoneIn: *mut usize,
|
||||||
|
pZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
pTailleZoneOut: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
pub fn SSV_LireNumSerieCarteVitale(
|
||||||
|
pcNomRessource: *mut ::std::os::raw::c_char,
|
||||||
|
numeroSerie: *mut ::std::os::raw::c_uchar,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
pub fn SSV_CalculerHashFacturePS(
|
||||||
|
pcNumSerieCPS: *const ::std::os::raw::c_char,
|
||||||
|
pZDataIn: *mut ::std::os::raw::c_void,
|
||||||
|
usTailleDataIn: usize,
|
||||||
|
pZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
pusTailleZone: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
pub fn SSV_AjouterSignaturePSFacture(
|
||||||
|
pZDataIn: *mut ::std::os::raw::c_void,
|
||||||
|
szTailleDataIn: usize,
|
||||||
|
pZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
pszTailleZone: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
pub fn SSV_DechargerFacturesPdT(
|
||||||
|
NomRessourcePS: *const ::std::os::raw::c_char,
|
||||||
|
NomRessourceLecteur: *const ::std::os::raw::c_char,
|
||||||
|
CodePorteurPS: *const ::std::os::raw::c_char,
|
||||||
|
pcNumFact: *const ::std::os::raw::c_char,
|
||||||
|
sNbZDataIn: ::std::os::raw::c_short,
|
||||||
|
pvTZDataIn: *mut *mut ::std::os::raw::c_void,
|
||||||
|
psTTailleDataIn: *mut usize,
|
||||||
|
pNbZDataOut: *mut ::std::os::raw::c_short,
|
||||||
|
TZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
TTailleZoneOut: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
pub fn SSV_TraduireFSE(
|
||||||
|
pZDataIn: *mut ::std::os::raw::c_void,
|
||||||
|
TailleDataIn: usize,
|
||||||
|
pZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
pTailleZone: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
// Fonctions TLA
|
||||||
|
// TLA (Terminal Lecteur Applicatif) -> lecteur autre que PC-SC, on ne prend pas en compte cela
|
||||||
|
|
||||||
|
pub fn SSV_IdentifierTLA(
|
||||||
|
pcNomRessourceLecteur: *const ::std::os::raw::c_char,
|
||||||
|
NumVersionCDC: *const ::std::os::raw::c_char,
|
||||||
|
pZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
tailleDataOut: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
pub fn SSV_ChargerDonneesTLA(
|
||||||
|
pcNomRessourceLecteur: *const ::std::os::raw::c_char,
|
||||||
|
sNbZDataIn: ::std::os::raw::c_short,
|
||||||
|
pvTZDataIn: *mut *mut ::std::os::raw::c_void,
|
||||||
|
psTTailleDataIn: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
pub fn SSV_ChargerFacturesPdT(
|
||||||
|
pcNomRessourceLecteur: *const ::std::os::raw::c_char,
|
||||||
|
pcNumFacturation: *const ::std::os::raw::c_char,
|
||||||
|
sNbZDataIn: ::std::os::raw::c_short,
|
||||||
|
pvTZDataIn: *mut *mut ::std::os::raw::c_void,
|
||||||
|
psTTailleDataIn: *mut usize,
|
||||||
|
pNbZDataOut: *mut ::std::os::raw::c_short,
|
||||||
|
TZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
TTailleZoneOut: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
pub fn SSV_DechargerFSETLA(
|
||||||
|
NomRessourcePS: *const ::std::os::raw::c_char,
|
||||||
|
NomRessourceLecteur: *const ::std::os::raw::c_char,
|
||||||
|
CodePorteurPS: *const ::std::os::raw::c_char,
|
||||||
|
pcNumFact: *const ::std::os::raw::c_char,
|
||||||
|
pNbZDataOut: *mut ::std::os::raw::c_short,
|
||||||
|
TZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
TTailleZoneOut: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
pub fn SSV_DechargerFSETLANC(
|
||||||
|
NomRessourcePS: *const ::std::os::raw::c_char,
|
||||||
|
NomRessourceLecteur: *const ::std::os::raw::c_char,
|
||||||
|
CodePorteurPS: *const ::std::os::raw::c_char,
|
||||||
|
pcNumFact: *const ::std::os::raw::c_char,
|
||||||
|
pNbZDataOut: *mut ::std::os::raw::c_short,
|
||||||
|
TZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
TTailleZoneOut: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
pub fn SSV_DechargerBeneficiaires(
|
||||||
|
NomRessourcePS: *const ::std::os::raw::c_char,
|
||||||
|
NomRessourceLecteur: *const ::std::os::raw::c_char,
|
||||||
|
CodePorteurPS: *const ::std::os::raw::c_char,
|
||||||
|
cNumFacturation: *const ::std::os::raw::c_char,
|
||||||
|
sNbZDataOut: *mut ::std::os::raw::c_short,
|
||||||
|
pTZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
sTTailleDataOut: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
pub fn SSV_EffacerTLA(
|
||||||
|
NomRessourcePS: *const ::std::os::raw::c_char,
|
||||||
|
NomRessourceLecteur: *const ::std::os::raw::c_char,
|
||||||
|
CodePorteurPS: *const ::std::os::raw::c_char,
|
||||||
|
cNumFacturation: *const ::std::os::raw::c_char,
|
||||||
|
cTypeDonnee: *const ::std::os::raw::c_char,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
pub fn SSV_SecuriserFacture(
|
||||||
|
pcNomRessourcePS: *const ::std::os::raw::c_char,
|
||||||
|
pcNomRessourceLecteur: *const ::std::os::raw::c_char,
|
||||||
|
pcCodePorteurPS: *const ::std::os::raw::c_char,
|
||||||
|
cNologSituation: ::std::os::raw::c_char,
|
||||||
|
pcNumFact: *const ::std::os::raw::c_char,
|
||||||
|
pvDataIn: *mut ::std::os::raw::c_void,
|
||||||
|
szTailleDataIn: usize,
|
||||||
|
pvDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
pszTailleDataOut: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
// Fonctions de gestion de configuration (GALSS)
|
||||||
|
|
||||||
|
pub fn SSV_LireConfig(
|
||||||
|
pZDataOut: *mut *mut ::std::os::raw::c_void,
|
||||||
|
psTailleDataOut: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
pub fn SSV_LireDateLecteur(
|
||||||
|
pcNomRessourceLecteur: *const ::std::os::raw::c_char,
|
||||||
|
pcDateHeure: *mut ::std::os::raw::c_char,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
pub fn SSV_MajDateLecteur(
|
||||||
|
pcNomRessourceLecteur: *const ::std::os::raw::c_char,
|
||||||
|
pcDateHeure: *const ::std::os::raw::c_char,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
pub fn SSV_ChargerAppli(
|
||||||
|
pcNomRessourceLecteur: *const ::std::os::raw::c_char,
|
||||||
|
sNbZDataIn: ::std::os::raw::c_short,
|
||||||
|
pvTZDataIn: *mut *mut ::std::os::raw::c_void,
|
||||||
|
psTTailleDataIn: *mut usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
// Fonctions techniques
|
||||||
|
|
||||||
|
// La fonction Initialiser Librairie a pour objet de charger et d’initialiser dans la mémoire du système :
|
||||||
|
// - dans le cas où le GALSS est installé sur le poste :
|
||||||
|
// - la bibliothèque du Gestionnaire d’Accès au Lecteur Santé Social (GALSS),
|
||||||
|
// - qui charge la bibliothèque du Protocole Santé Social (PSS),
|
||||||
|
// - la configuration du poste de travail à l’aide du fichier galssinf,
|
||||||
|
// - les variables globales communes aux différents Services SESAM-Vitale,
|
||||||
|
// - les fichiers de tables et scripts des répertoires par défaut.
|
||||||
|
// Cette fonction accède au référentiel électronique en utilisant le chemin complet indiqué dans le fichier sesam.ini.
|
||||||
|
pub fn SSV_InitLIB2(pcFichierSesam: *const ::std::os::raw::c_char) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
// La fonction Terminer a pour objet de décharger de la mémoire du système les éléments
|
||||||
|
// chargés par la fonction Initialiser Librairie, qui ne sont plus utiles.
|
||||||
|
pub fn SSV_TermLIB() -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
/// Fonctions de Tracage
|
||||||
|
//La fonction Allouer Zone Mémoire a un rôle purement technique : elle permet d’allouer, autrement dit de réserver une zone ou partie de la mémoire du poste de travail pour y écrire les données à passer en entrée d’un Service SESAM-Vitale.
|
||||||
|
// Cette fonction doit être utilisée pour allouer toutes les zones de mémoire requises en entrée des Services SESAM-Vitale de manière à permettre un diagnostic fiable par le « mode trace » en cas de dysfonctionnement. En effet, son mode d’exécution est susceptible de fournir des informations utiles au « mode trace » lorsqu’il est activé.
|
||||||
|
pub fn SSV_AllouerZoneMem(
|
||||||
|
pZDataIn: *mut *mut ::std::os::raw::c_void,
|
||||||
|
taille: usize,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
// La fonction Libérer Zone Mémoire a un rôle purement technique : elle permet de libérer une zone de mémoire du poste de travail précédemment allouée après exploitation des données qu’elle contient.
|
||||||
|
// Cette fonction doit être utilisée pour libérer toutes les zones de mémoire :
|
||||||
|
// - celles qui ont été allouées par le progiciel de santé pour fournir les données nécessaires à l’entrée des Services SESAM-Vitale, avant leur appel, celles qui ont été allouées par les Services SESAM-Vitale pour fournir en sortie les données utiles au progiciel de santé qui a fait appel à ces services,
|
||||||
|
// - de façon à permettre un diagnostic fiable par le mode trace en cas de dysfonctionnement
|
||||||
|
//En effet, son exécution est susceptible de fournir des informations utiles au « mode trace » lorsqu’il est activé.
|
||||||
|
pub fn SSV_LibererZoneMem(pZone: *mut ::std::os::raw::c_void);
|
||||||
|
|
||||||
|
// La fonction Initialiser Trace a pour objet de permettre l’activation du « mode trace ».
|
||||||
|
// Ce mode de fonctionnement est prévu pour permettre à l’assistance technique du GIE
|
||||||
|
// SESAM-Vitale d’analyser les problèmes de mise en œuvre des Services SESAM-Vitale,
|
||||||
|
// notamment lorsque une fonction retourne un code d’erreur de valeur hexadécimale supérieure à FF00.
|
||||||
|
pub fn SSV_InitTrace(
|
||||||
|
pathConf: *mut ::std::os::raw::c_char,
|
||||||
|
ModeOuvertureFicherLog: *mut ::std::os::raw::c_char,
|
||||||
|
ModuleLog: ::std::os::raw::c_ushort,
|
||||||
|
NiveauLog: ::std::os::raw::c_uchar,
|
||||||
|
) -> ::std::os::raw::c_ushort;
|
||||||
|
|
||||||
|
}
|
17
crates/services-sesam-vitale-sys/src/lib.rs
Normal file
17
crates/services-sesam-vitale-sys/src/lib.rs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
mod types;
|
||||||
|
|
||||||
|
use types::*;
|
||||||
|
pub fn add(left: usize, right: usize) -> usize {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
176
crates/services-sesam-vitale-sys/src/types.rs
Normal file
176
crates/services-sesam-vitale-sys/src/types.rs
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
struct Identification<T> {
|
||||||
|
value: T,
|
||||||
|
// Key to check the validity of the value
|
||||||
|
// TODO: implement checking algorithm
|
||||||
|
key: u8,
|
||||||
|
}
|
||||||
|
type Byte = u8;
|
||||||
|
|
||||||
|
enum IdentificationNationale {
|
||||||
|
NumeroAdeli(String),
|
||||||
|
NumeroEmployeeDansStructure(IdentificationStructure, String),
|
||||||
|
NumeroDRASS(String),
|
||||||
|
NumeroRPPS(String),
|
||||||
|
/// N° Etudiant Médecin type ADELI sur 9 caractères (information transmise par l’ANS)
|
||||||
|
NumeroEtudiantMedecin(String),
|
||||||
|
}
|
||||||
|
|
||||||
|
enum TypeCarteProfessionnelSante {
|
||||||
|
/// Carte de Professionnel de Santé (CPS)
|
||||||
|
CarteDeProfessionnelSante,
|
||||||
|
/// Carte de Professionnel de Santé en Formation (CPF)
|
||||||
|
CarteDeProfessionnelSanteEnFormation,
|
||||||
|
/// Carte de Personnel d'Établissement de Santé (CDE/CPE)
|
||||||
|
CarteDePersonnelEtablissementSante,
|
||||||
|
/// Carte de Personnel Autorisé (CDA/CPA)
|
||||||
|
CarteDePersonnelAutorise,
|
||||||
|
/// Carte de Personne Morale
|
||||||
|
CarteDePersonneMorale,
|
||||||
|
}
|
||||||
|
|
||||||
|
enum CategorieCarteProfessionnelSante {
|
||||||
|
Reelle,
|
||||||
|
Test,
|
||||||
|
Demonstration,
|
||||||
|
}
|
||||||
|
|
||||||
|
enum CodeCivilite {
|
||||||
|
Adjudant,
|
||||||
|
Amiral,
|
||||||
|
Aspirant,
|
||||||
|
Aumônier,
|
||||||
|
Capitaine,
|
||||||
|
Cardinal,
|
||||||
|
Chanoine,
|
||||||
|
Colonel,
|
||||||
|
Commandant,
|
||||||
|
Commissaire,
|
||||||
|
Conseiller,
|
||||||
|
Directeur,
|
||||||
|
Docteur,
|
||||||
|
Douanier,
|
||||||
|
Epouxse, // Epoux(se)
|
||||||
|
Evêque,
|
||||||
|
Général,
|
||||||
|
Gouverneur,
|
||||||
|
Ingénieur,
|
||||||
|
Inspecteur,
|
||||||
|
Lieutenant,
|
||||||
|
Madame,
|
||||||
|
Mademoiselle,
|
||||||
|
Maître,
|
||||||
|
Maréchal,
|
||||||
|
Médecin,
|
||||||
|
Mesdames,
|
||||||
|
Mesdemoiselles,
|
||||||
|
Messieurs,
|
||||||
|
Monseigneur,
|
||||||
|
Monsieur,
|
||||||
|
NotreDame,
|
||||||
|
Pasteur,
|
||||||
|
Préfet,
|
||||||
|
Président,
|
||||||
|
Professeur,
|
||||||
|
Recteur,
|
||||||
|
Sergent,
|
||||||
|
SousPréfet,
|
||||||
|
Technicien,
|
||||||
|
Veuve,
|
||||||
|
}
|
||||||
|
|
||||||
|
struct CarteProfessionnelSante {
|
||||||
|
type_carte: TypeCarteProfessionnelSante,
|
||||||
|
categorie_carte: CategorieCarteProfessionnelSante,
|
||||||
|
professionnel_sante: ProfessionnelDeSante,
|
||||||
|
}
|
||||||
|
|
||||||
|
struct ProfessionnelDeSante {
|
||||||
|
prenom: String,
|
||||||
|
nom: String,
|
||||||
|
code_civilite: CodeCivilite,
|
||||||
|
identification_nationale: Identification<IdentificationNationale>,
|
||||||
|
situations_execice: Vec<SituationDExercice>,
|
||||||
|
}
|
||||||
|
|
||||||
|
enum IdentificationStructure {
|
||||||
|
NumeroAdeliCabinet(String),
|
||||||
|
NumeroFINESS(String),
|
||||||
|
NumeroSIREN(String),
|
||||||
|
NumeroSIRET(String),
|
||||||
|
NumeroRPPSCabinet(String),
|
||||||
|
}
|
||||||
|
|
||||||
|
struct StructureMedicale {
|
||||||
|
identification: Identification<IdentificationStructure>,
|
||||||
|
raison_sociale: String, // Nom Entreprise
|
||||||
|
}
|
||||||
|
|
||||||
|
enum ModeExercice {
|
||||||
|
LiberalExploitantCommercant, // Libéral, exploitant, commerçant
|
||||||
|
Salarie,
|
||||||
|
Remplacant,
|
||||||
|
Benevole,
|
||||||
|
}
|
||||||
|
|
||||||
|
enum StatutExercice {
|
||||||
|
// TAB-Statuts géré par l’ANS il faut trouver la donnee
|
||||||
|
PLACEHOLDER(u8),
|
||||||
|
}
|
||||||
|
|
||||||
|
enum SecteurActivite {
|
||||||
|
EtablissementPublicDeSanté,
|
||||||
|
HopitauxMilitaires,
|
||||||
|
EtablissementPrivePSPH, // Participant au Service Public Hospitalier
|
||||||
|
EtablissementPriveNonPSPH,
|
||||||
|
DispensaireDeSoins,
|
||||||
|
AutresStructuresDeSoinsRelevantDuServiceDeSanteDesArmees,
|
||||||
|
CabinetIndividuel,
|
||||||
|
CabinetDeGroupe,
|
||||||
|
ExerciceEnSociete,
|
||||||
|
SecteurPrivePHTempsPlein,
|
||||||
|
TransportSanitaire,
|
||||||
|
EntrepriseDInterim,
|
||||||
|
EtablissementDeSoinsEtPrevention,
|
||||||
|
PreventionEtSoinsEnEntreprise,
|
||||||
|
SanteScolaireEtUniversitaire,
|
||||||
|
RecrutementEtGestionRH,
|
||||||
|
PMIPlanificationFamiliale,
|
||||||
|
EtablissementPourHandicapes,
|
||||||
|
ComMarketingConsultingMedia,
|
||||||
|
EtablissementPersonnesAgees,
|
||||||
|
EtablissementAideaLaFamille,
|
||||||
|
EtablissementDEnseignement,
|
||||||
|
EtablissementsDeProtectionDeLEnfance,
|
||||||
|
EtablissementsDHebergementEtDeReadaptation,
|
||||||
|
Recherche,
|
||||||
|
AssurancePrivee,
|
||||||
|
OrganismeDeSecuriteSociale,
|
||||||
|
MinistèreEtServicesDeconcentres,
|
||||||
|
CollectivitesTerritoriales,
|
||||||
|
AssociationsEtOrganitationsHumanitaire,
|
||||||
|
LaboratoireDeBiologieMedicale,
|
||||||
|
AutreEtablissementSanitaire,
|
||||||
|
ProductionCommercialisationGrosBienMedicaux,
|
||||||
|
CommerceDétailDeBiensMédicaux,
|
||||||
|
PharmacieDOfficine,
|
||||||
|
CentreDeDialyse,
|
||||||
|
ParaPharmacie,
|
||||||
|
AutreSecteurDActivité,
|
||||||
|
SecteurNonDefini,
|
||||||
|
CentreAntiCancer,
|
||||||
|
CentreDeTransfusionSanguine,
|
||||||
|
RépartitionDistribributionFabricationExploitationImportationMedicamentsEtDispositifsMédicaux,
|
||||||
|
IncendiesEtSecours,
|
||||||
|
EntreprisesIndustriellesEtTertiairesHorsIndustriesPharmaceutiques,
|
||||||
|
|
||||||
|
EntiteDUnTOM,
|
||||||
|
FabricationExploitationImportationMedicamentsEtDispositifsMedicaux,
|
||||||
|
}
|
||||||
|
struct SituationDExercice {
|
||||||
|
/// Numéro identifiant la situation du PS parmi ses autres situations inscrites sur sa CPS
|
||||||
|
identifiant_situation: Byte,
|
||||||
|
mode_exercice: Option<ModeExercice>,
|
||||||
|
statut_exercice: Option<StatutExercice>,
|
||||||
|
secteur_activite: Option<SecteurActivite>,
|
||||||
|
structure_d_exercice: Option<StructureMedicale>,
|
||||||
|
}
|
264
crates/services-sesam-vitale-sys/src/types/common.rs
Normal file
264
crates/services-sesam-vitale-sys/src/types/common.rs
Normal file
@ -0,0 +1,264 @@
|
|||||||
|
pub struct Identification<T> {
|
||||||
|
value: T,
|
||||||
|
// Key to check the validity of the value
|
||||||
|
// TODO: implement checking algorithm
|
||||||
|
key: u8,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub type Byte = u8;
|
||||||
|
|
||||||
|
pub(crate) enum IdentificationNationale {
|
||||||
|
NumeroAdeli(String),
|
||||||
|
NumeroEmployeeDansStructure(IdentificationStructure, String),
|
||||||
|
NumeroDRASS(String),
|
||||||
|
NumeroRPPS(String),
|
||||||
|
/// N° Etudiant Médecin type ADELI sur 9 caractères (information transmise par l’ANS)
|
||||||
|
NumeroEtudiantMedecin(String),
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) enum TypeCarteProfessionnelSante {
|
||||||
|
/// Carte de Professionnel de Santé (CPS)
|
||||||
|
CarteDeProfessionnelSante,
|
||||||
|
/// Carte de Professionnel de Santé en Formation (CPF)
|
||||||
|
CarteDeProfessionnelSanteEnFormation,
|
||||||
|
/// Carte de Personnel d'Établissement de Santé (CDE/CPE)
|
||||||
|
CarteDePersonnelEtablissementSante,
|
||||||
|
/// Carte de Personnel Autorisé (CDA/CPA)
|
||||||
|
CarteDePersonnelAutorise,
|
||||||
|
/// Carte de Personne Morale
|
||||||
|
CarteDePersonneMorale,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) enum CategorieCarteProfessionnelSante {
|
||||||
|
Reelle,
|
||||||
|
Test,
|
||||||
|
Demonstration,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) enum CodeCivilite {
|
||||||
|
Adjudant,
|
||||||
|
Amiral,
|
||||||
|
Aspirant,
|
||||||
|
Aumônier,
|
||||||
|
Capitaine,
|
||||||
|
Cardinal,
|
||||||
|
Chanoine,
|
||||||
|
Colonel,
|
||||||
|
Commandant,
|
||||||
|
Commissaire,
|
||||||
|
Conseiller,
|
||||||
|
Directeur,
|
||||||
|
Docteur,
|
||||||
|
Douanier,
|
||||||
|
Epouxse, // Epoux(se)
|
||||||
|
Evêque,
|
||||||
|
Général,
|
||||||
|
Gouverneur,
|
||||||
|
Ingénieur,
|
||||||
|
Inspecteur,
|
||||||
|
Lieutenant,
|
||||||
|
Madame,
|
||||||
|
Mademoiselle,
|
||||||
|
Maître,
|
||||||
|
Maréchal,
|
||||||
|
Médecin,
|
||||||
|
Mesdames,
|
||||||
|
Mesdemoiselles,
|
||||||
|
Messieurs,
|
||||||
|
Monseigneur,
|
||||||
|
Monsieur,
|
||||||
|
NotreDame,
|
||||||
|
Pasteur,
|
||||||
|
Préfet,
|
||||||
|
Président,
|
||||||
|
Professeur,
|
||||||
|
Recteur,
|
||||||
|
Sergent,
|
||||||
|
SousPréfet,
|
||||||
|
Technicien,
|
||||||
|
Veuve,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) enum IdentificationStructure {
|
||||||
|
NumeroAdeliCabinet(String),
|
||||||
|
NumeroFINESS(String),
|
||||||
|
NumeroSIREN(String),
|
||||||
|
NumeroSIRET(String),
|
||||||
|
NumeroRPPSCabinet(String),
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) enum ModeExercice {
|
||||||
|
LiberalExploitantCommercant, // Libéral, exploitant, commerçant
|
||||||
|
Salarie,
|
||||||
|
Remplacant,
|
||||||
|
Benevole,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) enum StatutExercice {
|
||||||
|
// TAB-Statuts géré par l’ANS il faut trouver la donnee
|
||||||
|
PLACEHOLDER(u8),
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) enum SecteurActivite {
|
||||||
|
EtablissementPublicDeSanté,
|
||||||
|
HopitauxMilitaires,
|
||||||
|
EtablissementPrivePSPH, // Participant au Service Public Hospitalier
|
||||||
|
EtablissementPriveNonPSPH,
|
||||||
|
DispensaireDeSoins,
|
||||||
|
AutresStructuresDeSoinsRelevantDuServiceDeSanteDesArmees,
|
||||||
|
CabinetIndividuel,
|
||||||
|
CabinetDeGroupe,
|
||||||
|
ExerciceEnSociete,
|
||||||
|
SecteurPrivePHTempsPlein,
|
||||||
|
TransportSanitaire,
|
||||||
|
EntrepriseDInterim,
|
||||||
|
EtablissementDeSoinsEtPrevention,
|
||||||
|
PreventionEtSoinsEnEntreprise,
|
||||||
|
SanteScolaireEtUniversitaire,
|
||||||
|
RecrutementEtGestionRH,
|
||||||
|
PMIPlanificationFamiliale,
|
||||||
|
EtablissementPourHandicapes,
|
||||||
|
ComMarketingConsultingMedia,
|
||||||
|
EtablissementPersonnesAgees,
|
||||||
|
EtablissementAideaLaFamille,
|
||||||
|
EtablissementDEnseignement,
|
||||||
|
EtablissementsDeProtectionDeLEnfance,
|
||||||
|
EtablissementsDHebergementEtDeReadaptation,
|
||||||
|
Recherche,
|
||||||
|
AssurancePrivee,
|
||||||
|
OrganismeDeSecuriteSociale,
|
||||||
|
MinistèreEtServicesDeconcentres,
|
||||||
|
CollectivitesTerritoriales,
|
||||||
|
AssociationsEtOrganitationsHumanitaire,
|
||||||
|
LaboratoireDeBiologieMedicale,
|
||||||
|
AutreEtablissementSanitaire,
|
||||||
|
ProductionCommercialisationGrosBienMedicaux,
|
||||||
|
CommerceDétailDeBiensMédicaux,
|
||||||
|
PharmacieDOfficine,
|
||||||
|
CentreDeDialyse,
|
||||||
|
ParaPharmacie,
|
||||||
|
AutreSecteurDActivité,
|
||||||
|
SecteurNonDefini,
|
||||||
|
CentreAntiCancer,
|
||||||
|
CentreDeTransfusionSanguine,
|
||||||
|
RépartitionDistribributionFabricationExploitationImportationMedicamentsEtDispositifsMédicaux,
|
||||||
|
IncendiesEtSecours,
|
||||||
|
EntreprisesIndustriellesEtTertiairesHorsIndustriesPharmaceutiques,
|
||||||
|
EntiteDUnTOM,
|
||||||
|
FabricationExploitationImportationMedicamentsEtDispositifsMedicaux,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) type IdentificationFacturation = u32;
|
||||||
|
pub(crate) enum CodeConventionnel {
|
||||||
|
NonConventionne,
|
||||||
|
Conventionne,
|
||||||
|
ConventionneAvecDepassement,
|
||||||
|
ConventionneAvecHonorairesLibres,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Code spécialité ou Code spécialité de l'exécutant
|
||||||
|
pub(crate) enum CodeSpecialite {
|
||||||
|
MedecineGenerale,
|
||||||
|
AnesthesieReanimation,
|
||||||
|
Cardiologie,
|
||||||
|
ChirurgieGenerale,
|
||||||
|
DermatologieEtVenerologie,
|
||||||
|
Radiologie,
|
||||||
|
GynecologieObstetrique,
|
||||||
|
GastroEnterologieEtHepatologie,
|
||||||
|
MedecineInterne,
|
||||||
|
NeuroChirurgie,
|
||||||
|
OtoRhinoLaryngologie,
|
||||||
|
Pediatrie,
|
||||||
|
Pneumologie,
|
||||||
|
Rhumatologie,
|
||||||
|
Ophtalmologie,
|
||||||
|
ChirurgieUrologique,
|
||||||
|
NeuroPsychiatrie,
|
||||||
|
Stomatologie,
|
||||||
|
ChirurgienDentiste,
|
||||||
|
ReanimationMedicale,
|
||||||
|
SageFemme,
|
||||||
|
SpecialisteEnMedecineGeneraleAvecDiplome,
|
||||||
|
SpecialisteEnMedecineGeneraleReconnuParLOrdre,
|
||||||
|
Infirmier,
|
||||||
|
Psychologue,
|
||||||
|
MasseurKinesitherapeute,
|
||||||
|
PedicurePodologue,
|
||||||
|
Orthophoniste,
|
||||||
|
Orthoptiste,
|
||||||
|
LaboratoireDAnalysesMedicales,
|
||||||
|
ReeducationReadaptationFonctionnelle,
|
||||||
|
Neurologie,
|
||||||
|
Psychiatrie,
|
||||||
|
Geriatrie,
|
||||||
|
Nephrologie,
|
||||||
|
ChirurgieDentaireSpecialiteODF,
|
||||||
|
AnatomoCytoPathologie,
|
||||||
|
MedecinBiologiste,
|
||||||
|
LaboratoirePolyvalent,
|
||||||
|
LaboratoireDAnatomoCytoPathologique,
|
||||||
|
ChirurgieOrthopediqueEtTraumatologie,
|
||||||
|
EndocrinologieEtMetabolisme,
|
||||||
|
ChirurgieInfantile,
|
||||||
|
ChirurgieMaxilloFaciale,
|
||||||
|
ChirurgieMaxilloFacialeEtStomatologie,
|
||||||
|
ChirurgiePlastiqueReconstructriceEtEsthetique,
|
||||||
|
ChirurgieThoraciqueEtCardioVasculaire,
|
||||||
|
ChirurgieVasculaire,
|
||||||
|
ChirurgieVisceraleEtDigestive,
|
||||||
|
PharmacieDOfficine,
|
||||||
|
PharmacieMutualiste,
|
||||||
|
ChirurgienDentisteSpecialiteCO,
|
||||||
|
ChirurgienDentisteSpecialiteMBD,
|
||||||
|
PrestataireDeTypeSociete,
|
||||||
|
PrestataireArtisan,
|
||||||
|
PrestataireDeTypeAssociation,
|
||||||
|
Orthesiste,
|
||||||
|
Opticien,
|
||||||
|
Audioprothesiste,
|
||||||
|
ÉpithesisteOculariste,
|
||||||
|
PodoOrthesiste,
|
||||||
|
Orthoprothesiste,
|
||||||
|
ChirurgieOrale,
|
||||||
|
GynecologieMedicale,
|
||||||
|
Hematologie,
|
||||||
|
MedecineNucleaire,
|
||||||
|
OncologieMedicale,
|
||||||
|
OncologieRadiotherapique,
|
||||||
|
PsychiatrieDeLEnfantEtDeLAdolescent,
|
||||||
|
Radiotherapie,
|
||||||
|
Obstetrique,
|
||||||
|
GenetiqueMedicale,
|
||||||
|
ObstetriqueEtGynecologieMedicale,
|
||||||
|
SantePubliqueEtMedecineSociale,
|
||||||
|
MedecineDesMaladiesInfectieusesEtTropicales,
|
||||||
|
MedecineLegaleEtExpertisesMedicales,
|
||||||
|
MedecineDUrgence,
|
||||||
|
MedecineVasculaire,
|
||||||
|
Allergologie,
|
||||||
|
InfirmierExercantEnPratiquesAvancees, // IPA
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Page 54 dictionnaires des donnees
|
||||||
|
/// donnees inutilises pour les pharmacies
|
||||||
|
pub(crate) enum CodeZoneTarifaire {}
|
||||||
|
|
||||||
|
pub(crate) enum CodeZoneIK {
|
||||||
|
PasIndemniteKilometrique,
|
||||||
|
IndemnitesKilometriquesPlaine,
|
||||||
|
IndemnitesKilometriquesMontagne,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) enum CodeAgrement {
|
||||||
|
PasDAgrementRadio,
|
||||||
|
/// Agrément D ou agrément DDASS
|
||||||
|
AgrementDDASS,
|
||||||
|
/// Agrément A, B, C, E et F
|
||||||
|
AgrementABCEF,
|
||||||
|
/// Agrément G, H et J
|
||||||
|
AgrementGHJ,
|
||||||
|
AgrementK,
|
||||||
|
AgrementL,
|
||||||
|
AgrementM,
|
||||||
|
}
|
3
crates/services-sesam-vitale-sys/src/types/mod.rs
Normal file
3
crates/services-sesam-vitale-sys/src/types/mod.rs
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
pub(crate) mod types;
|
||||||
|
pub mod common;
|
||||||
|
pub mod serialization_types;
|
@ -0,0 +1,81 @@
|
|||||||
|
use std::cmp::Ordering;
|
||||||
|
|
||||||
|
use binrw::{BinRead, BinResult};
|
||||||
|
use bitreader::{BitReader, BitReaderError};
|
||||||
|
|
||||||
|
fn parse_memory_zone_size_bitreader(bytes: &[u8; 5]) -> Result<u32, BitReaderError> {
|
||||||
|
let mut reader = BitReader::new(bytes);
|
||||||
|
|
||||||
|
let zone_size_bit_count = match reader.read_bool()? {
|
||||||
|
true => 7,
|
||||||
|
false => reader.read_u8(7)? * 8,
|
||||||
|
};
|
||||||
|
Ok(reader.read_u32(zone_size_bit_count)?)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[binrw::parser(reader)]
|
||||||
|
fn parse_memory_zone_size() -> BinResult<u32> {
|
||||||
|
let mut value: u8 = 0;
|
||||||
|
|
||||||
|
|
||||||
|
reader.read_exact(std::slice::from_mut(&mut value));
|
||||||
|
|
||||||
|
// first bit s 0 <=> value < 128
|
||||||
|
match value.cmp(&128) {
|
||||||
|
Ordering::Less => {
|
||||||
|
Ok(value.into())
|
||||||
|
}
|
||||||
|
Ordering::Equal | Ordering::Greater => {
|
||||||
|
let zone_size_encoding_byte_count = value - 128;
|
||||||
|
let mut buf: Vec<u8> = vec![0; zone_size_encoding_byte_count.into()];
|
||||||
|
reader.read_exact(&mut buf);
|
||||||
|
|
||||||
|
let mut result = 0u32;
|
||||||
|
|
||||||
|
for (i, &byte) in buf.iter().enumerate() {
|
||||||
|
result += (byte as u32) << (8 * i);
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(BinRead)]
|
||||||
|
struct MemoryZone {
|
||||||
|
#[br(parse_with = parse_memory_zone_size)]
|
||||||
|
memory_size: u32,
|
||||||
|
}
|
||||||
|
|
||||||
|
enum TypeIdentificationStructure {
|
||||||
|
NumeroAdeliCabinet,
|
||||||
|
NumeroFINESS,
|
||||||
|
NumeroSIREN,
|
||||||
|
NumeroSIRET,
|
||||||
|
NumeroRPPSCabinet,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum TypeDIdentificationNationale {
|
||||||
|
NumeroAdeli,
|
||||||
|
NumeroAdeliCabinetNumeroEmploye,
|
||||||
|
NumeroDRASS,
|
||||||
|
NumeroFINESSNumeroEmploye,
|
||||||
|
NumeroSIRENNumeroEmploye,
|
||||||
|
NumeroSIRETNumeroEmploye,
|
||||||
|
NumeroRPPSCabinetNumeroEmploye,
|
||||||
|
NumeroRPPS,
|
||||||
|
/// N° Etudiant Médecin type ADELI sur 9 caractères (information transmise par l’ANS)
|
||||||
|
NumeroEtudiantMedecin,
|
||||||
|
}
|
||||||
|
pub(crate) enum TypeCartePS {
|
||||||
|
/// Carte de Professionnel de Santé (CPS)
|
||||||
|
CarteDeProfessionnelSante,
|
||||||
|
/// Carte de Professionnel de Santé en Formation (CPF)
|
||||||
|
CarteDeProfessionnelSanteEnFormation,
|
||||||
|
/// Carte de Personnel d'Établissement de Santé (CDE/CPE)
|
||||||
|
CarteDePersonnelEtablissementSante,
|
||||||
|
/// Carte de Personnel Autorisé (CDA/CPA)
|
||||||
|
CarteDePersonnelAutorise,
|
||||||
|
/// Carte de Personne Morale
|
||||||
|
CarteDePersonneMorale,
|
||||||
|
}
|
45
crates/services-sesam-vitale-sys/src/types/types.rs
Normal file
45
crates/services-sesam-vitale-sys/src/types/types.rs
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
pub(crate) use crate::types::common::IdentificationNationale;
|
||||||
|
|
||||||
|
use super::common::{
|
||||||
|
Byte, CategorieCarteProfessionnelSante, CodeAgrement, CodeCivilite, CodeConventionnel,
|
||||||
|
CodeSpecialite, CodeZoneIK, CodeZoneTarifaire, Identification, IdentificationFacturation,
|
||||||
|
IdentificationStructure, ModeExercice, SecteurActivite, StatutExercice,
|
||||||
|
TypeCarteProfessionnelSante,
|
||||||
|
};
|
||||||
|
|
||||||
|
pub(crate) struct CarteProfessionnelSante {
|
||||||
|
type_carte: TypeCarteProfessionnelSante,
|
||||||
|
categorie_carte: CategorieCarteProfessionnelSante,
|
||||||
|
professionnel_sante: ProfessionnelDeSante,
|
||||||
|
}
|
||||||
|
|
||||||
|
struct ProfessionnelDeSante {
|
||||||
|
prenom: String,
|
||||||
|
nom: String,
|
||||||
|
code_civilite: CodeCivilite,
|
||||||
|
identification_nationale: Identification<IdentificationNationale>,
|
||||||
|
situations_execice: Vec<SituationDExercice>,
|
||||||
|
}
|
||||||
|
struct StructureMedicale {
|
||||||
|
/// Nom Entreprise
|
||||||
|
raison_sociale: String,
|
||||||
|
identification: Identification<IdentificationStructure>,
|
||||||
|
}
|
||||||
|
|
||||||
|
struct SituationDExercice {
|
||||||
|
/// Numéro identifiant la situation du PS parmi ses autres situations inscrites sur sa CPS
|
||||||
|
identifiant_situation: Byte,
|
||||||
|
mode_exercice: Option<ModeExercice>,
|
||||||
|
statut_exercice: Option<StatutExercice>,
|
||||||
|
secteur_activite: Option<SecteurActivite>,
|
||||||
|
structure_d_exercice: Option<StructureMedicale>,
|
||||||
|
identification_facturation: Identification<IdentificationFacturation>,
|
||||||
|
identification_remplacant: Option<Identification<IdentificationNationale>>,
|
||||||
|
code_conventionnel: CodeConventionnel,
|
||||||
|
code_specialite: CodeSpecialite,
|
||||||
|
code_zone_tarifaire: CodeZoneTarifaire,
|
||||||
|
code_zone_ik: CodeZoneIK,
|
||||||
|
code_agrement: CodeAgrement,
|
||||||
|
habilite_signature_facture: bool,
|
||||||
|
habilite_signature_lot: bool,
|
||||||
|
}
|
Reference in New Issue
Block a user