Initial import
This commit is contained in:
267
application/controllers/satu_sehat/Observation.php
Normal file
267
application/controllers/satu_sehat/Observation.php
Normal file
@@ -0,0 +1,267 @@
|
||||
<?php
|
||||
class Observation extends MY_Controller
|
||||
{
|
||||
var $db;
|
||||
var $load;
|
||||
var $satusehat;
|
||||
function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->load->library('Satusehat');
|
||||
}
|
||||
function index()
|
||||
{
|
||||
echo "Satu Sehat Observation";
|
||||
}
|
||||
|
||||
function getobservation()
|
||||
{
|
||||
try {
|
||||
$prm = $this->sys_input;
|
||||
// $testInput = $prm["testInput"];
|
||||
// echo $testInput;
|
||||
|
||||
$orderheaderID = $prm['orderheaderID'];
|
||||
|
||||
$sql = "SELECT * FROM one_health.observation
|
||||
WHERE observationT_OrderHeaderID = ?
|
||||
AND observationIsActive = 'Y'";
|
||||
$qry = $this->db->query($sql, [$orderheaderID]);
|
||||
$last_qry = $this->db->last_query();
|
||||
|
||||
if (!$qry) {
|
||||
$error = array(
|
||||
"message" => $this->db->error()["message"],
|
||||
"sql" => $last_qry
|
||||
);
|
||||
$this->sys_error_db($error);
|
||||
exit;
|
||||
}
|
||||
$result_check = $qry->result_array();
|
||||
|
||||
// get organization
|
||||
$sql = "SELECT organizationID
|
||||
FROM one_health.organization
|
||||
WHERE organizationIsActive = 'Y'";
|
||||
|
||||
$qry = $this->db->query($sql, []);
|
||||
$last_qry = $this->db->last_query();
|
||||
|
||||
if (!$qry) {
|
||||
$error = array(
|
||||
"message" => $this->db->error()["message"],
|
||||
"sql" => $last_qry
|
||||
);
|
||||
$this->sys_error_db($error);
|
||||
exit;
|
||||
}
|
||||
|
||||
$organizationID = $qry->result_array()[0]['organizationID'];
|
||||
|
||||
$T_OrderDetailID = "";
|
||||
$sql_get_detailID = "SELECT T_OrderDetailID
|
||||
FROM t_orderdetail
|
||||
WHERE T_OrderDetailIsActive = 'Y'
|
||||
AND T_OrderDetailT_OrderHeaderID = $orderheaderID";
|
||||
|
||||
$qry_detailID = $this->db->query($sql_get_detailID, []);
|
||||
$last_qry = $this->db->last_query();
|
||||
|
||||
if (!$qry_detailID) {
|
||||
$error = array(
|
||||
"message" => $this->db->error()["message"],
|
||||
"sql" => $last_qry
|
||||
);
|
||||
$this->sys_error_db($error);
|
||||
exit;
|
||||
}
|
||||
|
||||
$T_OrderDetailID = $qry_detailID->result_array()[0]['T_OrderDetailID'];
|
||||
|
||||
// uuid generate
|
||||
// $this->load->library(“Satusehat”);
|
||||
// $this->satusehat->gen_uuid();
|
||||
|
||||
if (count($result_check) == 0) {
|
||||
// $sql_data_observation =
|
||||
// "SELECT T_OrderDetailID,
|
||||
// T_OrderDetailVerDate,
|
||||
// DATE_FORMAT(T_OrderDetailValDate, '%Y-%m-%d') as effectiveDate,
|
||||
// T_OrderDetailValDate,
|
||||
// DATE_FORMAT(T_OrderDetailValDate, '%Y-%m-%dT%H:%i:%s+00:00') as issuedDate,
|
||||
// T_OrderDetailResult,
|
||||
// T_OrderDetailNat_UnitName,
|
||||
// Nat_TestLoincCode,
|
||||
// Nat_TestLoincDisplay,
|
||||
// IFNULL(OHPatientMapIHSNumber, 'Belum terdaftar') as patient_ihsnumber,
|
||||
// IFNULL(OHDoctorMapIHSNumber,'Belum diinput') as doctor_ihsnumber,
|
||||
// EncounterUUID,
|
||||
// SpecimenUUID,
|
||||
// ServiceRequestUUID
|
||||
// FROM t_orderheader
|
||||
// JOIN t_orderdetail
|
||||
// ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
|
||||
// AND T_OrderDetailIsActive = 'Y'
|
||||
// AND T_OrderDetailT_TestIsResult = 'Y'
|
||||
// AND T_OrderHeaderID = $orderheaderID
|
||||
// JOIN t_test
|
||||
// ON T_OrderDetailT_TestID = T_TestID
|
||||
// AND T_TestIsActive = 'Y'
|
||||
// AND T_TestIsResult = 'Y'
|
||||
// JOIN nat_test_loinc
|
||||
// ON Nat_TestLoincNat_TestID = T_TestNat_TestID
|
||||
// LEFT JOIN one_health.oh_patient_map
|
||||
// ON T_OrderHeaderM_PatientID = OHPatientMapM_PatientID
|
||||
// AND OHPatientMapIsActive = 'Y'
|
||||
// LEFT JOIN one_health.oh_doctor_map
|
||||
// ON OHDoctorMapM_DoctorID = T_OrderHeaderPjM_DoctorID
|
||||
// AND OHDoctorMapIsActive = 'Y'
|
||||
// LEFT JOIN one_health.encounter
|
||||
// ON EncounterT_orderHeaderID = T_orderHeaderID
|
||||
// AND EncounterIsActive = 'Y'
|
||||
// LEFT JOIN one_health.service_request
|
||||
// ON ServiceRequestT_OrderHeaderID = T_OrderHeaderID
|
||||
// AND ServiceRequestIsActive = 'Y'
|
||||
// ";
|
||||
|
||||
// -- Nat_MethodeName,
|
||||
// -- Nat_NormalValueMaxValue,
|
||||
// -- OHDoctorMapIHSNumber,
|
||||
// -- OHNatFlagMapCode,
|
||||
// -- OHNatFlagMapDisplay,
|
||||
|
||||
$sql_data_observation =
|
||||
"SELECT T_OrderDetailID,
|
||||
T_OrderDetailVerDate,
|
||||
DATE_FORMAT(T_OrderDetailValDate, '%Y-%m-%d') as effectiveDate,
|
||||
T_OrderDetailValDate,
|
||||
DATE_FORMAT(T_OrderDetailValDate, '%Y-%m-%dT%H:%i:%s+00:00') as issuedDate,
|
||||
T_OrderDetailResult,
|
||||
T_OrderDetailNat_UnitName,
|
||||
Nat_TestLoincCode,
|
||||
Nat_TestLoincDisplay,
|
||||
IFNULL(OHPatientMapIHSNumber, 'Belum terdaftar') as patient_ihsnumber,
|
||||
IFNULL(OHDoctorMapIHSNumber,'Belum diinput') as doctor_ihsnumber,
|
||||
EncounterUUID,
|
||||
SpecimenUUID,
|
||||
ServiceRequestUUID
|
||||
FROM t_orderheader
|
||||
JOIN t_orderdetail
|
||||
ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
|
||||
AND T_OrderDetailIsActive = 'Y'
|
||||
AND T_OrderDetailT_TestIsResult = 'Y'
|
||||
AND T_OrderHeaderID = $orderheaderID
|
||||
JOIN t_test
|
||||
ON T_OrderDetailT_TestID = T_TestID
|
||||
AND T_TestIsActive = 'Y'
|
||||
AND T_TestIsResult = 'Y'
|
||||
JOIN nat_test_loinc
|
||||
ON Nat_TestLoincNat_TestID = T_TestNat_TestID
|
||||
LEFT JOIN t_ordersample
|
||||
ON T_OrderSampleT_OrderHeaderID = T_OrderHeaderID
|
||||
AND T_OrderSampleT_SampleTypeID = T_TestT_SampleTypeID
|
||||
AND T_OrderSampleIsActive = 'Y'
|
||||
LEFT JOIN one_health.specimen
|
||||
ON SpecimentT_OrderSampleID = T_OrderSampleID
|
||||
AND SpecimenIsActive = 'Y'
|
||||
LEFT JOIN one_health.oh_patient_map
|
||||
ON T_OrderHeaderM_PatientID = OHPatientMapM_PatientID
|
||||
AND OHPatientMapIsActive = 'Y'
|
||||
LEFT JOIN one_health.oh_doctor_map
|
||||
ON OHDoctorMapM_DoctorID = T_OrderHeaderPjM_DoctorID
|
||||
AND OHDoctorMapIsActive = 'Y'
|
||||
LEFT JOIN one_health.encounter
|
||||
ON EncounterT_orderHeaderID = T_orderHeaderID
|
||||
AND EncounterIsActive = 'Y'
|
||||
LEFT JOIN one_health.service_request
|
||||
ON ServiceRequestT_OrderDetailID = T_OrderDetailID
|
||||
AND ServiceRequestIsActive = 'Y'
|
||||
";
|
||||
|
||||
|
||||
|
||||
$qry_data_observation = $this->db->query($sql_data_observation);
|
||||
$last_qry = $this->db->last_query();
|
||||
|
||||
if (!$qry_data_observation) {
|
||||
$error = array(
|
||||
"message" => $this->db->error()["message"],
|
||||
"sql" => $last_qry
|
||||
);
|
||||
$this->sys_error_db($error);
|
||||
exit;
|
||||
}
|
||||
|
||||
$result_data_observation = $qry_data_observation->result_array();
|
||||
// echo "\n";
|
||||
// print_r($result_data_observation);
|
||||
|
||||
$observationJSON = [];
|
||||
|
||||
foreach ($result_data_observation as $key => $val_idx) {
|
||||
$observationJSON[] = [
|
||||
"fullUrl" => "urn:uuid:{$this->satusehat->gen_uuid()}",
|
||||
"resource" => [
|
||||
"resourceType" => "Observation",
|
||||
"identifier" => [
|
||||
[
|
||||
"system" => "http://sys-ids.kemkes.go.id/observation/$organizationID",
|
||||
"value" => $val_idx['T_OrderDetailID']
|
||||
]
|
||||
],
|
||||
"status" => "final",
|
||||
"category" => [
|
||||
"coding" => [
|
||||
[
|
||||
"system" => "http://terminology.hl7.org/CodeSystem/observation-category",
|
||||
"code" => "laboratory",
|
||||
"display" => "Laboratory"
|
||||
]
|
||||
]
|
||||
],
|
||||
"code" => [
|
||||
"coding" => [
|
||||
[
|
||||
"system" => "http://loinc.org",
|
||||
"code" => $val_idx['Nat_TestLoincCode'],
|
||||
"display" => $val_idx['Nat_TestLoincDisplay']
|
||||
]
|
||||
]
|
||||
],
|
||||
"subject" => [
|
||||
"reference" => "Patient/{$val_idx['patient_ihsnumber']}"
|
||||
],
|
||||
"encounter" => [
|
||||
"reference" => "urn:uuid:{$val_idx['EncounterUUID']}"
|
||||
],
|
||||
"effectiveDateTime" => $val_idx['effectiveDate'],
|
||||
"issued" => $val_idx['issuedDate'],
|
||||
"performer" => [
|
||||
[
|
||||
"reference" => "Practicioner/{$val_idx['doctor_ihsnumber']}"
|
||||
],
|
||||
[
|
||||
"reference" => "Organization/$organizationID"
|
||||
]
|
||||
],
|
||||
"specimen" => [
|
||||
"reference" => "urn:uuid:{$val_idx['SpecimenUUID']}"
|
||||
],
|
||||
"basedOn" => [
|
||||
[
|
||||
"reference" => "ServiceRequest/{$val_idx['ServiceRequestUUID']}"
|
||||
]
|
||||
],
|
||||
]
|
||||
];
|
||||
}
|
||||
echo json_encode($observationJSON);
|
||||
} else {
|
||||
echo $result_check[0]['ObservationJSON'];
|
||||
}
|
||||
} catch (Exception $exc) {
|
||||
$message = $exc->getMessage();
|
||||
$this->sys_error($message);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user