E-Prescription & Electronic Prescription Regulations in Indonesia: A Practical Compliance Guide
T
Kembali ke Blog

E-Prescription & Electronic Prescription Regulations in Indonesia: A Practical Compliance Guide

Regulasi & Compliance
Tim Pilar Inovasi 31 Aug 2026 6 min baca 4,021 kata 153
This article provides a comprehensive examination of e-prescription and electronic prescription regulations in Indonesia, particularly Ministry of Health Regulation No. 24 of 2022, along with practical and actionable technical implementation guidance. Learn how to integrate your system with the Satu

Digital transformation in Indonesia's health sector is no longer just a discourse, but a necessity driven by regulation and the need for efficiency and patient data security. One of its main pillars is the implementation of e-prescriptions and electronic prescriptions. Many healthcare facilities (fasyankes), from large hospitals to independent clinics, are still grappling with the complexity of regulations and technical challenges in adopting this system. The manual prescription process is prone to writing errors, duplication, or even forgery, which leads to patient safety risks and financial losses. In addition, the fragmentation of prescription data complicates the analysis of prescribing patterns and drug monitoring. With the mandate from the Ministry of Health through the SatuSehat Platform, compliance with e-prescription standards is crucial. This article will guide you practically, in depth, and actionably regarding e-prescription regulations in Indonesia, technical implementation details using the FHIR R4 standard, runnable code examples, as well as error handling strategies and best practices to ensure your system is not only compliant but also optimal. We will discuss every aspect in detail, from legal foundations to implementation tips relevant for SIMRS and SIM Klinik.

Basic Concepts of E-Prescriptions and Regulations in Indonesia

An e-prescription or electronic prescription is a drug prescription document created, managed, and transmitted electronically by a doctor or other authorized health worker, replacing conventional paper-based prescriptions. This is not merely the digitization of a form, but an ecosystem involving validation, authentication, and secure data transmission among relevant parties, such as doctors, patients, pharmacies, and drug distributors. In Indonesia, the main legal basis governing this is Minister of Health Regulation (PMK) Number 24 of 2022 concerning Medical Records. This PMK explicitly requires all healthcare facilities to maintain electronic medical records, including electronic prescriptions.

Several crucial points of PMK No. 24 of 2022 regarding e-prescriptions include the obligation for healthcare facilities to store electronic medical records in an integrated and secure manner, as well as data interoperability that must follow standards set by the Ministry of Health. This means your e-prescription system cannot stand alone; it must be able to communicate and exchange data with other systems, especially with the SatuSehat Platform. SatuSehat becomes the central hub for health data exchange in Indonesia, including prescription data. Compliance with this PMK is not only a matter of legality, but also about improving service quality and patient safety. With e-prescriptions, the risk of transcription errors is minimized, prescription information availability becomes real-time, and the audit trail (traceability) of each prescription can be accurately monitored from prescribing to drug dispensing.

The benefits of adopting e-prescriptions are very diverse. In terms of operational efficiency, the prescribing process becomes faster and reduces paper usage. In terms of security, e-prescriptions can be equipped with valid electronic signatures, minimizing forgery and ensuring prescription authenticity. Prescription data accuracy increases drastically because the system can perform automatic validation of dosages, drug interactions, or patient allergies recorded in the medical record. Prescription tracing also becomes easier, enabling monitoring of patient compliance and identification of problems in the drug supply chain. As a concrete example, imagine a patient receives a diagnosis at clinic A, then their prescription is immediately sent electronically to pharmacy B. Pharmacy B can directly verify the prescription through the SatuSehat Platform, prepare the medication, and dispense it to the patient without the patient needing to carry a paper prescription sheet that is prone to being lost or damaged. This process saves time, reduces queues, and improves the overall patient experience.

The government targets all healthcare facilities to be integrated with the SatuSehat Platform and implement electronic medical records, including e-prescriptions, by the end of 2023. Although this target is challenging, healthcare facilities that are proactive in preparation will gain a competitive advantage and ensure long-term regulatory compliance. Effective e-prescription implementation requires not only technology investment, but also business process changes and human resource training. However, this investment will pay off with significant improvements in efficiency, security, and service quality. Understanding the regulations is the first step; the next step is proper technical implementation that complies with standards.

