| 1 | MDAPI1 ; HOIFO/NCA - Electrocardiogram Data Extraction ;12/4/02  12:32 | 
|---|
| 2 | ;;1.0;CLINICAL PROCEDURES;**1**;Apr 01, 2004 | 
|---|
| 3 | ; Reference IA #3854 API call | 
|---|
| 4 | ;           IA #10154 Access 2nd piece of ^DD(filenumber,fieldnumber,0) | 
|---|
| 5 | GET(RESULTS,MDARDFN,MDSDT,MDEDT,MDFLDS) ; Returns list of data from Electrocardiogram File #691.5 | 
|---|
| 6 | ; Input: RESULTS - the global ^TMP array in which  (Required) | 
|---|
| 7 | ;                  to return results. | 
|---|
| 8 | ;        MDARDFN - the patient DFN.           (Required) | 
|---|
| 9 | ;        MDSDT - the start date of the date   (Required) | 
|---|
| 10 | ;                range to return the data in. | 
|---|
| 11 | ;                This must be in FM internal | 
|---|
| 12 | ;                format. | 
|---|
| 13 | ;        MDEDT - the end date of the date     (Required) | 
|---|
| 14 | ;                range to return the data in. | 
|---|
| 15 | ;                This must be in FM internal | 
|---|
| 16 | ;                format. | 
|---|
| 17 | ;        MDFLDS - a list of fields from file #691.5 to  (Required) | 
|---|
| 18 | ;                 be returned in RESULTS.  MDFLDS should | 
|---|
| 19 | ;                 contain a list of fields delimited by ";" | 
|---|
| 20 | ;                 example: MDFLDS=".01;11;20..." | 
|---|
| 21 | ; | 
|---|
| 22 | ; Output: RESULTS  (Passed by Reference) | 
|---|
| 23 | ;         Global array returned in the FM DIQ call format. | 
|---|
| 24 | ; | 
|---|
| 25 | ; Example API call: | 
|---|
| 26 | ; | 
|---|
| 27 | ;    S RESULTS="^TMP(""NAMESPACE"",$J)" | 
|---|
| 28 | ;    D GET^MDAPI1(.RESULTS,162,2900101,3021001,".01;11") | 
|---|
| 29 | ; | 
|---|
| 30 | ; return: | 
|---|
| 31 | ;    ^TMP("NAMESPACE",$J,file #,record ien_",",field #,"E")=Data | 
|---|
| 32 | ;    ^TMP("NAMESPACE",$J,subfile #,entry #_","_record ien, | 
|---|
| 33 | ;          field of the multiple,"E")=data | 
|---|
| 34 | ; | 
|---|
| 35 | ; Only the Electrocardiogram records in the following | 
|---|
| 36 | ; statuses will be returned in the list: | 
|---|
| 37 | ; | 
|---|
| 38 | ;         RELEASED ON-LINE VERIFIED | 
|---|
| 39 | ;         RELEASED OFF-LINE VERIFIED | 
|---|
| 40 | ;         RELEASED NOT VERIFIED | 
|---|
| 41 | ;         RELEASED ON-LINE VERIFIED OF SUPERSEDED | 
|---|
| 42 | ;         RELEASED OFF-LINE VERIFIED OF SUPERSEDED | 
|---|
| 43 | ; | 
|---|
| 44 | ;         ^TMP("NAMESPACE",$J,0) will equal one of the following, | 
|---|
| 45 | ;           if the call failed: | 
|---|
| 46 | ;             -1^No Patient DFN. | 
|---|
| 47 | ;             -1^No Start Date Range. | 
|---|
| 48 | ;             -1^No End Date Range. | 
|---|
| 49 | ;             -1^Start Date greater than End Date. | 
|---|
| 50 | ;             -1^No fields defined. | 
|---|
| 51 | ; | 
|---|
| 52 | ;         If a local variable is defined in RESULTS, | 
|---|
| 53 | ;           ^TMP("MDAPI",$J,0) equals | 
|---|
| 54 | ;             -1^Global TMP array only. | 
|---|
| 55 | ; | 
|---|
| 56 | ;         If no return array defined,^TMP("MDAPI",$J,0) equals | 
|---|
| 57 | ;             -1^No return array global. | 
|---|
| 58 | ; | 
|---|
| 59 | ;         If no data, ^TMP("NAMESPACE",$J,0) equals | 
|---|
| 60 | ;             -1^No data for patient. | 
|---|
| 61 | ; | 
|---|
| 62 | N MDCODE,MDDR,MDK,MDLP,MDN,MDNOD,MDSUBF,MDX,MDY | 
|---|
| 63 | K ^TMP("MDAPI",$J) | 
|---|
| 64 | I '$D(RESULTS) S ^TMP("MDAPI",$J,0)="-1^No return array global." Q | 
|---|
| 65 | I $G(RESULTS)'["^TMP" S ^TMP("MDAPI",$J,0)="-1^Global TMP array only." Q | 
|---|
| 66 | I '+$G(MDARDFN) S @RESULTS@(0)="-1^No Patient DFN." Q | 
|---|
| 67 | I '$G(MDSDT) S @RESULTS@(0)="-1^No Start Date Range." Q | 
|---|
| 68 | I '$G(MDEDT) S @RESULTS@(0)="-1^No End Date Range." Q | 
|---|
| 69 | I MDSDT>MDEDT S @RESULTS@(0)="-1^Start Date greater than End Date." Q | 
|---|
| 70 | I $G(MDFLDS)="" S @RESULTS@(0)="-1^No fields defined." Q | 
|---|
| 71 | S (MDDR,MDX,MDY)="",MDEDT=MDEDT\1+.3 | 
|---|
| 72 | S MDN=$L(MDFLDS,";") | 
|---|
| 73 | F MDK=1:1:MDN S MDY=+$P(MDFLDS,";",MDK) I MDY D | 
|---|
| 74 | .Q:'$$VFIELD^DILFD(691.5,MDY) | 
|---|
| 75 | .S MDNOD=$P($G(^DD(691.5,+MDY,0)),"^",2),MDSUBF=0 | 
|---|
| 76 | .I +MDNOD[691.5&($E(MDNOD,$L(MDNOD)-1,$L(MDNOD))="PA") S MDSUBF=1 | 
|---|
| 77 | .S MDDR=MDDR_$S(MDDR="":"",1:";")_MDY_$S(MDSUBF:"*",1:"") | 
|---|
| 78 | .Q | 
|---|
| 79 | S MDLP=0 F  S MDLP=$O(^MCAR(691.5,"C",MDARDFN,MDLP)) Q:MDLP<1  D | 
|---|
| 80 | .S MDX=$G(^MCAR(691.5,MDLP,0)) Q:MDX="" | 
|---|
| 81 | .Q:$P(MDX,"^")<MDSDT!($P(MDX,"^")>MDEDT) | 
|---|
| 82 | .S MDCODE=$P($G(^MCAR(691.5,MDLP,"ES")),"^",7) | 
|---|
| 83 | .S:MDCODE="" MDCODE="RNV" | 
|---|
| 84 | .I MDCODE="S"!(MDCODE["D") Q | 
|---|
| 85 | .D GETS^DIQ(691.5,MDLP_",",MDDR,"E",$NA(@RESULTS)) | 
|---|
| 86 | .Q | 
|---|
| 87 | I '$D(@(RESULTS)) S @RESULTS@(0)="-1^No data for patient." | 
|---|
| 88 | Q | 
|---|