Medpass_resource_api is a project mainly written in Ruby, it's free.
Restful API for getting medpass 2.0 resources (currently only available for Activeweb Company projects)
1) Instalacja:
z ruby gems: gem install medpass_resource_api
2) Konfiguracja
W config/environment.rb
config.gem 'medpass_resource_api'
Po bloku Rails::Initializer.run do |config| . . . end
MedpassResourceApi.configure do |config|
config.api_key = '1234567890'
config.medpass_url = 'http://medpass.pl'
end
3) Użycie:
Metody wywołujemy na rzecz klasy MedpassResourceApi::Base
--->MedpassResourceApi::Base.get_user(openid_url_or_login) - zwraca usera (podstawowe dane: id, login, nazwa_wyświetlana(*), grupa(1,2,3 ... itd zgodnie z grupami medpass))
Możemy rowniez wywołać tą metodę w formie z przekazaną aktualną datą / czasem:
---->MedpassResourceApi::Base.get_user(openid_url_or_login, Date.today) - zwraca usera tylko w przypadku gdy nastapily zmiany w profilu i sa >= przekazana data
---->MedpassResourceApi::Base.get_user_profile(openid_url_or_login) - zwraca pełny profil usera (analogicznie jak nasza SOAP-owa metoda export_profile) Tak samo jak get_user - mozemy przekazac datę naszej ostatniej wersji profilu, np:
---->MedpassResourceApi::Base.get_user_profile(openid_url_or_login,'2010-01-01')
---->MedpassResourceApi::Base.get_user_friends(openid_url_or_login) - zwraca listę znajomych danego usera: znajomi indentyfikowani sa przez: id, login, display_name, email
---->MedpassResourceApi::Base.get_user_message(openid_url_or_login, id_message'a) - zwraca wiadomość medpass o id id_message'a dla danego uzytkownika (pobranie wiadomosci - oznacza jej przeczytanie - wpis w DB)
---->MedpassResourceApi::Base.get_user_received_messages(openid_url_or_login, options = {}) - zwraca otrzymane(wszystkie) message dla usera: dostepne opcje to: limit - ograniczenie ilosci, i app - nazwa aplikacji, np:
---->MedpassResourceApi::Base.get_user_received_messages(openid_url_or_login, :limit => 10, :app =>'science') - zwraca 10 ostatnich wiadomosci wyslanych w ramach portalu science
---->MedpassResourceApi::Base.get_user_read_messages(openid_url_or_login, options ={}) - jak wyżej tylko zwraca wiadomości oznaczone jako przeczytane
---->MedpassResourceApi::Base.get_user_unread_messages(openid_url_or_login, options ={}) - jak wyżej tylko zwraca wiadomości oznaczone jako nieprzeczytane
Zakładanie konta MedpassResourceApi::Base.register_user(group_id, hash_of_args, portal_name = nil) group_id => group_id z medpass czyli np zeby zalozyc konto niezwiazane z medycyna trzeba: przekazac 1 hash_of_args => argumenty usera przekazane jako hasz portal_name => mozemy przekazac portal name - wtedy jesli bedzie wysłany mail do usera pojawi sie tam ta nazwa w przeciwnym razie bedzie to medpass.pl
Przyklad:
MedpassResourceApi::Base.register_user(1, {:login =>"fluffy", :email =>"[email protected]"}, "evra.pl")
Minimalne argumenty to : login i email -> wtedy na podany email wysylane jest wygenerowane haslo i login
Inny przyklad: MedpassResourceApi::Base.register_user(3, {:login =>'kazimierz.wichura',:password =>'wkaziu', :email =>"[email protected]", :first_name =>"Kazimierz", :last_name =>"Wichura" })
Generalnie klucze hasza atrybutow powinny byc zgodne z nazwa pola w bazie (tabelka users, personal_profiles, specialtiy_profiles - w przypadku lekarza)
MedpassResourceApi::Base.register_doctor(arguments_hash, portal_name = nil) - analogicznie jak wyzej tylko nie przekazujesz w pierwszym arg funkcji grupy bo jest ona z automatu ustawiona na 2 - czyli lekarz. Dodatkowo w argumentach mozemy przekazywac argumenty ze speciality profile - tutaj :pwz - jest WYMAGANY!!!
Powyzsze funkcje zwracaja albo MedpassResourceApi::Result - z userem Albo MedpassResourceApi::ErrorResult - w przypadku bledow walidacji konta
ErrorResult - ma nastepujace metody: errors - zwraca hasza wszystkich bledow typu :pole => tablica bledow errors_on(:pole) - zwraca bledy tylko na dane pole
first_error_on(:pole) - zwraca pierwszy napotkany blad dotyczaca pola :pole
---->MedpassResourceApi::Base.get_user_sent_messages(openid_url_or_login, options ={}) - jak wyżej ale zwraca wiadomości wysłane
W przypadku wiadomości mamy tez metode
---->ActiveResource::Base.get_user_messages(openid_url_or_login, options ={}) - jak wyzej z tym ze mamy dodatkowa opcje: scope ->(:read, :sent, :received ), np:
---->ActiveResource::Base.get_user_messages(openid_url_or_login, :scope => :unread, :app =>'science', :limit =>10)
4) Wartości zwracane:
Metody zwracają obiekt typu MedpassResourceApi::Result. Jego atrybuty dostepne są po kropce, np:
---->@profile = MedpassResourceApi::Base.get_user_profile(openid_url_or_login) ---->@profile.display_name
W przypadku odwołania się do nieistniejącego atrybutu - nie jest zwracany bład a jedynie string "brak", np:
---->@profile.ulubiony_drink => "brak"
Metody mogą zwrócić row niez obiekt typu MedpassResourceApi::NilResult - w przypadku braku wyników do zwrócenia, lub tablicę obiketow MedpassResourceApi::Result - dla metod zwracających kolekcje
W przypadku blednej konfiguracji api key podnoszony jest wyjątek: ActiveResource::ForbiddenAccess
5) Todo - bedzie dodane keszowanie memcache