Technical Implementation Details and Standardization

Standard-compliant e-prescription implementation requires a deep understanding of system architecture and applicable interoperability standards. Essentially, the e-prescription system at your healthcare facility (SIMRS or SIM Klinik) must be able to communicate with the SatuSehat Platform, which will then facilitate data exchange with pharmacies or other relevant systems. The architecture generally involves SIMRS/SIM Klinik as the data source, a bridging or integration module, the SatuSehat Platform as the data exchange hub, and the pharmacy information system (SIAp) as the prescription recipient.

The interoperability standard mandated by the Ministry of Health is Fast Healthcare Interoperability Resources (FHIR) Release 4 (R4). FHIR is a standard developed by HL7 International for the exchange of electronic health data. FHIR R4 provides a flexible and modular framework, enabling the representation of health data in the form of 'resources' such as Patient, Practitioner, Organization, Medication, MedicationRequest, and MedicationDispense. For the e-prescription context, the main resources you will use are MedicationRequest (for prescribing by doctors) and MedicationDispense (for recording the dispensing of medication by pharmacies). It is also important to understand the specific Indonesian FHIR profiles, which are an adaptation of the global FHIR standard for the Indonesian local context. These profiles define mandatory data elements, value sets, and other constraints that must be complied with.

In the context of backend development, commonly used technologies include the PHP Laravel framework (for example, Laravel 11.x) for building robust and structured APIs. Databases such as PostgreSQL 16 are highly recommended due to their scalability and reliability in handling large volumes of data. To interact with FHIR, you can take advantage of available FHIR libraries. If you use Java, HAPI FHIR (version 6.8 and above) is a popular choice. For PHP, there are several community libraries or you can build a custom FHIR client using an HTTP client such as Guzzle. It is important to ensure that the library you use supports FHIR R4 and can be adapted to the Indonesian FHIR profiles.

The authentication process to the SatuSehat Platform generally uses the OAuth2 standard with the Client Credentials Grant. This involves exchanging your client_id and client_secret with SatuSehat to obtain an access token. This access token must then be included in every API request to SatuSehat as a Bearer Token in the Authorization header. Make sure you manage this access token securely and refresh the token according to SatuSehat's policy (it usually has a certain validity period, for example 1 hour). The Ministry of Health provides Sandbox and Production environments for SatuSehat. Always start development and testing in the Sandbox environment to validate your integration before moving to Production. The endpoint URLs for Sandbox and Production will differ, so make sure your environment configuration is correct.

Integration with SatuSehat requires highly precise data handling. Every data element in the FHIR resource, such as patient ID (nik), doctor ID (nik), medication code (kode_bpom or kode_dosis), and other prescription details, must comply with the established standards. A small error in data format or validation can cause rejection by the SatuSehat API. Therefore, validating data on your application side before sending it to SatuSehat is a crucial step to minimize integration failures. Using the correct identifier system for each data element is also very important, for example https://fhir.kemkes.go.id/id/nik for patient NIK or https://fhir.kemkes.go.id/id/nakes for health worker NIK.

Example of E-Prescription FHIR Implementation Code in Laravel

This section will present a concrete example of how you can build and send the MedicationRequest resource to the SatuSehat Platform using PHP with the Laravel framework. We will use the Guzzle HTTP client for API interaction and a JSON structure according to the FHIR R4 standard with Indonesian profiles. It is assumed that you already have an access token from SatuSehat.

First, let's look at how the MedicationRequest data structure looks in JSON form in PHP. The following example shows the creation of a minimalist but standards-compliant MedicationRequest object for a simple prescription. Note the use of resourceType, id, status, and references to other resources such as patient, doctor, and organization.

