[613] | 1 | DGROUT ;DJH/AMA - ROM UTILITIES ; 28 Apr 2004 12:24 PM
|
---|
| 2 | ;;5.3;Registration;**533,572**;Aug 13, 1993
|
---|
| 3 | ;
|
---|
| 4 | Q ;no direct entry
|
---|
| 5 | ;
|
---|
| 6 | MPIOK(DGDFN,DGICN,DGLST) ;return non-local LST and ICN
|
---|
| 7 | ;This function retrieves an ICN given a pointer to the PATIENT (#2)
|
---|
| 8 | ;file for a patient. When the ICN is not local and the local site
|
---|
| 9 | ;is not the Last Site Treated (LST), the LST is retrieved as a
|
---|
| 10 | ;pointer to the INSTITUTION (#4) file.
|
---|
| 11 | ; Called from SNDQRY^DGROHLR
|
---|
| 12 | ;
|
---|
| 13 | ; Supported DBIA #2701: The supported DBIA is used to access MPI
|
---|
| 14 | ; APIs to retrieve ICN, determine if ICN
|
---|
| 15 | ; is local and if site is LST.
|
---|
| 16 | ; Supported DBIA #2702: The supported DBIA is used to retrieve the
|
---|
| 17 | ; MPI node from the PATIENT (#2) file.
|
---|
| 18 | ;
|
---|
| 19 | ; Input:
|
---|
| 20 | ; DGDFN - IEN of patient in PATIENT (#2) file
|
---|
| 21 | ; DGICN - passed by reference to contain national ICN
|
---|
| 22 | ; DGLST - passed by reference to contain LST
|
---|
| 23 | ;
|
---|
| 24 | ; Output:
|
---|
| 25 | ; Function Value - 1 on national ICN and non-local LST, 0 on failure
|
---|
| 26 | ; DGICN - Patient's Integrated Control Number
|
---|
| 27 | ; DGLST - Pointer to INSTITUTION (#4) file for LST if LST
|
---|
| 28 | ; is not local, undefined otherwise.
|
---|
| 29 | ;
|
---|
| 30 | N DGRSLT
|
---|
| 31 | S DGRSLT=0
|
---|
| 32 | I $G(DGDFN)>0,$D(^DPT(DGDFN,"MPI")) D
|
---|
| 33 | . S DGICN=$$GETICN^MPIF001(DGDFN)
|
---|
| 34 | . ;
|
---|
| 35 | . ;ICN must be valid
|
---|
| 36 | . I (DGICN'>0) D Q
|
---|
| 37 | . . S DGMSG(1)=" "
|
---|
| 38 | . . S DGMSG(2)="The query to the LST has been terminated because required"
|
---|
| 39 | . . S DGMSG(3)="information was not provided by the MPI."
|
---|
| 40 | . . D EN^DDIOL(.DGMSG) R A:5
|
---|
| 41 | . ;
|
---|
| 42 | . ;ICN must not be local
|
---|
| 43 | . I $$IFLOCAL^MPIF001(DGDFN) D Q
|
---|
| 44 | . . S DGMSG(1)=" "
|
---|
| 45 | . . S DGMSG(2)="The query to the LST has been terminated because required"
|
---|
| 46 | . . S DGMSG(3)="information was not provided by the MPI."
|
---|
| 47 | . . D EN^DDIOL(.DGMSG) R A:5
|
---|
| 48 | . ;
|
---|
| 49 | . ;Get LST from Treating Facility List
|
---|
| 50 | . S DGLST=$$TFL(DGDFN)
|
---|
| 51 | . ;
|
---|
| 52 | . I (DGLST'>0) D Q
|
---|
| 53 | . . S DGMSG(1)=" "
|
---|
| 54 | . . S DGMSG(2)="The query to the LST has been terminated because required"
|
---|
| 55 | . . S DGMSG(3)="information was not provided by the MPI."
|
---|
| 56 | . . D EN^DDIOL(.DGMSG) R A:5
|
---|
| 57 | . ;
|
---|
| 58 | . S DGRSLT=1
|
---|
| 59 | Q DGRSLT
|
---|
| 60 | ;
|
---|
| 61 | TFL(DFN) ;
|
---|
| 62 | ;Retrieve Last Site Treated from the Treating Facility List ^DGCN(391.91
|
---|
| 63 | ;This function will retrieve the most recent treatment site
|
---|
| 64 | ;from the Treating Facility List (TFL) received from the MPI
|
---|
| 65 | ;
|
---|
| 66 | ; Input:
|
---|
| 67 | ; DFN - (required) IEN of patient in PATIENT (#2) File
|
---|
| 68 | ;
|
---|
| 69 | ; Output:
|
---|
| 70 | ; Function value - Facility IEN on success, 0 on failure
|
---|
| 71 | ;
|
---|
| 72 | N RSLT ;Result returned from call
|
---|
| 73 | N QFL ;Quit flag
|
---|
| 74 | N TFLDR ;Treating Facility List Record Number
|
---|
| 75 | N DATA ;Array of TFL data
|
---|
| 76 | N RDATA ;Array of Treating Facilities arranged by date and TFLDR
|
---|
| 77 | N DATE,TFL
|
---|
| 78 | ;
|
---|
| 79 | S (RSLT,QFL)=0
|
---|
| 80 | ;Check to see if there is a TFL for this patient.
|
---|
| 81 | ;If not exit and return -1 to call.
|
---|
| 82 | I '$D(^DGCN(391.91,"B",DFN)) G EXITTFL
|
---|
| 83 | ;
|
---|
| 84 | ;Go through the "B" index of TFL file and retrieve
|
---|
| 85 | ;record numbers for the patient DFN.
|
---|
| 86 | S TFLDR="" F S TFLDR=$O(^DGCN(391.91,"B",DFN,TFLDR)) Q:TFLDR="" D
|
---|
| 87 | . ;Retrieve data from record and store in DATA array by record number.
|
---|
| 88 | . S DATA(TFLDR)=$G(^DGCN(391.91,TFLDR,0))
|
---|
| 89 | . ;Extract DATE from 3rd piece of record
|
---|
| 90 | . S DATE=$P(DATA(TFLDR),"^",3)
|
---|
| 91 | . ;Quit if DATE is null
|
---|
| 92 | . Q:DATE=""
|
---|
| 93 | . ;Get Station Number using the facility pointer to the Institution (#4) file
|
---|
| 94 | . S FAC=$P(DATA(TFLDR),"^",2)
|
---|
| 95 | . S FAC=$$STA^XUAF4(FAC) Q:FAC=""
|
---|
| 96 | . ;Build RDATA array using the DATE and TFLDR
|
---|
| 97 | . S RDATA(DATE,TFLDR)=FAC
|
---|
| 98 | ;Exit if the RDATA array does not exist.
|
---|
| 99 | G:'$D(RDATA) EXITTFL
|
---|
| 100 | ;
|
---|
| 101 | ;Reverse order through the RDATA array (start with the latest date).
|
---|
| 102 | ;Extract the treating facility from the RDATA array.
|
---|
| 103 | ;Check the facility against local facility number: if they are
|
---|
| 104 | ;the same, then get the next facility. (Should never happen)
|
---|
| 105 | S DATE="" F S DATE=$O(RDATA(DATE),-1) Q:DATE="" D Q:QFL=1
|
---|
| 106 | . S TFL="" F S TFL=$O(RDATA(DATE,TFL)) Q:TFL="" D Q:QFL=1
|
---|
| 107 | . . S FAC=RDATA(DATE,TFL) I FAC=$G(DIV(0)) Q
|
---|
| 108 | . . ;If the facility is not the current facility, then set RSLT to the facility and quit
|
---|
| 109 | . . S RSLT=FAC,QFL=1 ;set QFL to 1 to stop going through the RDATA array
|
---|
| 110 | EXITTFL Q RSLT ;Return the LST to the calling routine
|
---|