SMS handler setup/id: Perbedaan revisi

(Created page with "= Atribut-atribut Pesan = Interface untuk menyunting atribut-atribut pesan tersedia melalui Admin | Membuat SMS Handler | Sunting pilihan menu Pesan SMS. Bidang-bidangnya adal...")
(Created page with "Pesan ditangani seolah-olah dikirim dari nomor telepon tertentu, default ke nomor telepon pengguna saat ini. Hal ini memungkinkan untuk mengirimkan pesan atas nama pengguna la...")
 
(52 revisi antara oleh 2 pengguna tidak ditampilkan)
Baris 11: Baris 11:
 
= Atribut-atribut Pesan =
 
= Atribut-atribut Pesan =
 
Interface untuk menyunting atribut-atribut pesan tersedia melalui Admin | Membuat SMS Handler | Sunting pilihan menu Pesan SMS. Bidang-bidangnya adalah:
 
Interface untuk menyunting atribut-atribut pesan tersedia melalui Admin | Membuat SMS Handler | Sunting pilihan menu Pesan SMS. Bidang-bidangnya adalah:
== Start code ==
+
== Kode mulai ==
Every message has a start code. This must contain only letters (no numbers, symbols, spaces or punctuation), and should be written in capital letters. It must be at least one letter, but can be longer. It is best to keep it as short as possible, while still allowing it to be easily understood and unique. Two or three letters is normal.
+
Setiap pesan memiliki satu kode mulai. Ini hanya berisi huruf saja (tidak ada angka, simbol, spasi atau tanda baca), dan harus ditulis dengan huruf besar. Setidaknya ada satu huruf, namun bisa lebih panjang. Lebih singkat lebih baik, walaupun tetap memungkinkan untuk mudah dimengerti dan unik. Normalnya adalah dua atau tiga huruf.
== Name ==
+
== Nama ==
The name for the message is a short name describing the purpose of the message or the type of data being collected. It should be written in Indonesian and English.
+
Nama untuk pesan tersebut adalah sebuah nama pendek yang mendeskripsikan tujuan dari pesan itu atau tipe data yang sedang dikumpulkan. Hendaknya ditulis dalam bahasa Indonesia dan bahasa Inggris.
== Permission ==
+
== Perizinan ==
This controls who is allowed to send this type of message. The drop down list shows all defined group permissions, normally named in the form 'can_dosomething'. If there is an existing permission that is already suitable for this type of report, that can be used, but normally it will be necessary to define a new permission. Once defined, and associated with the SMS message, different user groups can be give this permission or not, depending on their responsibilities.
+
Ini mengontrol siapa yang diizinkan untuk mengirimkan tipe pesan ini. Daftar drop down menunjukan seluruh perizinan grup yang terdefinisikan, biasanya dinamai dalam format 'dapat_melakukansesuatu'. Jika ada perizinan yang sesuai dengan tipe laporan ini, yang bisa digunakan, tetapi biasanya akan diminta untuk mendefinisikan perizinan baru. Setelah terdefinisi, dan diasosiasikan dengan pesan SMS, grup pengguna yang berbeda dapat memberikan izin ini atau tidak, tergantung pada tanggung jawab mereka.
=== Defining a new permission ===
+
=== Mendefinisikan perizinan baru ===
In the menu, go to Admin | Permissions | Edit Permissions.  
+
Pada menu, kunjungi Admin | Perizinan | Sunting Perizinan.  
 
==== Name ====
 
==== Name ====
 
Enter a new name for the permission in the form 'can_xxx'. For a permission for a particular SMS message, the normal name for the permission is 'can_send_''message_type'''. For example, for an OB message, the corresponding permission would be 'can_send_ob'.
 
Enter a new name for the permission in the form 'can_xxx'. For a permission for a particular SMS message, the normal name for the permission is 'can_send_''message_type'''. For example, for an OB message, the corresponding permission would be 'can_send_ob'.
Baris 26: Baris 26:
 
Set this to 'no' as we are creating a group permission.  
 
Set this to 'no' as we are creating a group permission.  
  
Save the permission and return to Edit SMS Message, selecting the permission that you have created.
+
Simpan izin dan kemudian kembali ke Edit Pesan SMS, pilih izin yang telah Anda buat.
== Purpose and Help Text ==
+
== Tujuan dan Teks Bantuan ==
These are currently not used but will be used in documentation and the interface in future.  
+
Tujuan dan teks bantuan saat ini tidak digunakan tetapi akan digunakan dalam dokumentasi dan antarmuka di masa depan.
== Table name ==
+
== Nama Tabel ==
This is the name of an existing database table into which the received data will be inserted. Type the name of the table.
+
Nama tabel adalah nama dari tabel pangkalan data yang sudah ada di mana data yang diterima akan dimasukkan. Ketik nama tabel.
== Error message ==
+
== Pesan kesalahan ==
This is a key to a string which will be used as the error message if the general format of the message is incorrect. Normally it is in the form ''message_type''_error. For example, for an OB message, the name would be OB_error.
+
Pesan kesalahan adalah kunci untuk string yang akan digunakan sebagai pesan kesalahan jika format umum pesan tidak benar. Biasanya itu adalah dalam bentuk ''message_type''_ kesalahan. Misalnya, untuk pesan OB, namanya adalah OB_error.
== Reply SQL ==
+
== Balas SQL ==
This is an SQL 'select' query that controls what message is returned to the sender. It must always be defined.
+
Balas SQL adalah SQL 'pilih' permintaan yang mengontrol apa pesan yang dikembalikan ke pengirim. Ini harus selalu ditentukan.
  
The SQL should return a single varchar value which is the text of the message that will be returned to the sender. At its very simplest, it could be something like:  
+
SQL akan mengirimkan pesan balasan ke pengirim. Pilih sesuatu yang sangat sederhana, seperti:
select 'Thank you. Your message has been received'
+
'Terima kasih. Pesan Anda telah diterima'
  
