/medpass_resource_api

Restful API for getting medpass 2.0 resources (currently only available for Activeweb Company projects)

Primary LanguageRuby

- MedpassResourceAPi v 0.0.5 - restowe api dostepu do zasobów systemu medpass 2.0 -

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 =>"fluffy@wp.pl"}, "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 =>"kazek@gmail.com", :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