Source Code

;; Medical Records System
;; Secure patient medical records

(define-map records
  principal
  {
    record-hash: (buff 32),
    provider: principal,
    timestamp: uint,
    access-granted: (list 10 principal)
  }
)

(define-read-only (get-record (patient principal))
  (map-get? records patient)
)

(define-public (create-record (record-hash (buff 32)))
  (ok (map-set records tx-sender {
    record-hash: record-hash,
    provider: tx-sender,
    timestamp: block-height,
    access-granted: (list)
  }))
)

(define-public (grant-access (accessor principal))
  (let ((record (unwrap! (map-get? records tx-sender) (err u100))))
    (ok (map-set records tx-sender (merge record {
      access-granted: (unwrap! (as-max-len? (append (get access-granted record) accessor) u10) (err u101))
    })))
  )
)

Functions (3)

FunctionAccessArgs
get-recordread-onlypatient: principal
create-recordpublicrecord-hash: (buff 32
grant-accesspublicaccessor: principal