However, all reply messages should confirm the contents of the submitted message, converted from the coded version into clear text. The reply SQL is therefore normally more complex, and queries the newly inserted data (filtering by the message id), joins it to references tables, and composes the result. It also normally uses language-specific strings from the translation table to present the message in the correct form.  
+
Namun, semua pesan balasan harus mengkonfirmasi isi pesan yang disampaikan, dikonversikan dari versi kode ke dalam teks yang jelas. Oleh karena itu balasan SQL biasanya lebih kompleks, dan query data yang baru dimasukkan (dipilah oleh id pesan), bergabung ke tabel rujukan, dan menyusun hasilnya. Hal ini juga biasanya menggunakan string bahasa khusus dari tabel terjemahan untuk menyajikan pesan dalam bentuk yang benar.  
  
Pre-defined variables that can be included in the SQL (and almost always are) are:
+
Variabel yang telah ditentukan dan dapat dimasukkan dalam SQL (hampir selalu digunakan) adalah:
* sms_userid: the user ID of the person sending the message. This is used to get the right language.
+
* sms_userid: user ID dari orang yang mengirim pesan. Ini digunakan untuk mendapatkan bahasa yang tepat.
* sms_msgid: the message ID for the current message. This is used to get the submitted data.
+
* sms_msgid: ID pesan untuk pesan saat ini. Ini digunakan untuk mendapatkan data yang dikirimkan.
  
Helpful functions that may be included in replay SQL include:
+
Fungsi bantuan yang dapat dimasukkan dalam balasan SQL meliputi:
* get_string(key varchar, userid integer): returns a defined string (indexed by the key) in the user's preferred language
+
* get_string (varchar kunci, userid integer): mengembalikan string yang telah ditentukan (diindeks dengan kunci) dalam bahasa pilihan pengguna
* get_user_lang(userid integer): return the language code for the user. This is useful if directly accessing data from a translated array field.
+
* get_user_lang (userid integer): mengembalikan kode bahasa bagi pengguna. Hal ini berguna jika langsung mengakses data dari field array yang diterjemahkan.
* add_checkdigit(code integer): when returning a numeric code (case ID, program ID etc), a check digit is used to ensure that there are no typographical errors. This function adds a check digit to the raw code. All ID codes should have a check digit added, as if they are used in a message without the check digit, it will be interpreted as an error by the system.
+
* add_checkdigit (kode integer): ketika mengembalikan kode numerik (kasus ID, Program ID, dll), check digit digunakan untuk memastikan bahwa tidak ada kesalahan ketik. Fungsi ini menambahkan check digit ke kode baku. Semua kode ID harus memiliki check digit yang telah ditambahkan, seolah-olah mereka digunakan dalam pesan tanpa check digit, hal ini akan diartikan sebagai kesalahan oleh sistem.
* format(format_string varchar, input_string varchar,...): This is a standard PostgreSQL function to format a string with a list of replaceable variables. The string should contain one or more %s place holders, which are replaced with the value of the variables specified.
+
* format (format_string varchar, input_string varchar, ...): Ini adalah fungsi PostgreSQL standar untuk memformat string dengan daftar variabel yang diganti. String harus berisi satu atau lebih pemegang tempat % s, yang diganti dengan nilai variabel tertentu.
* string_agg(string varchar, separator varchar): another standard SQL function that aggregates string from multiple rows (when using a 'group by' clause) into a single concatenated value, with each row's string be separated by the separator. This is useful when the message might insert data into multiple rows, and the reply needs to summarise the data from these rows.
+
* string_agg (string varchar, pemisah varchar): fungsi lain SQL standar yang mengumpulkan string dari beberapa baris (ketika menggunakan 'kelompok dengan' klausa) menjadi nilai tunggal bersambung, dengan  setiap baris string yang dipisahkan oleh separator. Hal ini berguna ketika pesan mungkin memasukkan data ke dalam beberapa baris, dan balasan perlu meringkas data dari baris tersebut.
  
An example of a reply SQL for the OB message:
+
Contoh balasan SQL untuk pesan OB:
  select format(get_string('OB_reply',sms_userid), dinfo, s.species[1], l.name)
+
  pilih format (get_string ('OB_reply', sms_userid), dinfo, s.species [1], l.name)
  from (  
+
  dari (
  select t.caseid, string_agg(format('%s (%s %s)', d.name, dose, units), ', ') as dinfo  
+
  pilih t.caseid, string_agg (format ('%s (%s %s)', d.name, dosis, unit),',') sebagai dinfo
  from treatments t
+
  dari pengobatan t
  join drugs d on d.id = drug
+
  gabung obat d pada d.id = obat
  where t.msgid = sms_msgid group by t.caseid) as dd
+
  di mana t.msgid = kelompok sms_msgid dengan t.caseid) sebagai dd
  left join cadre_reports c on c.id = dd.caseid
+
  kiri gabung cadre_reports c pada c.id = dd.caseid
  left join locations l on l.id = c.locationid
+
  kiri gabung lokasi l pada l.id = c.locationid
  left join species s on s.id = c. speciesid
+
  kiri gabung spesies s pada s.id = c . speciesid
  
== Alert SQL ==
+
== Pesan peringatan SQL ==
The Alert SQL is used to send immediate SMS messages to users other than the original sender, alerting them of the contents of the original SQL or of other information. If no alert message is required, this field should be left blank.
+
Pesan peringatan SQL digunakan untuk mengirim pesan SMS langsung ke pengguna lain dari pengirim asli, mengingatkan mereka tentang isi SQL asli atau informasi lainnya. Jika tidak ada pesan peringatan yang diperlukan, field ini harus dibiarkan kosong.
  
This is a 'select' statement returning one or more records with two fields: the phone number (varchar, from the users.phone field), and the message content (varchar).
+
Bagian ini adalah pernyataan 'pilih' mengembalikan satu atau lebih rekaman dengan dua field: nomor telepon (varchar, dari field users.phone), dan isi pesan (varchar).
  
The same variables and functions described above are available for use in this message. An example of the Alert SQL for the Q message is:
+
Variabel dan fungsi sama yang dijelaskan di atas tersedia untuk digunakan dalam pesan ini. Contoh Alert SQL untuk pesan Q adalah:
  
  select u2.phone,  
+
  pilih u2.phone,
   format(get_string('Q_alert',2), u.firstname||coalesce(' '||u.surname,''),  
+
   format (get_string ('Q_alert', 2), u.firstname||coalesce (''||u.surname,''),
   local_phone(u.phone), to_char(report_date,'HH:MM:SS'), question)
+
   local_phone (u.phone), to_char (report_date,'HH:MM:SS'), pertanyaan)
  from questions q
