Guide to Implementing an Integrated SIMRS in an Efficient Type C Hospital
T
Kembali ke Blog

Guide to Implementing an Integrated SIMRS in an Efficient Type C Hospital

Tutorial
Tim Pilar Inovasi 03 Jun 2026 16 min baca 3,420 kata 233
Implementing an integrated SIMRS is key to the operational efficiency of a Type C hospital. This article guides you from planning and technology selection to practical implementation strategies. Learn how to optimize patient services and medical data management.

Type C Hospitals often face a unique dilemma in technology adoption: the need for a comprehensive information system to improve service quality and efficiency, yet with limited budget and IT resources. Without an integrated hospital management information system (SIMRS), the potential for data duplication, administrative errors, long queues, and workflow inefficiencies is very high. Data from the Ministry of Health shows that hospitals that have not fully implemented an integrated SIMRS can experience time losses of up to 30% in patient administration processes, and the risk of medical data errors increases significantly. This article will discuss in depth the concrete steps for implementing an integrated SIMRS in Type C Hospitals, from strategic planning, selecting technology architecture, to best practices in data integration using standards such as FHIR and HL7. We will present practical examples, specific technology references, and code blocks that you can apply to ensure a smooth transition to a more modern and efficient hospital operation.

Basic Concepts and Benefits of Integrated SIMRS

Integrated SIMRS is a software ecosystem that connects all departments and operational functions in the hospital, from patient registration, electronic medical records (EMR), medical support (laboratory, radiology), pharmacy, to billing and accounting. Its main goal is to create a single source of truth for all patient and operational information. In Type C Hospitals, this implementation is no longer a luxury, but an urgent need to meet accreditation standards, improve patient satisfaction, and optimize cost efficiency. For example, without integration, patients undergoing laboratory tests must wait for results to be printed, then physically taken to the doctor. With integrated SIMRS, lab results are automatically available in the doctor's EMR immediately after validation, reducing waiting time by up to 70% and minimizing the risk of losing or mishandling documents.

The concrete benefits of integrated SIMRS are very diverse. First, increased operational efficiency. Automated business processes, such as patient scheduling, medication order delivery, or requests for supporting examinations, reduce the administrative workload of staff and allow them to focus on core services. Case studies in several Type C Hospitals show an average reduction in registration waiting time of 40% and a reduction in data input errors of up to 85% after implementation. Second, accuracy and integrity of medical data. With integrated EMR, all patient medical history, from diagnosis, therapy, allergies, to examination results, is stored digitally and can be accessed by authorized medical personnel anytime and anywhere. This is crucial for accurate and rapid clinical decision-making, and minimizes the risk of medication prescription errors or medical actions.

Third, data-driven decision making. Integrated SIMRS provides real-time data on hospital performance, such as number of patient visits, resource utilization, revenue, and operational costs. Managers and directors can use this data to identify areas needing improvement, plan development strategies, and allocate budgets more effectively. For example, pharmacy data analysis can show patterns of certain drug usage, helping with more efficient stock management and procurement, reducing waste by 15-20%. Fourth, compliance with regulations and standards. Minister of Health Regulation (PMK) No. 24 of 2022 on Medical Records emphasizes the obligation of hospitals to implement electronic medical records. Integrated SIMRS helps hospitals meet these requirements, including data interoperability standards as mandated by the SatuSehat platform. Thus, SIMRS not only accelerates internal processes, but also ensures hospitals remain relevant and compliant with applicable regulations, avoiding potential sanctions and enhancing credibility in the public eye.

It is important to remember that integration is not just about connecting internal modules, but also the ability to interact with external systems such as BPJS Kesehatan, patient mobile applications, or referral systems. This is the foundation for hospitals to become part of a broader digital health ecosystem, as initiated by the government through the SatuSehat platform. Mature integration will ensure smooth and secure data exchange, supporting continuity of healthcare services for patients.

Architecture and Implementation Technology

Implementing integrated SIMRS in Type C Hospitals requires choosing the right architecture and technology, balancing functionality, scalability, and cost. Microservices-based architecture is often the ideal choice because it allows independent development and maintenance of modules, but for Type C Hospitals with limited resources, a logically divided monolithic or hybrid architecture can be more practical. We recommend using a technology stack that is mature and has a large community. For the backend, PHP with Laravel framework version 11.x is a strong choice due to ease of development, rich ecosystem, and proven performance. Laravel provides ORM (Eloquent) features that simplify database interaction and RESTful API for integration.

