Skip to content

Initialisation MOS identité #2

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion _genonce.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ curl -sSf tx.fhir.org > /dev/null

if [ $? -eq 0 ]; then
echo "Online"
txoption="-resetTx -tx https://r4.ontoserver.csiro.au/fhir"
txoption=""
else
echo "Offline"
txoption="-tx n/a"
Expand Down
15 changes: 14 additions & 1 deletion _updatePublisher.bat
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ SET input_cache_path=%CD%\input-cache\
SET skipPrompts=false

SET scriptdlroot=https://raw.githubusercontent.com/HL7/ig-publisher-scripts/main
SET build_bat_url=%scriptdlroot%/_build.bat
SET build_sh_url=%scriptdlroot%/_build.sh
SET update_bat_url=%scriptdlroot%/_updatePublisher.bat
SET gen_bat_url=%scriptdlroot%/_genonce.bat
SET gencont_bat_url=%scriptdlroot%/_gencontinuous.bat
Expand All @@ -20,7 +22,7 @@ IF "%~1"=="/f" SET skipPrompts=y

ECHO.
ECHO Checking internet connection...
PING tx.fhir.org -4 -n 1 -w 1000 | FINDSTR TTL && GOTO isonline
PING tx.fhir.org -4 -n 1 -w 4000 | FINDSTR TTL && GOTO isonline
ECHO We're offline, nothing to do...
GOTO end