+
  dari pertanyaan q
  join users u on u.id = q.userid
+
  gabung pengguna u pada u.id = q.userid
  join users u2 on (not u2.del) and (u2.phone is not null) and (u2.groupid < 2)
+
  gabung pengguna u2 pada (bukan u2.del) dan (u2.phone bukan nol) dan (u2.groupid <2)
  join locations l on l.id = u2.location
+
  gabung lokasi l pada l.id = u2.location
  join locations l2 on l2.id = u.location
+
  gabung lokasi l2 pada l2.id = u.location
  where q.msgid = sms_msgid
+
  di mana q.msgid = sms_msgid
  
== Protected ==
+
== Dilindungi ==
Mark 'yes' to protect this message from being overwritten by the message creation process. Any message function that has had custom modifications made to its code should be marked as protected to avoid being overwritten by the automatic message generator function.
+
Tandai 'ya' untuk melindungi pesan agar tidak ditimpa dengan pesan lain pada saat proses pembuatan pesan. Fungsi pesan yang telah memiliki modifikasi tertentu kode harus ditandai sebagai dilindungi untuk menghindari agar data tidak ditimpa dengan pesan otomatis.
  
= Field attributes =
+
= Bidang atribut =
Once the message attributes are defined, the fields for the message need to be defined. This is done from the menu: Admin | Create SMS Handler | Edit SMS Fields
+
Setelah atribut pesan ditentukan, field untuk pesan perlu ditentukan. Hal ini dilakukan dari menu: Admin|Create SMS Handler|Edit SMS Fields
  
== Message ==
+
== Pesan ==
Select the existing message defined in the previous step
+
Pilih pesan yang telah ditentukan dalam langkah sebelumnya
  
== Order ==
+
== Perintah ==
Type an integer to define the order of fields in the SMS
+
Ketik integer untuk menentukan urutan field dalam SMS
  
== Name ==
+
== Nama ==
Enter a name in English and Indonesian. This appears in documentation and is used internally. It may contains spaces. It should briefly describe what the content of the field is.
+
Masukkan nama dalam bahasa Inggris dan Indonesia. Ini muncul dalam dokumentasi dan digunakan secara internal. Mungkin berisi spasi. Ini harus menjelaskan secara singkat apa isi field ini.
  
== Data type ==
+
== Jenis data ==
The following data types are defined:
+
Jenis data berikut ini didefinisikan:
  
=== Numeric code ===
+
=== Kode numerik ===
This is a number containing a check digit. Its main use is case ID, but it is used in a number of other situations where users need to send and receive numeric codes.
+
Ini adalah nomor yang berisi check digit. Kegunaan utamanya adalah kasus ID, tetapi digunakan dalam sejumlah situasi lain di mana pengguna harus mengirim dan menerima kode numerik.
  
=== Lookup code ===
+
=== Kode Cari ===
This is a alpha (letters only) code (one or more letters), which is used to look up a value from a reference table. This is the most common way to refer to reference table values.
+
Ini adalah alpha (huruf saja) kode (satu atau lebih dari satu huruf), yang digunakan untuk mencari nilai dari tabel rujukan. Ini adalah cara yang paling umum untuk menyebut nilai tabel rujukan.
  
=== Integer ===
+
=== Integer ===  
This is a simple integer, used for counts in the data submitted (number of animals slaughtered, vaccinated, sick etc.)
+
Ini adalah integer sederhana, digunakan untuk menghitung data yang dikirimkan (jumlah hewan yang dipotong, divaksinasi, sakit, dll)
  
=== Location ===
+
=== Lokasi ===
This is a location code, which can be a full version (8 digits in the new system, 10 in the old), or short (just the last digits below the users area of responsibility).
+
Ini adalah kode lokasi, yang dapat digunakan full version (8 digit dalam sistem baru, 10 digit di sistem lama), atau singkat (hanya angka terakhir sesuai wilayah tanggung jawab pengguna)
  
=== Boolean ===
+
=== Boolean ===  
A single letter text code that can take two values, defaulting to Y (Ya, yes), and T (tidak, no). SQL can be used to define other alternatives.  
+
Kode teks huruf tunggal yang dapat menggunakan dua nilai, default ke Y (Ya, yes), dan T (TIDAK, no). SQL dapat digunakan untuk menentukan alternatif lain.  
  
=== Text ===
+
=== Teks ===
Free text with any characters. This normally has to be the last field in a message as it is difficult to parse.
+
Teks bebas dengan karakter apapun. Ini biasanya harus menjadi field terakhir dalam pesan karena sulit untuk diurai.
  
=== Float ===
+
=== Float ===  
A number that may contain a decimal point, for example, drug doses or coordinates.
+
Angka yang mungkin berisi titik desimal, misalnya, dosis obat atau koordinat.
  
=== Integer code ===
+
=== Kode integer ===
An integer used to lookup a value from a reference table. This is not commonly used (alpha codes are used instead).
+
Integer digunakan untuk mencari sebuah nilai dari tabel rujukan. Biasanya ini tidak lazim digunakan (kode alfa biasanya digunakan).
  
=== Text array ===
+
=== Teks array ===
A field containing one or more lookup codes (alpha codes referencing values in a table). These values are parsed and inserted into a single array field in the data table. In this way, multiple values can be handled as a single field type. This is used for signs and differential diagnoses, for example. Care is required to ensure that parsing is unambiguous (last field, or surrounded by numeric fields).
+
Field ini berisi satu atau lebih dari satu kode cari (kode alfa merujuk ke nilai dalam tabel). Nilai-nilai ini diurai dan dimasukkan ke dalam field array tunggal dalam tabel data. Dengan cara ini, beberapa nilai dapat diperlakukan sebagai jenis field tunggal. Misalnya ini digunakan untuk tanda-tanda dan diagnosa banding. Perawatan diperlukan untuk memastikan penguraian yang ambigu (field sebelumnya, atau dikelilingi oleh field numerik).
  
== Optional ==
+
== Opsional ==
This indicates if the field is optional or not.
+
Hal ini menunjukkan jika field tersebut adalah opsional atau bukan.
  