As a database management system, PostgreSQL version 16 is an excellent choice. PostgreSQL is known for its reliability, high data integrity, strong ACID (Atomicity, Consistency, Isolation, Durability) capabilities, as well as support for JSONB which is very useful for storing semi-structured data such as FHIR profiles. Compared to MySQL, PostgreSQL often offers better performance for complex workloads and free enterprise features. For caching and message queueing, Redis version 7.x can be implemented to improve application performance and manage asynchronous process queues, for example for notifications or data synchronization to external systems.

Integration is the core of an integrated SIMRS. Data interoperability standards such as HL7 (Health Level Seven) and FHIR (Fast Healthcare Interoperability Resources) are mandatory. For legacy integration, HL7 v2.5.1 is still often used, especially for older laboratory (LIS) or radiology (RIS) systems. However, the main focus should be on FHIR R4 because this is the standard adopted by the SatuSehat platform from the Ministry of Health. FHIR implementation can leverage libraries such as HAPI FHIR version 6.8 for Java or fhir.js for Node.js, which provide tools for parsing, validating, and generating FHIR resources.

For integration orchestration, an Integration Engine or Enterprise Service Bus (ESB) can be very helpful. A lighter alternative for Type C Hospitals is to build an API Gateway using Node.js version 20 LTS with the Express.js framework, which acts as a bridge between internal modules and external systems. This API Gateway will be responsible for data transformation between internal formats and FHIR/HL7, authentication, and authorization. This entire infrastructure can be deployed using Docker for environment consistency and Docker Compose for simple orchestration. For production environments, using Nginx as a reverse proxy and load balancer is highly recommended for security and performance.

Another consideration is security. All communication must use HTTPS/SSL. Implementation of authentication and authorization based on OAuth2.0 and OpenID Connect is an industry standard that must be applied, especially when interacting with the SatuSehat platform which uses this standard. Data security policies must comply with PMK No. 24 of 2022 concerning Medical Records and the personal data protection regulations in force in Indonesia.

Example of Technical Implementation with Code

To provide a concrete picture, let us look at how a simple API implementation for patient registration and data integration can be done. We will use Laravel 11 for the backend and an example FHIR schema for patient data representation. Assume we have a patients table in PostgreSQL with columns such as id, name, birth_date, gender, address, and nik.

First, we define the Patient model in Laravel:

// app/Models/Patient.php
namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Patient extends Model
{
    use HasFactory;

    protected $fillable = [
        'name',
        'birth_date',
        'gender',
        'address',
        'nik',
        'fhir_id' // Untuk menyimpan ID FHIR jika sudah terdaftar di SatuSehat
    ];

    protected $casts = [
        'birth_date' => 'date',
    ];

    /**
     * Convert patient data to FHIR Patient Resource.
     * @return array
     */
    public function toFhirResource(): array
    {
        return [
            "resourceType" => "Patient",
            "id" => (string) $this->fhir_id, // Gunakan fhir_id jika ada
            "identifier" => [
                [
                    "system" => "http://terminology.kemkes.go.id/CodeSystem/nik",
                    "value" => $this->nik
                ]
            ],
            "name" => [
                [
                    "use" => "official",
                    "text" => $this->name
                ]
            ],
            "gender" => strtolower($this->gender),
            "birthDate" => $this->birth_date->format('Y-m-d'),
            "address" => [
                [
                    "use" => "home",
                    "text" => $this->address
                ]
            ]
        ];
    }
}

This model has a toFhirResource() method that converts patient data from the database into the FHIR Patient Resource R4 format. This is very important for integration with the SatuSehat platform. The fhir_id column will store the patient ID provided by the SatuSehat platform after initial registration. Thus, we maintain consistency between the internal ID and the external ID.

Next, we create a controller to handle new patient registration. This controller will save the patient data to the local database and then attempt to send it to the SatuSehat platform or other external systems through the API Gateway. For this example, we assume there is an external service that receives the FHIR Patient payload.

// app/Http/Controllers/PatientController.php
namespace App\Http\Controllers;

use App\Models\Patient;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
use Illuminate\Validation\ValidationException;

