267 lines
11 KiB
PHP
267 lines
11 KiB
PHP
<?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);
|
|
}
|
|
}
|
|
} |