== Group sequence ==
+
== Urutan Kelompok ==
SMS messages can contain repeating groups of fields. For example a POP population message can contain multiple pairs of ([species] [number]...).  
+
Pesan SMS dapat berisi kelompok field yang berulang. Misalnya pesan populasi POP dapat berisi beberapa pasang ([spesies] [jumlah ] ... ).
When a field is not part of a repeating group, it should have a group sequence of 0. If it is part of a group, then each element of the group should be numbered sequentially. Only one repeating group is permitted in a message.
+
Ketika field tersebut bukan bagian dari kelompok pengulangan, field ini harus memiliki urutan kelompok 0. Jika field adalah bagian dari kelompok, maka setiap elemen kelompok harus diberi nomor berurutan. Hanya satu kelompok berulang yang diizinkan dalam pesan.
  
 
== Lookup SQL ==
 
== Lookup SQL ==
This is a select statement with a different purpose depending on the field type. When not required, it can be left blank. When used, it should contain a single %s value which is replaced with the value of the field. Return types vary with the field type.
+
Bagian ini merupakan penyataan pilihan dengan tujuan yang berbeda tergantung pada jenis field. Bila tidak diperlukan, dapat dibiarkan kosong. Jika digunakan, harus mengandung nilai  % s tunggal yang diganti dengan nilai field. Jenis pesan balasan bervariasi tergantung jenis fieldnya.
  
=== Lookup code ===
+
=== Kode Lookup ===
The SQL returns the id from the reference table of the value submitted. The SQL is required in this case. For example:
+
SQL mengembalikan id dari tabel rujukan dari nilai yang dikirimkan. Dalam hal ini SQL diperlukan. Sebagai contoh:
  
  select id from drugs where upper(code) = upper(trim(%s))
+
  pilih id dari obat di mana upper(code) = upper(trim(%s))
  
=== Integer ===
+
=== Integer ===  
The SQL is optional. If provided it is used for range checking. It should return a single boolean value. For example:
+
SQL adalah opsional. Jika tersedia digunakan untuk memeriksa berbagai hal. Ini harus mengembalikan nilai boolean tunggal. Sebagai contoh:
  
  select %s between 0 and 1000
+
  pilih %s antara 0 dan 1000
  
=== Text array ===
+
=== Teks array ===
The SQL is required. It returns an array of ID values for the codes in the input array. The requirements are rather special:
+
SQL diperlukan. Ini mengembalikan sebuah array nilai ID untuk kode dalam array input. Persyaratannya agak khusus:
* two %s parameters
+
* Dua % s parameter
** First one: select %s from
+
** Yang pertama : pilih % s dari
** Second one: (select unnest(regexp_matches(%s,'([a-z]+)', 'igx')) as code) as dat
+
** Yang kedua : (pilih unnest (regexp_matches(%s,'([a-z]+)', 'igx')) sebagai kode) sebagai dat
* join to main table: left outer join diseases s on upper(dat.code) = upper(s.code)
+
* gabung ke tabel utama: kiri luar gabung penyakit s di upper (dat.code) = upper (s.code)
** table '''must''' be aliased 's'
+
** tabel '''harus''' dengan alias 's'
* other join clauses and filters
+
* lainnya gabung klausa dan filter
  
For example:
+
Sebagai contoh:
 
   
 
   
  select %s from
+
  pilih %s dari
   (select unnest(regexp_matches(%s,'([a-z]+)', 'igx')) as code) as dat
+
   (pilih unnest(regexp_matches(%s,'([a-z]+)', 'igx')) sebagai kode) sebagai dat
  left outer join diseases s on upper(dat.code) = upper(s.code)
+
  kiri luar gabung penyakit s di upper(dat.code) = upper(s.code)
 
  AND NOT del
 
  AND NOT del
 
  AND (valid_from IS NULL OR valid_from <= CURRENT_DATE)
 
  AND (valid_from IS NULL OR valid_from <= CURRENT_DATE)
Baris 164: Baris 164:
  
 
=== Boolean ===
 
=== Boolean ===
The SQL is optional. If present, it returns a boolean value for the submitted code. For example:
+
SQL adalah opsional. Jika tersedia, ini mengembalikan nilai boolean untuk kode yang dikirimkan. sebagai contoh:
  select case upper(trim(%s))  
+
  pilih huruf besar(trim(%s))  
   when 'K' then true
+
   jika 'K' maka benar
   when 'Y' then true
+
   jika 'Y' maka benar
   when 'T' then false
+
   jika 'T' maka salah
   when 'N' then false
+
   jika 'N' maka salah
  else null end
+
  lainnya nol akhir
  
== Field name ==
+
== Nama field ==
The field in the database table into which the data received will be inserted.
+
Field dalam tabel pangkalan data di mana data yang diterima akan dimasukkan.
  
== Error message ==
+
== Pesan salah ==
A key reference to an string in the translation table that will be used as the error message for this field. The key should contain one replaceable parameter (%s) which is replaced with the (invalid) value submitted.
+
Rujukan kunci untuk string dalam tabel terjemahan yang akan digunakan sebagai pesan salah untuk field ini. Kuncinya harus berisi satu parameter yang dapat diganti (% s) yang diganti dengan nilai (tidak valid) yang dikirimkan.
  
= Reference tables =
+
= Tabel rujukan =
Reference tables are in the reference schema. Structure varies but most have at least the following fields:
+
Tabel rujukan berada dalam skema referensi. Struktur bervariasi tetapi sebagian besar memiliki setidaknya field sebagai berikut :
* id: unique record id
+
* Id: record id unik
* code: an alpha code
+
* kode: kode alfa
* hier_code: a dot separated hierarchical code in the form 1.1.1. This is used to arrange data at different levels of detail, allowing more flexible analysis
+
* Hier_code : titik dipisahkan kode hirarkis dalam bentuk 1.1.1. Ini digunakan untuk mengatur data pada berbagai tingkat detail, memungkinkan analisis yang lebih fleksibel
* name: varchar[] - a text array field with the name in Indonesian at index 1, and English at index 2
+
* nama: varchar [] - kolom teks array dengan nama dalam bahasa Indonesia pada indeks 1, dan Inggris pada indeks 2
* valid_from and valid_to: dates indicating the period of validity of the item. Valid_to may be null indicating ongoing validity.
+
* valid_from dan valid_to : tanggal yang menunjukkan masa berlaku item. Valid_to mungkin nol menunjukkan validitas yang sedang berlangsung.
* modified_by: user id of the last user to modify the value
+
* Modified_by : user id dari user terakhir untuk mengubah nilai
* modified_on: timestamp of the last modification
+
* Modified_on : timestamp dari modifikasi terakhir
* del: boolean flag for deleted
+
* Del : boolean flag untuk dihapus
  