class PatientController extends Controller
{
    public function store(Request $request)
    {
        try {
            $validatedData = $request->validate([
                'name' => 'required|string|max:255',
                'birth_date' => 'required|date',
                'gender' => 'required|in:L,P', // Male, Female
                'address' => 'required|string|max:255',
                'nik' => 'required|string|digits:16|unique:patients,nik',
            ]);

            $patient = Patient::create($validatedData);

            // Send patient data to the SatuSehat platform or API Gateway
            $fhirPayload = $patient->toFhirResource();
            $satuSehatResponse = Http::withHeaders([
                'Authorization' => 'Bearer ' . env('SATUSEHAT_ACCESS_TOKEN'),
                'Content-Type' => 'application/fhir+json'
            ])->post(env('SATUSEHAT_FHIR_BASE_URL') . '/Patient', $fhirPayload);

            if ($satuSehatResponse->successful()) {
                $fhirPatientId = $satuSehatResponse->json('id');
                $patient->fhir_id = $fhirPatientId;
                $patient->save();
                return response()->json([
                    'message' => 'Patient successfully registered and integrated.',
                    'patient' => $patient,
                    'satu_sehat_id' => $fhirPatientId
                ], 201);
            } else {
                // Log error and return internal response without FHIR ID
                \Log::error('Failed to integrate with SatuSehat: ' . $satuSehatResponse->body());
                return response()->json([
                    'message' => 'Patient successfully registered, but failed to integrate with SatuSehat.',
                    'patient' => $patient,
                    'error_satu_sehat' => $satuSehatResponse->json()
                ], 201); // Still 201 because the patient was successfully saved locally
            }

        } catch (ValidationException $e) {
            return response()->json(['errors' => $e->errors()], 422);
        } catch (\Exception $e) {
            \Log::error('Patient registration error: ' . $e->getMessage());
            return response()->json(['message' => 'A server error occurred.'], 500);
        }
    }
}

The code above shows a general workflow: data validation, storage in the local database, and then an attempt to send the data to an external system (in this case, SatuSehat). It is important to handle scenarios where external integration fails so that the internal patient registration process is not interrupted. The use of env() for the token and base URL demonstrates best practice for environment configuration. The SatuSehat access token must be obtained through the appropriate authentication flow (OAuth2.0). The toFhirResource() method on the model is key to creating data that conforms to the FHIR R4 standard, ensuring smooth interoperability. Comprehensive error handling is also included to provide informative responses to API clients, both for validation and server errors.

Example Payload and Error Handling

Understanding the structure of the data payload and how to handle errors is fundamental in SIMRS integration. Let us look at an example of a FHIR Patient Resource payload that will be sent to the SatuSehat platform, as well as possible error scenarios and how to handle them.

The following is an example JSON payload for a FHIR Patient resource, in accordance with the FHIR R4 standard and the Indonesian profile mandated by SatuSehat. This data represents the basic information of a newly registered patient:

{
  "resourceType": "Patient",
  "identifier": [
    {
      "system": "http://terminology.kemkes.go.id/CodeSystem/nik",
      "value": "3273000000000001"
    },
    {
      "system": "http://sys-ids.kemkes.go.id/patient/{{Org_ID}}",
      "value": "P00000001"
    }
  ],
  "name": [
    {
      "use": "official",
      "text": "Budi Santoso",
      "family": "Santoso",
      "given": ["Budi"]
    }
  ],
  "gender": "male",
  "birthDate": "1990-01-15",
  "address": [
    {
      "use": "home",
      "type": "physical",
      "text": "Jl. Merdeka No. 1, RT 001 RW 002, Kel. Sukamaju, Kec. Cempaka, Kota Bandung",
      "line": ["Jl. Merdeka No. 1"],
      "city": "Bandung",
      "postalCode": "40111",
      "country": "ID",
      "extension": [
        {
          "url": "https://fhir.kemkes.go.id/r4/StructureDefinition/Provinsi",
          "valueCode": "32"
        },
        {
          "url": "https://fhir.kemkes.go.id/r4/StructureDefinition/Kota",
          "valueCode": "3273"
        },
        {
          "url": "https://fhir.kemkes.go.id/r4/StructureDefinition/Kecamatan",
          "valueCode": "327301"
        },
        {
          "url": "https://fhir.kemkes.go.id/r4/StructureDefinition/Kelurahan",
          "valueCode": "3273010001"
        }
      ]
    }
  ],
  "maritalStatus": {
    "coding": [
      {
        "system": "http://terminology.hl7.org/CodeSystem/v3-MaritalStatus",
        "code": "M",
        "display": "Married"
      }
    ]
  },
  "telecom": [
    {
      "system": "phone",
      "value": "081234567890",
      "use": "mobile"
    },
    {
      "system": "email",
      "value": "budi.santoso@example.com",
      "use": "work"
    }
  ]
}

