Введение
Вы устали от того, что ваша компания вынуждает вас использовать C# во всех ваших начинаниях по программированию? Вы мечтаете о мире, в котором вы сможете использовать JavaScript, вашу настоящую языковую любовь, чтобы данные о здравоохранении танцевали у вас под рукой? Пристегнитесь, друг мой, потому что мы собираемся погрузиться с головой в мир быстрых ресурсов взаимодействия в здравоохранении (FHIR) с мятежной мощью Node.js.
Почему ты спрашиваешь? Потому что мы пираты JavaScript, плывущие против ветра C#!
Настройка JavaScript Juggernaut
Прежде всего, давайте обратимся к нашим старым, верным союзникам: fhir.js
и fs
. Модуль fs
поможет нам обрабатывать файлы JSON, а fhir.js
... ну, это наше секретное оружие для борьбы с серверами FHIR.
const fhir = require('fhir.js'); const fs = require('fs');
Далее отправляемся в плавание и направляем наш корабль к серверу FHIR (Аутентификация будет в другом посте):
const client = fhir({ baseUrl: 'https://your-fhir-server-url.com' });
Никакого C#, только плавное плавание с Node.js!
Подготовка данных пациента (также известная как «Сокровище»)
Да, у нас есть карта сокровищ под названием patientData.json
. Давайте раскопаем ценные данные, которые нам нужны:
const rawData = fs.readFileSync('patientData.json'); const patientData = JSON.parse(rawData);
Мы извлекаем основные подсказки: имя пациента, пол, дату рождения и идентификаторы.
const name = patientData.name; const gender = patientData.gender; const birthDate = patientData.birthDate; const identifiers = patientData.identifiers;
О, посмотри! У пациента может быть больше идентификаторов, чем у пирата тайников с ромом. Вот где наш удобный маленький помощник приходит:
function createIdentifiers(identifiers) { const identifierArray = []; for (const identifier of identifiers) { const identifierObj = { system: identifier.system, value: identifier.value, }; identifierArray.push(identifierObj); } return identifierArray; }
Затем мы вызываем эту функцию, чтобы получить массив этих идентификаторов:
const identifierArray = createIdentifiers(identifiers);
Создание ресурса пациента (он же «Золотой дублон»)
Теперь со всеми частями карты мы можем создать золотой дублон, наш ресурс «Пациент»:
const patientResource = { resourceType: 'Patient', name: [ { given: [name.given], family: name.family, }, ], gender: gender, birthDate: birthDate, identifier: identifierArray, };
Отправка сообщения в бутылке
Наконец, мы готовы бросить наше сообщение в бутылке в цифровое море сервера FHIR. Используя возможности Node.js (и никакого C#!), мы создадим ресурс Patient:
client .create({ type: 'Patient', resource: patientResource, }) .then((response) => { console.log('Patient resource created successfully:', response); }) .catch((error) => { console.error('Error creating Patient resource:', error); });
Заключение
Ну, взорви меня, приятель! Вы только что прошли через бурные воды обмена медицинскими данными, используя только JavaScript! С#? Ба! Кому это нужно, когда у вас есть Node.js, любовь к бунту программирования и сила FHIR.js на вашей стороне!
Продолжайте исследовать, продолжайте учиться, и если у вас когда-нибудь возникнут сомнения, взгляните на надежную спецификацию FHIR. Теперь вы полноправный пират JavaScript в море моряков C#. Вот и плавно плывите вперед!
Примечание. В духе бунта против Node.js вы обнаружите, что большинство моих примеров продолжают демонстрировать мощь JavaScript. Мы также побалуемся с Java, потому что это Java. Но что касается C# или всего, что связано с .NET? Не на моих часах!
Это осознанный выбор. Печальная правда заключается в том, что документация, предоставленная Fire.ly для их .NET FHIR API, не совсем впечатляет мир по сравнению с надежностью документации HAPI FHIR Java.
Поэтому до тех пор, пока Fire.ly не улучшит свою игру и не доведет свою документацию до уровня других библиотек FHIR, мы будем продолжать отстаивать здесь Node.js и Java. Речь идет не только о предпочтениях — речь идет о предоставлении четких, доступных и хорошо документированных примеров, которые помогут вам стать лучшим инженером FHIR.
Итак, давайте отправимся в это приключение вместе, оставив позади берег .NET и отправившись в захватывающие миры JavaScript и Java!
Полные файлы ниже:
const fhir = require('fhir.js'); const fs = require('fs'); // Create a FHIR client instance const client = fhir({ baseUrl: 'https://your-fhir-server-url.com' }); // Function to handle multiple identifiers function createIdentifiers(identifiers) { const identifierArray = []; for (const identifier of identifiers) { const identifierObj = { system: identifier.system, value: identifier.value, }; identifierArray.push(identifierObj); } return identifierArray; } // Read the JSON file containing the data for the Patient resource const rawData = fs.readFileSync('patientData.json'); const patientData = JSON.parse(rawData); // Extract necessary data from the custom format JSON file const name = patientData.name; const gender = patientData.gender; const birthDate = patientData.birthDate; const identifiers = patientData.identifiers; // Create the array of identifiers using the custom function const identifierArray = createIdentifiers(identifiers); // Define the Patient resource to be created const patientResource = { resourceType: 'Patient', name: [ { given: [name.given], family: name.family, }, ], gender: gender, birthDate: birthDate, identifier: identifierArray, }; // Use the client to create the Patient resource client .create({ type: 'Patient', body: patientResource, }) .then((response) => { console.log('Patient resource created successfully:', response); }) .catch((error) => { console.error('Error creating Patient resource:', error); }); { "name": { "given": "John", "family": "Doe" }, "gender": "male", "birthDate": "1990-01-01", "identifiers": [ { "system": "http://example.com/patient-id", "value": "123456789" }, { "system": "http://example.com/national-id", "value": "ABCD1234" } ] }