In addition, there may be classifications referring to other tables (eg species) or flags (eg zoonosis, OIE etc for diseases)
+
Selain itu, mungkin ada klasifikasi yang mengacu ke tabel lainnya (misalnya spesies) atau flag (misalnya zoonosis, OIE dll untuk penyakit)
  
= Data tables =
+
= Tabel data =
Data tables are stored in the 'data' schema. Their structure depends on the data required, but they must have have the following fields which are automatically updated:
+
Tabel data disimpan dalam skema 'data'. Strukturnya tergantung pada data yang dibutuhkan, tetapi mereka harus memiliki field berikut yang diperbarui secara otomatis:
* id: unique record id
+
* Id : record id unik
* userid: integer referencing the user ID of the submitting user (from the 'users' table);
+
* Userid : integer yang merujuk pada ID pengguna dari pengguna yang mengirimkan data (dari tabel 'pengguna');
* report_date: timestamp of data submission
+
* Report_date : timestamp dari pengiriman data
* msgid bigint: the unique id of the incoming SMS message
+
* Msgstr bigint : id unik dari pesan SMS yang masuk
* created_on and modified_on: dates
+
* Created_on dan modified_on : tanggal
* created_by and modified_by: user IDs
+
* Created_by dan modified_by : ID pengguna
* del: deleted flag
+
* Del : flag yang dihapus
  
= Message strings =
+
= Pesan string =
Translated message strings are stored against a key in the translation table, and can be edited using the menu Admin | Message codes and translations | SMS messsage text.  
+
Pesan string yang telah diterjemahkan disimpan dalam kunci di tabel terjemahan, dan dapat diedit menggunakan menu Admin| Kode Pesan dan terjemahan|teks pesan SMS.  
  
The key or string code is used to access the message. By convention, this code starts with the message start code, followed by an underscore and then an abbreviation of the purpose. For example a message with an error due to an invalid drug code when sending a treatment (OB) message might be OB_invdrug.
+
Kode kunci atau string digunakan untuk mengakses pesan. Dengan konvensi, kode ini dimulai dengan kode pesan awal, diikuti dengan garis bawah dan kemudian singkatan dari tujuan. Misalnya pesan dengan kesalahan karena kode obat yang tidak valid saat mengirim pesan pengobatan (OB) mungkin OB_invdrug.
  
The strings are stored in Indonesian and English (and this can be expanded to other languages if required).  
+
String disimpan dalam bahasa Indonesia dan Inggris (dan ini dapat diperluas untuk bahasa lain jika diperlukan).  
  
Most messages have data inserted into them, so are used with the SQL '''format()''' function. For this to work, they need to have place holders for the data to insert, in the form %s. For example:
+
Kebanyakan pesan memiliki data yang dimasukkan ke dalamnya, sehingga digunakan dengan fungsi '''Format()''' SQL. Agar dapat berfungsi, harus memiliki place holder untuk data yang dimasukkan, dalam bentuk % s. Sebagai contoh:
  
 
  Laporan tindak lanjut dari %s (ID kasus %s) %s. %s
 
  Laporan tindak lanjut dari %s (ID kasus %s) %s. %s
  
would have the following data substituted into it: village name, case ID, the numbers of animals and whether the outbreak is resolved or ongoing.
+
Data sebagai berikut akan dimasukkan ke dalam bagian ini: nama desa, ID kasus, jumlah hewan dan apakah wabah telah ditangani atau masih berlangsung.
  
= Building the message function =
+
= Membangun fungsi pesan =
Once the metadata, tables and strings for an SMS handler function have been set up, the function needs to be generated before it can be used. Use the menu Admin | Create SMS handler | Create handler function, and select the function to generate. Once generated, the function will be saved in the SMS schema, and be immediately available for use.
+
Setelah metadata, tabel dan string untuk fungsi handler SMS di seting, fungsi perlu dihasilkan sebelum dapat digunakan. Gunakan menu Admin|Buat handler SMS|Buat fungsi handler, dan pilih fungsi untuk menghasilkan. Setelah dihasilkan, fungsi akan disimpan dalam skema SMS, dan akan segera tersedia untuk dapat digunakan.
  
= Testing the message function =
+
= Pengujian fungsi pesan =
To test a new function, use the menu Admin | Test SMS Message. This allows a message to be composed and submitted to the system as if it were being sent by SMS. The message is inserted into the inbox, normal processing follows, and any response messages are inserted into the outbox. However no SMS is actually sent (the outgoing messages are displayed on the web interface). Note that any data submitted is inserted into the database so be sure to delete any test data afterwards.
+
Untuk menguji fungsi baru, gunakan menu Admin|Uji Pesan SMS. Hal ini memungkinkan pesan yang akan disusun dan disampaikan ke sistem seolah-olah sedang dikirim melalui SMS. Pesan dimasukkan ke kotak masuk, proses normal berikut, dan pesan respon dimasukkan ke kotak keluar. Namun sebenarnya tidak ada SMS yang dikirimkan (pesan keluar akan ditampilkan pada antarmuka web). Perhatikan bahwa data yang dikirimkan sebenarnya dimasukkan ke dalam pangkalan data jadi pastikan untuk menghapus data uji sesudahnya.
  
The message is handled as if it were sent from the specified phone number, defaulting to the phone number of the current user. This makes it possible to submit messages on behalf of other users, or to test messages coming from users in different locations and languages.
+
Pesan ditangani seolah-olah dikirim dari nomor telepon tertentu, default ke nomor telepon pengguna saat ini. Hal ini memungkinkan untuk mengirimkan pesan atas nama pengguna lain, atau untuk menguji pesan yang datang dari pengguna di lokasi dan bahasa yang berbeda.