The payload above includes NIK, full name, gender, date of birth, full address with administrative region codes (province, city, district, sub-district) according to Kemkes standards, marital status, and contact. It is important to ensure that all system codes (system) and value codes (valueCode, code) comply with the terminology defined by SatuSehat or HL7. A small error in the format or code value can cause data rejection.

One common error scenario is when the data sent is invalid or incomplete. For example, if you try to create a Patient resource without the required gender property. The SatuSehat platform will respond with an HTTP 400 Bad Request error message, with error details in the FHIR OperationOutcome format:

{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "required",
      "details": {
        "text": "The resource Patient must have at least one gender."
      },
      "location": ["/Patient/gender"]
    }
  ]
}

How to Handle Errors:

  1. Client/Internal Server-Side Validation: Before sending the payload to an external system, perform thorough data validation on your application side. Use validation libraries (such as Laravel Validator or Joi in Node.js) to ensure all required fields are filled in and the data format is correct. This reduces the load on the external system and speeds up the error detection process.
  2. Parsing OperationOutcome: If an error occurs from the external API, as in the example above, your application must be able to parse the OperationOutcome response. Take the values of severity, code, and details.text to provide an informative error message to the user or for logging purposes.
  3. Centralized Logging: Every integration failure must be recorded in a centralized logging system (for example, using Sentry, ELK Stack, or even a simple log file). Record the time, the payload sent, the error response received, and the related context. This is crucial for troubleshooting and auditing.
  4. Retry Mechanism: For temporary errors (for example, HTTP 5xx Server Error or timeout), implement a retry mechanism with exponential backoff. This means trying to send the data again after increasingly longer delays. Make sure there is a maximum attempt limit to avoid an infinite loop.
  5. Queueing for Asynchronous Integration: For operations that do not require an immediate real-time response (for example, synchronizing old history data), use a message queue (such as Redis Queue or RabbitMQ). If sending data to the external system fails, the message can be put back into the queue to be processed again later, without hindering the main workflow.
  6. Automatic Notifications: Configure the system to send automatic notifications (email, Slack, Telegram) to the IT or operations team if a significant or continuous series of integration failures occurs. This ensures problems can be handled quickly.

With a robust error handling strategy, hospitals can ensure that data remains consistent and system integrity is maintained, even when facing challenges in complex inter-system communication.

Best Practices for Integrated SIMRS Implementation

  1. Involve All Stakeholders from the Start: Ensure all departments, from medical to finance, are involved in the planning phase. Interview key staff to understand their workflows and identify pain points. Active involvement will ensure the system built is relevant and accepted by users.
  2. Start with Crucial Modules, Then Incrementally: Rather than trying to implement all modules at once, prioritize the most impactful modules such as patient registration and electronic medical records (EMR). Once successful, proceed with other modules gradually (for example, pharmacy, laboratory, radiology). This approach reduces risk and allows learning at each phase.
  3. Choose a Vendor or Development Team with Specific Healthcare Experience: Ensure the vendor or internal team has a proven track record in implementing SIMRS or other healthcare systems. They must understand HL7/FHIR standards, PMK regulations, and the complexity of hospital workflows, not just general technical capabilities.
  4. Prioritize Data Security and Compliance: Patient data is sensitive information. Implement the highest security standards, including data encryption in transit and at rest, role-based access control (RBAC), and comprehensive audit trails. Ensure the system complies with PMK No. 24 of 2022 and other personal data protection regulations. Conduct penetration testing regularly.
  5. Invest in Strong and Reliable Network Infrastructure: An integrated SIMRS is highly dependent on network connectivity. Ensure the hospital has a stable, fast network infrastructure with redundancy (for example, two internet connections from different ISPs). Also prepare a regular data backup system and a Disaster Recovery Plan.
  6. Provide Comprehensive and Continuous Training: End users are the key to success. Hold intensive training sessions tailored to each role (doctors, nurses, registration staff, pharmacists). Provide easily accessible training materials and hold regular refresher sessions. Post-implementation support must also be strong.
  7. Monitor Performance and Conduct Regular Evaluations: After implementation, continuously monitor system performance (for example, response time, availability), user adoption, and operational metrics (for example, patient wait times, billing efficiency). Use dashboards and reports to identify areas for improvement and make necessary adjustments on an ongoing basis.
  8. Plan a Mature Data Migration Strategy: Migrating data from the old system (or manual) to the new SIMRS is one of the biggest challenges. Create a detailed migration plan, including data cleansing, validation, and testing. Consider a phased approach to minimize operational disruption.
  9. Leverage Interoperability Standards (FHIR/HL7): Always prioritize the use of industry standards such as FHIR R4 for integration. This will ensure your system can communicate with other systems in the future, including the SatuSehat platform, and reduce dependence on expensive and difficult-to-maintain custom solutions.

