APSSIN02 ;IHS/CIA/MDM - ScriptPro Interface;30-Mar-2012 19:30;PLS
;;1.0;IHS SCRIPTPRO INTERFACE;**2**;January 11, 2006;Build 13
; APSS COMMAND FILE (#9009033.3) Maintenance & Initialization routine
; Direct entry not supported
;PATCH 2
; Patient ID Transform will need to be set programmatically.
Q
PRE ;EP-
Q
;
POST ;EP-
D EP1
Q
;
EP1 ;MDM - Main entry point
;
; File structure
; APSS COMMAND FILE (#9009033.3)
; APSS COMMAND FILE DATA TAG (Multiple-9009033.31)
; APSS COMMAND FILE DATA TAG DESCRIPTION (Multiple-9009033.312)
;
; Variable definitions
; APSSDAT = Data
; APSSCLC = Comment Line count
; APSSTAG = Data Tag (.01)
; APSSSEQ = Sequence (.02)
; APSSFLD = File/Field (.03)
; APSSFMT = Format (.04)
; APSSTRAN = Transform (1)
; APSSDESC = Description total line number (2)
; APSSCMD = Command
; APSSSIEN = DATA TAG Subfile IEN
; APSSIEN = FDA Array FDA_ROOT Construct
; APSSDIEN = DATA TAG DESCRIPTION Sub-Sub File Word Processing field IEN
; APSSLINE = Description Text line being processed (Reading data statements)
; APSSDEND = Description Text Ending line number (Reading data statements)
; APSSDBEG = Description Text Beginning line number (Reading data statements)
; ACTION = What action took place (ADD, EDIT, DELETE)
; APSSUTAG = Original value that was modified
;
; Initialize working variables and control cleanup upon routine termination
N APSSDAT,APSSCLC,APSSTAG,APSSSEQ,APSSFLD,APSSFMT,APSSDESC,APSSTRAN,APSSUTAG
N APSSCMD,APSSSIEN,APSSIEN,APSSDIEN,FDA,APSSDEND,APSSDBEG,APSSLINE,ACTION
N ARY,SSEQ
;
; Grab the IEN for the FILL Command
S APSSCMD="",APSSCMD=$O(^APSSCOMD("B","FILL",APSSCMD)) Q:'APSSCMD
S SIEN=0 F S SIEN=$O(^APSSCOMD(APSSCMD,1,SIEN)) Q:'SIEN D
.S SSEQ=$P($G(^APSSCOMD(APSSCMD,1,SIEN,0)),U,2)
.I SSEQ S ARY(SSEQ)=$P(^APSSCOMD(APSSCMD,1,SIEN,0),U,1)
;
; MAIN PROCESSING LOOP
; Loop through the data statement section of this routine
F APSSCLC=1:1 S APSSDAT=$P($T(DATA+APSSCLC),";",2) Q:APSSDAT="EOD" D
. ; If there is no data on that line quit processing and go get the next line
. I APSSDAT="" Q
. ; If the line does not have a "^" in it then it is an invalid record so quit.
. I APSSDAT'["^" Q
. ; Piece out the major data elements
. S APSSTAG=$P(APSSDAT,"^",1) ; Data Tag
. S APSSSEQ=$P(APSSDAT,"^",2) ; Sequence
. ; if the sequence number is in use and the data tag does not match what is being delivered
. ; change this sequence number
. I $D(ARY(APSSSEQ))&($G(ARY(APSSSEQ))'=APSSTAG) S APSSSEQ=$$NEWSEQ(.ARY,APSSSEQ)
. S APSSFLD=$P(APSSDAT,"^",3) ; File/Field
. S APSSFMT=$P($P(APSSDAT,"^",4),"~",1) ; Format
. S APSSTRAN=$P(APSSDAT,"~",2) ; Transform
. S APSSDESC=$P(APSSDAT,"~",3) ; Description
. ;
. ; Filing methods and requirements are determined in this section of code.
. ;
. ; *****************************DELETE**************************************
. ; Check for delete flag and if present, perform appropriate action.
. I APSSTAG["@",$D(^APSSCOMD(APSSCMD,1,"B",$P(APSSTAG,"@",2))) D Q
. . W !,"DELETE RECORD"
. . S ACTION="DELETE"
. . ; Grab the IEN for this Data Tag
. . S APSSSIEN="",APSSSIEN=$O(^APSSCOMD(APSSCMD,1,"B",$P(APSSTAG,"@",2),APSSSIEN))
. . ; Build FDA Array IEN Construct
. . S APSSIEN=APSSSIEN_","_APSSCMD_","
. . ; Build FDA Array to define file structure and field values
. . S FDA(9009033.31,APSSIEN,.01)="@"
. . ;
. . ; Delete this record in the file
. . D FILE^DIE("","FDA","ERR")
. . ;
. . I +$G(ERR("ERR")) D RESET Q
. . ;
. . ; Display informational message
. . D MSG
. . ; DEVELOPEMENT DISPLAY
. . ;D DISP
. . ; Reset working variables
. . D RESET
. . ;
. . Q
. ;
. ; *****************************UPDATE***************************************
. ; If the Umlaut is found in the APSSTAG string then,
. ; Check for an existing entry and if present, perform appropriate action.
. ;I APSSTAG["`",$D(^APSSCOMD(APSSCMD,1,"B",$P(APSSTAG,"`",1))) D Q
. I $D(^APSSCOMD(APSSCMD,1,"B",APSSTAG)) D Q
. . W !,"UPDATE RECORD"
. . S ACTION="EDIT"
. . ; Strip off the umlaut character and separate the two values
. . ; If the DATA TAG value is changing then Piece 2 holds the new value
. . S APSSUTAG=$P(APSSTAG,"`",2)
. . ; Piece one holds the current value
. . S APSSTAG=$P(APSSTAG,"`",1)
. . ; If piece 1 has no value then
. . ; Data in another field is changing but the DATA TAG field is not changing
. . I APSSTAG="" S APSSTAG=APSSUTAG
. . ; Grab the IEN for this Data Tag
. . S APSSSIEN="",APSSSIEN=$O(^APSSCOMD(APSSCMD,1,"B",APSSTAG,APSSSIEN))
. . ; Build FDA Array IEN Construct
. . S APSSIEN=APSSSIEN_","_APSSCMD_","
. . ; Build FDA Array
. . D FDA
. . ;
. . ; Update the file
. . D FILE^DIE("","FDA","ERR")
. . ;
. . I +$G(ERR("ERR")) D RESET Q
. . ;
. . ; Display informational message
. . D MSG
. . ; Process Description Text if defined
. . D DESC(APSSSIEN)
. . ; DEVELOPEMENT DISPLAY
. . ;D DISP
. . ; Reset working variables
. . D RESET
. . Q
. ;
. ; **************************NEW ENTRY***************************************
. ; File a new entry
. ; Check for an existing entry and if NOT present, perform appropriate action.
. I '$D(^APSSCOMD(APSSCMD,1,"B",APSSTAG)) D Q
. . W !,"RECORD NEW ENTRY"
. . S ACTION="ADD"
. . S APSSSIEN="+1"
. . ; Build FDA Array IEN Construct
. . S APSSIEN=APSSSIEN_","_APSSCMD_","
. . ; Build FDA Array
. . D FDA
. . ;
. . ; File the Data
. . D UPDATE^DIE("","FDA","ERR")
. . ;
. . I +$G(ERR("ERR")) D RESET Q
. . ;
. . ;Display informational message
. . D MSG
. . ; Process Description Text if defined
. . D DESC(ERR(1))
. . ; DEVELOPEMENT DISPLAY
. . ;D DISP
. . ; Reset working variables
. . D RESET
. . Q
. Q
;
; Kill the message arrays and variables that are produced by VA FileMan.
D CLEAN^DILF
; End of processing
Q
DESC(REC) ; Process description text and put it into the file
; If there is no description text then quit
I 'APSSDESC Q
S APSSIEN=REC_","_APSSCMD_","
; Process Description text data statements
S APSSDEND=APSSCLC+APSSDESC,APSSDBEG=APSSCLC+1 ; Initialize counters
; Loop through the description text for this data tag
F APSSLINE=APSSDBEG:1:APSSDEND S APSSDAT=$P($T(DATA+APSSLINE),";",2) D
. ; Set up data array t be processed by VA Fileman.
. S TMP("WP",APSSLINE)=APSSDAT,APSSDAT=""
. Q
;
; If Description lines were defined then adjust process looping position
; and send the data to VA Fileman to put into the database.
I APSSLINE S APSSCLC=APSSLINE,APSSLINE="" D
. ;
. ; File the description text
. D WP^DIE(9009033.31,APSSIEN,2,"K","TMP(""WP"")","ERR(""WP"")")
. Q
;
Q
FDA ;
; Build FDA Array to define file structure and field values for use by Fileman
S FDA(9009033.31,APSSIEN,.01)=APSSTAG
I $G(APSSUTAG)]"" S FDA(9009033.31,APSSIEN,.01)=APSSUTAG
S FDA(9009033.31,APSSIEN,.02)=APSSSEQ
S FDA(9009033.31,APSSIEN,.03)=APSSFLD
S FDA(9009033.31,APSSIEN,.04)=APSSFMT
S FDA(9009033.31,APSSIEN,1)=APSSTRAN
Q
RESET ;
; Reset working variables to NULL once each record is processed
S APSSTAG="" ; Data Tag
S APSSSEQ="" ; Sequence
S APSSFLD="" ; File/Field
S APSSFMT="" ; Format
S APSSTRAN="" ; Transform
S APSSDESC="" ; Description
K TMP,FDA,ERR,ACTION,APSSUTAG
Q
MSG ; Set up informational messages to display to the screen
;
I '$G(ERR) D
. I ACTION="ADD" D MES("Data Record: "_APSSTAG_" has been ADDED.")
. I ACTION="DELETE" D MES("Data Record: "_$P(APSSTAG,"@",2)_" has been DELETED.")
. I ACTION="EDIT" D MES("Data Record: "_$P(APSSTAG,"`",1)_" has been MODIFIED.")
. Q
E D MES("Data Field: "_APSSTAG_" resulted in ERROR "_ERR(1))
Q
MES(MSG,QUIT) ; Display informational messages
D BMES^XPDUTL(" "_$G(MSG))
Q
; INPUT ARRAY - List of current sequence numbers being used at the facility
; SQ - Sequence number needing to be changed.
;
NEWSEQ(ARRAY,SQ) ;
N OFFSET,QUIT,NSQ
S QUIT=0,NSQ=SQ
F OFFSET=.1:.1:.9 D Q:QUIT
.S NSQ=$P(SQ,".")+OFFSET
.I '$D(ARRAY(NSQ)) S QUIT=1 Q
I 'QUIT S NSQ=SQ+.01
Q NSQ
; *************************************************************************
; Structure of data statements found below the DATA line tag.
;
; DATA TAG^SEQUENCE^FILE,FIELD^FORMAT~TRANSFORM~NUMBER OF DESC. TEXT LINES
; NOTE:
; If there is a number in the last "~" piece then, there is description text
; which may be multiple lines of text. That text will follow the data line
; and preceed the next data line. The FOR loop reading the data statements
; will be adjusted to skip over the description text. A secondary loop will
; read and process the description data.
;
; To delete a record an "@" must appear as the first character of the data
; string.
;
; To modify a record use the Umlaut "`" as a flag in the first piece of the
; data string indicating it is an update. If the first "^" piece is to be
; modified then the NEW value must appear in the SECOND "`" piece.
;
DATA ; This module holds the data that will be put into the database.
;
;Patient ID^2^^Z~S VAL=$$HRN^AUPNPAT3($$GETP(RX0,2),$$GETP($G(^PS(59,$$GETP(RX2,9),"INI")),1))
;CashDue^92^52,9999999.26
;Days Supply^12.3^52,8
;Patient Home Phone^3.4^^Z~S VAL=$$GET1^DIQ(9000001,$$GETP(RX0,2),1606.2)
;Patient Office Phone^3.5^^Z~S VAL=$$GET1^DIQ(9000001,$$GETP(RX0,2),1607.2)
;Patient Other Phone^3.6^^Z~S VAL=$$GET1^DIQ(9000001,$$GETP(RX0,2),1801)
;Dispense Method^12.4^^ZR~S VAL=$$GET1^DIQ($S(PARIEN:52.2,REFIEN:52.1,1:52),$S(PARIEN!REFIEN:RXIENS,1:$P(RXIENS,",",$L(RXIENS,",")-1)),$S(PARIEN:.02,REFIEN:2,1:11))
;Returns the dispense method (MAIL/WINDOWS) for the prescription.
;Prescription Priority^30.1^^ZR~S VAL=$$GET1^DIQ($S(REFIEN:52.1,1:52),$S(REFIEN:RXIENS,1:$P(RXIENS,",",$L(RXIENS,",")-1)),$S(REFIEN:9999999.18,1:9999999.38))~1
;Returns the Priority field value for either the prescription or refill.
;Benchmark Unit Per Drug^91.1^^ZR~S VAL=$$GET1^DIQ($S(REFIEN:52.1,1:52),$S(REFIEN:RXIENS,1:$P(RXIENS,",",$L(RXIENS,",")-1)),9999999.06)~1
;Returns the Benchmark unit per drug price for either a refill or prescription.
;
; Parameter 1 passed to APSSLIC routine represents the Provider Internal Entry Number
; Paramneter 2 represents the processing method which is described below..
;
; Method 1
; Match it to the state the facility is in
; If there is no license for that state then return any valid license
; If no valid license found for any state then return NULL
;
; Method 2
; There is no license for the state the facility is in then,
; return NULL even if other states have a valid license defined.
;
; Method 3
; Return first valid license found regardless of state
; No valid license found, then return NULL
;
;EOD
Q
APSSIN02 ;IHS/CIA/MDM - ScriptPro Interface;30-Mar-2012 19:30;PLS
+1 ;;1.0;IHS SCRIPTPRO INTERFACE;**2**;January 11, 2006;Build 13
+2 ; APSS COMMAND FILE (#9009033.3) Maintenance & Initialization routine
+3 ; Direct entry not supported
+4 ;PATCH 2
+5 ; Patient ID Transform will need to be set programmatically.
+6 QUIT
PRE ;EP-
+1 QUIT
+2 ;
POST ;EP-
+1 DO EP1
+2 QUIT
+3 ;
EP1 ;MDM - Main entry point
+1 ;
+2 ; File structure
+3 ; APSS COMMAND FILE (#9009033.3)
+4 ; APSS COMMAND FILE DATA TAG (Multiple-9009033.31)
+5 ; APSS COMMAND FILE DATA TAG DESCRIPTION (Multiple-9009033.312)
+6 ;
+7 ; Variable definitions
+8 ; APSSDAT = Data
+9 ; APSSCLC = Comment Line count
+10 ; APSSTAG = Data Tag (.01)
+11 ; APSSSEQ = Sequence (.02)
+12 ; APSSFLD = File/Field (.03)
+13 ; APSSFMT = Format (.04)
+14 ; APSSTRAN = Transform (1)
+15 ; APSSDESC = Description total line number (2)
+16 ; APSSCMD = Command
+17 ; APSSSIEN = DATA TAG Subfile IEN
+18 ; APSSIEN = FDA Array FDA_ROOT Construct
+19 ; APSSDIEN = DATA TAG DESCRIPTION Sub-Sub File Word Processing field IEN
+20 ; APSSLINE = Description Text line being processed (Reading data statements)
+21 ; APSSDEND = Description Text Ending line number (Reading data statements)
+22 ; APSSDBEG = Description Text Beginning line number (Reading data statements)
+23 ; ACTION = What action took place (ADD, EDIT, DELETE)
+24 ; APSSUTAG = Original value that was modified
+25 ;
+26 ; Initialize working variables and control cleanup upon routine termination
+27 NEW APSSDAT,APSSCLC,APSSTAG,APSSSEQ,APSSFLD,APSSFMT,APSSDESC,APSSTRAN,APSSUTAG
+28 NEW APSSCMD,APSSSIEN,APSSIEN,APSSDIEN,FDA,APSSDEND,APSSDBEG,APSSLINE,ACTION
+29 NEW ARY,SSEQ
+30 ;
+31 ; Grab the IEN for the FILL Command
+32 SET APSSCMD=""
SET APSSCMD=$ORDER(^APSSCOMD("B","FILL",APSSCMD))
IF 'APSSCMD
QUIT
+33 SET SIEN=0
FOR
SET SIEN=$ORDER(^APSSCOMD(APSSCMD,1,SIEN))
IF 'SIEN
QUIT
Begin DoDot:1
+34 SET SSEQ=$PIECE($GET(^APSSCOMD(APSSCMD,1,SIEN,0)),U,2)
+35 IF SSEQ
SET ARY(SSEQ)=$PIECE(^APSSCOMD(APSSCMD,1,SIEN,0),U,1)
End DoDot:1
+36 ;
+37 ; MAIN PROCESSING LOOP
+38 ; Loop through the data statement section of this routine
+39 FOR APSSCLC=1:1
SET APSSDAT=$PIECE($TEXT(DATA+APSSCLC),";",2)
IF APSSDAT="EOD"
QUIT
Begin DoDot:1
+40 ; If there is no data on that line quit processing and go get the next line
+41 IF APSSDAT=""
QUIT
+42 ; If the line does not have a "^" in it then it is an invalid record so quit.
+43 IF APSSDAT'["^"
QUIT
+44 ; Piece out the major data elements
+45 ; Data Tag
SET APSSTAG=$PIECE(APSSDAT,"^",1)
+46 ; Sequence
SET APSSSEQ=$PIECE(APSSDAT,"^",2)
+47 ; if the sequence number is in use and the data tag does not match what is being delivered
+48 ; change this sequence number
+49 IF $DATA(ARY(APSSSEQ))&($GET(ARY(APSSSEQ))'=APSSTAG)
SET APSSSEQ=$$NEWSEQ(.ARY,APSSSEQ)
+50 ; File/Field
SET APSSFLD=$PIECE(APSSDAT,"^",3)
+51 ; Format
SET APSSFMT=$PIECE($PIECE(APSSDAT,"^",4),"~",1)
+52 ; Transform
SET APSSTRAN=$PIECE(APSSDAT,"~",2)
+53 ; Description
SET APSSDESC=$PIECE(APSSDAT,"~",3)
+54 ;
+55 ; Filing methods and requirements are determined in this section of code.
+56 ;
+57 ; *****************************DELETE**************************************
+58 ; Check for delete flag and if present, perform appropriate action.
+59 IF APSSTAG["@"
IF $DATA(^APSSCOMD(APSSCMD,1,"B",$PIECE(APSSTAG,"@",2)))
Begin DoDot:2
+60 WRITE !,"DELETE RECORD"
+61 SET ACTION="DELETE"
+62 ; Grab the IEN for this Data Tag
+63 SET APSSSIEN=""
SET APSSSIEN=$ORDER(^APSSCOMD(APSSCMD,1,"B",$PIECE(APSSTAG,"@",2),APSSSIEN))
+64 ; Build FDA Array IEN Construct
+65 SET APSSIEN=APSSSIEN_","_APSSCMD_","
+66 ; Build FDA Array to define file structure and field values
+67 SET FDA(9009033.31,APSSIEN,.01)="@"
+68 ;
+69 ; Delete this record in the file
+70 DO FILE^DIE("","FDA","ERR")
+71 ;
+72 IF +$GET(ERR("ERR"))
DO RESET
QUIT
+73 ;
+74 ; Display informational message
+75 DO MSG
+76 ; DEVELOPEMENT DISPLAY
+77 ;D DISP
+78 ; Reset working variables
+79 DO RESET
+80 ;
+81 QUIT
End DoDot:2
QUIT
+82 ;
+83 ; *****************************UPDATE***************************************
+84 ; If the Umlaut is found in the APSSTAG string then,
+85 ; Check for an existing entry and if present, perform appropriate action.
+86 ;I APSSTAG["`",$D(^APSSCOMD(APSSCMD,1,"B",$P(APSSTAG,"`",1))) D Q
+87 IF $DATA(^APSSCOMD(APSSCMD,1,"B",APSSTAG))
Begin DoDot:2
+88 WRITE !,"UPDATE RECORD"
+89 SET ACTION="EDIT"
+90 ; Strip off the umlaut character and separate the two values
+91 ; If the DATA TAG value is changing then Piece 2 holds the new value
+92 SET APSSUTAG=$PIECE(APSSTAG,"`",2)
+93 ; Piece one holds the current value
+94 SET APSSTAG=$PIECE(APSSTAG,"`",1)
+95 ; If piece 1 has no value then
+96 ; Data in another field is changing but the DATA TAG field is not changing
+97 IF APSSTAG=""
SET APSSTAG=APSSUTAG
+98 ; Grab the IEN for this Data Tag
+99 SET APSSSIEN=""
SET APSSSIEN=$ORDER(^APSSCOMD(APSSCMD,1,"B",APSSTAG,APSSSIEN))
+100 ; Build FDA Array IEN Construct
+101 SET APSSIEN=APSSSIEN_","_APSSCMD_","
+102 ; Build FDA Array
+103 DO FDA
+104 ;
+105 ; Update the file
+106 DO FILE^DIE("","FDA","ERR")
+107 ;
+108 IF +$GET(ERR("ERR"))
DO RESET
QUIT
+109 ;
+110 ; Display informational message
+111 DO MSG
+112 ; Process Description Text if defined
+113 DO DESC(APSSSIEN)
+114 ; DEVELOPEMENT DISPLAY
+115 ;D DISP
+116 ; Reset working variables
+117 DO RESET
+118 QUIT
End DoDot:2
QUIT
+119 ;
+120 ; **************************NEW ENTRY***************************************
+121 ; File a new entry
+122 ; Check for an existing entry and if NOT present, perform appropriate action.
+123 IF '$DATA(^APSSCOMD(APSSCMD,1,"B",APSSTAG))
Begin DoDot:2
+124 WRITE !,"RECORD NEW ENTRY"
+125 SET ACTION="ADD"
+126 SET APSSSIEN="+1"
+127 ; Build FDA Array IEN Construct
+128 SET APSSIEN=APSSSIEN_","_APSSCMD_","
+129 ; Build FDA Array
+130 DO FDA
+131 ;
+132 ; File the Data
+133 DO UPDATE^DIE("","FDA","ERR")
+134 ;
+135 IF +$GET(ERR("ERR"))
DO RESET
QUIT
+136 ;
+137 ;Display informational message
+138 DO MSG
+139 ; Process Description Text if defined
+140 DO DESC(ERR(1))
+141 ; DEVELOPEMENT DISPLAY
+142 ;D DISP
+143 ; Reset working variables
+144 DO RESET
+145 QUIT
End DoDot:2
QUIT
+146 QUIT
End DoDot:1
+147 ;
+148 ; Kill the message arrays and variables that are produced by VA FileMan.
+149 DO CLEAN^DILF
+150 ; End of processing
+151 QUIT
DESC(REC) ; Process description text and put it into the file
+1 ; If there is no description text then quit
+2 IF 'APSSDESC
QUIT
+3 SET APSSIEN=REC_","_APSSCMD_","
+4 ; Process Description text data statements
+5 ; Initialize counters
SET APSSDEND=APSSCLC+APSSDESC
SET APSSDBEG=APSSCLC+1
+6 ; Loop through the description text for this data tag
+7 FOR APSSLINE=APSSDBEG:1:APSSDEND
SET APSSDAT=$PIECE($TEXT(DATA+APSSLINE),";",2)
Begin DoDot:1
+8 ; Set up data array t be processed by VA Fileman.
+9 SET TMP("WP",APSSLINE)=APSSDAT
SET APSSDAT=""
+10 QUIT
End DoDot:1
+11 ;
+12 ; If Description lines were defined then adjust process looping position
+13 ; and send the data to VA Fileman to put into the database.
+14 IF APSSLINE
SET APSSCLC=APSSLINE
SET APSSLINE=""
Begin DoDot:1
+15 ;
+16 ; File the description text
+17 DO WP^DIE(9009033.31,APSSIEN,2,"K","TMP(""WP"")","ERR(""WP"")")
+18 QUIT
End DoDot:1
+19 ;
+20 QUIT
FDA ;
+1 ; Build FDA Array to define file structure and field values for use by Fileman
+2 SET FDA(9009033.31,APSSIEN,.01)=APSSTAG
+3 IF $GET(APSSUTAG)]""
SET FDA(9009033.31,APSSIEN,.01)=APSSUTAG
+4 SET FDA(9009033.31,APSSIEN,.02)=APSSSEQ
+5 SET FDA(9009033.31,APSSIEN,.03)=APSSFLD
+6 SET FDA(9009033.31,APSSIEN,.04)=APSSFMT
+7 SET FDA(9009033.31,APSSIEN,1)=APSSTRAN
+8 QUIT
RESET ;
+1 ; Reset working variables to NULL once each record is processed
+2 ; Data Tag
SET APSSTAG=""
+3 ; Sequence
SET APSSSEQ=""
+4 ; File/Field
SET APSSFLD=""
+5 ; Format
SET APSSFMT=""
+6 ; Transform
SET APSSTRAN=""
+7 ; Description
SET APSSDESC=""
+8 KILL TMP,FDA,ERR,ACTION,APSSUTAG
+9 QUIT
MSG ; Set up informational messages to display to the screen
+1 ;
+2 IF '$GET(ERR)
Begin DoDot:1
+3 IF ACTION="ADD"
DO MES("Data Record: "_APSSTAG_" has been ADDED.")
+4 IF ACTION="DELETE"
DO MES("Data Record: "_$PIECE(APSSTAG,"@",2)_" has been DELETED.")
+5 IF ACTION="EDIT"
DO MES("Data Record: "_$PIECE(APSSTAG,"`",1)_" has been MODIFIED.")
+6 QUIT
End DoDot:1
+7 IF '$TEST
DO MES("Data Field: "_APSSTAG_" resulted in ERROR "_ERR(1))
+8 QUIT
MES(MSG,QUIT) ; Display informational messages
+1 DO BMES^XPDUTL(" "_$GET(MSG))
+2 QUIT
+3 ; INPUT ARRAY - List of current sequence numbers being used at the facility
+4 ; SQ - Sequence number needing to be changed.
+5 ;
NEWSEQ(ARRAY,SQ) ;
+1 NEW OFFSET,QUIT,NSQ
+2 SET QUIT=0
SET NSQ=SQ
+3 FOR OFFSET=.1:.1:.9
Begin DoDot:1
+4 SET NSQ=$PIECE(SQ,".")+OFFSET
+5 IF '$DATA(ARRAY(NSQ))
SET QUIT=1
QUIT
End DoDot:1
IF QUIT
QUIT
+6 IF 'QUIT
SET NSQ=SQ+.01
+7 QUIT NSQ
+8 ; *************************************************************************
+9 ; Structure of data statements found below the DATA line tag.
+10 ;
+11 ; DATA TAG^SEQUENCE^FILE,FIELD^FORMAT~TRANSFORM~NUMBER OF DESC. TEXT LINES
+12 ; NOTE:
+13 ; If there is a number in the last "~" piece then, there is description text
+14 ; which may be multiple lines of text. That text will follow the data line
+15 ; and preceed the next data line. The FOR loop reading the data statements
+16 ; will be adjusted to skip over the description text. A secondary loop will
+17 ; read and process the description data.
+18 ;
+19 ; To delete a record an "@" must appear as the first character of the data
+20 ; string.
+21 ;
+22 ; To modify a record use the Umlaut "`" as a flag in the first piece of the
+23 ; data string indicating it is an update. If the first "^" piece is to be
+24 ; modified then the NEW value must appear in the SECOND "`" piece.
+25 ;
DATA ; This module holds the data that will be put into the database.
+1 ;
+2 ;Patient ID^2^^Z~S VAL=$$HRN^AUPNPAT3($$GETP(RX0,2),$$GETP($G(^PS(59,$$GETP(RX2,9),"INI")),1))
+3 ;CashDue^92^52,9999999.26
+4 ;Days Supply^12.3^52,8
+5 ;Patient Home Phone^3.4^^Z~S VAL=$$GET1^DIQ(9000001,$$GETP(RX0,2),1606.2)
+6 ;Patient Office Phone^3.5^^Z~S VAL=$$GET1^DIQ(9000001,$$GETP(RX0,2),1607.2)
+7 ;Patient Other Phone^3.6^^Z~S VAL=$$GET1^DIQ(9000001,$$GETP(RX0,2),1801)
+8 ;Dispense Method^12.4^^ZR~S VAL=$$GET1^DIQ($S(PARIEN:52.2,REFIEN:52.1,1:52),$S(PARIEN!REFIEN:RXIENS,1:$P(RXIENS,",",$L(RXIENS,",")-1)),$S(PARIEN:.02,REFIEN:2,1:11))
+9 ;Returns the dispense method (MAIL/WINDOWS) for the prescription.
+10 ;Prescription Priority^30.1^^ZR~S VAL=$$GET1^DIQ($S(REFIEN:52.1,1:52),$S(REFIEN:RXIENS,1:$P(RXIENS,",",$L(RXIENS,",")-1)),$S(REFIEN:9999999.18,1:9999999.38))~1
+11 ;Returns the Priority field value for either the prescription or refill.
+12 ;Benchmark Unit Per Drug^91.1^^ZR~S VAL=$$GET1^DIQ($S(REFIEN:52.1,1:52),$S(REFIEN:RXIENS,1:$P(RXIENS,",",$L(RXIENS,",")-1)),9999999.06)~1
+13 ;Returns the Benchmark unit per drug price for either a refill or prescription.
+14 ;
+15 ; Parameter 1 passed to APSSLIC routine represents the Provider Internal Entry Number
+16 ; Paramneter 2 represents the processing method which is described below..
+17 ;
+18 ; Method 1
+19 ; Match it to the state the facility is in
+20 ; If there is no license for that state then return any valid license
+21 ; If no valid license found for any state then return NULL
+22 ;
+23 ; Method 2
+24 ; There is no license for the state the facility is in then,
+25 ; return NULL even if other states have a valid license defined.
+26 ;
+27 ; Method 3
+28 ; Return first valid license found regardless of state
+29 ; No valid license found, then return NULL
+30 ;
+31 ;EOD
+32 QUIT