Revisi terkini pada 27 Mei 2015 14.28

Bahasa lain:
English • ‎Bahasa Indonesia

Ikhtisar

Sebuah SMS handler adalah sebuah fungsi yang mengendalikan proses menerima dan menguraikan data dari sebuah SMS masuk, memeriksa data, memasukkannya ke dalam tabel dan memberikan respon apapun yang diperlukan oleh pesan tersebut. Pembuatan fungsi SMS handler terotomatisasi dan dapat dicapai dengan menyediakan metadata melalui interface laman. Proses ini meliputi:

  • Mengatur informasi pesan umum (format, perizinan, tujuan, tabel data, pesan eror dll)
  • Mengatur detil untuk masing-masing bidang
  • Mengisi tabel referensi
  • Membuat tabel data
  • Membuat serangkaian pesan untuk pesan keluar

Langkah-langkah ini dijelaskan secara terperinci di bawah ini.

Atribut-atribut Pesan

Interface untuk menyunting atribut-atribut pesan tersedia melalui Admin | Membuat SMS Handler | Sunting pilihan menu Pesan SMS. Bidang-bidangnya adalah:

Kode mulai

Setiap pesan memiliki satu kode mulai. Ini hanya berisi huruf saja (tidak ada angka, simbol, spasi atau tanda baca), dan harus ditulis dengan huruf besar. Setidaknya ada satu huruf, namun bisa lebih panjang. Lebih singkat lebih baik, walaupun tetap memungkinkan untuk mudah dimengerti dan unik. Normalnya adalah dua atau tiga huruf.

Nama

Nama untuk pesan tersebut adalah sebuah nama pendek yang mendeskripsikan tujuan dari pesan itu atau tipe data yang sedang dikumpulkan. Hendaknya ditulis dalam bahasa Indonesia dan bahasa Inggris.

Perizinan

Ini mengontrol siapa yang diizinkan untuk mengirimkan tipe pesan ini. Daftar drop down menunjukan seluruh perizinan grup yang terdefinisikan, biasanya dinamai dalam format 'dapat_melakukansesuatu'. Jika ada perizinan yang sesuai dengan tipe laporan ini, yang bisa digunakan, tetapi biasanya akan diminta untuk mendefinisikan perizinan baru. Setelah terdefinisi, dan diasosiasikan dengan pesan SMS, grup pengguna yang berbeda dapat memberikan izin ini atau tidak, tergantung pada tanggung jawab mereka.

Mendefinisikan perizinan baru

Pada menu, kunjungi Admin | Perizinan | Sunting Perizinan.

Name

Enter a new name for the permission in the form 'can_xxx'. For a permission for a particular SMS message, the normal name for the permission is 'can_send_message_type'. For example, for an OB message, the corresponding permission would be 'can_send_ob'.

Enable by default

This sets all groups to have this permission by default. Normally this should be set to 'no' so that groups have to be explicitly give this permission, unless it is sure that almost all users should be able to use this permission.

User permission

Set this to 'no' as we are creating a group permission.

Simpan izin dan kemudian kembali ke Edit Pesan SMS, pilih izin yang telah Anda buat.

Tujuan dan Teks Bantuan

Tujuan dan teks bantuan saat ini tidak digunakan tetapi akan digunakan dalam dokumentasi dan antarmuka di masa depan.

Nama Tabel

Nama tabel adalah nama dari tabel pangkalan data yang sudah ada di mana data yang diterima akan dimasukkan. Ketik nama tabel.

Pesan kesalahan

Pesan kesalahan adalah kunci untuk string yang akan digunakan sebagai pesan kesalahan jika format umum pesan tidak benar. Biasanya itu adalah dalam bentuk message_type_ kesalahan. Misalnya, untuk pesan OB, namanya adalah OB_error.

Balas SQL

Balas SQL adalah SQL 'pilih' permintaan yang mengontrol apa pesan yang dikembalikan ke pengirim. Ini harus selalu ditentukan.

SQL akan mengirimkan pesan balasan ke pengirim. Pilih sesuatu yang sangat sederhana, seperti: 'Terima kasih. Pesan Anda telah diterima'

Namun, semua pesan balasan harus mengkonfirmasi isi pesan yang disampaikan, dikonversikan dari versi kode ke dalam teks yang jelas. Oleh karena itu balasan SQL biasanya lebih kompleks, dan query data yang baru dimasukkan (dipilah oleh id pesan), bergabung ke tabel rujukan, dan menyusun hasilnya. Hal ini juga biasanya menggunakan string bahasa khusus dari tabel terjemahan untuk menyajikan pesan dalam bentuk yang benar.

Variabel yang telah ditentukan dan dapat dimasukkan dalam SQL (hampir selalu digunakan) adalah:

  • sms_userid: user ID dari orang yang mengirim pesan. Ini digunakan untuk mendapatkan bahasa yang tepat.
  • sms_msgid: ID pesan untuk pesan saat ini. Ini digunakan untuk mendapatkan data yang dikirimkan.

Fungsi bantuan yang dapat dimasukkan dalam balasan SQL meliputi:

  • get_string (varchar kunci, userid integer): mengembalikan string yang telah ditentukan (diindeks dengan kunci) dalam bahasa pilihan pengguna
  • get_user_lang (userid integer): mengembalikan kode bahasa bagi pengguna. Hal ini berguna jika langsung mengakses data dari field array yang diterjemahkan.
  • add_checkdigit (kode integer): ketika mengembalikan kode numerik (kasus ID, Program ID, dll), check digit digunakan untuk memastikan bahwa tidak ada kesalahan ketik. Fungsi ini menambahkan check digit ke kode baku. Semua kode ID harus memiliki check digit yang telah ditambahkan, seolah-olah mereka digunakan dalam pesan tanpa check digit, hal ini akan diartikan sebagai kesalahan oleh sistem.
  • format (format_string varchar, input_string varchar, ...): Ini adalah fungsi PostgreSQL standar untuk memformat string dengan daftar variabel yang diganti. String harus berisi satu atau lebih pemegang tempat % s, yang diganti dengan nilai variabel tertentu.
  • string_agg (string varchar, pemisah varchar): fungsi lain SQL standar yang mengumpulkan string dari beberapa baris (ketika menggunakan 'kelompok dengan' klausa) menjadi nilai tunggal bersambung, dengan setiap baris string yang dipisahkan oleh separator. Hal ini berguna ketika pesan mungkin memasukkan data ke dalam beberapa baris, dan balasan perlu meringkas data dari baris tersebut.