FAQ

  1. How long does it take to implement an integrated SIMRS in a Type C Hospital?
    The implementation time varies greatly depending on the complexity of the hospital, the number of modules integrated, and the availability of resources. For a Type C Hospital starting from scratch or with a very minimal system, this process can take 12 to 24 months, including planning, development/customization, training, and data migration. It is important to have a realistic and flexible schedule.
  2. What is the estimated cost of implementing an integrated SIMRS?
    The implementation cost can range from hundreds of millions to billions of Rupiah. This includes software licenses (if not open source), custom development costs, hardware infrastructure (servers, networks), training, and maintenance costs. Open source solutions such as OpenMRS or Laravel-based HIS can reduce license costs, but still require significant investment in customization and implementation.
  3. Are Type C Hospitals required to integrate SIMRS with SatuSehat?
    Yes, based on the Minister of Health Regulation (PMK) No. 24 of 2022, all healthcare facilities, including Type C Hospitals, are required to implement Electronic Medical Records (RME) and integrate with the SatuSehat platform. The deadline for RME implementation is July 31, 2023, and integration with SatuSehat is an integral part of that compliance.
  4. How can patient data be kept secure during and after implementation?
    Data security is a top priority. Ensure the implementation uses encrypted communication protocols (HTTPS/SSL), strict role-based access control (RBAC), and data encryption at rest. Conduct regular log audits, security testing (penetration testing), and comply with data protection standards as stipulated in the PMK and the Personal Data Protection Law.
  5. What are the biggest challenges in implementing an integrated SIMRS in a Type C Hospital?
    The main challenges include limited budget and IT resources, staff resistance to change, the complexity of migrating data from legacy systems, and ensuring interoperability with various external systems (BPJS, SatuSehat, LIS/RIS). Effective change management and top management support are crucial to overcoming these challenges.
  6. Can an integrated SIMRS be implemented in stages?
    It is highly recommended to implement SIMRS in stages (phases). Start with the core modules that have the greatest impact, such as registration and RME. Once those modules are stable and accepted by users, proceed with other modules such as pharmacy, laboratory, and billing. This approach minimizes risk, allows for adjustments, and facilitates staff adaptation.
  7. What is the role of the operations manager in this SIMRS implementation project?
    The operations manager plays a central role in ensuring the project aligns with daily operational needs. They are responsible for identifying workflows that need to be automated, coordinating cross-departmental teams, ensuring resource availability, managing staff expectations, and monitoring project progress from an operational perspective. The active involvement of the operations manager is decisive for the success of the adaptation and utilization of the new system.

Implementing an integrated SIMRS in a Type C Hospital is a strategic investment that will shape the future of your healthcare services. It is not just about software, but about process transformation, improving service quality, and creating a more efficient work environment. With careful planning, the right technology choices such as Laravel 11 and FHIR R4, and a commitment to best practices, your hospital can achieve significant operational efficiency and compliance with applicable regulations. If you need further guidance, in-depth consultation, or technical support in designing and implementing a SIMRS solution that suits your hospital's specific needs, do not hesitate to contact us. Our team, with extensive experience in SIMRS, BPJS/SatuSehat integration, and full-stack development, is ready to help you realize a modern and responsive digital hospital.

Related solutions by PT Pilar Inovasi Informatika (Pilar Inovasi IT products): SIMRS (Hospital Information System) BPJS & SatuSehat Integration. Need a free consultation?

Terakhir diperbarui 18 Oct 2026

Komentar

Komentar ditinjau sebelum tampil.

Belum ada komentar. Jadilah yang pertama!