<?phpnamespace AppHttpControllers;use IlluminateHttpRequest;use IlluminateSupportFacadesHttp;class EResepController extends Controller{    public function createMedicationRequest(HttpRequest $request)    {        // Assume you already have patient, doctor, and medication data        // from your SIMRS/SIM Klinik form input or database.        $patientId = '1000000000000001'; // Patient NIK        $practitionerId = '1000000000000002'; // Doctor NIK        $organizationId = '10000000'; // Fasyankes Organization ID (e.g., from SatuSehat)        $medicationCode = '1234567890'; // BPOM/Other Medication Code        $medicationDisplay = 'Paracetamol 500mg Tablet';        $quantityValue = 10;        $quantityUnit = 'Tablet';        $dosageText = '1 Tablet 3x a day after meals';        $routeCode = '260548002'; // SNOMED CT code for Oral Route        $routeDisplay = 'Oral';        $requesterId = '1000000000000002'; // NIK of the prescribing doctor        $requesterDisplay = 'Dr. Budi Santoso';        $encounterId = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'; // Patient Encounter/Visit ID        $identifier = 'MR-'.uniqid(); // Unique identifier for this MedicationRequest        $medicationRequest = [            'resourceType' => 'MedicationRequest',            'id' => $identifier,            'identifier' => [                [                    'system' => 'http://sys-ids.kemkes.go.id/medicationrequest/identifier',                    'value' => $identifier                ]            ],            'status' => 'active',            'intent' => 'order',            'medicationReference' => [                'reference' => 'Medication/'.md5($medicationCode), // Or directly the medication code if there is a registered Medication resource                'display' => $medicationDisplay            ],            'subject' => [                'reference' => 'Patient/'.$patientId,                'display' => 'Patient NIK: '.$patientId            ],            'encounter' => [                'reference' => 'Encounter/'.$encounterId,                'display' => 'Encounter ID: '.$encounterId            ],            'authoredOn' => now()->toISOString(),            'requester' => [                'reference' => 'Practitioner/'.$practitionerId,                'display' => $requesterDisplay            ],            'dosageInstruction' => [                [                    'text' => $dosageText,                    'timing' => [                        'repeat' => [                            'frequency' => 3,                            'period' => 1,                            'periodUnit' => 'd'                        ]                    ],                    'route' => [                        'coding' => [                            [                                'system' => 'http://snomed.info/sct',                                'code' => $routeCode,                                'display' => $routeDisplay                            ]                        ]                    ],                    'doseAndRate' => [                        [                            'type' => [                                'coding' => [                                    [                                        'system' => 'http://terminology.hl7.org/CodeSystem/dose-rate-type',                                        'code' => 'ordered',                                        'display' => 'Ordered'                                    ]                                ]                            ],                            'doseQuantity' => [                                'value' => $quantityValue,                                'unit' => $quantityUnit,                                'system' => 'http://unitsofmeasure.org',                                'code' => $quantityUnit                            ]                        ]                    ]                ]            ],            'dispenseRequest' => [                'quantity' => [                    'value' => $quantityValue,                    'unit' => $quantityUnit,                    'system' => 'http://unitsofmeasure.org',                    'code' => $quantityUnit                ]            ]        ];        // Continue with sending to SatuSehat API (Code Block 2)        // ...        return response()->json($medicationRequest);    }}

Explanation of Code Block 1: The code above initializes a PHP array that represents the resource MedicationRequest according to the FHIR R4 standard. We fill in important elements such as resourceType, unique id, status (for example 'active'), intent ('order'), and references to the patient (subject), doctor (requester), and visit (encounter) using existing IDs. The medicationReference section can refer to a Medication resource that is already registered in SatuSehat or only use display if the medication does not yet have a specific FHIR resource. dosageInstruction is a crucial part that explains how to use the medication, including instruction text, frequency, route, and dose. Make sure to use SNOMED CT codes for the route and standard units of measure.

Next, after the MedicationRequest resource has been successfully created, the next step is to send it to the SatuSehat Platform. You will need a valid access token that you obtained earlier through the OAuth2 authentication process. The example below shows how to send this data using the Guzzle HTTP client.

<?phpnamespace AppHttpControllers;use IlluminateHttpRequest;use IlluminateSupportFacadesHttp;class EResepController extends Controller{    // ... (Code Block 1 above)    public function sendMedicationRequest(HttpRequest $request)    {        // Assume $medicationRequest has been built as in Code Block 1        // ...        $accessToken = 'YOUR_SATUSEHAT_ACCESS_TOKEN'; // Replace with your actual token        $satuSehatBaseUrl = 'https://api-satusehat.kemkes.go.id/fhir-r4/v1'; // Example Production URL        // For Sandbox: 'https://api-satusehat-stg.kemkes.go.id/fhir-r4/v1'        $patientId = '1000000000000001'; // Patient NIK (must match the subject in MedicationRequest)        $practitionerId = '1000000000000002'; // Doctor NIK (must match the requester in MedicationRequest)        $organizationId = '10000000'; // Healthcare Facility Organization ID (must match your facility)        $medicationCode = '1234567890'; // BPOM/Other Medication Code        $medicationDisplay = 'Paracetamol 500mg Tablet';        $quantityValue = 10;        $quantityUnit = 'Tablet';        $dosageText = '1 Tablet 3x a day after meals';        $routeCode = '260548002'; // SNOMED CT code for Oral Route        $routeDisplay = 'Oral';        $requesterId = '1000000000000002'; // NIK of the prescribing doctor        $requesterDisplay = 'Dr. Budi Santoso';        $encounterId = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'; // Patient Encounter/Visit ID        $identifier = 'MR-'.uniqid(); // Unique identifier for this MedicationRequest        $medicationRequest = [            'resourceType' => 'MedicationRequest',            'id' => $identifier,            'identifier' => [                [                    'system' => 'http://sys-ids.kemkes.go.id/medicationrequest/identifier',                    'value' => $identifier                ]            ],            'status' => 'active',            'intent' => 'order',            'medicationReference' => [                'reference' => 'Medication/'.md5($medicationCode),                'display' => $medicationDisplay            ],            'subject' => [                'reference' => 'Patient/'.$patientId,                'display' => 'Patient NIK: '.$patientId            ],            'encounter' => [                'reference' => 'Encounter/'.$encounterId,                'display' => 'Encounter ID: '.$encounterId            ],            'authoredOn' => now()->toISOString(),            'requester' => [                'reference' => 'Practitioner/'.$practitionerId,                'display' => $requesterDisplay            ],            'dosageInstruction' => [                [                    'text' => $dosageText,                    'timing' => [                        'repeat' => [                            'frequency' => 3,                            'period' => 1,                            'periodUnit' => 'd'                        ]                    ],                    'route' => [                        'coding' => [                            [                                'system' => 'http://snomed.info/sct',                                'code' => $routeCode,                                'display' => $routeDisplay                            ]                        ]                    ],                    'doseAndRate' => [                        [                            'type' => [                                'coding' => [                                    [                                        'system' => 'http://terminology.hl7.org/CodeSystem/dose-rate-type',                                        'code' => 'ordered',                                        'display' => 'Ordered'                                    ]                                ]                            ],                            'doseQuantity' => [                                'value' => $quantityValue,                                'unit' => $quantityUnit,                                'system' => 'http://unitsofmeasure.org',                                'code' => $quantityUnit                            ]                        ]                    ]                ]            ],            'dispenseRequest' => [                'quantity' => [                    'value' => $quantityValue,                    'unit' => $quantityUnit,                    'system' => 'http://unitsofmeasure.org',                    'code' => $quantityUnit                ]            ]        ];        try {            $response = Http::withHeaders([                'Authorization' => 'Bearer ' . $accessToken,                'Content-Type' => 'application/fhir+json'            ])->post($satuSehatBaseUrl . '/MedicationRequest', $medicationRequest);            if ($response->successful()) {                return response()->json([                    'message' => 'MedicationRequest sent successfully!',                    'data' => $response->json()                ], 201);            } else {                return response()->json([                    'message' => 'Failed to send MedicationRequest.',                    'error' => $response->json()                ], $response->status());            }        } catch (Exception $e) {            return response()->json([                'message' => 'An error occurred while sending MedicationRequest.',                'error' => $e->getMessage()            ], 500);        }    }}

Explanation of Code Block 2: The sendMedicationRequest function is responsible for sending the MedicationRequest data that has been created to the SatuSehat endpoint. We use Http::withHeaders from Laravel to include the access token and set the Content-Type to application/fhir+json, which is the standard format for FHIR communication. The POST request is sent to the endpoint /MedicationRequest. It is important to handle the response from the SatuSehat API, whether successful (2xx status code) or failed (4xx or 5xx status code). Error messages from SatuSehat are often very informative and can help in the debugging process. Always use robust error handling and log every transaction and response received.

Payload Structure and Error Handling

Understanding the correct payload structure and how to handle errors is the key to successfully integrating with the SatuSehat Platform. The FHIR R4 payload for MedicationRequest is a complex JSON object, but each element has a specific meaning and must be validated carefully. Below is an example of a more complete and realistic MedicationRequest payload, in accordance with the Indonesian FHIR profile, which you can use as a reference.

{  "resourceType": "MedicationRequest",  "id": "MR-20231027-001",  "identifier": [    {      "system": "http://sys-ids.kemkes.go.id/medicationrequest/identifier",      "value": "MR-20231027-001"    }  ],  "status": "active",  "intent": "order",  "category": [    {      "coding": [        {          "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category",          "code": "outpatient",          "display": "Outpatient"        }      ]    }  ],  "medicationReference": {    "reference": "Medication/33451000004183",    "display": "Amoxicillin 500mg Tablet"  },  "subject": {    "reference": "Patient/1000000000000001",    "display": "Budi Santoso"  },  "encounter": {    "reference": "Encounter/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",    "display": "Outpatient Visit Oct 27, 2023"  },  "authoredOn": "2023-10-27T10:00:00+07:00",  "requester": {    "reference": "Practitioner/1000000000000002",    "display": "Dr. Siti Aminah"  },  "reasonCode": [    {      "coding": [        {          "system": "http://snomed.info/sct",          "code": "162981000119106",          "display": "Community acquired pneumonia (disorder)"        }      ]    }  ],  "dosageInstruction": [    {      "sequence": 1,      "text": "Take 1 tablet 3 times a day after meals for 5 days",      "timing": {        "repeat": {          "frequency": 3,          "period": 1,          "periodUnit": "d",          "boundsDuration": {            "value": 5,            "unit": "d",            "system": "http://unitsofmeasure.org",            "code": "d"          }        }      },      "route": {        "coding": [          {            "system": "http://snomed.info/sct",            "code": "260548002",            "display": "Oral"          }        ]      },      "doseAndRate": [        {          "type": {            "coding": [              {                "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type",                "code": "ordered",                "display": "Ordered"              }            ]          },          "doseQuantity": {            "value": 1,            "unit": "Tablet",            "system": "http://unitsofmeasure.org",            "code": "Tab"          }        }      ]    }  ],  "dispenseRequest": {    "initialFill": {      "quantity": {        "value": 15,        "unit": "Tablet",        "system": "http://unitsofmeasure.org",        "code": "Tab"      }    },    "numberOfRepeatsAllowed": 0,    "expectedSupplyDuration": {      "value": 5,      "unit": "d",      "system": "http://unitsofmeasure.org",      "code": "d"    }  }}

The payload above includes details such as the prescription category (outpatient), the reason for prescribing (reasonCode with SNOMED CT), more complete dosage instructions including the treatment duration (boundsDuration), and the dispensing request details (dispenseRequest) including the initial quantity and the number of allowed repeats. Each reference such as Medication/ID, Patient/ID, Encounter/ID, and Practitioner/ID must point to a resource that is already registered in SatuSehat or at least has the correct format.

When an error occurs, the SatuSehat API will return a response with an HTTP 4xx or 5xx status code, along with an OperationOutcome object that explains the error. Below is an example of a common error message:

{  "resourceType": "OperationOutcome",  "issue": [    {      "severity": "error",      "code": "structure",      "details": {        "text": "Element 'Patient.id' with value 'INVALID_NIK' does not match the regex '^[0-9]{16}$'."      },      "location": [        "Patient.id"      ]    }  ]}

The error example above shows that the patient ID sent does not match the expected 16-digit NIK format. Effective error handling involves several strategies:

  1. Pre-send Data Validation: Perform data validation on your application side before sending the payload to SatuSehat. This includes validating the NIK format, SNOMED CT codes, drug codes, and completeness of mandatory elements. For example, use regular expressions (regex) for NIK or a lookup table for SNOMED CT codes.
  2. Error Response Logging: Whenever you receive a non-2xx response from SatuSehat, log the entire response object, including the HTTP status code and the OperationOutcome body. This information is invaluable for debugging and auditing.
  3. Retry Mechanism: For transient errors (e.g., 5xx status codes from the SatuSehat server or 429 Too Many Requests), implement a retry mechanism with exponential backoff. That is, retry sending after increasingly longer delays (e.g., 1 second, 2 seconds, 4 seconds, etc.). Set a limit on the number of retries to prevent infinite loops.
  4. Administrator Notification: If persistent or critical errors occur (e.g., data validation errors indicating a problem in your application), send automatic notifications to the system administrator so they can be addressed promptly.
  5. User Feedback: Provide informative error messages to end users (doctors or pharmacy staff) if prescription submission fails, so they can correct the data or try again. Avoid confusing technical messages.
  6. Continuous Monitoring: Use a monitoring system (e.g., Prometheus with Grafana) to track the success and failure rates of API submissions to SatuSehat. Anomalies in error rates can indicate issues that need immediate attention.

By implementing these strategies, you can build a more resilient and manageable e-prescription system, minimizing the impact of failures on your healthcare facility's operations.

Best Practices for E-Prescription Implementation

  1. Ensure Full Regulatory Compliance: Always refer to PMK No. 24 of 2022 on Medical Records and the technical standards from the Ministry of Health for the SatuSehat Platform. These regulations are the primary foundation that must be complied with. Regular internal audits are highly recommended to ensure your system remains in line with possible regulatory changes.
  2. Prioritize Data Security and Patient Privacy: Implement data encryption both in transit (TLS 1.2/1.3) and at rest (at rest encryption). Ensure strict role-based access control (RBAC), so only authorized parties can access prescription data. Compliance with the Personal Data Protection Law (UU PDP) is mandatory.
  3. Perform Robust Data Validation: Apply comprehensive validation on the application side (client-side and server-side) for every data element before sending it to SatuSehat. This includes NIK format, drug codes, standard codes (SNOMED CT, LOINC), and completeness of mandatory FHIR elements. Early validation can prevent many errors from the SatuSehat API.
  4. Design Comprehensive Error Handling and Logging: Every API transaction to SatuSehat, whether successful or failed, must be logged in detail. Logs must include the request payload, response payload, HTTP status code, and timestamp. Implement an automatic notification system for critical errors and a retry mechanism with exponential backoff for transient errors.
  5. Extensive Testing in a Sandbox Environment: Utilize the SatuSehat Sandbox environment to perform thorough functional and non-functional testing. Test normal scenarios, error scenarios, and volume testing. Ensure all relevant Indonesian FHIR profiles have been correctly implemented.
  6. Focus on User Experience (UX) for Doctors and Pharmacists: Although technical aspects are important, do not neglect ease of use. The interface must be intuitive, minimize clicks, and provide clear information. Adequate training for doctors and pharmacists is key to successful adoption. Consider integrating features such as prescription history or drug interactions directly in the prescribing interface.
  7. Plan for Scalability and System Performance: As the number of patients and prescriptions increases, your e-prescription system must be able to handle increased workload. Efficient database design, use of caching, and microservices architecture can help ensure scalability. Perform stress testing to identify potential bottlenecks.
  8. Implement Continuous Monitoring and Auditing: Once the system is running, implement a monitoring system that tracks API performance, transaction success rates, and resource usage. Conduct regular log audits to detect anomalies or potential security breaches.

FAQ Regarding E-Prescription and Electronic Prescription Regulations

1. What is the SatuSehat Platform and how does it relate to e-prescriptions?

The SatuSehat Platform is a national digital health ecosystem developed by the Indonesian Ministry of Health. This platform serves as a data exchange hub to integrate electronic medical record data from all healthcare facilities in Indonesia. Regarding e-prescriptions, SatuSehat acts as the main intermediary for exchanging electronic prescription data between healthcare facilities (SIMRS/SIM Klinik) and pharmacies, ensuring interoperability and common data standards according to FHIR R4.

2. Are all healthcare facilities required to implement e-prescriptions?

Yes, in accordance with PMK No. 24 of 2022 concerning Medical Records, all healthcare facilities in Indonesia are required to implement electronic medical records, which include electronic prescriptions. This obligation applies to hospitals, clinics, community health centers, and independent practices. The compliance deadline set by the Ministry of Health is the end of 2023, although full implementation may take longer for some healthcare facilities.

3. What if the doctor does not have internet access or there is a network disruption?

In emergency situations or when internet access is unavailable, healthcare facilities must have a fallback mechanism or standard operating procedure (SOP) for manual prescribing. However, this manual prescription must be immediately digitized and uploaded to the e-prescription system once the connection is restored, to ensure all prescription data is recorded electronically. It is important to ensure that your e-prescription system has offline mode capability or temporary storage for data to be synchronized later.

4. What is the difference between e-prescription and electronic prescription?

In general, the terms e-prescription and electronic prescription are often used interchangeably and refer to the same concept, namely prescriptions that are created and managed digitally. There is no significant difference in the context of regulation in Indonesia. Both emphasize a computerized prescribing process, reducing paper use, and improving the efficiency and accuracy of prescribed medication information.

5. How is patient data security guaranteed in the e-prescription system?

Patient data security is a top priority. A compliant e-prescription system must implement strict security standards, including data encryption during transmission (using TLS/SSL) and storage, role-based access control (RBAC), and electronic signatures for prescription authentication. In addition, compliance with the Personal Data Protection Law (UU PDP) is required to protect the confidentiality and integrity of patient health information from unauthorized access or misuse.

6. What are the minimum technical requirements for integrating e-prescription with SatuSehat?

The minimum technical requirements include the ability of the healthcare facility information system (SIMRS/SIM Klinik) to generate and consume FHIR R4 resources, especially MedicationRequest. You also need stable internet connectivity, implementation of OAuth2 authentication to obtain an access token to SatuSehat, and the ability to perform data validation according to the Indonesian FHIR profile. Understanding HTTP methods (POST, GET) and handling API responses is also essential. It is recommended to use the latest versions of software and libraries to ensure compatibility and security.

7. How can the availability of electronically prescribed medications be ensured?

A well-integrated e-prescription system will allow pharmacies to view prescriptions in real-time. With more advanced integration, pharmacies can even inform the healthcare facility or patient about medication stock availability. This requires an accurate medication inventory module in the pharmacy and the system's ability to exchange medication availability information. Two-way integration with the pharmacy information system (SIAp) is very important to ensure efficiency and transparency in the medication supply chain.

Digital transformation in the health sector, especially the implementation of e-prescriptions and electronic prescriptions, is a progressive step that is unavoidable. Compliance with PMK No. 24 of 2022 and integration with the SatuSehat Platform using the FHIR R4 standard is not only an obligation, but a strategic investment to improve operational efficiency, data accuracy, and most importantly, patient safety. With this practical guide, it is hoped that healthcare facility managers, IT managers, and developers can have a clear roadmap in navigating the complexity of regulations and technical implementation. Building a robust, secure, and user-friendly system will bring long-term benefits to the entire healthcare ecosystem. If you need expert assistance in designing, developing, or integrating SIMRS, SIM Klinik, or specialized solutions for SatuSehat compliance, the Nugroho Setiawan team with extensive experience in this field is ready to be your trusted partner. Visit our website for a free consultation and demonstration of solutions that can be tailored to the specific needs of your healthcare facility.

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

Terakhir diperbarui 18 Oct 2026

Komentar

Komentar ditinjau sebelum tampil.

Belum ada komentar. Jadilah yang pertama!