Expand Down Expand Up @@ -69,6 +71,7 @@ IF DEFINED FORCE (
IF "%skipPrompts%"=="y" (
SET create=Y
) ELSE (
ECHO Will place publisher jar here: %input_cache_path%%publisher_jar%
SET /p create="Ok? (Y/N) "
)
IF /I "%create%"=="Y" (
Expand Down Expand Up @@ -211,6 +214,16 @@ goto end
start copy /y "_updatePublisher.new.bat" "_updatePublisher.bat" ^&^& del "_updatePublisher.new.bat" ^&^& exit


:dl_script_7
ECHO Updating _build.bat
call POWERSHELL -command if ('System.Net.WebClient' -as [type]) {(new-object System.Net.WebClient).DownloadFile(\"%build_bat_url%\",\"_build.new.bat\") } else { Invoke-WebRequest -Uri "%update_bat_url%" -Outfile "_build.new.bat" }
if %ERRORLEVEL% == 0 goto upd_script_6
echo "Errors encountered during download: %errorlevel%"
goto end
:upd_script_6
start copy /y "_build.new.bat" "_build.bat" ^&^& del "_build.new.bat" ^&^& exit


:end


Expand Down
14 changes: 13 additions & 1 deletion _updatePublisher.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ gencont_bat_url=$scriptdlroot/_gencontinuous.bat
gencont_sh_url=$scriptdlroot/_gencontinuous.sh
gen_sh_url=$scriptdlroot/_genonce.sh
update_sh_url=$scriptdlroot/_updatePublisher.sh
build_sh_url=$scriptdlroot/_build.sh
build_bat_url=$scriptdlroot/_build.bat

skipPrompts=false
FORCE=false
Expand Down Expand Up @@ -103,6 +105,16 @@ if [[ $skipPrompts != true ]]; then
if [[ $skipPrompts == true ]] || [[ $response =~ ^[yY].*$ ]]; then
echo "Downloading most recent scripts "

curl -L $build_bat_url -o /tmp/_build.new
cp /tmp/_build.new _build.bat
rm /tmp/_build.new


curl -L $build_sh_url -o /tmp/_build.new
cp /tmp/_build.new _build.sh
chmod +x _build.sh
rm /tmp/_build.new

curl -L $update_bat_url -o /tmp/_updatePublisher.new
cp /tmp/_updatePublisher.new _updatePublisher.bat
rm /tmp/_updatePublisher.new
Expand All @@ -129,4 +141,4 @@ if [[ $skipPrompts == true ]] || [[ $response =~ ^[yY].*$ ]]; then
cp /tmp/_updatePublisher.new _updatePublisher.sh
chmod +x _updatePublisher.sh
rm /tmp/_updatePublisher.new
fi
fi
2 changes: 1 addition & 1 deletion ig.ini
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# ini file for the Implementation Guide publisher
# see comments below for instructions

ig = fsh-generated/resources/ImplementationGuide-ans.fhir.fr.example.json
ig = fsh-generated/resources/ImplementationGuide-ans.fhir.fr.MOS.json
template = https://github.com/ansforge/IG-template
#template = https://github.com/ansforge/IG-template/tree/for-comment-template #Usage to be discussed
#template = #local-template
Expand Down
51 changes: 51 additions & 0 deletions input/fsh/ConceptMap/CM-PatientModel.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
Instance: CM-PatientModel-EHDS
InstanceOf: ConceptMap
Usage: #definition
* version = "0.1.0"
* name = "CM-PatientModel-EHDS"
* title = "Mapping entre du Patient MOS le Patient EHDS"
* status = #draft
* date = "2025-05-26"
* description = "Cette ConceptMap fait correspondre le model logique d'un patient MOS vers un patient EHDS."
* purpose = "Pour faciliter l'intégration des données de recherche dans les systèmes basés sur FHIR pour la recherche."
* sourceUri = Canonical(PatientInCharge)
* targetUri = "https://github.com/Fyrstain/IG-MOS/tree/ISIS-56"

// Groupe: Patient
* group[+].source = Canonical(PatientInCharge)
* group[=].target = "https://www.xt-ehr.eu/specifications/fhir/StructureDefinition/EHDSPatient"
//
* group[=].element[+].code = #PatientInCharge.ins
* group[=].element[=].target[+].code = #EHDSPatient.personalIdentifier
* group[=].element[=].target[=].equivalence = #narrower
// TODO R5 * group[=].element[=].target[=].equivalence = #source-is-narrower-than-target
//
* group[=].element[+].code = #PatientInCharge.idPersonInCharge
* group[=].element[=].target[+].code = #EHDSPatient.personalIdentifier
* group[=].element[=].target[=].equivalence = #narrower
// TODO R5 * group[=].element[=].target[=].equivalence = #source-is-narrower-than-target
//
* group[=].element[+].code = #PatientInCharge.person
* group[=].element[=].target[+].code = #EHDSPatient.name
* group[=].element[=].target[=].equivalence = #relatedto
// TODO R5 * group[=].element[=].target[=].equivalence = #related-to
//
* group[=].element[+].code = #PatientInCharge.communicationPreference
* group[=].element[=].target[+].equivalence = #unmatched
// TODO R5 * group[=].element[=].noMap = true
//
* group[=].element[+].code = #PatientInCharge.contact
* group[=].element[=].target[+].equivalence = #unmatched
// TODO R5 * group[=].element[=].noMap = true
//
* group[=].element[+].code = #PatientInCharge.correspondenceAddress
* group[=].element[=].target[+].code = #EHDSPatient.address
* group[=].element[=].target[=].equivalence = #equivalent
//
* group[=].element[+].code = #PatientInCharge.telecommunicationnoma
* group[=].element[=].target[+].code = #EHDSPatient.telecom
* group[=].element[=].target[=].equivalence = #equivalent
//
* group[=].element[+].code = #PatientInCharge.metadata
* group[=].element[=].target[+].equivalence = #unmatched
// TODO R5 * group[=].element[=].noMap = true
16 changes: 16 additions & 0 deletions input/fsh/LogicalModel/INS.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
Logical: INS
Id: Ins
Title: "INS"
Description: "Logical model to represent the Health National Identity"
* . ^short = "INS"
* . ^definition = "National Health Identity."
* insert oneElementLogicalFR(registrationINS, 1..1, Identifier, [[The registration number in the National Directory of Identification of Physical Persons (NIR) or the waiting identifier number (NIA) for individuals awaiting the allocation of a NIR (Art. R. 1111-8-1.-I of the CSP).]], [[Le numéro d’inscription au répertoire national d’identification des personnes physiques (NIR) ou le numéro identifiant d’attente (NIA) pour les personnes en instance d’attribution d’un NIR (Art. R. 1111-8-1.-I du CSP);]])
* insert oneElementLogicalFR(familyName, 1..1, string, [[The last name (also referred to as surname or birth name) is an identity element.]], [[Le nom de famille (également nommé nom de naissance) est un élément d’identité.]])
* insert oneElementLogicalFR(givenNameAtBirth, 1..1, string, [[First names indicated on the birth certificate.]], [[Prénoms indiqués sur l'acte de naissance.]])
* insert oneElementLogicalFR(firstGivenNameAtBirth, 1..1, string, [[First given name in the list of birth names.]], [[Premier prénom dans la liste des prénoms de naissance]])
* insert oneElementLogicalFR(usedFamilyName, 1..1, string, [[The actual name used by the individual in daily life.]], [[Nom réellement porté par la personne physique dans la vie courante.]])
* insert oneElementLogicalFR(usedGivenName, 1..1, string, [[The first name actually used by the individual in daily life.]], [[Prénom réellement porté par la personne physique dans la vie courante]])
* insert oneElementLogicalFR(gender, 1..1, code, [[The INS identity can only contain values F (female) or M (male).]], [[Le sexe.L’identité INS ne peut comporter que des valeurs F (féminin) ou M (masculin) pour le sexe.]])
* insert oneElementLogicalFR(dateOfBirth, 1..1, date, [[Date of birth of the individual.]], [[Date de naissance de la personne]])
* insert oneElementLogicalFR(placeOfBirth, 1..1, code, [[Official geographic code (COG) of the municipality (France) or country.]], [[Code officiel géographique (COG) de la commune (France) ou du pays.]])
* insert oneElementLogicalFR(metadata, 0..1, Meta, [[Information related to the management of classes and data.]], [[Informations relatives à la gestion des classes et des données.]])
14 changes: 14 additions & 0 deletions input/fsh/LogicalModel/PatientInCharge.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
Logical: PatientInCharge
Id: PatientInCharge
Title: "PatientInCharge"
Description: "Logical model to represent : Individual receiving care, examinations, preventive measures, or services. Depending on the context, the individual in question may be referred to as a patient or a user."
* . ^short = "Patient In Charge"
* . ^definition = "Individual receiving care, examinations, preventive measures, or services."
* insert oneElementLogicalFR(ins, 0..1, Ins, [[National Health Identity]], [[Identité nationale de santé]])
* insert oneElementLogicalFR(idPersonInCharge, 0..*, Identifier, [[Secondary identifier of the person being cared for]], [[Identifiant secondaire de la personne prise en charge.]])
* insert oneElementLogicalFR(person, 0..1, PhysicalPerson, [[Civil identity of the person being cared for.]],[[Identité civile de la personne prise en charge.]])
* insert oneElementLogicalFR(communicationPreference, 0..1, CodeableConcept, [[Preferred means of communication of the person being cared for.]], [[Moyen de communication privilégié de la personne prise en charge.]])
* insert oneElementLogicalFR(contact, 0..*, ContactPoint, [[Contact information for individuals to reach out to in case of need.]], [[Coordonnées des personnes à contacter en cas de besoin.]])
* insert oneElementLogicalFR(correspondenceAddress, 0..*, Address, [[Correspondence address(es) of the person being cared for.]], [[Adresse(s) de correspondance de la personne prise en charge.]])
* insert oneElementLogicalFR(telecommunication, 0..*, ContactPoint, [[Communication address(es) of the person being cared for (phone number, email address, URL, etc.).]], [[Adresse(s) de télécommunication de la personne prise en charge (numéro de téléphone, adresse email, URL, etc.).]])
* insert oneElementLogicalFR(metadata, 0..1, Meta, [[Information related to the management of classes and data.]], [[Informations relatives à la gestion des classes et des données.]])
Loading