Contoh balasan SQL untuk pesan OB:

pilih format (get_string ('OB_reply', sms_userid), dinfo, s.species [1], l.name)
dari (
pilih t.caseid, string_agg (format ('%s (%s %s)', d.name, dosis, unit),',') sebagai dinfo
dari pengobatan t
gabung obat d pada d.id = obat
di mana t.msgid = kelompok sms_msgid dengan t.caseid) sebagai dd
kiri gabung cadre_reports c pada c.id = dd.caseid
kiri gabung lokasi l pada l.id = c.locationid
kiri gabung spesies s pada s.id = c . speciesid

Pesan peringatan SQL

Pesan peringatan SQL digunakan untuk mengirim pesan SMS langsung ke pengguna lain dari pengirim asli, mengingatkan mereka tentang isi SQL asli atau informasi lainnya. Jika tidak ada pesan peringatan yang diperlukan, field ini harus dibiarkan kosong.

Bagian ini adalah pernyataan 'pilih' mengembalikan satu atau lebih rekaman dengan dua field: nomor telepon (varchar, dari field users.phone), dan isi pesan (varchar).

Variabel dan fungsi sama yang dijelaskan di atas tersedia untuk digunakan dalam pesan ini. Contoh Alert SQL untuk pesan Q adalah:

pilih u2.phone,
  format (get_string ('Q_alert', 2), u.firstname||coalesce (||u.surname,),
  local_phone (u.phone), to_char (report_date,'HH:MM:SS'), pertanyaan)
dari pertanyaan q
gabung pengguna u pada u.id = q.userid
gabung pengguna u2 pada (bukan u2.del) dan (u2.phone bukan nol) dan (u2.groupid <2)
gabung lokasi l pada l.id = u2.location
gabung lokasi l2 pada l2.id = u.location
di mana q.msgid = sms_msgid

Dilindungi

Tandai 'ya' untuk melindungi pesan agar tidak ditimpa dengan pesan lain pada saat proses pembuatan pesan. Fungsi pesan yang telah memiliki modifikasi tertentu kode harus ditandai sebagai dilindungi untuk menghindari agar data tidak ditimpa dengan pesan otomatis.

Bidang atribut

Setelah atribut pesan ditentukan, field untuk pesan perlu ditentukan. Hal ini dilakukan dari menu: Admin|Create SMS Handler|Edit SMS Fields

Pesan

Pilih pesan yang telah ditentukan dalam langkah sebelumnya

Perintah

Ketik integer untuk menentukan urutan field dalam SMS

Nama

Masukkan nama dalam bahasa Inggris dan Indonesia. Ini muncul dalam dokumentasi dan digunakan secara internal. Mungkin berisi spasi. Ini harus menjelaskan secara singkat apa isi field ini.

Jenis data

Jenis data berikut ini didefinisikan:

Kode numerik

Ini adalah nomor yang berisi check digit. Kegunaan utamanya adalah kasus ID, tetapi digunakan dalam sejumlah situasi lain di mana pengguna harus mengirim dan menerima kode numerik.

Kode Cari

Ini adalah alpha (huruf saja) kode (satu atau lebih dari satu huruf), yang digunakan untuk mencari nilai dari tabel rujukan. Ini adalah cara yang paling umum untuk menyebut nilai tabel rujukan.

Integer

Ini adalah integer sederhana, digunakan untuk menghitung data yang dikirimkan (jumlah hewan yang dipotong, divaksinasi, sakit, dll)

Lokasi

Ini adalah kode lokasi, yang dapat digunakan full version (8 digit dalam sistem baru, 10 digit di sistem lama), atau singkat (hanya angka terakhir sesuai wilayah tanggung jawab pengguna)

Boolean

Kode teks huruf tunggal yang dapat menggunakan dua nilai, default ke Y (Ya, yes), dan T (TIDAK, no). SQL dapat digunakan untuk menentukan alternatif lain.

Teks

Teks bebas dengan karakter apapun. Ini biasanya harus menjadi field terakhir dalam pesan karena sulit untuk diurai.

Float

Angka yang mungkin berisi titik desimal, misalnya, dosis obat atau koordinat.

Kode integer

Integer digunakan untuk mencari sebuah nilai dari tabel rujukan. Biasanya ini tidak lazim digunakan (kode alfa biasanya digunakan).

Teks array

Field ini berisi satu atau lebih dari satu kode cari (kode alfa merujuk ke nilai dalam tabel). Nilai-nilai ini diurai dan dimasukkan ke dalam field array tunggal dalam tabel data. Dengan cara ini, beberapa nilai dapat diperlakukan sebagai jenis field tunggal. Misalnya ini digunakan untuk tanda-tanda dan diagnosa banding. Perawatan diperlukan untuk memastikan penguraian yang ambigu (field sebelumnya, atau dikelilingi oleh field numerik).

Opsional

Hal ini menunjukkan jika field tersebut adalah opsional atau bukan.

Urutan Kelompok

Pesan SMS dapat berisi kelompok field yang berulang. Misalnya pesan populasi POP dapat berisi beberapa pasang ([spesies] [jumlah ] ... ). Ketika field tersebut bukan bagian dari kelompok pengulangan, field ini harus memiliki urutan kelompok 0. Jika field adalah bagian dari kelompok, maka setiap elemen kelompok harus diberi nomor berurutan. Hanya satu kelompok berulang yang diizinkan dalam pesan.

Lookup SQL

Bagian ini merupakan penyataan pilihan dengan tujuan yang berbeda tergantung pada jenis field. Bila tidak diperlukan, dapat dibiarkan kosong. Jika digunakan, harus mengandung nilai  % s tunggal yang diganti dengan nilai field. Jenis pesan balasan bervariasi tergantung jenis fieldnya.

Kode Lookup

SQL mengembalikan id dari tabel rujukan dari nilai yang dikirimkan. Dalam hal ini SQL diperlukan. Sebagai contoh:

pilih id dari obat di mana upper(code) = upper(trim(%s))

