Files
2026-04-27 10:26:26 +07:00

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);
}
}
}