Integer

SQL adalah opsional. Jika tersedia digunakan untuk memeriksa berbagai hal. Ini harus mengembalikan nilai boolean tunggal. Sebagai contoh:

pilih %s antara 0 dan 1000

Teks array

SQL diperlukan. Ini mengembalikan sebuah array nilai ID untuk kode dalam array input. Persyaratannya agak khusus:

  • Dua % s parameter
    • Yang pertama : pilih % s dari
    • Yang kedua : (pilih unnest (regexp_matches(%s,'([a-z]+)', 'igx')) sebagai kode) sebagai dat
  • gabung ke tabel utama: kiri luar gabung penyakit s di upper (dat.code) = upper (s.code)
    • tabel harus dengan alias 's'
  • lainnya gabung klausa dan filter

Sebagai contoh:

pilih %s dari
 (pilih unnest(regexp_matches(%s,'([a-z]+)', 'igx')) sebagai kode) sebagai dat
kiri luar gabung penyakit s di upper(dat.code) = upper(s.code)
AND NOT del
AND (valid_from IS NULL OR valid_from <= CURRENT_DATE)
AND (valid_to IS NULL OR valid_to >= CURRENT_DATE)

Boolean

SQL adalah opsional. Jika tersedia, ini mengembalikan nilai boolean untuk kode yang dikirimkan. sebagai contoh:

pilih huruf besar(trim(%s)) 
 jika 'K' maka benar
 jika 'Y' maka benar
 jika 'T' maka salah 
 jika 'N' maka salah
lainnya nol akhir

Nama field

Field dalam tabel pangkalan data di mana data yang diterima akan dimasukkan.

Pesan salah

Rujukan kunci untuk string dalam tabel terjemahan yang akan digunakan sebagai pesan salah untuk field ini. Kuncinya harus berisi satu parameter yang dapat diganti (% s) yang diganti dengan nilai (tidak valid) yang dikirimkan.

Tabel rujukan

Tabel rujukan berada dalam skema referensi. Struktur bervariasi tetapi sebagian besar memiliki setidaknya field sebagai berikut :

  • Id: record id unik
  • kode: kode alfa
  • Hier_code : titik dipisahkan kode hirarkis dalam bentuk 1.1.1. Ini digunakan untuk mengatur data pada berbagai tingkat detail, memungkinkan analisis yang lebih fleksibel
  • nama: varchar [] - kolom teks array dengan nama dalam bahasa Indonesia pada indeks 1, dan Inggris pada indeks 2
  • valid_from dan valid_to : tanggal yang menunjukkan masa berlaku item. Valid_to mungkin nol menunjukkan validitas yang sedang berlangsung.
  • Modified_by : user id dari user terakhir untuk mengubah nilai
  • Modified_on : timestamp dari modifikasi terakhir
  • Del : boolean flag untuk dihapus

Selain itu, mungkin ada klasifikasi yang mengacu ke tabel lainnya (misalnya spesies) atau flag (misalnya zoonosis, OIE dll untuk penyakit)

Tabel data

Tabel data disimpan dalam skema 'data'. Strukturnya tergantung pada data yang dibutuhkan, tetapi mereka harus memiliki field berikut yang diperbarui secara otomatis:

  • Id : record id unik
  • Userid : integer yang merujuk pada ID pengguna dari pengguna yang mengirimkan data (dari tabel 'pengguna');
  • Report_date : timestamp dari pengiriman data
  • Msgstr bigint : id unik dari pesan SMS yang masuk
  • Created_on dan modified_on : tanggal
  • Created_by dan modified_by : ID pengguna
  • Del : flag yang dihapus

Pesan string

Pesan string yang telah diterjemahkan disimpan dalam kunci di tabel terjemahan, dan dapat diedit menggunakan menu Admin| Kode Pesan dan terjemahan|teks pesan SMS.

Kode kunci atau string digunakan untuk mengakses pesan. Dengan konvensi, kode ini dimulai dengan kode pesan awal, diikuti dengan garis bawah dan kemudian singkatan dari tujuan. Misalnya pesan dengan kesalahan karena kode obat yang tidak valid saat mengirim pesan pengobatan (OB) mungkin OB_invdrug.

String disimpan dalam bahasa Indonesia dan Inggris (dan ini dapat diperluas untuk bahasa lain jika diperlukan).

Kebanyakan pesan memiliki data yang dimasukkan ke dalamnya, sehingga digunakan dengan fungsi Format() SQL. Agar dapat berfungsi, harus memiliki place holder untuk data yang dimasukkan, dalam bentuk % s. Sebagai contoh:

Laporan tindak lanjut dari %s (ID kasus %s) %s. %s

Data sebagai berikut akan dimasukkan ke dalam bagian ini: nama desa, ID kasus, jumlah hewan dan apakah wabah telah ditangani atau masih berlangsung.

Membangun fungsi pesan

Setelah metadata, tabel dan string untuk fungsi handler SMS di seting, fungsi perlu dihasilkan sebelum dapat digunakan. Gunakan menu Admin|Buat handler SMS|Buat fungsi handler, dan pilih fungsi untuk menghasilkan. Setelah dihasilkan, fungsi akan disimpan dalam skema SMS, dan akan segera tersedia untuk dapat digunakan.

Pengujian fungsi pesan

Untuk menguji fungsi baru, gunakan menu Admin|Uji Pesan SMS. Hal ini memungkinkan pesan yang akan disusun dan disampaikan ke sistem seolah-olah sedang dikirim melalui SMS. Pesan dimasukkan ke kotak masuk, proses normal berikut, dan pesan respon dimasukkan ke kotak keluar. Namun sebenarnya tidak ada SMS yang dikirimkan (pesan keluar akan ditampilkan pada antarmuka web). Perhatikan bahwa data yang dikirimkan sebenarnya dimasukkan ke dalam pangkalan data jadi pastikan untuk menghapus data uji sesudahnya.

Pesan ditangani seolah-olah dikirim dari nomor telepon tertentu, default ke nomor telepon pengguna saat ini. Hal ini memungkinkan untuk mengirimkan pesan atas nama pengguna lain, atau untuk menguji pesan yang datang dari pengguna di lokasi dan bahasa yang berbeda.